From: TizenOpenSource Date: Tue, 24 Dec 2024 07:51:51 +0000 (+0900) Subject: Imported Upstream version 4.4.1 X-Git-Tag: upstream/4.4.1^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Fupstream;p=platform%2Fupstream%2Fmake.git Imported Upstream version 4.4.1 --- diff --git a/AUTHORS b/AUTHORS index d4e37db..5db6fe3 100644 --- a/AUTHORS +++ b/AUTHORS @@ -47,6 +47,10 @@ GNU Make porting efforts: Earnie Boyd Troy Runkel Juan M. Guerrero + KO Myung-Hun + + Port to z/OS by: + Igor Todorovski ----------------------------------- Other contributors: @@ -94,6 +98,7 @@ Other contributors: Ian Stewartson (Data Logic Limited) Tobias Stoeckmann Sergei Trofimovich + Justine Tunney Marc Ullman Christof Warlich Florian Weimer @@ -106,7 +111,7 @@ With suggestions/comments/bug reports from a cast of ... well ... hundreds, anyway :) ------------------------------------------------------------------------------- -Copyright (C) 1997-2022 Free Software Foundation, Inc. +Copyright (C) 1997-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/Basic.mk b/Basic.mk index 683f377..fd23b4d 100644 --- a/Basic.mk +++ b/Basic.mk @@ -1,16 +1,16 @@ -# Basic GNU -*-Makefile-*- to build GNU make +# Basic GNU -*-Makefile-*- to build GNU Make # # NOTE: # If you have no 'make' program at all to process this makefile: -# * On Windows, run ".\buildw32.bat" to bootstrap one. +# * On Windows, run ".\build_w32.bat" to bootstrap one. # * On MS-DOS, run ".\builddos.bat" to bootstrap one. # -# Once you have a GNU make program created, you can use it with this makefile +# Once you have a GNU Make program created, you can use it with this makefile # to keep it up to date if you make changes, as: # # make.exe -f Basic.mk # -# Copyright (C) 2017-2022 Free Software Foundation, Inc. +# Copyright (C) 2017-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -141,94 +141,257 @@ $(OBJECTS): $(SRCDIR)/src/mkconfig.h # dummy # src/.deps/ar.Po -# dummy +$(OUTDIR)src/ar.$(OBJEXT): $(SRCDIR)/src/ar.c $(SRCDIR)/src/makeint.h $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/dep.h $(SRCDIR)/lib/intprops.h $(SRCDIR)/lib/intprops-internal.h # src/.deps/arscan.Po -# dummy +$(OUTDIR)src/arscan.$(OBJEXT): $(SRCDIR)/src/arscan.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/lib/intprops.h $(SRCDIR)/lib/intprops-internal.h $(SRCDIR)/src/output.h # src/.deps/commands.Po -# dummy +$(OUTDIR)src/commands.$(OBJEXT): $(SRCDIR)/src/commands.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/os.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/variable.h $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h $(SRCDIR)/src/commands.h # src/.deps/default.Po -# dummy +$(OUTDIR)src/default.$(OBJEXT): $(SRCDIR)/src/default.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h $(SRCDIR)/src/variable.h $(SRCDIR)/src/rule.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/job.h \ + $(SRCDIR)/src/output.h $(SRCDIR)/src/commands.h # src/.deps/dir.Po -# dummy +$(OUTDIR)src/dir.$(OBJEXT): $(SRCDIR)/src/dir.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/hash.h $(SRCDIR)/src/filedef.h \ + $(SRCDIR)/src/dep.h $(SRCDIR)/src/debug.h \ # src/.deps/expand.Po -# dummy +$(OUTDIR)src/expand.$(OBJEXT): $(SRCDIR)/src/expand.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/commands.h $(SRCDIR)/src/debug.h $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h $(SRCDIR)/src/job.h \ + $(SRCDIR)/src/output.h $(SRCDIR)/src/variable.h $(SRCDIR)/src/rule.h # src/.deps/file.Po -# dummy +$(OUTDIR)src/file.$(OBJEXT): $(SRCDIR)/src/file.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h $(SRCDIR)/src/commands.h \ + $(SRCDIR)/src/variable.h $(SRCDIR)/src/debug.h $(SRCDIR)/src/shuffle.h # src/.deps/function.Po -# dummy +$(OUTDIR)src/function.$(OBJEXT): $(SRCDIR)/src/function.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/variable.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h $(SRCDIR)/src/os.h $(SRCDIR)/src/commands.h \ + $(SRCDIR)/src/debug.h # src/.deps/getopt.Po -# dummy +$(OUTDIR)src/getopt.$(OBJEXT): $(SRCDIR)/src/getopt.c $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + \ # src/.deps/getopt1.Po -# dummy +$(OUTDIR)src/getopt1.$(OBJEXT): $(SRCDIR)/src/getopt1.c $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + \ + $(SRCDIR)/src/getopt.h \ # src/.deps/guile.Po -# dummy +$(OUTDIR)src/guile.$(OBJEXT): $(SRCDIR)/src/guile.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/debug.h $(SRCDIR)/src/filedef.h \ + $(SRCDIR)/src/hash.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/variable.h \ + $(SRCDIR)/src/gmk-default.h # src/.deps/hash.Po -# dummy +$(OUTDIR)src/hash.$(OBJEXT): $(SRCDIR)/src/hash.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/hash.h \ # src/.deps/implicit.Po -# dummy +$(OUTDIR)src/implicit.$(OBJEXT): $(SRCDIR)/src/implicit.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/rule.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/debug.h $(SRCDIR)/src/variable.h $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h \ + $(SRCDIR)/src/commands.h $(SRCDIR)/src/shuffle.h # src/.deps/job.Po -# dummy +$(OUTDIR)src/job.$(OBJEXT): $(SRCDIR)/src/job.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h $(SRCDIR)/src/debug.h $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/commands.h $(SRCDIR)/src/variable.h $(SRCDIR)/src/os.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/shuffle.h \ + $(SRCDIR)/lib/findprog.h # src/.deps/load.Po -# dummy +$(OUTDIR)src/load.$(OBJEXT): $(SRCDIR)/src/load.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/debug.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h $(SRCDIR)/src/variable.h # src/.deps/loadapi.Po -# dummy +$(OUTDIR)src/loadapi.$(OBJEXT): $(SRCDIR)/src/loadapi.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/variable.h $(SRCDIR)/src/dep.h # src/.deps/main.Po -# dummy +$(OUTDIR)src/main.$(OBJEXT): $(SRCDIR)/src/main.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/os.h $(SRCDIR)/src/filedef.h \ + $(SRCDIR)/src/hash.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/variable.h $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h \ + $(SRCDIR)/src/commands.h $(SRCDIR)/src/rule.h $(SRCDIR)/src/debug.h $(SRCDIR)/src/getopt.h $(SRCDIR)/src/shuffle.h \ # src/.deps/misc.Po -# dummy +$(OUTDIR)src/misc.$(OBJEXT): $(SRCDIR)/src/misc.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/dep.h $(SRCDIR)/src/os.h $(SRCDIR)/src/debug.h \ # src/.deps/output.Po -# dummy +$(OUTDIR)src/output.$(OBJEXT): $(SRCDIR)/src/output.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/os.h $(SRCDIR)/src/output.h \ # src/.deps/posixos.Po -# dummy +$(OUTDIR)src/posixos.$(OBJEXT): $(SRCDIR)/src/posixos.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/debug.h $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h $(SRCDIR)/src/os.h # src/.deps/read.Po -# dummy +$(OUTDIR)src/read.$(OBJEXT): $(SRCDIR)/src/read.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h $(SRCDIR)/src/os.h \ + $(SRCDIR)/src/commands.h $(SRCDIR)/src/variable.h $(SRCDIR)/src/rule.h $(SRCDIR)/src/debug.h # src/.deps/remake.Po -# dummy +$(OUTDIR)src/remake.$(OBJEXT): $(SRCDIR)/src/remake.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h $(SRCDIR)/src/commands.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/variable.h \ + $(SRCDIR)/src/debug.h \ # src/.deps/remote-cstms.Po # dummy # src/.deps/remote-stub.Po -# dummy +$(OUTDIR)src/remote-stub.$(OBJEXT): $(SRCDIR)/src/remote-stub.c \ + $(SRCDIR)/src/makeint.h $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h $(SRCDIR)/src/commands.h # src/.deps/rule.Po -# dummy +$(OUTDIR)src/rule.$(OBJEXT): $(SRCDIR)/src/rule.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h $(SRCDIR)/src/commands.h \ + $(SRCDIR)/src/variable.h $(SRCDIR)/src/rule.h # src/.deps/shuffle.Po -# dummy +$(OUTDIR)src/shuffle.$(OBJEXT): $(SRCDIR)/src/shuffle.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/shuffle.h $(SRCDIR)/src/filedef.h \ + $(SRCDIR)/src/hash.h $(SRCDIR)/src/dep.h # src/.deps/signame.Po -# dummy +$(OUTDIR)src/signame.$(OBJEXT): $(SRCDIR)/src/signame.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ # src/.deps/strcache.Po -# dummy +$(OUTDIR)src/strcache.$(OBJEXT): $(SRCDIR)/src/strcache.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/hash.h # src/.deps/variable.Po -# dummy +$(OUTDIR)src/variable.$(OBJEXT): $(SRCDIR)/src/variable.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h $(SRCDIR)/src/debug.h $(SRCDIR)/src/dep.h $(SRCDIR)/src/job.h $(SRCDIR)/src/output.h \ + $(SRCDIR)/src/commands.h $(SRCDIR)/src/variable.h $(SRCDIR)/src/os.h $(SRCDIR)/src/rule.h # src/.deps/version.Po -# dummy +$(OUTDIR)src/version.$(OBJEXT): $(SRCDIR)/src/version.c $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + # src/.deps/vms_exit.Po # dummy @@ -246,4 +409,10 @@ $(OBJECTS): $(SRCDIR)/src/mkconfig.h # dummy # src/.deps/vpath.Po -# dummy +$(OUTDIR)src/vpath.$(OBJEXT): $(SRCDIR)/src/vpath.c $(SRCDIR)/src/makeint.h \ + $(OUTDIR)src/config.h \ + $(SRCDIR)/src/../src/mkcustom.h \ + $(SRCDIR)/src/gnumake.h \ + $(SRCDIR)/src/gettext.h \ + $(SRCDIR)/src/filedef.h $(SRCDIR)/src/hash.h \ + $(SRCDIR)/src/variable.h diff --git a/ChangeLog b/ChangeLog index 59f71f5..2dd6521 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,785 @@ +2023-02-26 Paul Smith + + GNU Make release 4.4.1 + * NEWS: Set the release number and date. + * configure.ac: Update the version. + * README.git: Remind to update doc/make.1. + * doc/make.1: Update the date. Fix some "GNU Make" references. + * doc/make.texi: Update the edition. + + * tests/scripts/options/dash-l: Simplify the test via the helper + * tests/thelp.pl: Add "exist" and "noexist" operators. + +2023-02-21 Paul Smith + + * README.W32: Add Windows 11 + * build_w32.bat: Ditto. + +2023-02-21 Paul Smith + + Use a recursive environment if any command needs it + We only create one target environment for all commands in a recipe. + Ensure it's set for recursive make if ANY command is recursive, not + just the first one. + + * src/job.c (start_job_command): Check for any recursive command. + * tests/scripts/features/jobserver: Test recursion on second line. + +2023-02-21 Dmitry Goncharov + + * src/main.c (main): Install suffix rules near pattern updates + +2023-02-20 Paul Smith + + * Makefile.am: Add mkconfig.h to the test error file + +2023-02-20 Dmitry Goncharov + + [SV 63821] Don't set up default suffix rules if makefile sets -r + When built-in rules are disabled by adding -r to MAKEFLAGS in the + makefile, don't add suffix rules at all so that if suffixes are + added back via .SUFFIXES, the rules are still not there. + + * src/main.c (main): Set default suffix rules after parsing makefiles. + * src/default.c (install_default_suffix_rules): Install a default + suffix rule only if there is no user defined rule. + * tests/scripts/features/suffixrules: Add tests. + +2023-02-20 Paul Smith + + * tests/scripts/misc/general4: Only test empty PATH on UNIX + +2023-02-19 Paul Smith + + * gl/modules/make-glob: Avoid glibc glob if bug #866 is present + + * tests/scripts/features/include [AIX]: Set explicit timestamps + + * tests/scripts/features/archives: Set CC properly + + Prerelease GNU Make 4.4.0.91 + * NEWS: Update the date. + * configure.ac: Change the release. + + * src/makeint.h [CYGWIN]: Use pipe mode for the jobserver + +2023-02-19 Paul Smith + + Don't block for child exit if other commands have completed + Running regression tests on a single CPU system shows that if a child + exits while we're checking prerequisites we might not notice it, and + then we might block waiting for the next child to exit before we try + to do more work even though we could. + + * src/remake.c (update_goal_chain): Remember the command_count before + we start checking prerequisites and if it is different when we restart + at the top of the goal chain then don't block. + +2023-02-19 Paul Smith + + Clean up depth handling in debug output + The indentation shown in debug output was misleading. Increment the + depth when we are working on a prerequisite, not for the current + target. + + * src/remake.c (check_dep): Increment depth only on recursion. + (update_file_1): Ditto. Don't show "Finished..." if prereqs are + still running. + * src/implicit.c (pattern_search): Increment depth for the entire + search. + * tests/scripts/features/output-sync: Support debug output when run + by hand. + +2023-02-19 Paul Smith + + * src/makeint.h (WIN32_LEAN_AND_MEAN) [Windows]: Don't redefine. + Suggested for tcc builds by Christian Jullien . + +2023-02-19 KO Myung-Hun + + * src/misc.c (ttyname) [OS/2]: Add an implementation for OS/2 kLIBC + +2023-02-19 Paul Smith + + Allow jobserver style to be forced to "pipe" + Some systems that support mkfifo() don't support the usage that GNU + make wants. Provide a way to force using "pipe" jobserver mode even + when mkfifo() is available. + + * src/makeint.h (MK_OS_HURD): Define if we're on Hurd. + (JOBSERVER_USE_FIFO): Define if we have mkfifo() and we're NOT on + Hurd. + * src/main.c (main): Test JOBSERVER_USE_FIFO not HAVE_MKFIFO. + * src/posixos.c (jobserver_setup): Ditto. + * maintMakefile: Create a config check test for forcing "pipe" mode. + * tests/run_make_tests.pl: Show discovered FEATURES in verbose mode. + +2023-02-05 Paul Smith + + [SV 63668] Use autoconf to detect the default C++ compiler + * configure.ac: Add AC_PROG_CXX to search for a C++ compiler. + (MAKE_CXX): Add the discovered compiler to config.h. + * src/default.c (default_variables): Use MAKE_CXX as the C++ compiler. + + * doc/make.texi: Fix typo (reported by ) + +2023-02-04 Paul Smith + + * tests/scripts/variables/MAKEFLAGS: Fix some Perl warnings + +2023-01-28 Dmitry Goncharov + + * doc/make.texi: [SV 63689] Fix typos in examples + +2023-01-28 Paul Smith + + * src/job.c: Switch from bit operators to flags macros + * src/remake.c: Ditto. + + [SV 63667] In .POSIX, use shell flags -c when ignoring errors + * src/variable.c (lookup_variable_for_file): New function to retrieve + a variable assignment in a file context. + * src/variable.h (lookup_variable_for_file): Declare it. + * src/job.c (construct_command_argv): Look up .SHELLFLAGS. If .POSIX + is set and we're using the default value, choose -c if we're ignoring + errors else choose -ec. + (construct_command_argv_internal): Ditto. + * tests/scripts/targets/POSIX: Add tests. + +2023-01-28 Dmitry Goncharov + + * tests/scripts/features/archives: [SV 63688] Quote cmd line vars + +2023-01-28 Paul Smith + + * README.in: Mention README.z/OS + +2023-01-15 Paul Smith + + * tests/test_driver.pl: Convert z/OS answers for regex output + Allow z/OS customizations to apply to regex output matching. + * tests/scripts/features/output-sync: Use a regex for Terminated. + * tests/scripts/features/temp_stdin: Ditto. + + * tests/scripts/features/archives: Use the configured compiler for CC + + * configure.ac: Delay setting HAVE_GUILE until we're sure + +2023-01-14 Paul Smith + + Prerelease GNU Make 4.4.0.90 + * NEWS: Update the date. + * README.git: Fix a typo. + * maintMakefile (check-alt-config): Report success. + (upload-*): Use the gnulib gnupload script for uploads. + +2023-01-11 Paul Smith + + * tests/scripts/features/reinvoke: Warn about closing STDIN. + * tests/scripts/features/temp_stdin: Ditto. + * tests/scripts/options/dash-f: Ditto. + +2023-01-11 Eli Zaretskii + + [SV 63638] Fix processing PATH on MS-Windows + * src/variable.c (sync_Path_environment): Pass only the value of + PATH to convert_Path_to_windows32, excluding the "PATH=" part. + +2023-01-08 Paul Smith + + Update support for OS/2 + Patches provided by KO Myung-Hun + + * NEWS: Add a note. + * AUTHORS: Add a new author. + * README.OS2: Updates to build instructions. + * src/dir.c (dir_contents_file_exists_p): Use a stack copy when + modifying a const string. + * src/job.c (construct_command_argv_internal): Ditto. + Reuse variables rather than re-defining them. + (exec_command): Cast a const string (we don't change it anyway). + * src/getopt.c (_getopt_initialize): Reference unused variables. + (_getopt_internal): Add block braces to quiet the compiler. + * src/main.c (main): Cast argument to child_execute_job(). + * src/posixos.c (set_blocking): Reference unused variables. + * src/remake.c (f_mtime): Delete useless code. + +2023-01-08 Paul Smith + + [SV 17448] Ignore whitespace around $(file ...) names + The other issues related to whitespace reported in this bug are + not addressed by this change. + + * src/functions.c (func_file): Strip whitespace from the start and + end of the filename provided to the $(file ...) function. + * tests/scripts/functions/file: Add tests for this. + * tests/test_driver.pl: Use 3-arg version of open(). + +2023-01-08 Paul Smith + + [SV 61218] Ensure MAKEFLAGS is expanded even with -e + If -e was given we weren't expanding MAKEFLAGS before passing it + through the environment to jobs: we don't expand variables we + receive from the environment and when -e is given we set the + origin of MAKEFLAGS to "environment override". Check for MAKEFLAGS + specifically, which seems like a hack but I don't have a better + idea offhand. + + * src/main.c (main): Drive-by: use o_default for MAKEOVERRIDES. + * src/variable.c (target_environment): Always expand MAKEFLAGS + regardless of the origin type. + * tests/scripts/options/dash-e: Create a test. + +2023-01-08 Paul Smith + + [SV 62654] Support GNU Make on z/OS + Original patches provided by Igor Todorovski + Reworked by Paul Smith . + Thanks to IBM for providing a test system. + + * NEWS: Announce support. + * AUTHORS: Ditto. + * README.zOS: Provide details on building GNU Make on z/OS. + * build.sh (get_mk_var): z/OS sh has a strange bug which causes it to + generate extra lines of output: rework the function to print output + as we compute it instead of collecting it into a variable, which + works around this bug. + * src/makeint.h: Declare MK_OS_ZOS if we're building for z/OS. + * src/arscan.c: Don't include on z/OS. + * src/job.c: We can't change environ in ASCII mode on z/OS. + * src/main.c: Ditto. Also we can't use pselect() on z/OS. + * src/posixos.c: pselect() seems to hang on z/OS: don't use it. + * tests/run_make_tests.pl: Handle different exit codes on z/OS. + * tests/test_driver.pl: Preserve some special z/OS env.vars. + Add special checks to output comparisons when on z/OS. + * tests/scripts/features/archives: Don't validate names. Don't + try to compile empty files as IBM compilers complain. + * tests/scripts/features/shell_assignment: Fix octal value of #. + * tests/scripts/features/temp_stdin: Don't print "term". + * tests/scripts/functions/shell: Handle shell exit codes. + * tests/scripts/targets/ONESHELL: Ditto. + * tests/scripts/targets/POSIX: sh -x prints differently. + * tests/scripts/variables/SHELL: Ditto. + +2023-01-08 Paul Smith + + Create src/mkcustom.h which is included by config.h + Put declarations for missing functions which we create in src/misc.c + into a file which is included by config.h via AH_BOTTOM(). This + ensures those prototypes are available, even in files added to + lib/... from gnulib. + + * src/mkcustom.h: Add a new file with function declarations. + * configure.ac: Include src/mkcustom.h in config.h with AH_BOTTOM() + * Makefile.am: Add the header to the SRCS list. + * src/makeint.h: Remove content that we added to src/mkcustom.h. + * src/config.ami: Add #include "mkcustom.h" to specialized config.h. + * src/config.h-vms: Ditto. + * src/config.h.W32: Ditto. + * src/configh.dos: Ditto. + +2023-01-08 Paul Smith + + Include globally + Various code uses str{,n}casecmp() so include , if it + exists, everywhere. + + * configure.ac: Check for explicitly. + * src/makeint.h: Include it if HAVE_STRINGS_H, for str{,n}casecmp(). + * src/job.c: Remove include of . + * src/main.c: Ditto. + +2023-01-07 Paul Smith + + * gl/lib/glob.c: Don't try to support _LIBC, don't use __stat() + +2023-01-03 Paul Smith + + [SV 63609] Avoid buffer overrun in --warn-undefined-variables + Reported by Dmitry Goncharov + + * src/variable.c (struct defined_vars): Create a struct that holds the + name and length of each variable name. + (warn_undefined): Check the lengths before comparing the contents. + * tests/scripts/options/warn-undefined-variables: Add a test. + +2023-01-03 Paul Smith + + [SV 14927] Allow parallel builds for archives + Compare the timestamp of the object file (if it exists) with the + archived object and if the object file is newer, ensure it's updated + in the archive. + + * NEWS: Announce the new capability. + * doc/make.texi (Dangers When Using Archives): Explain how to enable + parallel builds with archives. + * src/remake.c (f_mtime): For archive element files check the mod + time of the object file (if it exists) against the archive object + (if it exists). + * tests/scripts/features/archives: Add tests for this capability. + +2023-01-02 Paul Smith + + [SV 61463] Don't export inherited private variables + If a parent target has an exported variable that is private, don't + export it in child targets. + + * NEWS: Mention this change. + * src/variable.c (target_environment): Ignore private inherited + variables. + * tests/thelp.pl: Add a new "env" operation to show env.var. values. + * tests/scripts/variables/private: Verify this new behavior. + +2023-01-02 Paul Smith + + Update ancient glob/fnmatch implementations + I looked again at trying to use the latest gnulib implemenentations + of GNU glob and fnmatch, and the effort required to extract them + from gnulib and make them portable to systems which don't support + configure is simply far too daunting for me. However it's clear + that the previous implementations are growing too long on the tooth + to continue to be used without some maintenance, so perform some + upkeep on them. + + - Remove support for pre-ANSI function definitions. + - Remove the obsolete "register" keyword. + - Assume standard ISO C90/C99 header file support. + - Assume standard ISO C "void" and "const" support. + - Avoid symbols prefixed with "__" as they're reserved. + + * maintMakefile: Add a rule to verify lib has the latest content. + * src/dir.c: Use void* not __ptr_t which was removed. + * gl/lib/glob.c: See above. + * gl/lib/fnmatch.in.h: See above. + * gl/lib/glob.in.h: See above. + * gl/lib/fnmatch.c: See above. Remove __strchrnul(): it is not + checked anywhere and is only used in one place anyway. + +2023-01-02 Paul Smith + + * doc/make.texi (Special Targets): Fix minor typo + Reported by Andrey Melnikov . + +2023-01-01 Paul Smith + + Don't free uninitialized hash_table + * src/dir.c (clear_directory_contents): We use ht_vec to mark when + we have initialized the hash_table: don't free if it's NULL. + (everywhere): Use NULL instead of 0 when working with pointers. + + * maintMakefile: Add missing quote + + Convert references from "GNU make" to "GNU Make" + + Update to the latest gnulib stable branch + * bootstrap.conf: Request the latest gnulib stable branch. + * README.git: Recommend the argument form of autogen/autopull. + * bootstrap: Import the latest version of bootstrap. + * bootstrap-funclib.sh: Ditto. + * autogen.sh: Ditto. + * autopull.sh: Ditto. + + Update the copyright year on all files + +2022-12-31 Paul Smith + + Apply spelling fixes discovered by Codespell + * maintMakefile: Apply spelling fixes. + * src/file.c: Ditto. + * src/misc.c: Ditto. + * src/remake.c: Ditto. + * src/vmsjobs.c: Ditto. + * src/w32/pathstuff.c: Ditto. + * tests/test_driver.pl: Ditto. + * tests/run_make_tests.com: Ditto + * tests/scripts/features/implicit_search: Ditto + * tests/scripts/features/output-sync: Ditto + * tests/scripts/features/patternrules: Ditto + * tests/scripts/features/se_explicit: Ditto + * tests/scripts/features/statipattrules: Ditto + * tests/scripts/functions/foreach: Ditto + * tests/scripts/variables/MAKEFLAGS: Ditto + +2022-12-31 Paul Smith + + Avoid using false(1) in regression tests + The POSIX standard only requires false(1) to return a "non-zero" exit + code; almost all systems return 1 but some (Solaris!!!) return 255 or + possibly even other values. Use our helper "fail" instead. + + * tests/thelp.pl: Have the "fail" command obey -q. + * tests/scripts/features/parallelism: Helper -q no longer prints fail. + * tests/scripts/targets/POSIX: Replace false with #HELPER# -q fail 1. + * tests/scripts/variables/MAKEFLAGS: Ditto. + * tests/scripts/variables/SHELL: Ditto. + +2022-12-26 Paul Smith + + Make bootstrap.bat more portable + Using backslashes in a sed command line is tricky as different programs + use them differently as escape sequences. Eli Zaretskii points out + that Windows "echo" doesn't do any processing, so rework all our sed + invocations to use script files created by echo. + + * bootstrap.bat: Use echo to create sed script files instead of -e. + * Basic.mk.template: Fix typo in the comments. + * .gitignore: Ignore any .sed scripts. + +2022-12-24 Paul Smith + + * NEWS: Add a section for the next release + Add a note for the MAKEFLAGS enhancements. + +2022-12-24 Paul Smith + + [SV 63439, SV 63452] Don't warn on undefined internal variables + Don't generate undefined variable warnings for variables that are + internal / special to make and where the empty string is valid. + Rather than defining them to empty, which could introduce unwanted + behavior, keep a list of variable names which we should never warn + about. + + * src/variable.h (warn_undefined): Convert the macro to a function. + * src/variable.c (defined_vars): Always "defined" variable names. + (warn_undefined): Implement as a function and check against the + defined_vars before generating a warning. + * src/read.c (read_all_makefiles): No need to reset warning flag. + * src/vpath.c (build_vpath_lists): Ditto. + * tests/scripts/options/warn-undefined-variables: Expand all the + pre-defined variables to ensure warnings are not generated. + +2022-12-24 Paul Smith + + [SV 63552] Change directories before constructing include paths + * src/makeint.h (reset_makeflags): New function to handle changing + MAKEFLAGS from within makefiles. Remove decode_env_switches(). + * src/variable.c (set_special_var): Call reset_makeflags() instead + of various internal methods. + * src/main.c (decode_env_switches): Only internal now so make static. + (decode_switches): Don't invoke construct_include_path() yet. + (reset_makeflags): Decode env switches and construct include paths. + (main): Construct include paths after we process -C options. + * tests/scripts/options/dash-C: Rewrite to use new test constructs. + Add a test using both -C and -I together. + Add a test for multiple -C options. + +2022-12-20 Paul Smith + + tests [WINDOWS32]: Support Strawberry Perl on Windows + Strawberry Perl has some different behaviors from ActiveState Perl + which impact the test suite: + + - Avoid Perl's chomp() as it may not remove CRs; chomp() may remove + only the final NL but not the CR in a CRNL line ending. + - Strawberry Perl doesn't support ActiveState's system(1, ...) form. + - Strawberry Perl (or msys?) does something weird with "/tmp" when + provided to exec(), replacing it with the user's %TEMP%. + - Strawberry Perl uses msys paths like /c/foo instead of C:\foo. + + * tests/test_driver.pl (get_osname): Strawberry Perl uses 'msys' as + its $^O so if we see that use a port of 'W32'. + (_run_with_timeout): Strawberry Perl doesn't support the special + system(1, ...) form of system() so use POSIX standard fork/exec. + (compare_answer): Paths generated by Strawberry Perl use msys path + format (e.g., /c/foo instead of C:\foo); check for those differences + and compare RE against both the unmodified and modified log. + * tests/run_make_tests.pl (set_defaults): Switch from chomp to s/// + to remove CRNL and NL line endings. + * tests/scripts/features/errors: Executing directories on Strawberry + will give an error; translate it to Windows error output format. + * tests/scripts/features/output-sync: Ditto. + * tests/scripts/features/temp_stdin: Ditto. + * tests/scripts/functions/realpath: Ditto. + * tests/scripts/options/dash-I: Ditto. + * tests/scripts/variables/INCLUDE_DIRS: Ditto. + * tests/scripts/misc/close_stdout: /dev/full is reported as existing + on Strawberry Perl, but it doesn't do anything. Skip the test. + * tests/scripts/variables/MAKEFLAGS: When an argument containing + /tmp is passed to a program via exec(), something replaces it with + the expansion of the %TEMP% variable. Instead of using /tmp create + a local directory to use. + +2022-12-20 Paul Smith + + * tests/test_driver.pl: Remember if something failed and report it + +2022-12-19 Paul Smith + + [WINDOWS32] Remove CRNL from FormatMessage() result string + Sometimes the error message is expected to contain a newline, other + times it is not. Also the result of FormatMessage() sometimes ends + in CRNL already: when printed via fprintf() the final newline is + converted to CRNL, giving an output of CRCRNL which causes tests + to fail to match. Remove any CR/NL chars from the result string. + + * src/job.c (reap_children): Add \n to the error message fprintf. + (exec_command): Ditto. + * src/w32/subproc/w32err.c (map_windows32_error_to_string): Remove + any trailing CR or NL from the string before returning. + +2022-12-18 Dmitry Goncharov + + [SV 63537] Document and test flippable switches + * doc/make.texi (Options/Recursion): Clarify that MAKEFLAGS values + from the environment have precedence over those set in the makefile. + * tests/scripts/variables/MAKEFLAGS: Check boolean switches -k/-S, + -w/--no-print-directory and -s/--no-silent as follows: + 1. A switch can be enabled or disabled on the command line. + 2. A switch can be enabled or disabled in env. + 3. A switch can be enabled or disabled in makefile. + 4. Command line beats env and makefile. + 5. Env beats makefile. + 6. MAKEFLAGS contains each specified switch at parse and build time. + 7. If switches are specified in multiple origins, MAKEFLAGS contains + the winning switch at parse and build time. + 8. MAKEFLAGS does not contain the losing switch. + Also test that --debug settings from different origins are combined + together into one option. + +2022-12-18 Dmitry Goncharov + + [SV 63537] Pass enabled-by-default switches to submake + Certain switches, such as -S or --no-silent, turn on behavior that is + enabled by default. When a switch is specified via the command line, + makefile, or env, ensure the switch is added to MAKEFLAGS. + + * src/main.c (struct command_switch): Add bit "specified". + (switches): Initialize command_switch->specified. + (decode_switches): Set command_switch->specified. + (define_makeflags): Check command_switch->specified. + +2022-12-18 Dmitry Goncharov + + [SV 63537] Remember the origin of command line options + Certain options can be flipped on and off: -k/-S, -s/--no-silent, and + -w/--no-print-directory. Ensure they behave as follows: + 1. A switch can be enabled or disabled on the command line. + 2. A switch can be enabled or disabled in env. + 3. A switch can be enabled or disabled in makefile. + 4. Command line beats env and makefile. + 5. Env beats makefile. + + * src/main.c: Add variables to hold the origin of relevant options. + (struct command_switch): Add origin field. + (switches): Set a pointer to hold the origin of relevant options. + (decode_switches): For any switch that can be specified in makefile or + env, honor the switch only if cs->origin is not set or the specified + origin beats cs->origin. Set cs->origin when relevant. + +2022-12-18 Dmitry Goncharov + + [SV 63537] Fix setting -w in makefiles + * src/makeint.h: Replace print_directory flag with should_print_dir(). + * src/main.c (main): Remove print_directory flag and related code. + (should_print_dir): Create. + * src/output.c (output_dump): Use should_print_dir(). + (output_start): Ditto. + +2022-12-18 Dmitry Goncharov + + [SV 63484] Force included makefiles to be explicit + Ensure included makefiles are not treated as intermediate, even if + they are created by an implicit rule. + Reported by Patrick Oppenlander . + + * src/read.c (eval_makefile): Mark makefiles as explicit. + * tests/scripts/features/include: Add a test. + +2022-12-18 Paul Smith + + [SV 63516] [DOS] Support include files with drivespecs + * src/makeint.h (HAVE_DRIVESPEC): Create a macro to check. + * src/main.c (.FEATURES): Add "dospaths" as a feature. + * src/read.c (eval_makefile) [DOS]: If the included makefile name + starts with a drivespec, don't search the include directories. + * doc/make.texi (Include): Document this behavior. + * tests/scripts/features/include: Add a test. + + * src/job.c (new_job): [SV 63510] Trace phony prerequisite rebuilds + + * configure.ac: Update for a new release + * README.git: Add some packages needed for building from Git. + * AUTHORS: Updates. + +2022-11-28 Dmitry Goncharov + + [SV 63417] Ensure global .NOTINTERMEDIATE disables all intermediates + Fix .NOTINTERMEDIATE without prerequisites to disable intermediate + status for all targets. + + * src/makeint.h: Declare extern no_intermediates. + * src/main.c: Add global definition of no_intermediates. + * src/file.c: Remove static no_intermediates to use global variable. + (remove_intermediates): Check no_intermediates. + * src/implicit.c (pattern_search): For a file found by implicit search + set file->notintermediate if no_intermediates is set. + * src/remake.c (update_file_1): Don't set file->secondary for a + pre-existing file if no_intermediates is set. The check for + no_intermediates here is redundant, but won't hurt: keep it in case + things change so that it matters. + * tests/scripts/targets/NOTINTERMEDIATE: Fix a test. + +2022-11-28 Paul Smith + + * doc/make.texi: Use $(firstword) rather than $(word 1,) + +2022-11-28 Dmitry Goncharov + + [SV 63347] Always add command line variable assignments to MAKEFLAGS + This commit introduces two visible changes: + 1. Keep command line variable assignments in MAKEFLAGS at all times, + even while parsing makefiles. + 2. Define makeflags immediately when a makefile modifies MAKEFLAGS. + + The new MAKEFLAGS and MAKEOVERRIDES initialization procedure: + 1. decode_switches (argc, argv, o_command) is called to parse command + line variable assignments. + 2. Command line variable assignments go through quote_for_env. + Initialize -*-command-variables-*- to the quoted values. + 3. MAKEOVERRIDES is initialized to refer to -*-command-variables-*- + with origin o_env to keep the definitions in the database intact. + 4. define_makeflags() is called which adds MAKEOVERRIDES to MAKEFLAGS. + 5. Makefiles are parsed. If a makefile modifies MAKEFLAGS, the new + value of MAKEFLAGS is defined right away. + 6. Env switches are decoded again as o_env. The definitions set by + decode_switches at step 1 stay intact, as o_command beats o_env. + + We must preserve the original intact definitions in order to detect + failure cases; for example: + $ cat makefile + all:; $(hello) + $ make hello='$(world' + makefile:1: *** unterminated variable reference. Stop. + + * src/makeint.h: Declare enum variable_origin, struct variable and + define_makeflags(). Add parameter origin to decode_env_switches(). + * src/main.c (define_makeflags): Remove "all". If a variable is + assigned on the command line then append MAKEOVERRIDES to MAKEFLAGS. + (decode_env_switches): Replace parameter env with origin. + (decode_switches): Replace parameter env with origin. + Treat origin == o_command as env == 0. + (handle_non_switch_argument): Replace parameter env with origin. + Treat origin == o_command as env == 0. + (main): Call decode_switches() with origin==o_command before parsing + makefiles. Call decode_switches() with origin==o_env after parsing + makefiles. + * src/variable.c (set_special_var): Define makeflags at parse time, + each time a makefile modifies MAKEFLAGS. + (do_variable_definition): Strip command line variable assignments from + MAKEFLAGS before appending extra flags. set_special_var() adds them + back. + * tests/scripts/variables/MAKEFLAGS: Add tests. + +2022-11-16 Paul Smith + + * src/main.c (main): [SV 63373] Don't use macros with memcmp() + Reported by djm + +2022-11-15 Paul Smith + + Add specific hints for errors due to invalid conditionals + * src/read.c (eval): If "missing separator" appears to be due to + missing space after ifeq/ifneq, give a hint about the error. + * tests/scripts/misc/failure: Check for these types of failures. + * tests/scripts/variables/special: Move error checking unrelated + to special variables, to misc/failure. + +2022-11-13 Dmitry Goncharov + + [SV 63333] Be more lenient when failing to create temporary files + If make cannot create a temporary lock file for output sync, continue + without output sync enabled rather than dying. + + However, if make cannot store a makefile from stdin to a temporary + file that is still a fatal error. + + * misc.c (get_tmppath): Keep running on failure to generate a + temporary file name. + (get_tmpfd): Keep running on failure to get a temporary file. + (get_tmpfile): Keep running on failure to open a temporary file. + Ensure memory is freed if we return an error. + * posixos.c (os_anontmp): Keep running on failure to open an + anonymous temporary file. + * output.c (setup_tmpfile): Print an error on failure to create an + output sync lock file. + * main.c (main): Die on failure to store makefile from stdin to a + temporary file. + * tests/scripts/features/output-sync: Add tests. + * tests/scripts/features/temp_stdin: Ditto. + +2022-11-13 Paul Smith + + Keep going if we can't connect to the jobserver + * src/posixos.c (jobserver_parse_auth): Don't invoke fatal() if we + can't connect to an existing jobserver: just keep going without it. + * src/w32/w32os.c (jobserver_parse_auth): Ditto. + * tests/scripts/features/jobserver: Add a test for invalid FIFO + auth files. + + * src/dir.c (dir_contents_file_exists_p): Show dir name in error. + If we fail to read a directory show the directory name in the error + message. Pass struct directory instead of directory_contents to + allow that. + (dir_file_exists_p): Change dir_contents_file_exists_p caller. + (open_dirstrem): Ditto. + + * src/main.c (main): [SV 63307] Handle SIGPIPE as a fatal signal + Always ignoring SIGPIPE is visible to child processes. + +2022-11-13 Paul Smith + + [SV 63315] tests: Simplify TERM signaling + Tests that try to kill the make process were not behaving as expected + on OpenBSD: the signal was sent from make to its children but the + sleep didn't die. Something odd about the way the shell treats TERM. + To reduce platform dependencies add "term" to the helper tool and run + that instead of kill / sleep. + + * tests/thelp.pl: Add a new operation "term" that takes a PID. + * tests/scripts/features/output-sync: Use it. + * tests/scripts/features/temp_stdin: Ditto. + +2022-11-13 Paul Smith + + [SV 63315] Allocate function names when defining functions + * src/function.c (define_new_function): Don't keep a pointer to the + user-provided name of a user-defined function: if the .so is unloaded + it will point to garbage. Add the name to the strcache instead. + +2022-11-13 Paul Smith + + tests: Don't convert \ to / when checking regex's + When tests compare the output they will try converting backslashes + to slashes to see if that works. When we compare using regex's, + we can't do that because backslashes can escape special characters. + + * tests/test_driver.pl (compare_output): Clean up this function. + (compare_answer_vms) [VMS]: Comparing answers on VMS is complex; + move all of it into its own function returning 0/1. + (compare_answer): A new function to compare answers: return 0/1. + Remember the CRLF->LF conversion forever; only check \ -> / when + we compare strings, not regex's. + +2022-11-13 Justine Tunney (tiny change) + + * src/hash.c (jhash_string): Help the compiler optimize the hash + Invoke memcpy() with a constant length, where possible. + +2022-11-12 Paul Smith + + * src/config.h.W32 [TCC]: Only redefine strtoll if not defined + +2022-11-09 Eli Zaretskii + + * src/config.h.W32: Fix last change. + +2022-11-05 Eli Zaretskii + + Fix build with Tiny C + * src/config.h.W32 (strtoll, strtoull) [__TINYC__]: Redirect to + _strtoi64 and _strtoui64, respectively. Reported by Christian + Jullien . + 2022-10-31 Paul Smith Release GNU Make 4.4 diff --git a/Makefile.am b/Makefile.am index 53ec73c..c29c235 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ # This is a -*-Makefile-*-, or close enough # -# Copyright (C) 1997-2022 Free Software Foundation, Inc. +# Copyright (C) 1997-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -34,8 +34,8 @@ make_SRCS = src/ar.c src/arscan.c src/commands.c src/commands.h \ src/getopt.h src/getopt1.c src/gettext.h src/guile.c \ src/hash.c src/hash.h src/implicit.c src/job.c src/job.h \ src/load.c src/loadapi.c src/main.c src/makeint.h src/misc.c \ - src/os.h src/output.c src/output.h src/read.c src/remake.c \ - src/rule.c src/rule.h src/shuffle.h src/shuffle.c \ + src/mkcustom.h src/os.h src/output.c src/output.h src/read.c \ + src/remake.c src/rule.c src/rule.h src/shuffle.h src/shuffle.c \ src/signame.c src/strcache.c src/variable.c src/variable.h \ src/version.c src/vpath.c @@ -112,7 +112,7 @@ test_FILES = tests/run_make_tests tests/run_make_tests.bat \ # test/scripts are added via dist-hook below. EXTRA_DIST = ChangeLog INSTALL README build.sh build.cfg.in $(man_MANS) \ - src/mkconfig.h README.customs README.OS2 \ + src/mkconfig.h README.customs README.OS2 README.zOS \ README.Amiga SCOPTIONS src/config.ami \ README.DOS builddos.bat src/configh.dos \ README.W32 build_w32.bat src/config.h.W32 \ @@ -171,7 +171,8 @@ errorpre = makeerror-$(PACKAGE_VERSION)-$(host_triplet) testfiles = $(testlog) $(testresult) $(errorfile) MOSTLYCLEANFILES = $(testfiles) -errordetails = config.status config.log src/config.h $(testlog) tests/work +errordetails = config.status config.log src/config.h src/mkconfig.h \ + $(testlog) tests/work # Create a 4-letter random sequence rand_value = c = "abcdefghijklmnopqrstuvwxyz0123456789" diff --git a/Makefile.in b/Makefile.in index c6b0ff9..cd7a462 100644 --- a/Makefile.in +++ b/Makefile.in @@ -16,7 +16,7 @@ # This is a -*-Makefile-*-, or close enough # -# Copyright (C) 1997-2022 Free Software Foundation, Inc. +# Copyright (C) 1997-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -120,7 +120,7 @@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ $(top_srcdir)/m4/acinclude.m4 $(top_srcdir)/m4/alloca.m4 \ - $(top_srcdir)/m4/asm-underscore.m4 \ + $(top_srcdir)/m4/asm-underscore.m4 $(top_srcdir)/m4/c-bool.m4 \ $(top_srcdir)/m4/dospaths.m4 $(top_srcdir)/m4/eaccess.m4 \ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/findprog-in.m4 \ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/gettext.m4 \ @@ -132,8 +132,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longlong.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/sig_atomic_t.m4 \ - $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/warn-on-use.m4 \ - $(top_srcdir)/m4/year2038.m4 $(top_srcdir)/m4/zzgnulib.m4 \ + $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/zzgnulib.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) @@ -154,17 +153,17 @@ am__make_SOURCES_DIST = src/ar.c src/arscan.c src/commands.c \ src/getopt.c src/getopt.h src/getopt1.c src/gettext.h \ src/guile.c src/hash.c src/hash.h src/implicit.c src/job.c \ src/job.h src/load.c src/loadapi.c src/main.c src/makeint.h \ - src/misc.c src/os.h src/output.c src/output.h src/read.c \ - src/remake.c src/rule.c src/rule.h src/shuffle.h src/shuffle.c \ - src/signame.c src/strcache.c src/variable.c src/variable.h \ - src/version.c src/vpath.c src/w32/pathstuff.c src/w32/w32os.c \ - src/w32/compat/dirent.c src/w32/compat/posixfcn.c \ - src/w32/include/dirent.h src/w32/include/dlfcn.h \ - src/w32/include/pathstuff.h src/w32/include/sub_proc.h \ - src/w32/include/w32err.h src/w32/subproc/misc.c \ - src/w32/subproc/proc.h src/w32/subproc/sub_proc.c \ - src/w32/subproc/w32err.c src/posixos.c src/remote-cstms.c \ - src/remote-stub.c + src/misc.c src/mkcustom.h src/os.h src/output.c src/output.h \ + src/read.c src/remake.c src/rule.c src/rule.h src/shuffle.h \ + src/shuffle.c src/signame.c src/strcache.c src/variable.c \ + src/variable.h src/version.c src/vpath.c src/w32/pathstuff.c \ + src/w32/w32os.c src/w32/compat/dirent.c \ + src/w32/compat/posixfcn.c src/w32/include/dirent.h \ + src/w32/include/dlfcn.h src/w32/include/pathstuff.h \ + src/w32/include/sub_proc.h src/w32/include/w32err.h \ + src/w32/subproc/misc.c src/w32/subproc/proc.h \ + src/w32/subproc/sub_proc.c src/w32/subproc/w32err.c \ + src/posixos.c src/remote-cstms.c src/remote-stub.c am__dirstamp = $(am__leading_dot)dirstamp am__objects_1 = src/ar.$(OBJEXT) src/arscan.$(OBJEXT) \ src/commands.$(OBJEXT) src/default.$(OBJEXT) src/dir.$(OBJEXT) \ @@ -328,9 +327,10 @@ am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/build.cfg.in \ $(top_srcdir)/build-aux/install-sh \ $(top_srcdir)/build-aux/missing $(top_srcdir)/src/config.h.in \ $(top_srcdir)/tests/config-flags.pm.in ABOUT-NLS AUTHORS \ - COPYING NEWS README build-aux/compile build-aux/config.guess \ - build-aux/config.rpath build-aux/config.sub build-aux/depcomp \ - build-aux/install-sh build-aux/missing + COPYING ChangeLog INSTALL NEWS README build-aux/compile \ + build-aux/config.guess build-aux/config.rpath \ + build-aux/config.sub build-aux/depcomp build-aux/install-sh \ + build-aux/mdate-sh build-aux/missing build-aux/texinfo.tex DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -394,6 +394,9 @@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -415,7 +418,6 @@ GUILE_CFLAGS = @GUILE_CFLAGS@ GUILE_LIBS = @GUILE_LIBS@ HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ -HAVE__BOOL = @HAVE__BOOL@ HOST_CPU = @HOST_CPU@ HOST_CPU_C_ABI = @HOST_CPU_C_ABI@ INSTALL = @INSTALL@ @@ -460,7 +462,6 @@ REMOTE = @REMOTE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ -STDBOOL_H = @STDBOOL_H@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ USE_SYSTEM_GLOB = @USE_SYSTEM_GLOB@ @@ -473,6 +474,7 @@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -537,8 +539,8 @@ make_SRCS = src/ar.c src/arscan.c src/commands.c src/commands.h \ src/getopt.h src/getopt1.c src/gettext.h src/guile.c \ src/hash.c src/hash.h src/implicit.c src/job.c src/job.h \ src/load.c src/loadapi.c src/main.c src/makeint.h src/misc.c \ - src/os.h src/output.c src/output.h src/read.c src/remake.c \ - src/rule.c src/rule.h src/shuffle.h src/shuffle.c \ + src/mkcustom.h src/os.h src/output.c src/output.h src/read.c \ + src/remake.c src/rule.c src/rule.h src/shuffle.h src/shuffle.c \ src/signame.c src/strcache.c src/variable.c src/variable.h \ src/version.c src/vpath.c @@ -584,7 +586,7 @@ test_FILES = tests/run_make_tests tests/run_make_tests.bat \ # test/scripts are added via dist-hook below. EXTRA_DIST = ChangeLog INSTALL README build.sh build.cfg.in $(man_MANS) \ - src/mkconfig.h README.customs README.OS2 \ + src/mkconfig.h README.customs README.OS2 README.zOS \ README.Amiga SCOPTIONS src/config.ami \ README.DOS builddos.bat src/configh.dos \ README.W32 build_w32.bat src/config.h.W32 \ @@ -607,7 +609,9 @@ testresult = tests/.test-result errorpre = makeerror-$(PACKAGE_VERSION)-$(host_triplet) testfiles = $(testlog) $(testresult) $(errorfile) MOSTLYCLEANFILES = $(testfiles) -errordetails = config.status config.log src/config.h $(testlog) tests/work +errordetails = config.status config.log src/config.h src/mkconfig.h \ + $(testlog) tests/work + # Create a 4-letter random sequence rand_value = c = "abcdefghijklmnopqrstuvwxyz0123456789" diff --git a/NEWS b/NEWS index c370b0a..4ab1513 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,6 @@ GNU Make NEWS -*-indented-text-*- History of user-visible changes. - 31 October 2022 + 26 February 2023 See the end of this file for copyrights and conditions. @@ -8,6 +8,46 @@ All user-visible changes are more fully described in the GNU Make manual, which is contained in this distribution as the file doc/make.texi. See the README file and the GNU Make manual for instructions for reporting bugs. + + +Version 4.4.1 (26 Feb 2023) + +This release is primarily a bug-fix release. +A complete list of bugs fixed in this version is available here: + +https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=110&set=custom + +* WARNING: Backward-incompatibility! + In previous releases it was not well-defined when updates to MAKEFLAGS made + inside a makefile would be visible. This release ensures they are visible + immediately, even when invoking $(shell ...) functions. Also, command line + variable assignments are now always present in MAKEFLAGS, even when parsing + makefiles. + Implementation provided by Dmitry Goncharov + +* New feature: Parallel builds of archives + Previously it was not possible to use parallel builds with archives. It is + still not possible using the built-in rules, however you can now override + the built-in rules with a slightly different set of rules and use parallel + builds with archive creation. See the "Dangers When Using Archives" section + of the GNU Make manual, and https://savannah.gnu.org/bugs/index.php?14927 + +* Previously target-specific variables would inherit their "export" capability + from parent target-specific variables even if they were marked private. Now + private parent target-specific variables have no affect. For more details + see https://savannah.gnu.org/bugs/index.php?61463 + +* Disable FIFO jobserver on GNU/Hurd and Cygwin + Experimentation shows that the new FIFO-based jobserver doesn't work well on + GNU/Hurd or Cygwin: revert these systems to use the pipe-based jobserver. + +* Updates to allow building on OS/2 + Provided by KO Myung-Hun + +* New platform: GNU Make is supported on z/OS + Thanks to Igor Todorovski for the patches and testing + assistance. + Version 4.4 (31 Oct 2022) @@ -245,7 +285,7 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=108&se warning about this behavior is generated: warning: ignoring prerequisites on suffix rule definition The POSIX behavior will be adopted as the only behavior in a future release - of GNU make so please resolve any warnings. + of GNU Make so please resolve any warnings. * New feature: Grouped explicit targets Pattern rules have always had the ability to generate multiple targets with @@ -266,7 +306,7 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=108&se * Makefiles can now specify the '-j' option in their MAKEFLAGS variable and this will cause make to enable that parallelism mode. -* GNU make will now use posix_spawn() on systems where it is available. +* GNU Make will now use posix_spawn() on systems where it is available. If you prefer to use fork/exec even on systems where posix_spawn() is present, you can use the --disable-posix-spawn option to configure. Implementation contributed by Aron Barath @@ -283,17 +323,17 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=108&se * A new option -E has been added as a short alias for --eval. -* All wildcard expansion within GNU make, including $(wildcard ...), will sort +* All wildcard expansion within GNU Make, including $(wildcard ...), will sort the results. See https://savannah.gnu.org/bugs/index.php?52076 * Interoperate with newer GNU libc and musl C runtime libraries. * Performance improvements provided by Paolo Bonzini -GNU make Developer News +GNU Make Developer News * Import the GNU standard bootstrap script to replace the hand-rolled - "make update" method for building code from a GNU make Git repository. + "make update" method for building code from a GNU Make Git repository. * Rework the source distribution to move source files into the src/* subdirectory. This aligns with modern best practices in GNU. @@ -327,11 +367,11 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=106&se The function is expanded to the contents of the file. The contents are expanded verbatim except that the final newline, if any, is stripped. -* The makefile line numbers shown by GNU make now point directly to the +* The makefile line numbers shown by GNU Make now point directly to the specific line in the recipe where the failure or warning occurred. Sample changes suggested by Brian Vandenberg -* The interface to GNU make's "jobserver" is stable as documented in the +* The interface to GNU Make's "jobserver" is stable as documented in the manual, for tools which may want to access it. WARNING: Backward-incompatibility! The internal-only command line option @@ -366,7 +406,7 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=105&se requested mode, then closed again. * Change the fatal error for mixed explicit and implicit rules, that was - introduced in GNU make 3.82, to a non-fatal error. However, this syntax is + introduced in GNU Make 3.82, to a non-fatal error. However, this syntax is still deprecated and may return to being illegal in a future version of GNU make. Makefiles that rely on this syntax should be fixed. See https://savannah.gnu.org/bugs/?33034 @@ -414,7 +454,7 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=101&se single space * New feature: GNU Guile integration - This version of GNU make can be compiled with GNU Guile integration. + This version of GNU Make can be compiled with GNU Guile integration. GNU Guile serves as an embedded extension language for make. See the "Guile Function" section in the GNU Make manual for details. Currently GNU Guile 1.8 and 2.0+ are supported. In Guile 1.8 there is no @@ -446,20 +486,20 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=101&se * New feature: "!=" shell assignment operator as an alternative to the $(shell ...) function. Implemented for compatibility with BSD makefiles. Note there are subtle differences between "!=" and $(shell ...). See the - description in the GNU make manual. + description in the GNU Make manual. WARNING: Backward-incompatibility! Variables ending in "!" previously defined as "variable!= value" will now be interpreted as shell assignment. Change your assignment to add whitespace between the "!" and "=": "variable! = value" * New feature: "::=" simple assignment operator as defined by POSIX in 2012. - This operator has identical functionality to ":=" in GNU make, but will be + This operator has identical functionality to ":=" in GNU Make, but will be portable to any implementation of make conforming to a sufficiently new version of POSIX (see https://austingroupbugs.net/view.php?id=330). It is not necessary to define the .POSIX target to access this operator. * New feature: Loadable objects - This version of GNU make contains a "technology preview": the ability to + This version of GNU Make contains a "technology preview": the ability to load dynamic objects into the make runtime. These objects can be created by the user and can add extended functionality, usable by makefiles. @@ -467,8 +507,8 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=101&se * New variable: $(GNUMAKEFLAGS) will be parsed for make flags, just like MAKEFLAGS is. It can be set in the environment or the makefile, containing - GNU make-specific flags to allow your makefile to be portable to other - versions of make. Once this variable is parsed, GNU make will set it to the + GNU Make-specific flags to allow your makefile to be portable to other + versions of make. Once this variable is parsed, GNU Make will set it to the empty string so that flags will not be duplicated on recursion. * New variable: `MAKE_HOST' gives the name of the host architecture @@ -509,7 +549,7 @@ A complete list of bugs fixed in this version is available here: https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set=custom -* Compiling GNU make now requires a conforming ISO C 1989 compiler and +* Compiling GNU Make now requires a conforming ISO C 1989 compiler and standard runtime library. * WARNING: Backward-incompatibility! @@ -517,7 +557,7 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&se fundamentally incompatible way: make is required to invoke the shell as if the '-e' flag were provided. Because this would break many makefiles that have been written to conform to the original text of the standard, the - default behavior of GNU make remains to invoke the shell with simply '-c'. + default behavior of GNU Make remains to invoke the shell with simply '-c'. However, any makefile specifying the .POSIX special target will follow the new POSIX standard and pass '-e' to the shell. See also .SHELLFLAGS below. @@ -626,9 +666,9 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&se * A note on appending the redirected output. With this change, a simple mechanism is implemented to make ">>" work in action lines. In VMS there is no simple feature like ">>" to have DCL command or program - output redirected and appended to a file. GNU make for VMS already + output redirected and appended to a file. GNU Make for VMS already implements the redirection of output. If such a redirection is detected, - an ">" on the action line, GNU make creates a DCL command procedure to + an ">" on the action line, GNU Make creates a DCL command procedure to execute the action and to redirect its output. Based on that, now ">>" is also recognized and a similar but different command procedure is created to implement the append. The main idea here is to create a @@ -637,7 +677,7 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&se in the command procedure to keep changes in make small and simple. This obviously has some limitations but it seems good enough compared with the current ">" implementation. (And in my opinion, redirection is not - really what GNU make has to do.) With this approach, it may happen that + really what GNU Make has to do.) With this approach, it may happen that the temporary file is not yet appended and is left in SYS$SCRATCH. The temporary file names look like "CMDxxxxx.". Any time the created command procedure can not complete, this happens. Pressing Ctrl+Y to @@ -660,9 +700,9 @@ https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&se Version 3.81 (01 Apr 2006) -* GNU make is ported to OS/2. +* GNU Make is ported to OS/2. -* GNU make is ported to MinGW. The MinGW build is only supported by +* GNU Make is ported to MinGW. The MinGW build is only supported by the build_w32.bat batch file; see the file README.W32 for more details. @@ -670,12 +710,12 @@ Version 3.81 (01 Apr 2006) Up to and including this release, the '$?' variable does not contain any prerequisite that does not exist, even though that prerequisite might have caused the target to rebuild. Starting with the _next_ - release of GNU make, '$?' will contain all prerequisites that caused + release of GNU Make, '$?' will contain all prerequisites that caused the target to be considered out of date. See https://savannah.gnu.org/bugs/?16051 * WARNING: Backward-incompatibility! - GNU make now implements a generic "second expansion" feature on the + GNU Make now implements a generic "second expansion" feature on the prerequisites of both explicit and implicit (pattern) rules. In order to enable this feature, the special target '.SECONDEXPANSION' must be defined before the first target which takes advantage of it. If this @@ -693,23 +733,23 @@ Version 3.81 (01 Apr 2006) of this SysV feature you will need to update them. * WARNING: Backward-incompatibility! - In order to comply with POSIX, the way in which GNU make processes + In order to comply with POSIX, the way in which GNU Make processes backslash-newline sequences in recipes has changed. If your makefiles use backslash-newline sequences inside of single-quoted strings in - recipes you will be impacted by this change. See the GNU make manual + recipes you will be impacted by this change. See the GNU Make manual subsection "Splitting Recipe Lines" (node "Splitting Lines"), in section "Recipe Syntax", chapter "Writing Recipe in Rules", for details. * WARNING: Backward-incompatibility! - Some previous versions of GNU make had a bug where "#" in a function + Some previous versions of GNU Make had a bug where "#" in a function invocation such as $(shell ...) was treated as a make comment. A workaround was to escape these with backslashes. This bug has been fixed: if your makefile uses "\#" in a function invocation the backslash is now preserved, so you'll need to remove it. * New command line option: -L (--check-symlink-times). On systems that - support symbolic links, if this option is given then GNU make will + support symbolic links, if this option is given then GNU Make will use the most recent modification time of any symbolic links that are used to resolve target files. The default behavior remains as it always has: use the modification time of the actual target file only. @@ -729,16 +769,16 @@ Version 3.81 (01 Apr 2006) call are now masked in the context of the inner call. * Implemented a solution for the "thundering herd" problem with "-j -l". - This version of GNU make uses an algorithm suggested by Thomas Riedl + This version of GNU Make uses an algorithm suggested by Thomas Riedl to track the number of jobs started in the - last second and artificially adjust GNU make's view of the system's + last second and artificially adjust GNU Make's view of the system's load average accordingly. * New special variables available in this release: - .INCLUDE_DIRS: Expands to a list of directories that make searches for included makefiles. - .FEATURES: Contains a list of special features available in this - version of GNU make. + version of GNU Make. - .DEFAULT_GOAL: Set the name of the default goal make will use if no goals are provided on the command line. - MAKE_RESTARTS: If set, then this is the number of times this @@ -776,7 +816,7 @@ Version 3.81 (01 Apr 2006) it will be set in the environment, just as before. * On MS Windows systems, explicitly setting SHELL to a pathname ending - in "cmd" or "cmd.exe" (case-insensitive) will force GNU make to use + in "cmd" or "cmd.exe" (case-insensitive) will force GNU Make to use the DOS command interpreter in batch mode even if a UNIX-like shell could be found on the system. @@ -808,7 +848,7 @@ Version 3.80 (03 Oct 2002) requiring that target A will always be rebuilt if target B is updated. Patch for this feature provided by Greg McGary . -* For compatibility with SysV make, GNU make now supports the peculiar +* For compatibility with SysV make, GNU Make now supports the peculiar syntax $$@, $$(@D), and $$(@F) in the prerequisites list of a rule. This syntax is only valid within explicit and static pattern rules: it cannot be used in implicit (suffix or pattern) rules. Edouard G. Parmelan @@ -833,7 +873,7 @@ Version 3.80 (03 Oct 2002) useful here. * A new built-in variable is defined, $(MAKEFILE_LIST). It contains a - list of each makefile GNU make has read, or started to read, in the + list of each makefile GNU Make has read, or started to read, in the order in which they were encountered. So, the last filename in the list when a makefile is just being read (before any includes) is the name of the current makefile. @@ -843,7 +883,7 @@ Version 3.80 (03 Oct 2002) makefiles at that moment. * A new command line option is defined, -B or --always-make. If - specified GNU make will consider all targets out-of-date even if they + specified GNU Make will consider all targets out-of-date even if they would otherwise not be. * The arguments to $(call ...) functions were being stored in $1, $2, @@ -868,7 +908,7 @@ Version 3.80 (03 Oct 2002) Turkish. * Updated internationalization support to Gettext 0.11.5. - GNU make now uses Gettext's "external" feature, and does not include + GNU Make now uses Gettext's "external" feature, and does not include any internationalization code itself. Configure will search your system for an existing implementation of GNU Gettext (only GNU Gettext is acceptable) and use it if it exists. If not, NLS will be disabled. @@ -900,7 +940,7 @@ Version 3.80 (03 Oct 2002) available ECOs for VMS V7.1 and newer versions. It is fixed in versions shipped with newer VMS versions and all ECO kits after October 1999. It only shows up during the daylight saving time period (DST): stat() - returns a modification time 1 hour ahead. This results in GNU make + returns a modification time 1 hour ahead. This results in GNU Make warning messages. For a just created source you will see: $ gmake x.exe @@ -928,11 +968,11 @@ Version 3.79.1 (23 Jun 2000) Version 3.79 (04 Apr 2000) -* GNU make optionally supports internationalization and locales via the +* GNU Make optionally supports internationalization and locales via the GNU gettext (or local gettext if suitable) package. See the ABOUT-NLS - file for more information on configuring GNU make for NLS. + file for more information on configuring GNU Make for NLS. -* Previously, GNU make quoted variables such as MAKEFLAGS and +* Previously, GNU Make quoted variables such as MAKEFLAGS and MAKEOVERRIDES for proper parsing by the shell. This allowed them to be used within make build scripts. However, using them there is not proper behavior: they are meant to be passed to subshells via the @@ -966,12 +1006,12 @@ Version 3.79 (04 Apr 2000) value is greater than the "end" value. If that's true, nothing is returned. -* Hartmut Becker provided many updates for the VMS port of GNU make. +* Hartmut Becker provided many updates for the VMS port of GNU Make. See the README.VMS file for more details. * VMS-specific changes: - * Fix a problem with automatically remaking makefiles. GNU make uses an + * Fix a problem with automatically remaking makefiles. GNU Make uses an execve to restart itself after a successful remake of the makefile. On UNIX systems execve replaces the running program with a new one and resets all signal handling to the default. On VMS execve creates a child @@ -1049,7 +1089,7 @@ Version 3.78 (22 Sep 1999) * A "job server" feature, suggested by Howard Chu . - On systems that support POSIX pipe(2) semantics, GNU make can now pass + On systems that support POSIX pipe(2) semantics, GNU Make can now pass -jN options to submakes rather than forcing them all to use -j1. The top make and all its sub-make processes use a pipe to communicate with each other to ensure that no more than N jobs are started across all @@ -1057,20 +1097,20 @@ Version 3.78 (22 Sep 1999) with the --disable-job-server option. * The confusing term "dependency" has been replaced by the more accurate - and standard term "prerequisite", both in the manual and in all GNU make + and standard term "prerequisite", both in the manual and in all GNU Make output. -* GNU make supports the "big archive" library format introduced in AIX 4.3. +* GNU Make supports the "big archive" library format introduced in AIX 4.3. -* GNU make supports large files on AIX, HP-UX, and IRIX. These changes +* GNU Make supports large files on AIX, HP-UX, and IRIX. These changes were provided by Paul Eggert . (Large file support for Solaris and Linux was introduced in 3.77, but the configuration had issues: these have also been resolved). -* The Windows 95/98/NT (W32) version of GNU make now has native support +* The Windows 95/98/NT (W32) version of GNU Make now has native support for the Cygnus Cygwin release B20.1 shell (bash). -* The GNU make regression test suite, long available separately "under +* The GNU Make regression test suite, long available separately "under the table", has been integrated into the release. You can invoke it by running "make check" in the distribution. Note that it requires Perl (either Perl 4 or Perl 5) to run. @@ -1113,10 +1153,10 @@ Version 3.77 (28 Jul 1998) you'll have to escape both of them: "foo : bar\\\=baz". * A new appendix listing the most common error and warning messages - generated by GNU make, with some explanation, has been added to the - GNU make User's Manual. + generated by GNU Make, with some explanation, has been added to the + GNU Make User's Manual. -* Updates to the GNU make Customs library support (see README.customs). +* Updates to the GNU Make Customs library support (see README.customs). * Updates to the Windows 95/NT port from Rob Tulloh (see README.W32), and to the DOS port from Eli Zaretski (see README.DOS). @@ -1166,7 +1206,7 @@ Version 3.76.1 (19 Sep 1997) Version 3.76 (16 Sep 1997) -* GNU make now uses automake to control Makefile.in generation. This +* GNU Make now uses automake to control Makefile.in generation. This should make it more consistent with the GNU standards. * VPATH functionality has been changed to incorporate the VPATH+ patch, @@ -1181,7 +1221,7 @@ Version 3.76 (16 Sep 1997) list of words from number S to number E (inclusive) of TEXT. * Instead of an error, detection of future modification times gives a - warning and continues. The warning is repeated just before GNU make + warning and continues. The warning is repeated just before GNU Make exits, so it is less likely to be lost. * Fix the $(basename) and $(suffix) functions so they only operate on @@ -1336,9 +1376,9 @@ Version 3.71 (21 May 1994) There is no longer a separate distribution containing Info and DVI files. * You can now set the variables `binprefix' and/or `manprefix' in - Makefile.in (or on the command line when installing) to install GNU make + Makefile.in (or on the command line when installing) to install GNU Make under a name other than `make' (i.e., ``make binprefix=g install'' - installs GNU make as `gmake'). + installs GNU Make as `gmake'). * The built-in Texinfo rules use the new variables `TEXI2DVI_FLAGS' for flags to the `texi2dvi' script, and `MAKEINFO_FLAGS' for flags to the @@ -1818,7 +1858,7 @@ Version 3.05 (Changes from versions 1 through 3.05 were never recorded. Sorry.) ------------------------------------------------------------------------------- -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/README b/README index 43075d3..f6d19e7 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -This directory contains the 4.4 release of GNU Make. +This directory contains the 4.4.1 release of GNU Make. See the file NEWS for the user-visible changes from previous releases. In addition, there have been bugs fixed. @@ -184,6 +184,8 @@ Ports - See README.Amiga for details about GNU Make on AmigaDOS. + - See README.zOS for details about GNU Make on z/OS. + - See README.W32 for details about GNU Make on Windows NT, 95, or 98. - See README.DOS for compilation instructions on MS-DOS and MS-Windows @@ -205,7 +207,7 @@ at the right README! ------------------------------------------------------------------------------- -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/README.Amiga b/README.Amiga index 94fcc13..e420191 100644 --- a/README.Amiga +++ b/README.Amiga @@ -64,7 +64,7 @@ If you plan to use recursive makes, install make resident: ------------------------------------------------------------------------------- -Copyright (C) 1995-2022 Free Software Foundation, Inc. +Copyright (C) 1995-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/README.DOS b/README.DOS index 95c3388..3422767 100644 --- a/README.DOS +++ b/README.DOS @@ -280,7 +280,7 @@ Bug reports: ------------------------------------------------------------------------------- -Copyright (C) 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/README.OS2 b/README.OS2 index 82f496e..b4c8dac 100644 --- a/README.OS2 +++ b/README.OS2 @@ -73,7 +73,7 @@ III. ***** COMPILATION AND INSTALLATION ***** To recreate the configuration files use: export EMXSHELL=ksh - aclocal -I config + aclocal -I m4 automake autoconf autoheader @@ -93,7 +93,7 @@ Recommended environment variables and installation options: export CFLAGS="-O2 -Zomf -Zmt" export LDFLAGS="-Zcrtdll -Zlinker /exepack:2 -Zlinker /pm:vio -Zstack 0x6000" export RANLIB="echo" - ./configure --prefix=x:/usr --infodir=x:/usr/share/info --mandir=x:/usr/share/man --without-included-gettext + ./configure --prefix=x:/usr --infodir=x:/usr/share/info --mandir=x:/usr/share/man make AR=emxomfar make install @@ -102,6 +102,9 @@ Note: If you use gcc 2.9.x I recommend to set also LIBS="-lgcc" Note: You can add -DNO_CMD_DEFAULT and -DNO_CHDIR2 to CPPFLAGS. See section I. for details. +Note: If you use Open Watcom Linker instead of IBM Linker, remove + '-Zlinker /exepack:2' from LDFLAGS. + IV. ***** NLS support ***** @@ -160,7 +163,7 @@ from the make source tree. ------------------------------------------------------------------------------- -Copyright (C) 2003-2022 Free Software Foundation, Inc. +Copyright (C) 2003-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/README.W32 b/README.W32 index 7802b73..fab9e8f 100644 --- a/README.W32 +++ b/README.W32 @@ -1,5 +1,5 @@ This version of GNU Make has been tested on: - Microsoft Windows 2000/XP/2003/Vista/7/8/10 + Microsoft Windows 2000/XP/2003/Vista/7/8/10/11 It has also been used on Windows 95/98/NT, and on OS/2. It builds with the MinGW port of GCC (tested with GCC 3.4.2, 4.8.1, @@ -347,7 +347,7 @@ Bug reports: is described in the GNU Make manual and the base README. ------------------------------------------------------------------------------- -Copyright (C) 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/README.customs b/README.customs index c6cf979..a2053d1 100644 --- a/README.customs +++ b/README.customs @@ -96,7 +96,7 @@ SunOS 4.1.x: ------------------------------------------------------------------------------- -Copyright (C) 1998-2022 Free Software Foundation, Inc. +Copyright (C) 1998-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/README.zOS b/README.zOS new file mode 100644 index 0000000..7ff5065 --- /dev/null +++ b/README.zOS @@ -0,0 +1,83 @@ + -*-text-*- +GNU Make has been ported to z/OS, tested on z/OS V2R4. + + +PREREQUISITES +------------- +Building GNU Make requires certain tools be installed on your z/OS system. +These tools can be downloaded from: https://github.com/ZOSOpenTools +For detailed instructions on how to set up these tools, visit +https://zosopentools.github.io/meta/#/Guides/Pre-req + +You will need curl, tar, and gzip to download and unpack the GNU Make release +package, but presumably you've already worked this out if you're reading this +document! + +You will need the IBM C/C++ compiler. You can download a web deliverable +add-on feature to your XL C/C++ compiler here: +https://www-40.ibm.com/servers/resourcelink/svc00100.nsf/pages/xlCC++V241ForZOsV24 + +Alternatively, you can install and manage C/C++ for Open Enterprise Languages +on z/OS using RedHat OpenShift Container Platform and IBM Z and Cloud +Modernization Stack. + +GNU Make has a dependency on the ZOSLIB library, which is documented here: +https://zosopentools.github.io/meta/#/Guides/Zoslib. + +To obtain the latest release of zoslib, you can download it from here: +https://github.com/ZOSOpenTools/zoslibport/releases. + + +BUILDING +-------- +If you are trying to build from a checked-out Git workspace, see README.git. + +Before building GNU Make, you will need to ensure that the following +environment variables are set, to turn on z/OS enhanced ASCII support: + + export _BPXK_AUTOCVT=ON + export _CEE_RUNOPTS="$_CEE_RUNOPTS FILETAG(AUTOCVT,AUTOTAG) POSIX(ON)" + export _TAG_REDIR_ERR=txt + export _TAG_REDIR_IN=txt + export _TAG_REDIR_OUT=txt + +To ensure proper functioning of xlclang, set the following environment +variables before building: + + export _CC_CCMODE=1 + export _C89_CCMODE=1 + export _CXX_CCMODE=1 + +Set PATH_TO_ZOSLIB to the location of your zoslib installation; e.g.: + + PATH_TO_ZOSLIB=$HOME/zopen/prod/zoslib + +Invoke ./configure as follows: + + ./configure \ + CC=xlclang \ + CPPFLAGS="-DNSIG=42 -D_XOPEN_SOURCE=600 -D_ALL_SOURCE -D_OPEN_SYS_FILE_EXT=1 -D_AE_BIMODAL=1 -D_ENHANCED_ASCII_EXT=0xFFFFFFF -DZOSLIB_OVERRIDE_CLIB=1" \ + CFLAGS="-qascii -std=gnu11 -qnocsect -qenum=int -I$PATH_TO_ZOSLIB/include" \ + LDFLAGS="-L$PATH_TO_ZOSLIB/lib" \ + LIBS="-lzoslib $PATH_TO_ZOSLIB/lib/CXXRT64.x" + +If you have an instance of make already available you can build with: + + make + +If not, you can build with: + + ./build.sh + + +TESTING +------- +To run the regression tests you'll need to install Perl and enable it. +Then you can run: + + ./make check + + +INSTALLING +---------- +Copy the "make" program to wherever you want it to be installed, on your PATH. diff --git a/aclocal.m4 b/aclocal.m4 index b683b83..2c80ca1 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -20,9 +20,9 @@ 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'.])]) -dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -dnl serial 11 (pkg-config-0.29.1) -dnl +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 12 (pkg-config-0.29.2) + dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson dnl @@ -63,7 +63,7 @@ dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], -[m4_define([PKG_MACROS_VERSION], [0.29.1]) +[m4_define([PKG_MACROS_VERSION], [0.29.2]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ @@ -164,7 +164,7 @@ AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no -AC_MSG_CHECKING([for $1]) +AC_MSG_CHECKING([for $2]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) @@ -174,11 +174,11 @@ and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then - AC_MSG_RESULT([no]) + AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` - else + else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs @@ -195,7 +195,7 @@ installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) + AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full @@ -1488,6 +1488,7 @@ m4_include([m4/00gnulib.m4]) m4_include([m4/acinclude.m4]) m4_include([m4/alloca.m4]) m4_include([m4/asm-underscore.m4]) +m4_include([m4/c-bool.m4]) m4_include([m4/dospaths.m4]) m4_include([m4/eaccess.m4]) m4_include([m4/extensions.m4]) @@ -1508,7 +1509,5 @@ m4_include([m4/nls.m4]) m4_include([m4/po.m4]) m4_include([m4/progtest.m4]) m4_include([m4/sig_atomic_t.m4]) -m4_include([m4/stdbool.m4]) m4_include([m4/warn-on-use.m4]) -m4_include([m4/year2038.m4]) m4_include([m4/zzgnulib.m4]) diff --git a/build-aux/config.guess b/build-aux/config.guess index 1817bdc..69188da 100755 --- a/build-aux/config.guess +++ b/build-aux/config.guess @@ -1,10 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2022 Free Software Foundation, Inc. +# Copyright 1992-2023 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2022-05-25' +timestamp='2023-01-01' # 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 @@ -60,7 +60,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2022 Free Software Foundation, Inc. +Copyright 1992-2023 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." @@ -966,6 +966,12 @@ EOF GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC ;; + x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-pc-managarm-mlibc" + ;; + *:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" + ;; *:Minix:*:*) GUESS=$UNAME_MACHINE-unknown-minix ;; @@ -1036,7 +1042,7 @@ EOF k1om:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; - loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) + loongarch32:Linux:*:* | loongarch64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m32r*:Linux:*:*) diff --git a/build-aux/config.sub b/build-aux/config.sub index dba16e8..de4259e 100755 --- a/build-aux/config.sub +++ b/build-aux/config.sub @@ -1,10 +1,10 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2022 Free Software Foundation, Inc. +# Copyright 1992-2023 Free Software Foundation, Inc. # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2022-01-03' +timestamp='2023-01-21' # 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 @@ -76,7 +76,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright 1992-2022 Free Software Foundation, Inc. +Copyright 1992-2023 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." @@ -145,7 +145,7 @@ case $1 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*) + | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) basic_machine=$field1 basic_os=$maybe_os ;; @@ -1075,7 +1075,7 @@ case $cpu-$vendor in pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) cpu=i586 ;; - pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) + pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) cpu=i686 ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) @@ -1207,7 +1207,7 @@ case $cpu-$vendor in | k1om \ | le32 | le64 \ | lm32 \ - | loongarch32 | loongarch64 | loongarchx32 \ + | loongarch32 | loongarch64 \ | m32c | m32r | m32rle \ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ @@ -1341,6 +1341,10 @@ EOF kernel=linux os=`echo "$basic_os" | sed -e 's|linux|gnu|'` ;; + managarm*) + kernel=managarm + os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` + ;; *) kernel= os=$basic_os @@ -1754,7 +1758,7 @@ case $os in | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ - | fiwix* ) + | fiwix* | mlibc* ) ;; # This one is extra strict with allowed versions sco3.2v2 | sco3.2v[4-9]* | sco5v6*) @@ -1762,6 +1766,9 @@ case $os in ;; none) ;; + kernel* ) + # Restricted further below + ;; *) echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 exit 1 @@ -1772,16 +1779,26 @@ esac # (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* ) + | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) ;; uclinux-uclibc* ) ;; - -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) + managarm-mlibc* | managarm-kernel* ) + ;; + -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) # 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 ;; + -kernel* ) + echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 + exit 1 + ;; + *-kernel* ) + echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 + exit 1 + ;; kfreebsd*-gnu* | kopensolaris*-gnu*) ;; vxworks-simlinux | vxworks-simwindows | vxworks-spe) diff --git a/build-aux/depcomp b/build-aux/depcomp index 75323b7..ce5c2f7 100755 --- a/build-aux/depcomp +++ b/build-aux/depcomp @@ -1,9 +1,9 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2018-03-07.03; # UTC +scriptversion=2022-09-18.14; # UTC -# Copyright (C) 1999-2022 Free Software Foundation, Inc. +# Copyright (C) 1999-2023 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 @@ -197,7 +197,7 @@ gcc3) ;; gcc) -## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## Note that this doesn't just cater to obsolete 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 diff --git a/build-aux/mdate-sh b/build-aux/mdate-sh index 8d8bb37..6947add 100755 --- a/build-aux/mdate-sh +++ b/build-aux/mdate-sh @@ -3,7 +3,7 @@ scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1995-2022 Free Software Foundation, Inc. +# Copyright (C) 1995-2023 Free Software Foundation, Inc. # written by Ulrich Drepper , June 1995 # # This program is free software; you can redistribute it and/or modify diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex index 8872e5e..cfe8335 100644 --- a/build-aux/texinfo.tex +++ b/build-aux/texinfo.tex @@ -3,7 +3,7 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2022-04-09.08} +\def\texinfoversion{2022-12-19.22} % % Copyright 1985, 1986, 1988, 1990-2022 Free Software Foundation, Inc. % @@ -241,9 +241,6 @@ % \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. @@ -317,16 +314,8 @@ \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.) +% is run several times, hiding the original value of \topmark. Hence, save +% \topmark at the beginning. % \newtoks\savedtopmark \newif\iftopmarksaved @@ -351,15 +340,9 @@ % \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). + % Make the heading and footing. \makeheadline and \makefootline + % use the contents of \headline and \footline. \def\commonheadfootline{\let\hsize=\txipagewidth \texinfochars} - % \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi \global\setbox\headlinebox = \vbox{\commonheadfootline \makeheadline}% \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi @@ -608,6 +591,9 @@ % @/ allows a line break. \let\/=\allowbreak +% @- allows explicit insertion of hyphenation points +\def\-{\discretionary{\normaldash}{}{}}% + % @. is an end-of-sentence period. \def\.{.\spacefactor=\endofsentencespacefactor\space} @@ -617,21 +603,6 @@ % @? 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. @@ -725,32 +696,22 @@ where each line of input produces a line of output.} \dimen2 = \ht\strutbox \advance\dimen2 by \dp\strutbox \ifdim\dimen0 > \dimen2 + % This is similar to the 'needspace' module in LaTeX. + % The first penalty allows a break if the end of the page is + % not too far away. Following penalties and skips are discarded. + % Otherwise, require at least \dimen0 of vertical space. % - % 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. + % (We used to use a \vtop to reserve space, but this had spacing issues + % when followed by a section heading, as it was not a "discardable item". + % This also has the benefit of providing glue before the page break if + % there isn't enough space.) + \vskip0pt plus \dimen0 + \penalty-100 + \vskip0pt plus -\dimen0 + \vskip \dimen0 \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 + \vskip -\dimen0 + \penalty0\relax % this hides the above glue from \safewhatsit and \dobreak \fi } @@ -1579,9 +1540,10 @@ output) for that.)} \next} \def\makelink{\addtokens{\toksB}% {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} - \def\pdflink#1{% + \def\pdflink#1{\pdflinkpage{#1}{#1}}% + \def\pdflinkpage#1#2{% \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} - \setcolor{\linkcolor}#1\endlink} + \setcolor{\linkcolor}#2\endlink} \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} \else % non-pdf mode @@ -1828,10 +1790,11 @@ output) for that.)} \next} \def\makelink{\addtokens{\toksB}% {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} - \def\pdflink#1{% + \def\pdflink#1{\pdflinkpage{#1}{#1}}% + \def\pdflinkpage#1#2{% \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A << /S /GoTo /D (#1) >> >>}% - \setcolor{\linkcolor}#1\endlink} + \setcolor{\linkcolor}#2\endlink} \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} % % @@ -2176,6 +2139,11 @@ end \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% \fi\fi +% +% This is what gets called when #5 of \setfont is empty. +\let\cmap\gobble +% +% (end of cmaps) % Set the font macro #1 to the font named \fontprefix#2. @@ -2191,11 +2159,10 @@ end \def\setfont#1#2#3#4#5{% \font#1=\fontprefix#2#3 scaled #4 \csname cmap#5\endcsname#1% + \ifx#2\ttshape\hyphenchar#1=-1 \fi + \ifx#2\ttbshape\hyphenchar#1=-1 \fi + \ifx#2\ttslshape\hyphenchar#1=-1 \fi } -% 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 @@ -2558,7 +2525,7 @@ end \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} +\def\tt{\fam=\ttfam \setfontstyle{tt}} % Texinfo sort of supports the sans serif font style, which plain TeX does not. % So we set up a \sf. @@ -2586,34 +2553,30 @@ end \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. + +% \defineassignfonts{SIZE} - +% Define sequence \assignfontsSIZE, which switches between font sizes +% by redefining the meanings of \STYLEfont. (Just \STYLE additionally sets +% the current \fam for math mode.) % +\def\defineassignfonts#1{% + \expandafter\edef\csname assignfonts#1\endcsname{% + \let\noexpand\rmfont\csname #1rm\endcsname + \let\noexpand\itfont\csname #1it\endcsname + \let\noexpand\slfont\csname #1sl\endcsname + \let\noexpand\bffont\csname #1bf\endcsname + \let\noexpand\ttfont\csname #1tt\endcsname + \let\noexpand\smallcaps\csname #1sc\endcsname + \let\noexpand\sffont \csname #1sf\endcsname + \let\noexpand\ifont \csname #1i\endcsname + \let\noexpand\syfont \csname #1sy\endcsname + \let\noexpand\ttslfont\csname #1ttsl\endcsname + } +} \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 + \csname assignfonts#1\endcsname } \newif\ifrmisbold @@ -2637,12 +2600,21 @@ end \csname\curfontstyle\endcsname }% +% Define the font-changing commands (all called \...fonts). +% 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. +% +% Note: The fonts used for \ifont are for "math italics" (\itfont is for +% italics in regular text). \syfont is also used in math mode only. +% \def\definefontsetatsize#1#2#3#4#5{% + \defineassignfonts{#1}% \expandafter\def\csname #1fonts\endcsname{% \def\curfontsize{#1}% \def\lsize{#2}\def\lllsize{#3}% \csname rmisbold#5\endcsname - \assignfonts{#1}% + \csname assignfonts#1\endcsname \resetmathfonts \setleading{#4}% }} @@ -2687,9 +2659,22 @@ end % 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 } +% this property, we can check that font parameter. #1 is what to +% print if we are indeed using \tt; #2 is what to print otherwise. +\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} + + +% Check if internal flag is clear, i.e. has not been @set. +\def\ifflagclear#1#2#3{% + \expandafter\ifx\csname SET#1\endcsname\relax + #2\else#3\fi +} { \catcode`\'=\active @@ -2706,33 +2691,28 @@ end % 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 + \ifusingtt + {\ifflagclear{txicodequoteundirected}% + {\ifflagclear{codequoteundirected}% + {'}% + {\char'15 }}% + {\char'15 }}% + {'}% } -% + % 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. +% \relax disables Spanish ligatures ?` and !` of \tt font. % \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 + \ifusingtt + {\ifflagclear{txicodequotebacktick}% + {\ifflagclear{codequotebacktick}% + {\relax`}% + {\char'22 }}% + {\char'22 }}% + {\relax`}% } % Commands to set the quote options. @@ -2779,15 +2759,16 @@ end \def\dosmartslant#1#2{% \ifusingtt {{\ttsl #2}\let\next=\relax}% - {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% + {\def\next{{#1#2}\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{% +% Output an italic correction unless the following character is such as +% not to need one. +\def\smartitaliccorrection{\futurelet\next\smartitaliccorrectionx} +\def\smartitaliccorrectionx{% \ifx\next,% \else\ifx\next-% \else\ifx\next.% @@ -2798,27 +2779,41 @@ end \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} +% @cite unconditionally uses \sl with \smartitaliccorrection. +\def\cite#1{{\sl #1}\smartitaliccorrection} +% @var unconditionally uses \sl. This gives consistency for +% parameter names whether they are in @def, @table @code or a +% regular paragraph. +% To get ttsl font for @var when used in code context, @set txicodevaristt. +% The \null is to reset \spacefactor. \def\aftersmartic{} \def\var#1{% \let\saveaftersmartic = \aftersmartic \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% - \smartslanted{#1}% + % + \ifflagclear{txicodevaristt}% + {\def\varnext{{{\sl #1}}\smartitaliccorrection}}% + {\def\varnext{\smartslanted{#1}}}% + \varnext } +% To be removed after next release +\def\SETtxicodevaristt{}% @set txicodevaristt + \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 +% @r for roman font, used for code comment +\def\r#1{{% + \usenormaldash % get --, --- ligatures even if in @code + \defcharsdefault % in case on def line + \rm #1}} +{\catcode`-=\active \gdef\usenormaldash{\let-\normaldash}} + +% @sc, undocumented @ii. \def\sc#1{{\smallcaps#1}} % smallcaps font \def\ii#1{{\it #1}} % italic font @@ -2829,12 +2824,8 @@ end % @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 = `- } +\newif\iffrenchspacing +\frenchspacingfalse % 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 @@ -2842,21 +2833,45 @@ end % \catcode`@=11 \def\plainfrenchspacing{% - \sfcode`\.=\@m \sfcode`\?=\@m \sfcode`\!=\@m - \sfcode`\:=\@m \sfcode`\;=\@m \sfcode`\,=\@m - \def\endofsentencespacefactor{1000}% for @. and friends + \iffrenchspacing\else + \frenchspacingtrue + \sfcode`\.=\@m \sfcode`\?=\@m \sfcode`\!=\@m + \sfcode`\:=\@m \sfcode`\;=\@m \sfcode`\,=\@m + \def\endofsentencespacefactor{1000}% for @. and friends + \fi } \def\plainnonfrenchspacing{% - \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 - \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 - \def\endofsentencespacefactor{3000}% for @. and friends + \iffrenchspacing + \frenchspacingfalse + \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 + \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 + \def\endofsentencespacefactor{3000}% for @. and friends + \fi } \catcode`@=\other \def\endofsentencespacefactor{3000}% default +% @frenchspacing on|off says whether to put extra space after punctuation. +% +\def\onword{on} +\def\offword{off} +% +\let\frenchspacingsetting\plainnonfrenchspacing % used in output routine +\parseargdef\frenchspacing{% + \def\temp{#1}% + \ifx\temp\onword \let\frenchspacingsetting\plainfrenchspacing + \else\ifx\temp\offword \let\frenchspacingsetting\plainnonfrenchspacing + \else + \errhelp = \EMsimple + \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% + \fi\fi + \frenchspacingsetting +} + + % @t, explicit typewriter. \def\t#1{% - {\tt \plainfrenchspacing #1}% + {\tt \defcharsdefault \plainfrenchspacing #1}% \null } @@ -2877,27 +2892,29 @@ end % Switch to typewriter. \tt % - % But `\ ' produces the large typewriter interword space. + % `\ ' 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.) +% This is for LuaTeX: It is not sufficient to disable hyphenation at +% explicit dashes by setting `\hyphenchar` to -1. +\def\dashnobreak{% + \normaldash + \penalty 10000 } + +% We must turn on hyphenation at `-' and `_' in @code. % Otherwise, it is too hard to avoid overfull hboxes % in the Emacs manual, the Library manual, etc. +% We explicitly allow hyphenation at these characters +% using \discretionary. % -% 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. +% Hyphenation at - and hyphenation within words was turned off +% by default for the tt fonts using the \hyphenchar parameter of TeX. { \catcode`\-=\active \catcode`\_=\active \catcode`\'=\active \catcode`\`=\active @@ -2910,7 +2927,7 @@ end \let-\codedash \let_\codeunder \else - \let-\normaldash + \let-\dashnobreak \let_\realunder \fi % Given -foo (with a single dash), we do not want to allow a break @@ -3187,7 +3204,7 @@ end % definition of @key with no lozenge. % -\def\key#1{{\setregularquotes \nohyphenation \tt #1}\null} +\def\key#1{{\setregularquotes \tt #1}\null} % @clicksequence{File @click{} Open ...} \def\clicksequence#1{\begingroup #1\endgroup} @@ -3390,8 +3407,8 @@ $$% \let\atchar=\@ % @{ @} @lbracechar{} @rbracechar{} all generate brace characters. -\def\lbracechar{{\ifmonospace\char123\else\ensuremath\lbrace\fi}} -\def\rbracechar{{\ifmonospace\char125\else\ensuremath\rbrace\fi}} +\def\lbracechar{{\ifusingtt{\char123}{\ensuremath\lbrace}}} +\def\rbracechar{{\ifusingtt{\char125}{\ensuremath\rbrace}}} \let\{=\lbracechar \let\}=\rbracechar @@ -3445,8 +3462,13 @@ $$% % 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% + \ifx\curfontsize\smallword + % For footnotes and indices + \count255=\the\fam $\fam\count255 \scriptstyle A$% + \else + % For 11pt, we can use our lllsize. + \switchtolllsize A% + \fi \fi }% \vss @@ -3454,6 +3476,7 @@ $$% \kern-.15em \TeX } +\def\smallword{small} % Some math mode symbols. Define \ensuremath to switch into math mode % unless we are already there. Expansion tricks may not be needed here, @@ -3532,7 +3555,7 @@ $$% % @pounds{} is a sterling sign, which Knuth put in the CM italic font. % -\def\pounds{\ifmonospace{\ecfont\char"BF}\else{\it\$}\fi} +\def\pounds{{\ifusingtt{\ecfont\char"BF}{\it\$}}} % @euro{} comes from a separate font, depending on the current style. % We use the free feym* fonts from the eurosym package by Henrik @@ -3646,18 +3669,17 @@ $$% % 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 + \ifusingtt + % 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}% \thisecfont } @@ -3673,7 +3695,10 @@ $$% % @textdegree - the normal degrees sign. % -\def\textdegree{$^\circ$} +\def\textdegree{% + \ifmmode ^\circ + \else {\tcfont \char 176}% + \fi} % Laurent Siebenmann reports \Orb undefined with: % Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 @@ -3690,11 +3715,11 @@ $$% % 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 + \ifusingtt{{\ecfont\char"10}}{{\char"5C}}% } \def\quotedblright{% - \ifmonospace{\ecfont\char"11}\else{\char`\"}\fi + \ifusingtt{{\ecfont\char"11}}{{\char`\"}}% } @@ -3726,6 +3751,7 @@ $$% % Open one extra group, as we want to close it in the middle of \Etitlepage. \begingroup \parindent=0pt \textfonts + \headingsoff % 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. @@ -3753,11 +3779,9 @@ $$% % 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 + \pageone \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{% @@ -3824,15 +3848,16 @@ $$% \newtoks\oddfootline % footline on odd pages % Now make \makeheadline and \makefootline in Plain TeX use those variables -\headline={{\textfonts\rm +\headline={{\textfonts\rm\frenchspacingsetting \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} +\footline={{\textfonts\rm\frenchspacingsetting + \ifodd\pageno \the\oddfootline \else \the\evenfootline \fi}% + \HEADINGShook} \let\HEADINGShook=\relax % Commands to set those variables. @@ -3925,7 +3950,6 @@ $$% } \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{ @@ -3949,7 +3973,7 @@ $$% \pageone \HEADINGSsinglex } -\def\HEADINGSon{\HEADINGSdouble} +% \def\HEADINGSon{\HEADINGSdouble} % defined by \CHAPPAGon \def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} \let\HEADINGSdoubleafter=\HEADINGSafter @@ -3958,7 +3982,7 @@ $$% \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} -\global\evenchapheadline={\line{\folio\hfil}} +\global\evenchapheadline={\line{\folio\hfil\thistitle}} \global\oddchapheadline={\line{\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } @@ -4346,8 +4370,7 @@ $$% % undo it ourselves. \def\headitemfont{\b}% for people to use in the template row; not changeable \def\headitem{% - \checkenv\multitable - \crcr + \crcr % must appear first \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 @@ -4432,7 +4455,7 @@ $$% \message{conditionals,} -% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, +% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotlatex, @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 @@ -4446,6 +4469,7 @@ $$% \makecond{ifnotdocbook} \makecond{ifnothtml} \makecond{ifnotinfo} +\makecond{ifnotlatex} \makecond{ifnotplaintext} \makecond{ifnotxml} @@ -4458,10 +4482,12 @@ $$% \def\ifdocbook{\doignore{ifdocbook}} \def\ifhtml{\doignore{ifhtml}} \def\ifinfo{\doignore{ifinfo}} +\def\iflatex{\doignore{iflatex}} \def\ifnottex{\doignore{ifnottex}} \def\ifplaintext{\doignore{ifplaintext}} \def\ifxml{\doignore{ifxml}} \def\ignore{\doignore{ignore}} +\def\latex{\doignore{latex}} \def\menu{\doignore{menu}} \def\xml{\doignore{xml}} @@ -4985,25 +5011,24 @@ $$% \catcode`\-=13 \catcode`\`=13 \gdef\indexnonalnumdisappear{% - \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax\else + \ifflagclear{txiindexlquoteignore}{}{% % @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 + \ifflagclear{txiindexbackslashignore}{}{% \backslashdisappear - \fi - % - \expandafter\ifx\csname SETtxiindexhyphenignore\endcsname\relax\else + }% + \ifflagclear{txiindexhyphenignore}{}{% \def-{}% - \fi - \expandafter\ifx\csname SETtxiindexlessthanignore\endcsname\relax\else + }% + \ifflagclear{txiindexlessthanignore}{}{% \def<{}% - \fi - \expandafter\ifx\csname SETtxiindexatsignignore\endcsname\relax\else + }% + \ifflagclear{txiindexatsignignore}{}{% \def\@{}% - \fi + }% } \gdef\indexnonalnumreappear{% @@ -5250,7 +5275,10 @@ $$% \xdef\trimmed{\segment}% \xdef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% \xdef\indexsortkey{\trimmed}% - \ifx\indexsortkey\empty\xdef\indexsortkey{ }\fi + \ifx\indexsortkey\empty + \message{Empty index sort key near line \the\inputlineno}% + \xdef\indexsortkey{ }% + \fi }\fi % % Append to \fullindexsortkey. @@ -5295,9 +5323,7 @@ $$% % \atdummies % - \expandafter\ifx\csname SETtxiindexescapeisbackslash\endcsname\relax\else - \escapeisbackslash - \fi + \ifflagclear{txiindexescapeisbackslash}{}{\escapeisbackslash}% % % For texindex which always views { and } as separators. \def\{{\lbracechar{}}% @@ -5481,9 +5507,9 @@ $$% % 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 + \ifflagclear{txiindexescapeisbackslash}{% \uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1 - \expandafter\ifx\csname SETtxiskipindexfileswithbackslash\endcsname\relax + \ifflagclear{txiskipindexfileswithbackslash}{% \errmessage{% ERROR: A sorted index file in an obsolete format was skipped. To fix this problem, please upgrade your version of 'texi2dvi' @@ -5499,15 +5525,15 @@ 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 % @@ -5517,7 +5543,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \catcode`\@=0\relax \input \jobname.\indexname s \enddoublecolumns - \fi + }% } % These macros are used by the sorted index file itself. @@ -5592,6 +5618,11 @@ might help (with 'rm \jobname.?? \jobname.??s')% \newdimen\entryrightmargin \entryrightmargin=0pt +% for PDF output, whether to make the text of the entry a link to the page +% number. set for @contents and @shortcontents where there is only one +% page number. +\newif\iflinkentrytext + % \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. @@ -5618,7 +5649,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% } \def\entrybreak{\unskip\space\ignorespaces}% \def\doentry{% - % Save the text of the entry + % Save the text of the entry in \boxA \global\setbox\boxA=\hbox\bgroup \bgroup % Instead of the swallowed brace. \noindent @@ -5628,12 +5659,21 @@ might help (with 'rm \jobname.?? \jobname.??s')% % with catcodes occurring. } {\catcode`\@=11 +% #1 is the page number \gdef\finishentry#1{% - \egroup % end box A + \egroup % end \boxA \dimen@ = \wd\boxA % Length of text of entry + % add any leaders and page number to \boxA. \global\setbox\boxA=\hbox\bgroup - \unhbox\boxA - % #1 is the page number. + \ifpdforxetex + \iflinkentrytext + \pdflinkpage{#1}{\unhbox\boxA}% + \else + \unhbox\boxA + \fi + \else + \unhbox\boxA + \fi % % Get the width of the page numbers, and only use % leaders if they are present. @@ -5652,6 +5692,8 @@ might help (with 'rm \jobname.?? \jobname.??s')% \fi \fi \egroup % end \boxA + % + % now output \ifdim\wd\boxB = 0pt \noindent\unhbox\boxA\par \nobreak @@ -6351,7 +6393,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \fi } -\parseargdef\setchapternewpage{\csname CHAPPAG#1\endcsname} +\parseargdef\setchapternewpage{\csname CHAPPAG#1\endcsname\HEADINGSon} \def\CHAPPAGoff{% \global\let\contentsalignmacro = \chappager @@ -6368,7 +6410,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \global\let\pchapsepmacro=\chapoddpage \global\def\HEADINGSon{\HEADINGSdouble}} -\CHAPPAGon +\setchapternewpage on % \chapmacro - Chapter opening. % @@ -6381,6 +6423,16 @@ might help (with 'rm \jobname.?? \jobname.??s')% \def\Yappendixkeyword{Yappendix} \def\Yomitfromtockeyword{Yomitfromtoc} % +% +% Definitions for @thischapter. These can be overridden in translation +% files. +\def\thischapterAppendix{% + \putwordAppendix{} \thischapternum: \thischaptername} + +\def\thischapterChapter{% + \putwordChapter{} \thischapternum: \thischaptername} +% +% \def\chapmacro#1#2#3{% \expandafter\ifx\thisenv\titlepage\else \checkenv{}% chapters, etc., should not start inside an environment. @@ -6403,22 +6455,14 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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}% + \let\noexpand\thischapter\noexpand\thischapterAppendix }% \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}% + \let\noexpand\thischapter\noexpand\thischapterChapter }% \fi\fi\fi % @@ -6504,6 +6548,12 @@ might help (with 'rm \jobname.?? \jobname.??s')% \def\subsubsecheadingskip{\subsecheadingskip} \def\subsubsecheadingbreak{\subsecheadingbreak} +% Definition for @thissection. This can be overridden in translation +% files. +\def\thissectionDef{% + \putwordSection{} \thissectionnum: \thissectionname} +% + % Print any size, any type, section title. % @@ -6545,11 +6595,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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}% + \let\noexpand\thissection\noexpand\thissectionDef }% \fi \else @@ -6558,11 +6604,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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}% + \let\noexpand\thissection\noexpand\thissectionDef }% \fi \fi\fi\fi @@ -6748,8 +6790,14 @@ might help (with 'rm \jobname.?? \jobname.??s')% \def\thistitle{}% no title in double-sided headings % Record where the Roman numerals started. \ifnum\romancount=0 \global\romancount=\pagecount \fi + \linkentrytexttrue } +% \raggedbottom in plain.tex hardcodes \topskip so override it +\catcode`\@=11 +\def\raggedbottom{\advance\topskip by 0pt plus60pt \r@ggedbottomtrue} +\catcode`\@=\other + % redefined for the two-volume lispref. We always output on % \jobname.toc even if this is redefined. % @@ -6870,7 +6918,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % 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}% + \tocentry{\shortchaplabel{#2}\labelspace #1}{#4}% } % Appendices, in the main contents. @@ -6885,7 +6933,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % Unnumbered chapters. \def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} -\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} +\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{#4}} % Sections. \def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} @@ -6917,24 +6965,24 @@ might help (with 'rm \jobname.?? \jobname.??s')% % Move the page numbers slightly to the right \advance\entryrightmargin by -0.05em \chapentryfonts - \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \tocentry{#1}{#2}% \endgroup \nobreak\vskip .25\baselineskip plus.1\baselineskip } \def\dosecentry#1#2{\begingroup \secentryfonts \leftskip=\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \tocentry{#1}{#2}% \endgroup} \def\dosubsecentry#1#2{\begingroup \subsecentryfonts \leftskip=2\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \tocentry{#1}{#2}% \endgroup} \def\dosubsubsecentry#1#2{\begingroup \subsubsecentryfonts \leftskip=3\tocindent - \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \tocentry{#1}{#2}% \endgroup} % We use the same \entry macro as for the index entries. @@ -6943,9 +6991,6 @@ might help (with 'rm \jobname.?? \jobname.??s')% % 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} @@ -7097,12 +7142,19 @@ might help (with 'rm \jobname.?? \jobname.??s')% \startsavinginserts \lskip=\leftskip \rskip=\rightskip \leftskip=0pt\rightskip=0pt % we want these *outside*. + % + % Set paragraph width for text inside cartouche. There are + % left and right margins of 3pt each plus two vrules 0.4pt each. \cartinner=\hsize \advance\cartinner by-\lskip \advance\cartinner by-\rskip + \advance\cartinner by -6.8pt + % + % For drawing top and bottom of cartouche. Each corner char + % adds 6pt and we take off the width of a rule to line up with the + % right boundary perfectly. \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 + \advance\cartouter by 11.6pt + % \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip % % If this cartouche directly follows a sectioning command, we need the @@ -7110,7 +7162,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % collide with the section heading. \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi % - \setbox\groupbox=\vbox\bgroup + \setbox\groupbox=\vtop\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop \hbox\bgroup @@ -7277,22 +7329,6 @@ might help (with 'rm \jobname.?? \jobname.??s')% } \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 @@ -7390,7 +7426,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \endgroup % \def\setupverb{% - \tt % easiest (and conventionally used) font for verbatim + \tt \def\par{\leavevmode\endgraf}% \setcodequotes \tabeightspaces @@ -7515,9 +7551,11 @@ might help (with 'rm \jobname.?? \jobname.??s')% % 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\copying{\checkenv{}\begingroup\macrobodyctxt\docopying} +{\catcode`\ =\other +\gdef\docopying#1@end copying{\endgroup\def\copyingtext{#1}} +} + \def\insertcopying{% \begingroup \parindent = 0pt % paragraph indentation looks wrong on title page @@ -7565,32 +7603,28 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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{} +\newtoks\defidx +\newtoks\deftext + +\def\useindex#1{\defidx={#1}\ignorespaces} -% \printdefunline \deffnheader{text} +% Called as \printdefunline \deffooheader{text} % \def\printdefunline#1#2{% \begingroup \plainfrenchspacing - % call \deffnheader: + % call \deffooheader: #1#2 \endheader + % create the index entry + \defcharsdefault + \edef\temp{\noexpand\doind{\the\defidx}{\the\deftext}}% + \temp % common ending: \interlinepenalty = 10000 \advance\rightskip by 0pt plus 1fil\relax \endgraf \nobreak\vskip -\parskip - \penalty\defunpenalty % signal to \startdefun and \dodefunx + \penalty\defunpenalty % signal to \startdefun and \deffoox % Some of the @defun-type tags do not enable magic parentheses, % rendering the following check redundant. But we don't optimize. \checkparencounts @@ -7599,29 +7633,33 @@ might help (with 'rm \jobname.?? \jobname.??s')% \def\Edefun{\endgraf\medbreak} -% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; -% the only thing remaining is to define \deffnheader. +% \makedefun{deffoo} (\deffooheader parameters) { (\deffooheader expansion) } % +% Define \deffoo, \deffoox \Edeffoo and \deffooheader. \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% + \def#2{% + % First, check whether we are in the right environment: + \checkenv#1% + % + % As in \startdefun, 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 + % + \doingtypefnfalse % distinguish typed functions from all else + \parseargusing\activeparens{\printdefunline#3}% + }% + \def#3% definition of \deffooheader follows } \newif\ifdoingtypefn % doing typed function? @@ -7646,74 +7684,56 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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 +\def\defind#1#2{ + \defidx={#1}% + \deftext={#2}% } % 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}} } +\makedefun{deffn}#1 #2 #3\endheader{% + \defind{fn}{\code{#2}}% + \defname{#1}{}{#2}\magicamp\defunargs{#3\unskip}% +} -% \deffngeneral {subind}category name args -% -\def\deffngeneral#1#2 #3 #4\endheader{% - \dosubind{fn}{\code{#3}}{#1}% - \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% +% @defop category class name args +\makedefun{defop}#1 {\defopheaderx{#1\ \putwordon}} +\def\defopheaderx#1#2 #3 #4\endheader{% + \defind{fn}{\code{#3}\space\putwordon\ \code{#2}}% + \defname{#1\ \code{#2}}{}{#3}\magicamp\defunargs{#4\unskip}% } % Typed functions: % @deftypefn category type name args -\makedefun{deftypefn}{\deftypefngeneral{}} +\makedefun{deftypefn}#1 #2 #3 #4\endheader{% + \defind{fn}{\code{#3}}% + \doingtypefntrue + \defname{#1}{#2}{#3}\defunargs{#4\unskip}% +} % @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}% +\makedefun{deftypeop}#1 {\deftypeopheaderx{#1\ \putwordon}} +\def\deftypeopheaderx#1#2 #3 #4 #5\endheader{% + \defind{fn}{\code{#4}\space\putwordon\ \code{#1\ \code{#2}}}% \doingtypefntrue - \defname{#2}{#3}{#4}\defunargs{#5\unskip}% + \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% } % Typed variables: % @deftypevr category type var args -\makedefun{deftypevr}{\deftypecvgeneral{}} +\makedefun{deftypevr}#1 #2 #3 #4\endheader{% + \defind{vr}{\code{#3}}% + \defname{#1}{#2}{#3}\defunargs{#4\unskip}% +} % @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}% +\makedefun{deftypecv}#1 {\deftypecvheaderx{#1\ \putwordof}} +\def\deftypecvheaderx#1#2 #3 #4 #5\endheader{% + \defind{vr}{\code{#4}\space\putwordof\ \code{#2}}% + \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% } % Untyped variables: @@ -7722,16 +7742,14 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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 {} } +\makedefun{defcv}#1 {\defcvheaderx{#1\ \putwordof}} +\def\defcvheaderx#1#2 {\deftypecvheaderx{#1}#2 {} } % Types: % @deftp category name args \makedefun{deftp}#1 #2 #3\endheader{% - \doind{tp}{\code{#2}}% + \defind{tp}{\code{#2}}% \defname{#1}{}{#2}\defunargs{#3\unskip}% } @@ -7743,10 +7761,10 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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} +\makedefun{defmethod}{\defopheaderx\putwordMethodon} +\makedefun{deftypemethod}{\deftypeopheaderx\putwordMethodon} +\makedefun{defivar}{\defcvheaderx\putwordInstanceVariableof} +\makedefun{deftypeivar}{\deftypecvheaderx\putwordInstanceVariableof} % \defname, which formats the name of the @def (not the args). % #1 is the category, such as "Function". @@ -7765,9 +7783,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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 + \ifflagclear{txideftypefnnl}{}{\rettypeownlinetrue}% \fi % % How we'll format the category name. Putting it in brackets helps @@ -7832,30 +7848,20 @@ might help (with 'rm \jobname.?? \jobname.??s')% \fi % no return type #3% output function name }% - {\rm\enskip}% hskip 0.5 em of \rmfont + \ifflagclear{txidefnamenospace}{% + {\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. -% +% Print arguments. Use slanted for @def*, typewriter for @deftype*. \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}}}% + \df \ifdoingtypefn \tt \else \sl \fi + \ifflagclear{txicodevaristt}{}% + {\def\var##1{{\setregularquotes \ttsl ##1}}}% #1% - \sl\hyphenchar\font=45 } % We want ()&[] to print specially on the defun line. @@ -7874,9 +7880,12 @@ might help (with 'rm \jobname.?? \jobname.??s')% % 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\defcharsdefault{% + \let(=\lparen \let)=\rparen + \let[=\lbrack \let]=\rbrack + \let& = \&% + } + \globaldefs=1 \defcharsdefault \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} \gdef\magicamp{\let&=\amprm} @@ -8060,24 +8069,17 @@ might help (with 'rm \jobname.?? \jobname.??s')% \catcode`\_=\other \catcode`\|=\other \catcode`\~=\other - \passthroughcharstrue -} - -\def\scanargctxt{% used for copying and captions, not macros. - \scanctxt \catcode`\@=\other - \catcode`\\=\other \catcode`\^^M=\other + \catcode`\\=\active + \passthroughcharstrue } -\def\macrobodyctxt{% used for @macro definitions +\def\macrobodyctxt{% used for @macro definitions and @copying \scanctxt \catcode`\ =\other - \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other - \catcode`\^^M=\other - \usembodybackslash } % Used when scanning braced macro arguments. Note, however, that catcode @@ -8086,14 +8088,10 @@ might help (with 'rm \jobname.?? \jobname.??s')% \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 } @@ -8137,7 +8135,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% \addtomacrolist{\the\macname}% \fi - \begingroup \macrobodyctxt + \begingroup \macrobodyctxt \usembodybackslash \ifrecursive \expandafter\parsermacbody \else \expandafter\parsemacbody \fi} @@ -8460,21 +8458,21 @@ might help (with 'rm \jobname.?? \jobname.??s')% \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup + \begingroup \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 + \endgroup \noexpand\scanmacro{\macrobody}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup + \begingroup \noexpand\braceorline \expandafter\noexpand\csname\the\macname @@@\endcsname}% \expandafter\xdef\csname\the\macname @@@\endcsname##1{% - \egroup + \endgroup \noexpand\scanmacro{\macrobody}% }% \else % at most 9 @@ -8485,7 +8483,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % @MACNAME@@@ removes braces surrounding the argument list. % @MACNAME@@@@ scans the macro body with arguments substituted. \expandafter\xdef\csname\the\macname\endcsname{% - \bgroup + \begingroup \noexpand\expandafter % This \expandafter skip any spaces after the \noexpand\macroargctxt % macro before we change the catcode of space. \noexpand\expandafter @@ -8499,7 +8497,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \expandafter\xdef \expandafter\expandafter \csname\the\macname @@@@\endcsname\paramlist{% - \egroup\noexpand\scanmacro{\macrobody}}% + \endgroup\noexpand\scanmacro{\macrobody}}% \else % 10 or more: \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% @@ -8941,12 +8939,11 @@ might help (with 'rm \jobname.?? \jobname.??s')% % 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 - % + \ifflagclear{txiomitxrefpg}{% + % We always want a comma + ,% % output the `page 3'. - \turnoffactive \putwordpage\tie\refx{#1-pg}% + \turnoffactive \putpageref{#1}% % Add a , if xref followed by a space \if\space\noexpand\tokenafterxref ,% \else\ifx\ \tokenafterxref ,% @TAB @@ -8956,12 +8953,16 @@ might help (with 'rm \jobname.?? \jobname.??s')% \tokenafterxref ,% @NL \else\ifx\tie\tokenafterxref ,% @tie \fi\fi\fi\fi\fi\fi - \fi + }{}% \fi\fi \fi \endlink \endgroup} +% can be overridden in translation files +\def\putpageref#1{% + \space\putwordpage\tie\refx{#1-pg}} + % Output a cross-manual xref to #1. Used just above (twice). % % Only include the text "Section ``foo'' in" if the foo is neither @@ -9373,6 +9374,12 @@ might help (with 'rm \jobname.?? \jobname.??s')% \imagexxx #1,,,,,\finish \fi } + +% Approximate height of a line in the standard text font. +\newdimen\capheight +\setbox0=\vbox{\tenrm H} +\capheight=\ht0 + % % Arguments to @image: % #1 is (mandatory) image filename; we tack on .eps extension. @@ -9387,13 +9394,6 @@ might help (with 'rm \jobname.?? \jobname.??s')% \makevalueexpandable \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 here - \fi\fi - % - \ifimagevmode \medskip % Usually we'll have text after the image which will insert % \parskip glue, so insert it here too to equalize the space @@ -9402,17 +9402,20 @@ might help (with 'rm \jobname.?? \jobname.??s')% % % Place image in a \vtop for a top page margin that is (close to) correct, % as \topskip glue is relative to the first baseline. - \vtop\bgroup\hrule height 0pt\vskip-\parskip + \vtop\bgroup \kern -\capheight \vskip-\parskip \fi % - % Enter horizontal 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 + \ifx\centersub\centerV + % For @center @image, enter vertical mode and add vertical space + % Enter an extra \parskip because @center doesn't add space itself. + \vbox\bgroup\vskip\parskip\medskip\vskip\parskip + \else + % Enter horizontal 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. + \imageindent + \fi % % Output the image. \ifpdf @@ -9437,7 +9440,10 @@ might help (with 'rm \jobname.?? \jobname.??s')% \egroup \medskip % space after a standalone image \fi - \ifx\centersub\centerV \egroup \fi + \ifx\centersub\centerV % @center @image + \medskip + \egroup % close \vbox + \fi \endgroup} @@ -9604,7 +9610,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % \def\caption{\docaption\thiscaption} \def\shortcaption{\docaption\thisshortcaption} -\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} +\def\docaption{\checkenv\float \bgroup\scanctxt\defcaption} \def\defcaption#1#2{\egroup \def#1{#2}} % The parameter is the control sequence identifying the counter we are @@ -10087,7 +10093,7 @@ directory should work if nowhere else does.} \gdefchar^^ae{\v Z} \gdefchar^^af{\dotaccent Z} % - \gdefchar^^b0{\textdegree{}} + \gdefchar^^b0{\textdegree} \gdefchar^^b1{\ogonek{a}} \gdefchar^^b2{\ogonek{ }} \gdefchar^^b3{\l} @@ -10324,9 +10330,9 @@ directory should work if nowhere else does.} % Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp % to the corresponding UTF-8 sequence. \gdef\parseXMLCharref{% - \ifnum\countUTFz < "A0\relax + \ifnum\countUTFz < "20\relax \errhelp = \EMsimple - \errmessage{Cannot define Unicode char value < 00A0}% + \errmessage{Cannot define Unicode char value < 0020}% \else\ifnum\countUTFz < "800\relax \parseUTFviiiA,% \parseUTFviiiB C\UTFviiiTwoOctetsName.,% @@ -10396,6 +10402,103 @@ directory should work if nowhere else does.} % least make most of the characters not bomb out. % \def\unicodechardefs{% + \DeclareUnicodeCharacter{0020}{ } % space + \DeclareUnicodeCharacter{0021}{\char"21 }% % space to terminate number + \DeclareUnicodeCharacter{0022}{\char"22 }% + \DeclareUnicodeCharacter{0023}{\char"23 }% + \DeclareUnicodeCharacter{0024}{\char"24 }% + \DeclareUnicodeCharacter{0025}{\char"25 }% + \DeclareUnicodeCharacter{0026}{\char"26 }% + \DeclareUnicodeCharacter{0027}{\char"27 }% + \DeclareUnicodeCharacter{0028}{\char"28 }% + \DeclareUnicodeCharacter{0029}{\char"29 }% + \DeclareUnicodeCharacter{002A}{\char"2A }% + \DeclareUnicodeCharacter{002B}{\char"2B }% + \DeclareUnicodeCharacter{002C}{\char"2C }% + \DeclareUnicodeCharacter{002D}{\char"2D }% + \DeclareUnicodeCharacter{002E}{\char"2E }% + \DeclareUnicodeCharacter{002F}{\char"2F }% + \DeclareUnicodeCharacter{0030}{0}% + \DeclareUnicodeCharacter{0031}{1}% + \DeclareUnicodeCharacter{0032}{2}% + \DeclareUnicodeCharacter{0033}{3}% + \DeclareUnicodeCharacter{0034}{4}% + \DeclareUnicodeCharacter{0035}{5}% + \DeclareUnicodeCharacter{0036}{6}% + \DeclareUnicodeCharacter{0037}{7}% + \DeclareUnicodeCharacter{0038}{8}% + \DeclareUnicodeCharacter{0039}{9}% + \DeclareUnicodeCharacter{003A}{\char"3A }% + \DeclareUnicodeCharacter{003B}{\char"3B }% + \DeclareUnicodeCharacter{003C}{\char"3C }% + \DeclareUnicodeCharacter{003D}{\char"3D }% + \DeclareUnicodeCharacter{003E}{\char"3E }% + \DeclareUnicodeCharacter{003F}{\char"3F }% + \DeclareUnicodeCharacter{0040}{\char"40 }% + \DeclareUnicodeCharacter{0041}{A}% + \DeclareUnicodeCharacter{0042}{B}% + \DeclareUnicodeCharacter{0043}{C}% + \DeclareUnicodeCharacter{0044}{D}% + \DeclareUnicodeCharacter{0045}{E}% + \DeclareUnicodeCharacter{0046}{F}% + \DeclareUnicodeCharacter{0047}{G}% + \DeclareUnicodeCharacter{0048}{H}% + \DeclareUnicodeCharacter{0049}{I}% + \DeclareUnicodeCharacter{004A}{J}% + \DeclareUnicodeCharacter{004B}{K}% + \DeclareUnicodeCharacter{004C}{L}% + \DeclareUnicodeCharacter{004D}{M}% + \DeclareUnicodeCharacter{004E}{N}% + \DeclareUnicodeCharacter{004F}{O}% + \DeclareUnicodeCharacter{0050}{P}% + \DeclareUnicodeCharacter{0051}{Q}% + \DeclareUnicodeCharacter{0052}{R}% + \DeclareUnicodeCharacter{0053}{S}% + \DeclareUnicodeCharacter{0054}{T}% + \DeclareUnicodeCharacter{0055}{U}% + \DeclareUnicodeCharacter{0056}{V}% + \DeclareUnicodeCharacter{0057}{W}% + \DeclareUnicodeCharacter{0058}{X}% + \DeclareUnicodeCharacter{0059}{Y}% + \DeclareUnicodeCharacter{005A}{Z}% + \DeclareUnicodeCharacter{005B}{\char"5B }% + \DeclareUnicodeCharacter{005C}{\char"5C }% + \DeclareUnicodeCharacter{005D}{\char"5D }% + \DeclareUnicodeCharacter{005E}{\char"5E }% + \DeclareUnicodeCharacter{005F}{\char"5F }% + \DeclareUnicodeCharacter{0060}{\char"60 }% + \DeclareUnicodeCharacter{0061}{a}% + \DeclareUnicodeCharacter{0062}{b}% + \DeclareUnicodeCharacter{0063}{c}% + \DeclareUnicodeCharacter{0064}{d}% + \DeclareUnicodeCharacter{0065}{e}% + \DeclareUnicodeCharacter{0066}{f}% + \DeclareUnicodeCharacter{0067}{g}% + \DeclareUnicodeCharacter{0068}{h}% + \DeclareUnicodeCharacter{0069}{i}% + \DeclareUnicodeCharacter{006A}{j}% + \DeclareUnicodeCharacter{006B}{k}% + \DeclareUnicodeCharacter{006C}{l}% + \DeclareUnicodeCharacter{006D}{m}% + \DeclareUnicodeCharacter{006E}{n}% + \DeclareUnicodeCharacter{006F}{o}% + \DeclareUnicodeCharacter{0070}{p}% + \DeclareUnicodeCharacter{0071}{q}% + \DeclareUnicodeCharacter{0072}{r}% + \DeclareUnicodeCharacter{0073}{s}% + \DeclareUnicodeCharacter{0074}{t}% + \DeclareUnicodeCharacter{0075}{u}% + \DeclareUnicodeCharacter{0076}{v}% + \DeclareUnicodeCharacter{0077}{w}% + \DeclareUnicodeCharacter{0078}{x}% + \DeclareUnicodeCharacter{0079}{y}% + \DeclareUnicodeCharacter{007A}{z}% + \DeclareUnicodeCharacter{007B}{\char"7B }% + \DeclareUnicodeCharacter{007C}{\char"7C }% + \DeclareUnicodeCharacter{007D}{\char"7D }% + \DeclareUnicodeCharacter{007E}{\char"7E }% + % \DeclareUnicodeCharacter{007F}{} % DEL + % \DeclareUnicodeCharacter{00A0}{\tie}% \DeclareUnicodeCharacter{00A1}{\exclamdown}% \DeclareUnicodeCharacter{00A2}{{\tcfont \char162}}% 0242=cent @@ -10413,7 +10516,7 @@ directory should work if nowhere else does.} \DeclareUnicodeCharacter{00AE}{\registeredsymbol{}}% \DeclareUnicodeCharacter{00AF}{\={ }}% % - \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}% + \DeclareUnicodeCharacter{00B0}{\textdegree}% \DeclareUnicodeCharacter{00B1}{\ensuremath\pm}% \DeclareUnicodeCharacter{00B2}{$^2$}% \DeclareUnicodeCharacter{00B3}{$^3$}% @@ -10917,7 +11020,7 @@ directory should work if nowhere else does.} % \DeclareUnicodeCharacter{20AC}{\euro{}}% % - \DeclareUnicodeCharacter{2192}{\expansion{}}% + \DeclareUnicodeCharacter{2192}{\arrow}% \DeclareUnicodeCharacter{21D2}{\result{}}% % % Mathematical symbols @@ -11080,24 +11183,26 @@ directory should work if nowhere else does.} % provide a definition macro to replace/pass-through a Unicode character % \def\DeclareUnicodeCharacterNative#1#2{% - \catcode"#1=\active - \def\dodeclareunicodecharacternative##1##2##3{% + \ifnum"#1>"7F % only make non-ASCII chars active + \catcode"#1=\active + \def\dodeclareunicodecharacternative##1##2##3{% + \begingroup + \uccode`\~="##2\relax + \uppercase{\gdef~}{% + \ifpassthroughchars + ##1% + \else + ##3% + \fi + } + \endgroup + } \begingroup - \uccode`\~="##2\relax - \uppercase{\gdef~}{% - \ifpassthroughchars - ##1% - \else - ##3% - \fi - } + \uccode`\.="#1\relax + \uppercase{\def\UTFNativeTmp{.}}% + \expandafter\dodeclareunicodecharacternative\UTFNativeTmp{#1}{#2}% \endgroup - } - \begingroup - \uccode`\.="#1\relax - \uppercase{\def\UTFNativeTmp{.}}% - \expandafter\dodeclareunicodecharacternative\UTFNativeTmp{#1}{#2}% - \endgroup + \fi } % Native Unicode handling (XeTeX and LuaTeX) character replacing definition. @@ -11180,13 +11285,9 @@ directory should work if nowhere else does.} % \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 @@ -11276,7 +11377,7 @@ directory should work if nowhere else does.} \textleading = 12.5pt % \internalpagesizes{160mm}{120mm}% - {\voffset}{\hoffset}% + {\voffset}{-11.4mm}% {\bindingoffset}{8pt}% {210mm}{148mm}% % @@ -11355,9 +11456,135 @@ directory should work if nowhere else does.} \hfuzz = 1pt +\message{microtype,} + +% protrusion, from Thanh's protcode.tex. +\def\mtsetprotcode#1{% + \rpcode#1`\!=200 \rpcode#1`\,=700 \rpcode#1`\-=700 \rpcode#1`\.=700 + \rpcode#1`\;=500 \rpcode#1`\:=500 \rpcode#1`\?=200 + \rpcode#1`\'=700 + \rpcode#1 34=500 % '' + \rpcode#1 123=300 % -- + \rpcode#1 124=200 % --- + \rpcode#1`\)=50 \rpcode#1`\A=50 \rpcode#1`\F=50 \rpcode#1`\K=50 + \rpcode#1`\L=50 \rpcode#1`\T=50 \rpcode#1`\V=50 \rpcode#1`\W=50 + \rpcode#1`\X=50 \rpcode#1`\Y=50 \rpcode#1`\k=50 \rpcode#1`\r=50 + \rpcode#1`\t=50 \rpcode#1`\v=50 \rpcode#1`\w=50 \rpcode#1`\x=50 + \rpcode#1`\y=50 + % + \lpcode#1`\`=700 + \lpcode#1 92=500 % `` + \lpcode#1`\(=50 \lpcode#1`\A=50 \lpcode#1`\J=50 \lpcode#1`\T=50 + \lpcode#1`\V=50 \lpcode#1`\W=50 \lpcode#1`\X=50 \lpcode#1`\Y=50 + \lpcode#1`\v=50 \lpcode#1`\w=50 \lpcode#1`\x=50 \lpcode#1`\y=0 + % + \mtadjustprotcode#1\relax +} + +\newcount\countC +\def\mtadjustprotcode#1{% + \countC=0 + \loop + \ifcase\lpcode#1\countC\else + \mtadjustcp\lpcode#1\countC + \fi + \ifcase\rpcode#1\countC\else + \mtadjustcp\rpcode#1\countC + \fi + \advance\countC 1 + \ifnum\countC < 256 \repeat +} + +\newcount\countB +\def\mtadjustcp#1#2#3{% + \setbox\boxA=\hbox{% + \ifx#2\font\else#2\fi + \char#3}% + \countB=\wd\boxA + \multiply\countB #1#2#3\relax + \divide\countB \fontdimen6 #2\relax + #1#2#3=\countB\relax +} + +\ifx\XeTeXrevision\thisisundefined + \ifx\luatexversion\thisisundefined + \ifpdf % pdfTeX + \mtsetprotcode\textrm + \def\mtfontexpand#1{\pdffontexpand#1 20 20 1 autoexpand\relax} + \else % TeX + \def\mtfontexpand#1{} + \fi + \else % LuaTeX + \mtsetprotcode\textrm + \def\mtfontexpand#1{\expandglyphsinfont#1 20 20 1\relax} + \fi +\else % XeTeX + \mtsetprotcode\textrm + \def\mtfontexpand#1{} +\fi + + +\newif\ifmicrotype + +\def\microtypeON{% + \microtypetrue + % + \ifx\XeTeXrevision\thisisundefined + \ifx\luatexversion\thisisundefined + \ifpdf % pdfTeX + \pdfadjustspacing=2 + \pdfprotrudechars=2 + \fi + \else % LuaTeX + \adjustspacing=2 + \protrudechars=2 + \fi + \else % XeTeX + \XeTeXprotrudechars=2 + \fi + % + \mtfontexpand\textrm + \mtfontexpand\textsl + \mtfontexpand\textbf +} + +\def\microtypeOFF{% + \microtypefalse + % + \ifx\XeTeXrevision\thisisundefined + \ifx\luatexversion\thisisundefined + \ifpdf % pdfTeX + \pdfadjustspacing=0 + \pdfprotrudechars=0 + \fi + \else % LuaTeX + \adjustspacing=0 + \protrudechars=0 + \fi + \else % XeTeX + \XeTeXprotrudechars=0 + \fi +} + +\microtypeON + +\parseargdef\microtype{% + \def\txiarg{#1}% + \ifx\txiarg\onword + \microtypeON + \else\ifx\txiarg\offword + \microtypeOFF + \else + \errhelp = \EMsimple + \errmessage{Unknown @microtype option `\txiarg', must be on|off}% + \fi\fi +} + + \message{and turning on texinfo input format.} \def^^L{\par} % remove \outer, so ^L can appear in an @comment +\catcode`\^^K = 10 % treat vertical tab as whitespace % DEL is a comment character, in case @c does not suffice. \catcode`\^^? = 14 @@ -11373,23 +11600,6 @@ directory should work if nowhere else does.} \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. diff --git a/build.cfg.in b/build.cfg.in index 69e7b67..b0d422d 100644 --- a/build.cfg.in +++ b/build.cfg.in @@ -1,7 +1,7 @@ # Configuration for building GNU Make in the absence of any 'make' program. # @configure_input@ -# Copyright (C) 1993-2022 Free Software Foundation, Inc. +# Copyright (C) 1993-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under diff --git a/build.sh b/build.sh index fdcd964..96e8f91 100755 --- a/build.sh +++ b/build.sh @@ -1,7 +1,7 @@ #!/bin/sh # Shell script to build GNU Make in the absence of any 'make' program. -# Copyright (C) 1993-2022 Free Software Foundation, Inc. +# Copyright (C) 1993-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -42,19 +42,13 @@ defines="-DLOCALEDIR=\"$localedir\" -DLIBDIR=\"$libdir\" -DINCLUDEDIR=\"$include # Print the value to stdout. get_mk_var () { - file=$1 - var=$2 - - val= - v=$(sed -e :a -e '/\\$/N; s/\\\n//; ta' "$file" | sed -n "s=^ *$var *\= *==p") + v=$(sed -e :a -e '/\\$/N; s/\\\n//; ta' "$1" | sed -n "s=^ *$2 *\= *==p") for w in $v; do case $w in - (\$[\(\{]*[\)\}]) w=${w#\$[\(\{]}; w=$(get_mk_var "$file" "${w%[\)\}]}") ;; + (\$[\(\{]*[\)\}]) w=${w#\$[\(\{]}; (get_mk_var "$1" "${w%[\)\}]}") ;; + (*) echo "$w" ;; esac - val="${val:+$val }$w" done - - printf '%s\n' "$val" } # Compile source files. Object files are put into $objs. diff --git a/build_w32.bat b/build_w32.bat index 30ca0b2..3e02300 100644 --- a/build_w32.bat +++ b/build_w32.bat @@ -1,5 +1,5 @@ @echo off -:: Copyright (C) 1996-2022 Free Software Foundation, Inc. +:: Copyright (C) 1996-2023 Free Software Foundation, Inc. :: This file is part of GNU Make. :: :: GNU Make is free software; you can redistribute it and/or modify it under @@ -28,7 +28,7 @@ if "%1" == "-h" goto Usage if "%1" == "--help" goto Usage echo. -echo Creating GNU Make for Windows 9X/NT/2K/XP/Vista/7/8/10 +echo Creating GNU Make for Windows 9X/NT/2K/XP/Vista/7/8/10/11 echo. set MAKE=gnumake diff --git a/builddos.bat b/builddos.bat index 2ee916a..3e540a9 100644 --- a/builddos.bat +++ b/builddos.bat @@ -1,5 +1,5 @@ @echo off -rem Copyright (C) 1998-2022 Free Software Foundation, Inc. +rem Copyright (C) 1998-2023 Free Software Foundation, Inc. rem This file is part of GNU Make. rem rem GNU Make is free software; you can redistribute it and/or modify it under diff --git a/configure b/configure index 58a1d4f..79c56cb 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for GNU Make 4.4. +# Generated by GNU Autoconf 2.71 for GNU Make 4.4.1. # # Report bugs to . # @@ -611,8 +611,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='GNU Make' PACKAGE_TARNAME='make' -PACKAGE_VERSION='4.4' -PACKAGE_STRING='GNU Make 4.4' +PACKAGE_VERSION='4.4.1' +PACKAGE_STRING='GNU Make 4.4.1' PACKAGE_BUGREPORT='bug-make@gnu.org' PACKAGE_URL='https://www.gnu.org/software/make/' @@ -652,6 +652,8 @@ ac_includes_default="\ ac_header_c_list= gt_needs= ac_func_c_list= +enable_year2038=no +enable_largefile=yes ac_subst_vars='gltests_LIBOBJDEPS gltests_LTLIBOBJS gltests_LIBOBJS @@ -702,10 +704,6 @@ LIBGNU_LIBDEPS GL_CFLAG_GNULIB_WARNINGS GL_CFLAG_ALLOW_WARNINGS gltests_WITNESS -GL_GENERATE_STDBOOL_H_FALSE -GL_GENERATE_STDBOOL_H_TRUE -STDBOOL_H -HAVE__BOOL USE_SYSTEM_GLOB USE_SYSTEM_GLOB_FALSE USE_SYSTEM_GLOB_TRUE @@ -737,6 +735,12 @@ build_os build_vendor build_cpu build +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE @@ -828,8 +832,6 @@ ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking -enable_largefile -enable_year2038 enable_cross_guesses enable_nls with_gnu_ld @@ -843,6 +845,8 @@ enable_job_server enable_load enable_posix_spawn with_dmalloc +enable_year2038 +enable_largefile ' ac_precious_vars='build_alias host_alias @@ -852,6 +856,9 @@ CFLAGS LDFLAGS LIBS CPPFLAGS +CXX +CXXFLAGS +CCC CPP PKG_CONFIG PKG_CONFIG_PATH @@ -1406,7 +1413,7 @@ if test "$ac_init_help" = "long"; then # 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 Make 4.4 to adapt to many kinds of systems. +\`configure' configures GNU Make 4.4.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1477,7 +1484,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of GNU Make 4.4:";; + short | recursive ) echo "Configuration of GNU Make 4.4.1:";; esac cat <<\_ACEOF @@ -1491,8 +1498,6 @@ Optional Features: do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build - --disable-largefile omit support for large files - --disable-year2038 omit support for timestamps past the year 2038 --enable-cross-guesses={conservative|risky} specify policy for cross-compilation guesses --disable-nls do not use Native Language Support @@ -1502,6 +1507,8 @@ Optional Features: --disable-job-server disallow recursive make communication during -jN --disable-load disable support for the 'load' operation --disable-posix-spawn disable support for posix_spawn() + --enable-year2038 support timestamps after 2038 + --disable-largefile omit support for large files Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -1523,6 +1530,8 @@ Some influential environment variables: 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 + CXX C++ compiler command + CXXFLAGS C++ compiler flags CPP C preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH @@ -1602,7 +1611,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -GNU Make configure 4.4 +GNU Make configure 4.4.1 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1688,6 +1697,45 @@ printf "%s\n" "$ac_res" >&6; } } # ac_fn_c_check_header_compile +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + 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\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. @@ -2075,7 +2123,7 @@ 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 Make $as_me 4.4, which was +It was created by GNU Make $as_me 4.4.1, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -2665,7 +2713,224 @@ 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" +# Test code for whether the C++ compiler supports C++98 (global declarations) +ac_cxx_conftest_cxx98_globals=' +// Does the compiler advertise C++98 conformance? +#if !defined __cplusplus || __cplusplus < 199711L +# error "Compiler does not advertise C++98 conformance" +#endif + +// These inclusions are to reject old compilers that +// lack the unsuffixed header files. +#include +#include + +// and are *not* freestanding headers in C++98. +extern void assert (int); +namespace std { + extern int strcmp (const char *, const char *); +} + +// Namespaces, exceptions, and templates were all added after "C++ 2.0". +using std::exception; +using std::strcmp; + +namespace { + +void test_exception_syntax() +{ + try { + throw "test"; + } catch (const char *s) { + // Extra parentheses suppress a warning when building autoconf itself, + // due to lint rules shared with more typical C programs. + assert (!(strcmp) (s, "test")); + } +} + +template struct test_template +{ + T const val; + explicit test_template(T t) : val(t) {} + template T add(U u) { return static_cast(u) + val; } +}; + +} // anonymous namespace +' + +# Test code for whether the C++ compiler supports C++98 (body of main) +ac_cxx_conftest_cxx98_main=' + assert (argc); + assert (! argv[0]); +{ + test_exception_syntax (); + test_template tt (2.0); + assert (tt.add (4) == 6.0); + assert (true && !false); +} +' + +# Test code for whether the C++ compiler supports C++11 (global declarations) +ac_cxx_conftest_cxx11_globals=' +// Does the compiler advertise C++ 2011 conformance? +#if !defined __cplusplus || __cplusplus < 201103L +# error "Compiler does not advertise C++11 conformance" +#endif + +namespace cxx11test +{ + constexpr int get_val() { return 20; } + + struct testinit + { + int i; + double d; + }; + + class delegate + { + public: + delegate(int n) : n(n) {} + delegate(): delegate(2354) {} + + virtual int getval() { return this->n; }; + protected: + int n; + }; + + class overridden : public delegate + { + public: + overridden(int n): delegate(n) {} + virtual int getval() override final { return this->n * 2; } + }; + + class nocopy + { + public: + nocopy(int i): i(i) {} + nocopy() = default; + nocopy(const nocopy&) = delete; + nocopy & operator=(const nocopy&) = delete; + private: + int i; + }; + + // for testing lambda expressions + template Ret eval(Fn f, Ret v) + { + return f(v); + } + + // for testing variadic templates and trailing return types + template auto sum(V first) -> V + { + return first; + } + template auto sum(V first, Args... rest) -> V + { + return first + sum(rest...); + } +} +' + +# Test code for whether the C++ compiler supports C++11 (body of main) +ac_cxx_conftest_cxx11_main=' +{ + // Test auto and decltype + auto a1 = 6538; + auto a2 = 48573953.4; + auto a3 = "String literal"; + + int total = 0; + for (auto i = a3; *i; ++i) { total += *i; } + + decltype(a2) a4 = 34895.034; +} +{ + // Test constexpr + short sa[cxx11test::get_val()] = { 0 }; +} +{ + // Test initializer lists + cxx11test::testinit il = { 4323, 435234.23544 }; +} +{ + // Test range-based for + int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, + 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; + for (auto &x : array) { x += 23; } +} +{ + // Test lambda expressions + using cxx11test::eval; + assert (eval ([](int x) { return x*2; }, 21) == 42); + double d = 2.0; + assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); + assert (d == 5.0); + assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); + assert (d == 5.0); +} +{ + // Test use of variadic templates + using cxx11test::sum; + auto a = sum(1); + auto b = sum(1, 2); + auto c = sum(1.0, 2.0, 3.0); +} +{ + // Test constructor delegation + cxx11test::delegate d1; + cxx11test::delegate d2(); + cxx11test::delegate d3(45); +} +{ + // Test override and final + cxx11test::overridden o1(55464); +} +{ + // Test nullptr + char *c = nullptr; +} +{ + // Test template brackets + test_template<::test_template> v(test_template(12)); +} +{ + // Unicode literals + char const *utf8 = u8"UTF-8 string \u2500"; + char16_t const *utf16 = u"UTF-8 string \u2500"; + char32_t const *utf32 = U"UTF-32 string \u2500"; +} +' + +# Test code for whether the C compiler supports C++11 (complete). +ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} +${ac_cxx_conftest_cxx11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_cxx_conftest_cxx98_main} + ${ac_cxx_conftest_cxx11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C++98 (complete). +ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_cxx_conftest_cxx98_main} + return ok; +} +" + as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H" +as_fn_append ac_header_c_list " stdbool.h stdbool_h HAVE_STDBOOL_H" gt_needs="$gt_needs " as_fn_append ac_header_c_list " vfork.h vfork_h HAVE_VFORK_H" as_fn_append ac_func_c_list " fork HAVE_FORK" @@ -3367,7 +3632,7 @@ fi # Define the identity of the package. PACKAGE='make' - VERSION='4.4' + VERSION='4.4.1' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -4937,6 +5202,8 @@ printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_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 @@ -5970,88 +6237,595 @@ fi -# Configure gnulib - # 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} + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ + 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_CXX+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"` -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 + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # 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_CXX="$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 -{ 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;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +printf "%s\n" "$CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi -{ 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} + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ +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_CXX+y} then : printf %s "(cached) " >&6 else $as_nop - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. 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 -fi +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_CXX="$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 -{ 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;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - - - +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +printf "%s\n" "$ac_ct_CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi - case "$host_os" in - openbsd*) + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + 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 + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# 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; 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 + +{ 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_cxx_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_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.beam conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+y} +ac_save_CXXFLAGS=$CXXFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +printf %s "checking whether $CXX accepts -g... " >&6; } +if test ${ac_cv_prog_cxx_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_g=yes +else $as_nop + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + +else $as_nop + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_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_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } +if test $ac_test_CXXFLAGS; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_prog_cxx_stdcxx=no +if test x$ac_prog_cxx_stdcxx = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 +printf %s "checking for $CXX option to enable C++11 features... " >&6; } +if test ${ac_cv_prog_cxx_11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cxx_11=no +ac_save_CXX=$CXX +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_cxx_conftest_cxx11_program +_ACEOF +for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA +do + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_cxx11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cxx_cxx11" != "xno" && break +done +rm -f conftest.$ac_ext +CXX=$ac_save_CXX +fi + +if test "x$ac_cv_prog_cxx_cxx11" = 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_cxx_cxx11" = 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_cxx_cxx11" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } + CXX="$CXX $ac_cv_prog_cxx_cxx11" +fi + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 + ac_prog_cxx_stdcxx=cxx11 +fi +fi +if test x$ac_prog_cxx_stdcxx = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 +printf %s "checking for $CXX option to enable C++98 features... " >&6; } +if test ${ac_cv_prog_cxx_98+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cxx_98=no +ac_save_CXX=$CXX +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_cxx_conftest_cxx98_program +_ACEOF +for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA +do + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_cxx98=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cxx_cxx98" != "xno" && break +done +rm -f conftest.$ac_ext +CXX=$ac_save_CXX +fi + +if test "x$ac_cv_prog_cxx_cxx98" = 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_cxx_cxx98" = 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_cxx_cxx98" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } + CXX="$CXX $ac_cv_prog_cxx_cxx98" +fi + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 + ac_prog_cxx_stdcxx=cxx98 +fi +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="$CXX" 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_CXX_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_CXX_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_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +printf "%s\n" "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + +printf "%s\n" "#define MAKE_CXX \"$CXX\"" >>confdefs.h + + +# Configure gnulib + + + # 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"` +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 + +fi +{ 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;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ 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 +fi + +fi +{ 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;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + + + + + + case "$host_os" in + openbsd*) printf "%s\n" "#define _ISOC11_SOURCE 1" >>confdefs.h @@ -6594,261 +7368,91 @@ fi fi -# Check whether --enable-largefile was given. -if test ${enable_largefile+y} -then : - enableval=$enable_largefile; -fi - -if test "$enable_largefile" != no -then : - { 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 - while :; do - # IRIX 6.2 and later do not support large files by default, - # so use the C compiler's -n32 option if that helps. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - /* Check that off_t can represent 2**63 - 1 correctly. - 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)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main (void) -{ - - ; - return 0; -} -_ACEOF - if ac_fn_c_try_compile "$LINENO" -then : - break -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - CC="$CC -n32" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_sys_largefile_CC=' -n32'; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - break - done - CC=$ac_save_CC - rm -f conftest.$ac_ext - fi -fi -{ 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 - - { 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. */ -#include - /* Check that off_t can represent 2**63 - 1 correctly. - 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)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main (void) -{ - - ; - return 0; -} -_ACEOF -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.beam conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#undef _FILE_OFFSET_BITS -#define _FILE_OFFSET_BITS 64 -#include - /* Check that off_t can represent 2**63 - 1 correctly. - 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)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" + if test "$enable_largefile" != no then : - ac_cv_sys_file_offset_bits=64; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_cv_sys_file_offset_bits=unknown - break -done -fi -{ 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) ;; - *) -printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h -;; -esac -rm -rf conftest* - case $ac_cv_sys_file_offset_bits in #( - unknown) : - { 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} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable large file support" >&5 +printf %s "checking for $CC option to enable large file support... " >&6; } +if test ${ac_cv_sys_largefile_opts+y} then : printf %s "(cached) " >&6 else $as_nop - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - /* Check that off_t can represent 2**63 - 1 correctly. - 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)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" + ac_save_CC="$CC" + ac_opt_found=no + for ac_opt in "none needed" "-D_FILE_OFFSET_BITS=64" "-D_LARGE_FILES=1" "-n32"; do + if test x"$ac_opt" != x"none needed" then : - ac_cv_sys_large_files=no; break + CC="$ac_save_CC $ac_opt" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#undef _LARGE_FILES -#define _LARGE_FILES 1 #include - /* Check that off_t can represent 2**63 - 1 correctly. - 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)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main (void) -{ - - ; - return 0; -} -_ACEOF -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.beam conftest.$ac_ext - ac_cv_sys_large_files=unknown - break -done -fi -{ 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) ;; - *) -printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h -;; -esac -rm -rf conftest* ;; #( - 64) : - - # Check whether --enable-year2038 was given. -if test ${enable_year2038+y} -then : - enableval=$enable_year2038; -fi - - if test "$enable_year2038" != no -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for time_t past the year 2038" >&5 -printf %s "checking for time_t past the year 2038... " >&6; } -if test ${gl_cv_type_time_t_y2038+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - /* Check that time_t can represent 2**32 - 1 correctly. */ - #define LARGE_TIME_T \\ - ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) - int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 - && LARGE_TIME_T % 65537 == 0) - ? 1 : -1]; + /* Check that off_t can represent 2**63 - 1 correctly. + 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)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + ; + return 0; +} _ACEOF if ac_fn_c_try_compile "$LINENO" then : - gl_cv_type_time_t_y2038=yes -else $as_nop - gl_cv_type_time_t_y2038=no + ac_cv_sys_largefile_opts="$ac_opt" + ac_opt_found=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - + test $ac_opt_found = no || break + done + CC="$ac_save_CC" + test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected" fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_time_t_y2038" >&5 -printf "%s\n" "$gl_cv_type_time_t_y2038" >&6; } - if test "$gl_cv_type_time_t_y2038" = no; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit time_t with _TIME_BITS=64" >&5 -printf %s "checking for 64-bit time_t with _TIME_BITS=64... " >&6; } -if test ${gl_cv_type_time_t_bits_macro+y} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_opts" >&5 +printf "%s\n" "$ac_cv_sys_largefile_opts" >&6; } + +ac_have_largefile=yes +case $ac_cv_sys_largefile_opts in #( + "none needed") : + ;; #( + "support not detected") : + ac_have_largefile=no ;; #( + "-D_FILE_OFFSET_BITS=64") : + +printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h + ;; #( + "-D_LARGE_FILES=1") : + +printf "%s\n" "#define _LARGE_FILES 1" >>confdefs.h + ;; #( + "-n32") : + CC="$CC -n32" ;; #( + *) : + as_fn_error $? "internal error: bad value for \$ac_cv_sys_largefile_opts" "$LINENO" 5 ;; +esac + + if test "$enable_year2038" != no +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable timestamps after Jan 2038" >&5 +printf %s "checking for $CC option to enable timestamps after Jan 2038... " >&6; } +if test ${ac_cv_sys_year2038_opts+y} then : printf %s "(cached) " >&6 else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + ac_save_CPPFLAGS="$CPPFLAGS" + ac_opt_found=no + for ac_opt in "none needed" "-D_TIME_BITS=64" "-D__MINGW_USE_VC2005_COMPAT" "-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"; do + if test x"$ac_opt" != x"none needed" +then : + CPPFLAGS="$ac_save_CPPFLAGS $ac_opt" +fi + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#define _TIME_BITS 64 - #define _FILE_OFFSET_BITS 64 #include /* Check that time_t can represent 2**32 - 1 correctly. */ @@ -6858,82 +7462,91 @@ else $as_nop && LARGE_TIME_T % 65537 == 0) ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} _ACEOF if ac_fn_c_try_compile "$LINENO" then : - gl_cv_type_time_t_bits_macro=yes -else $as_nop - gl_cv_type_time_t_bits_macro=no + ac_cv_sys_year2038_opts="$ac_opt" + ac_opt_found=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - + test $ac_opt_found = no || break + done + CPPFLAGS="$ac_save_CPPFLAGS" + test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected" fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_time_t_bits_macro" >&5 -printf "%s\n" "$gl_cv_type_time_t_bits_macro" >&6; } - if test "$gl_cv_type_time_t_bits_macro" = yes; then - -printf "%s\n" "#define _TIME_BITS 64" >>confdefs.h - - -printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_year2038_opts" >&5 +printf "%s\n" "$ac_cv_sys_year2038_opts" >&6; } - gl_cv_type_time_t_y2038=yes - fi - fi - if test $gl_cv_type_time_t_y2038 = no; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef _USE_32BIT_TIME_T - int ok; - #else - error fail - #endif - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +ac_have_year2038=yes +case $ac_cv_sys_year2038_opts in #( + "none needed") : + ;; #( + "support not detected") : + ac_have_year2038=no + case $enable_year2038 in #( + yes) : + # If we're not cross compiling and 'touch' works with a large + # timestamp, then we can presume the system supports wider time_t + # *somehow* and we just weren't able to detect it. One common + # case that we deliberately *don't* probe for is a system that + # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers + # wide time_t. (It would be inappropriate for us to override an + # intentional use of -m32.) Error out, demanding use of + # --disable-year2038 if this is intentional. + if test $cross_compiling = no +then : + if TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null +then : + case `TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null` in #( + *'Feb 7 2106'* | *'Feb 7 17:10'*) : + { { 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 $? "The 'time_t' type stops working after January 2038. - Remove _USE_32BIT_TIME_T from the compiler flags. -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - # If not cross-compiling and says we should check, - # and 'touch' works with a large timestamp, then evidently wider time_t - # is desired and supported, so fail and ask the builder to fix the - # problem. Otherwise, just warn the builder. +as_fn_error $? "this system appears to support timestamps after +January 2038, but no mechanism for enabling wide +'time_t' was detected. Did you mean to build a 64-bit +binary? (e.g. 'CC=\"${CC} -m64\"'.) To proceed with +32-bit time_t, configure with '--disable-year2038'. +See \`config.log' for more details" "$LINENO" 5; } ;; #( + *) : + ;; +esac +fi +fi ;; #( + *) : + ;; +esac ;; #( + "-D_TIME_BITS=64") : - if test "$gl_warned_about_y2038" != yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: The 'time_t' type stops working after January 2038, - and this package needs a wider 'time_t' type - if there is any way to access timestamps after that. - Configure with 'CC=\"${CC} -m64\"' perhaps?" >&5 -printf "%s\n" "$as_me: WARNING: The 'time_t' type stops working after January 2038, - and this package needs a wider 'time_t' type - if there is any way to access timestamps after that. - Configure with 'CC=\"${CC} -m64\"' perhaps?" >&2;} - gl_warned_about_y2038=yes - fi +printf "%s\n" "#define _TIME_BITS 64" >>confdefs.h + ;; #( + "-D__MINGW_USE_VC2005_COMPAT=1") : -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi -fi +printf "%s\n" "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h ;; #( + "-U_USE_32_BIT_TIME_T"*) : + { { 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 $? "the 'time_t' type is currently forced to be 32-bit. It +will stop working after January 2038. Remove +_USE_32BIT_TIME_T from the compiler flags. +See \`config.log' for more details" "$LINENO" 5; } ;; #( *) : - ;; + as_fn_error $? "internal error: bad value for \$ac_cv_sys_year2038_opts" "$LINENO" 5 ;; esac -fi +fi - case "$host_os" in - mingw*) -printf "%s\n" "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h +fi - ;; - esac @@ -6943,6 +7556,7 @@ printf "%s\n" "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h # Code from module alloca: # Code from module alloca-opt: + # Code from module c99: # Code from module concat-filename: # Code from module extensions: # Code from module fdl: @@ -6954,10 +7568,10 @@ printf "%s\n" "#define __MINGW_USE_VC2005_COMPAT 1" >>confdefs.h # Code from module intprops: # Code from module largefile: - # Code from module make-glob: # Code from module make-macros: # Code from module snippet/warn-on-use: + # Code from module std-gnu11: # Code from module stdbool: @@ -7787,100 +8401,6 @@ printf "%s\n" "$gl_cv_member_st_size_64" >&6; } ;; esac -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 - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99 or later" >&5 -printf %s "checking for stdbool.h that conforms to C99 or later... " >&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 - - /* "true" and "false" should be usable in #if expressions and - integer constant expressions, and "bool" should be a valid - type name. - - Although C 1999 requires bool, true, and false to be macros, - C 2023 and C++ 2011 overrule that, so do not test for that. - Although C 1999 requires __bool_true_false_are_defined and - _Bool, C 2023 says they are obsolescent, so do not require - them. */ - - #if !true - #error "'true' is not true" - #endif - #if true != 1 - #error "'true' is not equal to 1" - #endif - 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 sb { bool s: 1; bool t; } s; - char l[sizeof s.t > 0 ? 1 : -1]; - - /* The following fails for - HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ - 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 - https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html - https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html - */ - bool p = true; - bool *pp = &p; - -int -main (void) -{ - - bool ps = &s; - *pp |= p; - *pp |= ! p; - - /* 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); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_header_stdbool_h=yes -else $as_nop - ac_cv_header_stdbool_h=no -fi -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; } @@ -8632,34 +9152,93 @@ printf "%s\n" "#define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h # Check the system to see if it provides GNU glob. If not, use our - # local version. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if system libc has GNU glob" >&5 -printf %s "checking if system libc has GNU glob... " >&6; } + # local version. Also avoid versions of glibc which have symlink bug + # https://sourceware.org/bugzilla/show_bug.cgi?id=866 (test from gnulib) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if system libc has working GNU glob" >&5 +printf %s "checking if system libc has working GNU glob... " >&6; } if test ${make_cv_sys_gnu_glob+y} then : printf %s "(cached) " >&6 else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + + if ln -s conf-doesntexist conf$$-globtest 2>/dev/null; then + make_check_symlink=yes + else + make_check_symlink=no + fi + if test $cross_compiling = yes || test $make_check_symlink = no; then + # When cross-compiling or without symlink support, check the version + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #include + #include + +int +main (void) +{ + + #if _GNU_GLOB_INTERFACE_VERSION == 0 + GNU glob not available in libc + #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 27) + GNU glob in libc has dangling symlink bug + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + make_cv_sys_gnu_glob=yes +else $as_nop + make_cv_sys_gnu_glob=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + else + # Check for GNU glob, and that it handles dangling symlinks properly + if test "$cross_compiling" = yes +then : + : + +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +#include + #include + #include + #include + +int +main (void) +{ + + #if _GNU_GLOB_INTERFACE_VERSION == 0 + return 1; + #else + glob_t found; + if (glob ("conf*-globtest", 0, 0, &found) == GLOB_NOMATCH) + return 1; + globfree (&found); + #endif - #include - #include - #include - #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 - # include - # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 - gnu glob - # endif - #endif + ; + return 0; +} _ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "gnu glob" >/dev/null 2>&1 +if ac_fn_c_try_run "$LINENO" then : make_cv_sys_gnu_glob=yes else $as_nop make_cv_sys_gnu_glob=no fi -rm -rf conftest* +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi + test $make_check_symlink = no || rm -f conf$$-globtest fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5 @@ -8719,66 +9298,41 @@ printf "%s\n" "#define HAVE_DOS_PATHS 1" >>confdefs.h fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bool, true, false" >&5 +printf %s "checking for bool, true, false... " >&6; } +if test ${gl_cv_c_bool+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + #if true == false + #error "true == false" + #endif + extern bool b; + bool b = true == false; +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + gl_cv_c_bool=yes +else $as_nop + gl_cv_c_bool=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_bool" >&5 +printf "%s\n" "$gl_cv_c_bool" >&6; } + if test "$gl_cv_c_bool" = yes; then +printf "%s\n" "#define HAVE_C_BOOL 1" >>confdefs.h - if test "$ac_cv_header_stdbool_h" = yes; then - case "$host_os" in - solaris*) - if test -z "$GCC"; then - GL_GENERATE_STDBOOL_H=true - else - GL_GENERATE_STDBOOL_H=false - fi - ;; - *) - GL_GENERATE_STDBOOL_H=false - ;; - esac - else - GL_GENERATE_STDBOOL_H=true - fi - - if test "$ac_cv_type__Bool" = yes; then - HAVE__BOOL=1 - else - HAVE__BOOL=0 - fi - - - - - - - case "$GL_GENERATE_STDBOOL_H" in - false) STDBOOL_H='' ;; - true) - if test -z "$STDBOOL_H"; then - STDBOOL_H="${gl_source_base_prefix}stdbool.h" - fi - ;; - *) echo "*** GL_GENERATE_STDBOOL_H is not set correctly" 1>&2; exit 1 ;; - esac - - - if $GL_GENERATE_STDBOOL_H; then - GL_GENERATE_STDBOOL_H_TRUE= - GL_GENERATE_STDBOOL_H_FALSE='#' -else - GL_GENERATE_STDBOOL_H_TRUE='#' - GL_GENERATE_STDBOOL_H_FALSE= -fi -: - if test -z "${GL_GENERATE_STDBOOL_H_TRUE}" && test -z "${GL_GENERATE_STDBOOL_H_FALSE}"; then - GL_GENERATE_STDBOOL_H_TRUE='#' - GL_GENERATE_STDBOOL_H_FALSE='#' fi - # End of code from modules @@ -11906,6 +12460,18 @@ if test "x$ac_cv_header_stdlib_h" = xyes then : printf "%s\n" "#define HAVE_STDLIB_H 1" >>confdefs.h +fi +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" "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 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 @@ -11924,18 +12490,6 @@ if test "x$ac_cv_header_limits_h" = xyes then : printf "%s\n" "#define HAVE_LIMITS_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 - -fi -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" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" if test "x$ac_cv_header_memory_h" = xyes @@ -11978,6 +12532,12 @@ if test "x$ac_cv_header_sys_file_h" = xyes then : printf "%s\n" "#define HAVE_SYS_FILE_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 + fi ac_fn_c_check_header_compile "$LINENO" "spawn.h" "ac_cv_header_spawn_h" "$ac_includes_default" if test "x$ac_cv_header_spawn_h" = xyes @@ -13350,8 +13910,8 @@ printf "%s\n" "$guile_version" >&6; } then : pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GUILE" >&5 -printf %s "checking for GUILE... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for guile-$guile_version" >&5 +printf %s "checking for guile-$guile_version... " >&6; } if test -n "$GUILE_CFLAGS"; then pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS" @@ -13391,7 +13951,7 @@ fi if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -13418,7 +13978,7 @@ Alternatively, you may set the environment variables GUILE_CFLAGS and GUILE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} @@ -13450,9 +14010,7 @@ fi " if test "x$ac_cv_header_libguile_h" = xyes then : - -printf "%s\n" "#define HAVE_GUILE 1" >>confdefs.h - + have_guile=yes else $as_nop have_guile=no fi @@ -13500,6 +14058,12 @@ fi fi +if test "$have_guile" = yes +then : + +printf "%s\n" "#define HAVE_GUILE 1" >>confdefs.h + +fi if test "$have_guile" = "yes"; then HAVE_GUILE_TRUE= HAVE_GUILE_FALSE='#' @@ -13729,12 +14293,12 @@ cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h - ac_cv_func_gethostname=yes - cf_cv_netlibs="-lnsl $cf_cv_netlibs" + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" else $as_nop - ac_cv_func_gethostname=unknown - unset ac_cv_func_gethostname 2>/dev/null + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostname in -lsocket" >&5 @@ -13781,12 +14345,12 @@ cf_tr_func=`echo gethostname | tr '[a-z]' '[A-Z]'` printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h - ac_cv_func_gethostname=yes - cf_cv_netlibs="-lsocket $cf_cv_netlibs" + ac_cv_func_gethostname=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" else $as_nop - ac_cv_func_gethostname=unknown - unset ac_cv_func_gethostname 2>/dev/null + ac_cv_func_gethostname=unknown + unset ac_cv_func_gethostname 2>/dev/null fi @@ -13894,12 +14458,12 @@ cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h - ac_cv_func_socket=yes - cf_cv_netlibs="-lsocket $cf_cv_netlibs" + ac_cv_func_socket=yes + cf_cv_netlibs="-lsocket $cf_cv_netlibs" else $as_nop - ac_cv_func_socket=unknown - unset ac_cv_func_socket 2>/dev/null + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lbsd" >&5 @@ -13946,12 +14510,12 @@ cf_tr_func=`echo socket | tr '[a-z]' '[A-Z]'` printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h - ac_cv_func_socket=yes - cf_cv_netlibs="-lbsd $cf_cv_netlibs" + ac_cv_func_socket=yes + cf_cv_netlibs="-lbsd $cf_cv_netlibs" else $as_nop - ac_cv_func_socket=unknown - unset ac_cv_func_socket 2>/dev/null + ac_cv_func_socket=unknown + unset ac_cv_func_socket 2>/dev/null fi @@ -14019,12 +14583,12 @@ cf_tr_func=`echo gethostbyname | tr '[a-z]' '[A-Z]'` printf "%s\n" "#define HAVE_$cf_tr_func 1" >>confdefs.h - ac_cv_func_gethostbyname=yes - cf_cv_netlibs="-lnsl $cf_cv_netlibs" + ac_cv_func_gethostbyname=yes + cf_cv_netlibs="-lnsl $cf_cv_netlibs" else $as_nop - ac_cv_func_gethostbyname=unknown - unset ac_cv_func_gethostbyname 2>/dev/null + ac_cv_func_gethostbyname=unknown + unset ac_cv_func_gethostbyname 2>/dev/null fi @@ -14290,8 +14854,8 @@ esac if test "$make_cv_load" = yes then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -Wl,--export-dynamic" >&5 -printf %s "checking If the linker accepts -Wl,--export-dynamic... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker accepts -Wl,--export-dynamic" >&5 +printf %s "checking if the linker accepts -Wl,--export-dynamic... " >&6; } old_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -Wl,--export-dynamic" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -14307,8 +14871,8 @@ printf "%s\n" "yes" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking If the linker accepts -rdynamic" >&5 -printf %s "checking If the linker accepts -rdynamic... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker accepts -rdynamic" >&5 +printf %s "checking if the linker accepts -rdynamic... " >&6; } LDFLAGS="$old_LDFLAGS -rdynamic" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -14558,6 +15122,9 @@ fi +# Add custom header to config.h + + # Forcibly disable SET_MAKE. If it's set it breaks things like the test # scripts, etc. SET_MAKE= @@ -14585,7 +15152,7 @@ else $as_nop echo echo "WARNING: '$with_customs/lib' does not appear to contain the" echo " Customs library. You must build and install Customs" - echo " before compiling GNU make." + echo " before compiling GNU Make." echo fi ;; @@ -14596,7 +15163,7 @@ then : echo echo "WARNING: Your system has neither waitpid() nor wait3()." echo " Without one of these, signal handling is unreliable." - echo " You should be aware that running GNU make with -j" + echo " You should be aware that running GNU Make with -j" echo " could result in erratic behavior." echo @@ -14793,6 +15360,22 @@ 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 "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +# Check whether --enable-year2038 was given. +if test ${enable_year2038+y} +then : + enableval=$enable_year2038; +fi + +# Check whether --enable-largefile was given. +if test ${enable_largefile+y} +then : + enableval=$enable_largefile; +fi + if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -15266,7 +15849,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by GNU Make $as_me 4.4, which was +This file was extended by GNU Make $as_me 4.4.1, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15340,7 +15923,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -GNU Make config.status 4.4 +GNU Make config.status 4.4.1 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 9f68897..cd78575 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ # Process this file with autoconf to produce a configure script. # -# Copyright (C) 1993-2022 Free Software Foundation, Inc. +# Copyright (C) 1993-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -16,7 +16,7 @@ # You should have received a copy of the GNU General Public License along with # this program. If not, see . -AC_INIT([GNU Make],[4.4],[bug-make@gnu.org]) +AC_INIT([GNU Make],[4.4.1],[bug-make@gnu.org]) AC_PREREQ([2.69]) @@ -37,6 +37,8 @@ AM_INIT_AUTOMAKE([1.16.1 foreign -Werror -Wall]) # Checks for programs. AC_USE_SYSTEM_EXTENSIONS AC_PROG_CC +AC_PROG_CXX +AC_DEFINE_UNQUOTED(MAKE_CXX, ["$CXX"], [Default C++ compiler.]) # Configure gnulib gl_EARLY @@ -64,9 +66,9 @@ AC_SEARCH_LIBS([getpwnam], [sun]) AC_HEADER_DIRENT AC_HEADER_STAT -AC_CHECK_HEADERS([stdlib.h locale.h unistd.h limits.h fcntl.h string.h \ +AC_CHECK_HEADERS([stdlib.h string.h strings.h locale.h unistd.h limits.h \ memory.h sys/param.h sys/resource.h sys/timeb.h sys/time.h \ - sys/select.h sys/file.h spawn.h]) + sys/select.h sys/file.h fcntl.h spawn.h]) AM_PROG_CC_C_O AC_C_CONST @@ -183,7 +185,7 @@ AS_IF([test "x$with_guile" != xno], CPPFLAGS="$CPPFLAGS $GUILE_CFLAGS" LIBS="$LIBS $GUILE_LIBS" AC_CHECK_HEADER([libguile.h], - [AC_DEFINE([HAVE_GUILE], [1], [Embed GNU Guile support])], + [have_guile=yes], [have_guile=no], [/* Avoid configuration error warnings. */]) AS_IF([test "$have_guile" = yes], @@ -207,6 +209,8 @@ guile_init (void *arg) ]) ]) +AS_IF([test "$have_guile" = yes], + [AC_DEFINE([HAVE_GUILE], [1], [Embed GNU Guile support])]) AM_CONDITIONAL([HAVE_GUILE], [test "$have_guile" = "yes"]) AC_CHECK_DECLS([sys_siglist, _sys_siglist, __sys_siglist], , , @@ -318,7 +322,7 @@ AS_CASE([$host_os], [os2*|mingw*], [make_cv_job_server=yes]) AS_CASE([/$make_cv_job_server/$user_job_server/], [*/no/*], [: no jobserver], [AC_DEFINE(MAKE_JOBSERVER, 1, - [Define to 1 to enable job server support in GNU make.]) + [Define to 1 to enable job server support in GNU Make.]) ]) # If dl*() functions are supported we can enable the load operation @@ -341,7 +345,7 @@ AS_IF([test "$make_cv_load" = yes], [ AS_CASE([/$make_cv_load/$user_load/], [*/no/*], [make_cv_load=no], [AC_DEFINE(MAKE_LOAD, 1, - [Define to 1 to enable 'load' support in GNU make.]) + [Define to 1 to enable 'load' support in GNU Make.]) ]) # If we want load support, we might need to link with export-dynamic. @@ -349,14 +353,14 @@ AS_CASE([/$make_cv_load/$user_load/], # For example passing -rdynamic to the SunPRO linker gives a warning # but succeeds and creates a shared object, not an executable! AS_IF([test "$make_cv_load" = yes], [ - AC_MSG_CHECKING([If the linker accepts -Wl,--export-dynamic]) + AC_MSG_CHECKING([if the linker accepts -Wl,--export-dynamic]) old_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -Wl,--export-dynamic" AC_LINK_IFELSE([AC_LANG_SOURCE([int main(){}])], [AC_MSG_RESULT([yes]) AC_SUBST([AM_LDFLAGS], [-Wl,--export-dynamic])], [AC_MSG_RESULT([no]) - AC_MSG_CHECKING([If the linker accepts -rdynamic]) + AC_MSG_CHECKING([if the linker accepts -rdynamic]) LDFLAGS="$old_LDFLAGS -rdynamic" AC_LINK_IFELSE([AC_LANG_SOURCE([int main(){}])], [AC_MSG_RESULT([yes]) @@ -471,6 +475,10 @@ AC_SUBST_FILE([MAINT_MAKEFILE]) # Allow building with dmalloc AM_WITH_DMALLOC +# Add custom header to config.h +AH_BOTTOM([/* Include customized declarations. */ +#include "../src/mkcustom.h"]) + # Forcibly disable SET_MAKE. If it's set it breaks things like the test # scripts, etc. SET_MAKE= @@ -490,7 +498,7 @@ AS_CASE([$with_customs], [ echo echo "WARNING: '$with_customs/lib' does not appear to contain the" echo " Customs library. You must build and install Customs" - echo " before compiling GNU make." + echo " before compiling GNU Make." echo ])]) @@ -498,7 +506,7 @@ AS_IF([test "x$has_wait_nohang" = xno], [ echo echo "WARNING: Your system has neither waitpid() nor wait3()." echo " Without one of these, signal handling is unreliable." - echo " You should be aware that running GNU make with -j" + echo " You should be aware that running GNU Make with -j" echo " could result in erratic behavior." echo ]) diff --git a/doc/Makefile.am b/doc/Makefile.am index 18d577b..6e51c7b 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,5 +1,5 @@ # -*-Makefile-*-, or close enough -# Copyright (C) 2000-2022 Free Software Foundation, Inc. +# Copyright (C) 2000-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under diff --git a/doc/Makefile.in b/doc/Makefile.in index 415f521..174bcc5 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -15,7 +15,7 @@ @SET_MAKE@ # -*-Makefile-*-, or close enough -# Copyright (C) 2000-2022 Free Software Foundation, Inc. +# Copyright (C) 2000-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -108,7 +108,7 @@ subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ $(top_srcdir)/m4/acinclude.m4 $(top_srcdir)/m4/alloca.m4 \ - $(top_srcdir)/m4/asm-underscore.m4 \ + $(top_srcdir)/m4/asm-underscore.m4 $(top_srcdir)/m4/c-bool.m4 \ $(top_srcdir)/m4/dospaths.m4 $(top_srcdir)/m4/eaccess.m4 \ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/findprog-in.m4 \ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/gettext.m4 \ @@ -120,8 +120,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longlong.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/sig_atomic_t.m4 \ - $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/warn-on-use.m4 \ - $(top_srcdir)/m4/year2038.m4 $(top_srcdir)/m4/zzgnulib.m4 \ + $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/zzgnulib.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) @@ -243,6 +242,9 @@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -264,7 +266,6 @@ GUILE_CFLAGS = @GUILE_CFLAGS@ GUILE_LIBS = @GUILE_LIBS@ HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ -HAVE__BOOL = @HAVE__BOOL@ HOST_CPU = @HOST_CPU@ HOST_CPU_C_ABI = @HOST_CPU_C_ABI@ INSTALL = @INSTALL@ @@ -309,7 +310,6 @@ REMOTE = @REMOTE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ -STDBOOL_H = @STDBOOL_H@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ USE_SYSTEM_GLOB = @USE_SYSTEM_GLOB@ @@ -322,6 +322,7 @@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ diff --git a/doc/make-stds.texi b/doc/make-stds.texi index b0745a8..132476c 100644 --- a/doc/make-stds.texi +++ b/doc/make-stds.texi @@ -160,7 +160,7 @@ installation should not use any utilities directly except these: @c mkfifo mknod tee uname @example -awk cat cmp cp diff echo egrep expr false grep install-info ln ls +awk cat cmp cp diff echo expr false grep install-info ln ls mkdir mv printf pwd rm rmdir sed sleep sort tar test touch tr true @end example @@ -1135,7 +1135,7 @@ programs except for these: @example [ basename bash cat chgrp chmod chown cmp cp dd diff echo -egrep expand expr false fgrep find getopt grep gunzip gzip +expand expr false find getopt grep gunzip gzip hostname install install-info kill ldconfig ln ls md5sum mkdir mkfifo mknod mv printenv pwd rm rmdir sed sort tee test touch true uname xargs yes diff --git a/doc/make.1 b/doc/make.1 index 0fd0104..f02afbe 100644 --- a/doc/make.1 +++ b/doc/make.1 @@ -1,6 +1,6 @@ -.TH MAKE 1 "31 May 2022" "GNU" "User Commands" +.TH MAKE 1 "26 May 2023" "GNU" "User Commands" .SH NAME -make \- GNU make utility to maintain groups of programs +make \- GNU Make utility to maintain groups of programs .SH SYNOPSIS .B make [\fIOPTION\fR]... [\fITARGET\fR]... @@ -76,9 +76,8 @@ listing, right near other important files such as The first name checked, .IR GNUmakefile , is not recommended for most makefiles. You should use this name if you have a -makefile that is specific to GNU -.BR make , -and will not be understood by other versions of +makefile that is specific to GNU Make, and will not be understood by other +versions of .BR make . If .I makefile @@ -368,9 +367,7 @@ except that the modification time is changed only in the imagination of .B \-\-warn\-undefined\-variables Warn when an undefined variable is referenced. .SH "EXIT STATUS" -GNU -.B make -exits with a status of zero if all makefiles were successfully parsed +GNU Make exits with a status of zero if all makefiles were successfully parsed and no targets that were built failed. A status of one will be returned if the .B \-q @@ -398,9 +395,9 @@ This manual page contributed by Dennis Morse of Stanford University. Further updates contributed by Mike Frysinger. It has been reworked by Roland McGrath. Maintained by Paul Smith. .SH "COPYRIGHT" -Copyright \(co 1992-1993, 1996-2022 Free Software Foundation, Inc. +Copyright \(co 1992-1993, 1996-2023 Free Software Foundation, Inc. This file is part of -.IR "GNU make" . +.IR "GNU Make" . .LP GNU Make 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 diff --git a/doc/make.info b/doc/make.info index 2125e16..3cd0c0b 100644 --- a/doc/make.info +++ b/doc/make.info @@ -1,16 +1,16 @@ -This is make.info, produced by makeinfo version 6.7 from make.texi. +This is make.info, produced by makeinfo version 6.8 from make.texi. This file documents the GNU 'make' utility, which determines automatically which pieces of a large program need to be recompiled, and issues the commands to recompile them. - This is Edition 0.76, last updated 31 October 2022, of 'The GNU Make -Manual', for GNU 'make' version 4.4. + This is Edition 0.77, last updated 26 February 2023, of 'The GNU Make +Manual', for GNU 'make' version 4.4.1. Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, -2022 Free Software Foundation, Inc. +2022, 2023 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -30,188 +30,188 @@ END-INFO-DIR-ENTRY  Indirect: -make.info-1: 1391 -make.info-2: 302239 -make.info-3: 626899 +make.info-1: 1400 +make.info-2: 302518 +make.info-3: 627620  Tag Table: (Indirect) -Node: Top1391 -Node: Overview17167 -Node: Preparing18180 -Node: Reading19148 -Node: Bugs20075 -Node: Introduction22025 -Node: Rule Introduction23618 -Node: Simple Makefile25551 -Node: How Make Works29287 -Node: Variables Simplify31977 -Node: make Deduces34183 -Node: Combine By Prerequisite35916 -Node: Cleanup36945 -Node: Makefiles38363 -Node: Makefile Contents39258 -Node: Splitting Lines42431 -Node: Makefile Names44920 -Node: Include46527 -Ref: Include-Footnote-150706 -Node: MAKEFILES Variable50840 -Node: Remaking Makefiles52381 -Node: Overriding Makefiles57285 -Node: Reading Makefiles59313 -Node: Parsing Makefiles63097 -Node: Secondary Expansion64955 -Node: Rules72330 -Node: Rule Example74917 -Node: Rule Syntax75765 -Node: Prerequisite Types78360 -Node: Wildcards81399 -Ref: Wildcards-Footnote-183432 -Node: Wildcard Examples83522 -Node: Wildcard Pitfall84872 -Node: Wildcard Function86661 -Node: Directory Search88716 -Node: General Search89851 -Node: Selective Search91558 -Node: Search Algorithm94548 -Node: Recipes/Search97066 -Node: Implicit/Search98389 -Node: Libraries/Search99331 -Node: Phony Targets101302 -Node: Force Targets106894 -Node: Empty Targets107931 -Node: Special Targets109233 -Node: Multiple Targets118577 -Node: Multiple Rules122919 -Node: Static Pattern125137 -Node: Static Usage125789 -Node: Static versus Implicit129508 -Node: Double-Colon131248 -Node: Automatic Prerequisites133008 -Node: Recipes137269 -Node: Recipe Syntax138441 -Node: Splitting Recipe Lines140556 -Node: Variables in Recipes143709 -Node: Echoing145035 -Node: Execution146247 -Ref: Execution-Footnote-1147660 -Node: One Shell147805 -Node: Choosing the Shell151123 -Node: Parallel155267 -Node: Parallel Disable157983 -Node: Parallel Output161414 -Node: Parallel Input165849 -Node: Errors166968 -Node: Interrupts170603 -Node: Recursion172964 -Node: MAKE Variable175061 -Node: Variables/Recursion177304 -Node: Options/Recursion183159 -Node: -w Option189605 -Node: Canned Recipes190600 -Node: Empty Recipes193583 -Node: Using Variables195023 -Node: Reference198599 -Node: Flavors200409 -Node: Recursive Assignment201154 -Node: Simple Assignment203028 -Node: Immediate Assignment206613 -Node: Conditional Assignment209096 -Node: Advanced209732 -Node: Substitution Refs210237 -Node: Computed Names211839 -Node: Values216206 -Node: Setting217281 -Node: Appending220547 -Node: Override Directive224103 -Node: Multi-Line225730 -Node: Undefine Directive228593 -Node: Environment229682 -Node: Target-specific231881 -Node: Pattern-specific235058 -Node: Suppressing Inheritance236905 -Node: Special Variables238358 -Node: Conditionals247482 -Node: Conditional Example248195 -Node: Conditional Syntax250758 -Node: Testing Flags256518 -Node: Functions257918 -Node: Syntax of Functions259527 -Node: Text Functions262112 -Node: File Name Functions270753 -Node: Conditional Functions275979 -Node: Let Function279821 -Node: Foreach Function282444 -Node: File Function285727 -Node: Call Function288284 -Node: Value Function291177 -Node: Eval Function292614 -Node: Origin Function294892 -Node: Flavor Function298118 -Node: Make Control Functions299162 -Node: Shell Function302239 -Node: Guile Function305227 -Node: Running305977 -Node: Makefile Arguments308030 -Node: Goals308746 -Node: Instead of Execution313494 -Node: Avoiding Compilation317209 -Node: Overriding319184 -Node: Testing321496 -Node: Temporary Files323380 -Node: Options Summary324489 -Node: Implicit Rules338769 -Node: Using Implicit340906 -Node: Catalogue of Rules344425 -Node: Implicit Variables353815 -Node: Chained Rules358888 -Node: Pattern Rules363703 -Node: Pattern Intro365237 -Node: Pattern Examples367966 -Node: Automatic Variables369773 -Node: Pattern Match377180 -Node: Match-Anything Rules380610 -Node: Canceling Rules384531 -Node: Last Resort385245 -Node: Suffix Rules387074 -Node: Implicit Rule Search390808 -Node: Archives394760 -Node: Archive Members395465 -Node: Archive Update397075 -Node: Archive Symbols398986 -Node: Archive Pitfalls400219 -Node: Archive Suffix Rules400941 -Node: Extending make402489 -Node: Guile Integration403634 -Node: Guile Types404862 -Node: Guile Interface407282 -Node: Guile Example408568 -Node: Loading Objects410759 -Node: load Directive412249 -Node: Remaking Loaded Objects415003 -Node: Loaded Object API415637 -Node: Loaded Object Example422522 -Node: Integrating make424894 -Node: Job Slots425645 -Node: POSIX Jobserver429021 -Node: Windows Jobserver432647 -Node: Terminal Output434059 -Node: Features436451 -Node: Missing445620 -Node: Makefile Conventions449348 -Node: Makefile Basics450327 -Node: Utilities in Makefiles453494 -Node: Command Variables455993 -Node: DESTDIR459233 -Node: Directory Variables461400 -Node: Standard Targets476759 -Node: Install Command Categories490865 -Node: Quick Reference495391 -Node: Error Messages508608 -Node: Complex Makefile517403 -Node: GNU Free Documentation License526021 -Node: Concept Index551179 -Node: Name Index626899 +Node: Top1400 +Node: Overview17185 +Node: Preparing18198 +Node: Reading19166 +Node: Bugs20093 +Node: Introduction22043 +Node: Rule Introduction23636 +Node: Simple Makefile25569 +Node: How Make Works29305 +Node: Variables Simplify31995 +Node: make Deduces34201 +Node: Combine By Prerequisite35934 +Node: Cleanup36963 +Node: Makefiles38381 +Node: Makefile Contents39276 +Node: Splitting Lines42449 +Node: Makefile Names44938 +Node: Include46545 +Ref: Include-Footnote-150818 +Node: MAKEFILES Variable50952 +Node: Remaking Makefiles52493 +Node: Overriding Makefiles57397 +Node: Reading Makefiles59425 +Node: Parsing Makefiles63209 +Node: Secondary Expansion65067 +Node: Rules72442 +Node: Rule Example75029 +Node: Rule Syntax75877 +Node: Prerequisite Types78472 +Node: Wildcards81511 +Ref: Wildcards-Footnote-183544 +Node: Wildcard Examples83634 +Node: Wildcard Pitfall84984 +Node: Wildcard Function86773 +Node: Directory Search88828 +Node: General Search89963 +Node: Selective Search91670 +Node: Search Algorithm94660 +Node: Recipes/Search97178 +Node: Implicit/Search98501 +Node: Libraries/Search99443 +Node: Phony Targets101414 +Node: Force Targets107006 +Node: Empty Targets108043 +Node: Special Targets109345 +Node: Multiple Targets118689 +Node: Multiple Rules123031 +Node: Static Pattern125249 +Node: Static Usage125901 +Node: Static versus Implicit129620 +Node: Double-Colon131360 +Node: Automatic Prerequisites133120 +Node: Recipes137381 +Node: Recipe Syntax138553 +Node: Splitting Recipe Lines140668 +Node: Variables in Recipes143821 +Node: Echoing145147 +Node: Execution146359 +Ref: Execution-Footnote-1147772 +Node: One Shell147917 +Node: Choosing the Shell151235 +Node: Parallel155379 +Node: Parallel Disable158095 +Node: Parallel Output161526 +Node: Parallel Input165961 +Node: Errors167080 +Node: Interrupts170715 +Node: Recursion173076 +Node: MAKE Variable175173 +Node: Variables/Recursion177416 +Node: Options/Recursion183271 +Node: -w Option189872 +Node: Canned Recipes190867 +Node: Empty Recipes193850 +Node: Using Variables195290 +Node: Reference198866 +Node: Flavors200676 +Node: Recursive Assignment201421 +Node: Simple Assignment203295 +Node: Immediate Assignment206880 +Node: Conditional Assignment209363 +Node: Advanced209999 +Node: Substitution Refs210504 +Node: Computed Names212106 +Node: Values216473 +Node: Setting217548 +Node: Appending220814 +Node: Override Directive224370 +Node: Multi-Line225997 +Node: Undefine Directive228860 +Node: Environment229949 +Node: Target-specific232148 +Node: Pattern-specific235325 +Node: Suppressing Inheritance237172 +Node: Special Variables238625 +Node: Conditionals247749 +Node: Conditional Example248462 +Node: Conditional Syntax251025 +Node: Testing Flags256785 +Node: Functions258188 +Node: Syntax of Functions259797 +Node: Text Functions262382 +Node: File Name Functions271023 +Node: Conditional Functions276249 +Node: Let Function280091 +Node: Foreach Function282714 +Node: File Function285997 +Node: Call Function288554 +Node: Value Function291447 +Node: Eval Function292884 +Node: Origin Function295162 +Node: Flavor Function298388 +Node: Make Control Functions299432 +Node: Shell Function302518 +Node: Guile Function305506 +Node: Running306256 +Node: Makefile Arguments308309 +Node: Goals309025 +Node: Instead of Execution313773 +Node: Avoiding Compilation317488 +Node: Overriding319463 +Node: Testing321775 +Node: Temporary Files323659 +Node: Options Summary324768 +Node: Implicit Rules339048 +Node: Using Implicit341185 +Node: Catalogue of Rules344704 +Node: Implicit Variables354094 +Node: Chained Rules359167 +Node: Pattern Rules363982 +Node: Pattern Intro365516 +Node: Pattern Examples368245 +Node: Automatic Variables370052 +Node: Pattern Match377459 +Node: Match-Anything Rules380889 +Node: Canceling Rules384810 +Node: Last Resort385524 +Node: Suffix Rules387353 +Node: Implicit Rule Search391087 +Node: Archives395039 +Node: Archive Members395744 +Node: Archive Update397354 +Node: Archive Symbols399265 +Node: Archive Pitfalls400488 +Node: Archive Suffix Rules401671 +Node: Extending make403219 +Node: Guile Integration404364 +Node: Guile Types405592 +Node: Guile Interface408012 +Node: Guile Example409298 +Node: Loading Objects411489 +Node: load Directive412979 +Node: Remaking Loaded Objects415733 +Node: Loaded Object API416367 +Node: Loaded Object Example423252 +Node: Integrating make425624 +Node: Job Slots426375 +Node: POSIX Jobserver429751 +Node: Windows Jobserver433377 +Node: Terminal Output434789 +Node: Features437181 +Node: Missing446350 +Node: Makefile Conventions450078 +Node: Makefile Basics451057 +Node: Utilities in Makefiles454224 +Node: Command Variables456717 +Node: DESTDIR459957 +Node: Directory Variables462124 +Node: Standard Targets477483 +Node: Install Command Categories491589 +Node: Quick Reference496103 +Node: Error Messages509320 +Node: Complex Makefile518115 +Node: GNU Free Documentation License526733 +Node: Concept Index551891 +Node: Name Index627620  End Tag Table diff --git a/doc/make.info-1 b/doc/make.info-1 index 521a80d..a0f3997 100644 --- a/doc/make.info-1 +++ b/doc/make.info-1 @@ -1,16 +1,16 @@ -This is make.info, produced by makeinfo version 6.7 from make.texi. +This is make.info, produced by makeinfo version 6.8 from make.texi. This file documents the GNU 'make' utility, which determines automatically which pieces of a large program need to be recompiled, and issues the commands to recompile them. - This is Edition 0.76, last updated 31 October 2022, of 'The GNU Make -Manual', for GNU 'make' version 4.4. + This is Edition 0.77, last updated 26 February 2023, of 'The GNU Make +Manual', for GNU 'make' version 4.4.1. Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, -2022 Free Software Foundation, Inc. +2022, 2023 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -38,13 +38,13 @@ This file documents the GNU 'make' utility, which determines automatically which pieces of a large program need to be recompiled, and issues the commands to recompile them. - This is Edition 0.76, last updated 31 October 2022, of 'The GNU Make -Manual', for GNU 'make' version 4.4. + This is Edition 0.77, last updated 26 February 2023, of 'The GNU Make +Manual', for GNU 'make' version 4.4.1. Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, -2022 Free Software Foundation, Inc. +2022, 2023 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -1102,13 +1102,15 @@ than that of somehow appending the prerequisites to the end of the main makefile as has been traditionally done with other versions of 'make'. *Note Automatic Prerequisites::. - If the specified name does not start with a slash, and the file is -not found in the current directory, several other directories are -searched. First, any directories you have specified with the '-I' or -'--include-dir' options are searched (*note Summary of Options: Options -Summary.). Then the following directories (if they exist) are searched, -in this order: 'PREFIX/include' (normally '/usr/local/include' (1)) -'/usr/gnu/include', '/usr/local/include', '/usr/include'. + If the specified name does not start with a slash (or a drive letter +and colon when GNU Make is compiled with MS-DOS / MS-Windows path +support), and the file is not found in the current directory, several +other directories are searched. First, any directories you have +specified with the '-I' or '--include-dir' options are searched (*note +Summary of Options: Options Summary.). Then the following directories +(if they exist) are searched, in this order: 'PREFIX/include' (normally +'/usr/local/include' (1)) '/usr/gnu/include', '/usr/local/include', +'/usr/include'. The '.INCLUDE_DIRS' variable will contain the current list of directories that make will search for included files. *Note Other @@ -1492,7 +1494,7 @@ File: make.info, Node: Secondary Expansion, Prev: Parsing Makefiles, Up: Make Previously we learned that GNU 'make' works in two distinct phases: a read-in phase and a target-update phase (*note How 'make' Reads a -Makefile: Reading Makefiles.). GNU make also has the ability to enable +Makefile: Reading Makefiles.). GNU Make also has the ability to enable a _second expansion_ of the prerequisites (only) for some or all targets defined in the makefile. In order for this second expansion to occur, the special target '.SECONDEXPANSION' must be defined before the first @@ -1875,7 +1877,7 @@ The wildcard characters in 'make' are '*', '?' and '[...]', the same as in the Bourne shell. For example, '*.c' specifies a list of all the files (in the working directory) whose names end in '.c'. - If an expression matches multiple files than the results will be + If an expression matches multiple files then the results will be sorted.(1) However multiple expressions will not be globally sorted. For example, '*.c *.h' will list all the files whose names end in '.c', sorted, followed by all the files whose names end in '.h', sorted. @@ -2640,7 +2642,7 @@ Certain names have special meanings if they appear as targets. make would rebuild 'hello.o' then rebuild 'hello.bin' even though the source files had not changed. By declaring 'hello.o' as '.SECONDARY' 'make' will not need to rebuild it and won't need to - rebuild 'hello.bin' either. Of course, of one of the source files + rebuild 'hello.bin' either. Of course, if one of the source files _were_ updated then all object files would be rebuilt so that the creation of 'hello.bin' could succeed. @@ -4277,7 +4279,9 @@ you do 'make -ks' then 'MAKEFLAGS' gets the value 'ks'. As a consequence, every sub-'make' gets a value for 'MAKEFLAGS' in its environment. In response, it takes the flags from that value and processes them as if they had been given as arguments. *Note Summary of -Options: Options Summary. +Options: Options Summary. This means that, unlike other environment +variables, 'MAKEFLAGS' specified in the environment take precedence over +'MAKEFLAGS' specified in the makefile. The value of 'MAKEFLAGS' is a possibly empty group of characters representing single-letter options that take no argument, followed by a @@ -4386,7 +4390,7 @@ recursion. It's best to use 'GNUMAKEFLAGS' only with flags which won't materially change the behavior of your makefiles. If your makefiles -require GNU make anyway then simply use 'MAKEFLAGS'. Flags such as +require GNU Make anyway then simply use 'MAKEFLAGS'. Flags such as '--no-print-directory' or '--output-sync' may be appropriate for 'GNUMAKEFLAGS'. @@ -6134,7 +6138,7 @@ the first string and the first word of 'MAKEFLAGS' as the other. marking an archive file up to date: archive.a: ... - ifneq (,$(findstring t,$(word 1,-$(MAKEFLAGS)))) + ifneq (,$(findstring t,$(firstword -$(MAKEFLAGS)))) +touch archive.a +ranlib -t archive.a else diff --git a/doc/make.info-2 b/doc/make.info-2 index 186be0b..3a45829 100644 --- a/doc/make.info-2 +++ b/doc/make.info-2 @@ -1,16 +1,16 @@ -This is make.info, produced by makeinfo version 6.7 from make.texi. +This is make.info, produced by makeinfo version 6.8 from make.texi. This file documents the GNU 'make' utility, which determines automatically which pieces of a large program need to be recompiled, and issues the commands to recompile them. - This is Edition 0.76, last updated 31 October 2022, of 'The GNU Make -Manual', for GNU 'make' version 4.4. + This is Edition 0.77, last updated 26 February 2023, of 'The GNU Make +Manual', for GNU 'make' version 4.4.1. Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, -2022 Free Software Foundation, Inc. +2022, 2023 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -2162,7 +2162,7 @@ rule. with a modified definition of "ought to exist": if a filename is mentioned as a target or as an explicit prerequisite of _any_ target, then it ought to exist. This check is only present for - backward-compatibility with older versions of GNU make: we don't + backward-compatibility with older versions of GNU Make: we don't recommend relying on it. 8. If no implicit rule applies, the rule for '.DEFAULT', if any, @@ -2310,7 +2310,7 @@ program: and make all the members of the archive file prerequisites of that rule. For example, - libfoo.a: libfoo.a(x.o) libfoo.a(y.o) ... + libfoo.a: libfoo.a(x.o y.o ...) ranlib libfoo.a The effect of this is to update archive members 'x.o', 'y.o', etc., and @@ -2328,15 +2328,32 @@ File: make.info, Node: Archive Pitfalls, Next: Archive Suffix Rules, Prev: Ar 11.3 Dangers When Using Archives ================================ -It is important to be careful when using parallel execution (the '-j' -switch; *note Parallel Execution: Parallel.) and archives. If multiple -'ar' commands run at the same time on the same archive file, they will -not know about each other and can corrupt the file. +The built-in rules for updating archives are incompatible with parallel +builds. These rules (required by the POSIX standard) add each object +file into the archive as it's compiled. When parallel builds are +enabled this allows multiple 'ar' commands to be updating the same +archive simultaneously, which is not supported. - Possibly a future version of 'make' will provide a mechanism to -circumvent this problem by serializing all recipes that operate on the -same archive file. But for the time being, you must either write your -makefiles to avoid this problem in some other way, or not use '-j'. + If you want to use parallel builds with archives you can override the +default rules by adding these lines to your makefile: + + (%) : % ; + %.a : ; $(AR) $(ARFLAGS) $@ $? + + The first line changes the rule that updates an individual object in +the archive to do nothing, and the second line changes the default rule +for building an archive to update all the outdated objects ('$?') in one +command. + + Of course you will still need to declare the prerequisites of your +library using the archive syntax: + + libfoo.a: libfoo.a(x.o y.o ...) + + If you prefer to write an explicit rule you can use: + + libfoo.a: libfoo.a(x.o y.o ...) + $(AR) $(ARFLAGS) $@ $?  File: make.info, Node: Archive Suffix Rules, Prev: Archive Pitfalls, Up: Archives @@ -2541,7 +2558,7 @@ we'll keep the port as a global variable in the Guile interpreter. create a Guile script, then use the 'guile' function to internalize it: define GUILEIO - ;; A simple Guile IO library for GNU make + ;; A simple Guile IO library for GNU Make (define MKPORT #f) @@ -2597,11 +2614,11 @@ File: make.info, Node: Loading Objects, Prev: Guile Integration, Up: Extendin ============================ Warning: The 'load' directive and extension capability is - considered a "technology preview" in this release of GNU make. We + considered a "technology preview" in this release of GNU Make. We encourage you to experiment with this feature and we appreciate any feedback on it. However we cannot guarantee to maintain backward-compatibility in the next release. Consider using GNU - Guile instead for extending GNU make (*note The 'guile' Function: + Guile instead for extending GNU Make (*note The 'guile' Function: Guile Function.). Many operating systems provide a facility for dynamically loading @@ -2662,7 +2679,7 @@ directive. The initializing function will be provided the file name and line number of the invocation of the 'load' operation. It should return a value of type 'int', which must be '0' on failure and non-'0' on -success. If the return value is '-1', then GNU make will _not_ attempt +success. If the return value is '-1', then GNU Make will _not_ attempt to rebuild the object file (*note How Loaded Objects Are Remade: Remaking Loaded Objects.). @@ -3594,7 +3611,7 @@ or POSIX features not widely supported in traditional Bourne 'sh'. The 'configure' script and the Makefile rules for building and installation should not use any utilities directly except these: - awk cat cmp cp diff echo egrep expr false grep install-info ln ls + awk cat cmp cp diff echo expr false grep install-info ln ls mkdir mv printf pwd rm rmdir sed sleep sort tar test touch tr true Compression programs such as 'gzip' can be used in the 'dist' rule. @@ -4483,7 +4500,7 @@ dependencies actually run. programs except for these: [ basename bash cat chgrp chmod chown cmp cp dd diff echo - egrep expand expr false fgrep find getopt grep gunzip gzip + expand expr false find getopt grep gunzip gzip hostname install install-info kill ldconfig ln ls md5sum mkdir mkfifo mknod mv printenv pwd rm rmdir sed sort tee test touch true uname xargs yes @@ -5846,24 +5863,24 @@ Index of Concepts * +=: Appending. (line 6) * +=, expansion: Reading Makefiles. (line 34) * +=, expansion <1>: Reading Makefiles. (line 34) -* ,v (RCS file extension): Catalogue of Rules. (line 167) +* ,v (RCS file extension): Catalogue of Rules. (line 162) * - (in recipes): Errors. (line 19) * -, and define: Canned Recipes. (line 49) * --always-make: Options Summary. (line 15) * --assume-new: Instead of Execution. (line 41) -* --assume-new <1>: Options Summary. (line 346) -* --assume-new, and recursion: Options/Recursion. (line 30) +* --assume-new <1>: Options Summary. (line 344) +* --assume-new, and recursion: Options/Recursion. (line 31) * --assume-old: Avoiding Compilation. (line 6) * --assume-old <1>: Options Summary. (line 186) -* --assume-old, and recursion: Options/Recursion. (line 30) +* --assume-old, and recursion: Options/Recursion. (line 31) * --check-symlink-times: Options Summary. (line 167) * --debug: Options Summary. (line 43) * --directory: Recursion. (line 20) * --directory <1>: Options Summary. (line 26) * --directory, and --print-directory: -w Option. (line 20) -* --directory, and recursion: Options/Recursion. (line 30) +* --directory, and recursion: Options/Recursion. (line 31) * --dry-run: Echoing. (line 18) * --dry-run <1>: Instead of Execution. (line 14) @@ -5873,7 +5890,7 @@ Index of Concepts * --file: Makefile Names. (line 23) * --file <1>: Makefile Arguments. (line 6) * --file <2>: Options Summary. (line 107) -* --file, and recursion: Options/Recursion. (line 30) +* --file, and recursion: Options/Recursion. (line 31) * --help: Options Summary. (line 113) * --ignore-errors: Errors. (line 30) * --ignore-errors <1>: Options Summary. (line 118) @@ -5881,7 +5898,7 @@ Index of Concepts * --include-dir <1>: Options Summary. (line 123) * --jobs: Parallel. (line 6) * --jobs <1>: Options Summary. (line 134) -* --jobs, and recursion: Options/Recursion. (line 33) +* --jobs, and recursion: Options/Recursion. (line 34) * --jobserver-auth: Job Slots. (line 21) * --jobserver-style: Options Summary. (line 142) * --jobserver-style <1>: POSIX Jobserver. (line 13) @@ -5902,53 +5919,53 @@ Index of Concepts * --max-load <1>: Options Summary. (line 160) * --new-file: Instead of Execution. (line 41) -* --new-file <1>: Options Summary. (line 345) -* --new-file, and recursion: Options/Recursion. (line 30) -* --no-builtin-rules: Options Summary. (line 232) -* --no-builtin-variables: Options Summary. (line 245) -* --no-keep-going: Options Summary. (line 261) +* --new-file <1>: Options Summary. (line 343) +* --new-file, and recursion: Options/Recursion. (line 31) +* --no-builtin-rules: Options Summary. (line 230) +* --no-builtin-variables: Options Summary. (line 243) +* --no-keep-going: Options Summary. (line 259) * --no-print-directory: -w Option. (line 20) -* --no-print-directory <1>: Options Summary. (line 337) +* --no-print-directory <1>: Options Summary. (line 335) * --old-file: Avoiding Compilation. (line 6) * --old-file <1>: Options Summary. (line 185) -* --old-file, and recursion: Options/Recursion. (line 30) +* --old-file, and recursion: Options/Recursion. (line 31) * --output-sync: Parallel Output. (line 11) * --output-sync <1>: Options Summary. (line 194) * --print-data-base: Options Summary. (line 210) -* --print-directory: Options Summary. (line 329) +* --print-directory: Options Summary. (line 327) * --print-directory, and --directory: -w Option. (line 20) * --print-directory, and recursion: -w Option. (line 20) * --print-directory, disabling: -w Option. (line 20) * --question: Instead of Execution. (line 32) -* --question <1>: Options Summary. (line 224) +* --question <1>: Options Summary. (line 222) * --quiet: Echoing. (line 24) -* --quiet <1>: Options Summary. (line 255) +* --quiet <1>: Options Summary. (line 253) * --recon: Echoing. (line 18) * --recon <1>: Instead of Execution. (line 14) * --recon <2>: Options Summary. (line 178) -* --shuffle: Options Summary. (line 269) +* --shuffle: Options Summary. (line 267) * --silent: Echoing. (line 24) -* --silent <1>: Options Summary. (line 254) -* --stop: Options Summary. (line 262) +* --silent <1>: Options Summary. (line 252) +* --stop: Options Summary. (line 260) * --touch: Instead of Execution. (line 24) -* --touch <1>: Options Summary. (line 312) -* --touch, and recursion: MAKE Variable. (line 35) -* --trace: Options Summary. (line 319) -* --version: Options Summary. (line 324) -* --warn-undefined-variables: Options Summary. (line 354) +* --touch <1>: Options Summary. (line 310) +* --touch, and recursion: MAKE Variable. (line 34) +* --trace: Options Summary. (line 317) +* --version: Options Summary. (line 322) +* --warn-undefined-variables: Options Summary. (line 352) * --what-if: Instead of Execution. (line 41) -* --what-if <1>: Options Summary. (line 344) +* --what-if <1>: Options Summary. (line 342) * -b: Options Summary. (line 9) * -B: Options Summary. (line 14) * -C: Recursion. (line 20) * -C <1>: Options Summary. (line 25) * -C, and -w: -w Option. (line 20) -* -C, and recursion: Options/Recursion. (line 30) +* -C, and recursion: Options/Recursion. (line 31) * -d: Options Summary. (line 33) * -e: Options Summary. (line 93) * -E: Options Summary. (line 98) @@ -5957,7 +5974,7 @@ Index of Concepts * -f: Makefile Names. (line 23) * -f <1>: Makefile Arguments. (line 6) * -f <2>: Options Summary. (line 106) -* -f, and recursion: Options/Recursion. (line 30) +* -f, and recursion: Options/Recursion. (line 31) * -h: Options Summary. (line 112) * -I: Include. (line 53) * -i: Errors. (line 30) @@ -5966,7 +5983,7 @@ Index of Concepts * -j: Parallel. (line 6) * -j <1>: Options Summary. (line 133) * -j, and archive update: Archive Pitfalls. (line 6) -* -j, and recursion: Options/Recursion. (line 33) +* -j, and recursion: Options/Recursion. (line 34) * -k: Errors. (line 46) * -k <1>: Testing. (line 16) * -k <2>: Options Summary. (line 151) @@ -5988,27 +6005,27 @@ Index of Concepts (line 6) * -o <1>: Options Summary. (line 184) * -O <1>: Options Summary. (line 193) -* -o, and recursion: Options/Recursion. (line 30) +* -o, and recursion: Options/Recursion. (line 31) * -p: Options Summary. (line 209) * -q: Instead of Execution. (line 32) -* -q <1>: Options Summary. (line 223) -* -r: Options Summary. (line 231) -* -R: Options Summary. (line 244) +* -q <1>: Options Summary. (line 221) +* -r: Options Summary. (line 229) +* -R: Options Summary. (line 242) * -s: Echoing. (line 24) -* -s <1>: Options Summary. (line 253) -* -S: Options Summary. (line 260) +* -s <1>: Options Summary. (line 251) +* -S: Options Summary. (line 258) * -t: Instead of Execution. (line 24) -* -t <1>: Options Summary. (line 311) -* -t, and recursion: MAKE Variable. (line 35) -* -v: Options Summary. (line 323) +* -t <1>: Options Summary. (line 309) +* -t, and recursion: MAKE Variable. (line 34) +* -v: Options Summary. (line 321) * -W: Instead of Execution. (line 41) -* -w: Options Summary. (line 328) -* -W <1>: Options Summary. (line 343) +* -w: Options Summary. (line 326) +* -W <1>: Options Summary. (line 341) * -w, and -C: -w Option. (line 20) -* -W, and recursion: Options/Recursion. (line 30) +* -W, and recursion: Options/Recursion. (line 31) * -w, and recursion: -w Option. (line 20) * -w, disabling: -w Option. (line 20) * .a (archives): Archive Suffix Rules. @@ -6016,38 +6033,38 @@ Index of Concepts * .c: Catalogue of Rules. (line 35) * .C: Catalogue of Rules. (line 39) * .cc: Catalogue of Rules. (line 39) -* .ch: Catalogue of Rules. (line 153) +* .ch: Catalogue of Rules. (line 149) * .cpp: Catalogue of Rules. (line 39) * .d: Automatic Prerequisites. (line 80) -* .def: Catalogue of Rules. (line 73) -* .dvi: Catalogue of Rules. (line 153) -* .f: Catalogue of Rules. (line 51) -* .F: Catalogue of Rules. (line 51) -* .info: Catalogue of Rules. (line 160) -* .l: Catalogue of Rules. (line 125) +* .def: Catalogue of Rules. (line 72) +* .dvi: Catalogue of Rules. (line 149) +* .f: Catalogue of Rules. (line 50) +* .F: Catalogue of Rules. (line 50) +* .info: Catalogue of Rules. (line 156) +* .l: Catalogue of Rules. (line 122) * .LIBPATTERNS, and link libraries: Libraries/Search. (line 6) -* .ln: Catalogue of Rules. (line 147) -* .mod: Catalogue of Rules. (line 73) +* .ln: Catalogue of Rules. (line 144) +* .mod: Catalogue of Rules. (line 72) * .NOTPARALLEL special target: Parallel Disable. (line 16) * .o: Catalogue of Rules. (line 35) -* .o <1>: Catalogue of Rules. (line 86) +* .o <1>: Catalogue of Rules. (line 84) * .ONESHELL, use of: One Shell. (line 6) -* .p: Catalogue of Rules. (line 47) -* .r: Catalogue of Rules. (line 51) -* .s: Catalogue of Rules. (line 79) -* .S: Catalogue of Rules. (line 82) -* .sh: Catalogue of Rules. (line 182) +* .p: Catalogue of Rules. (line 46) +* .r: Catalogue of Rules. (line 50) +* .s: Catalogue of Rules. (line 77) +* .S: Catalogue of Rules. (line 80) +* .sh: Catalogue of Rules. (line 177) * .SHELLFLAGS, value of: Choosing the Shell. (line 6) -* .sym: Catalogue of Rules. (line 73) -* .tex: Catalogue of Rules. (line 153) -* .texi: Catalogue of Rules. (line 160) -* .texinfo: Catalogue of Rules. (line 160) -* .txinfo: Catalogue of Rules. (line 160) -* .w: Catalogue of Rules. (line 153) +* .sym: Catalogue of Rules. (line 72) +* .tex: Catalogue of Rules. (line 149) +* .texi: Catalogue of Rules. (line 156) +* .texinfo: Catalogue of Rules. (line 156) +* .txinfo: Catalogue of Rules. (line 156) +* .w: Catalogue of Rules. (line 149) * .WAIT special target: Parallel Disable. (line 51) -* .web: Catalogue of Rules. (line 153) -* .y: Catalogue of Rules. (line 121) +* .web: Catalogue of Rules. (line 149) +* .y: Catalogue of Rules. (line 118) * :: rules (double-colon): Double-Colon. (line 6) * :::=: Immediate Assignment. (line 6) @@ -6078,7 +6095,7 @@ Index of Concepts * ~ (tilde): Wildcards. (line 16) * abspath: File Name Functions. (line 120) * algorithm for directory search: Search Algorithm. (line 6) -* all (standard target): Goals. (line 73) +* all (standard target): Goals. (line 72) * appending to variables: Appending. (line 6) * ar: Implicit Variables. (line 40) * archive: Archives. (line 6) @@ -6090,9 +6107,9 @@ Index of Concepts (line 6) * Arg list too long: Options/Recursion. (line 66) * arguments of functions: Syntax of Functions. (line 6) -* as: Catalogue of Rules. (line 79) +* as: Catalogue of Rules. (line 77) * as <1>: Implicit Variables. (line 43) -* assembly, rule to compile: Catalogue of Rules. (line 79) +* assembly, rule to compile: Catalogue of Rules. (line 77) * automatic generation of prerequisites: Include. (line 51) * automatic generation of prerequisites <1>: Automatic Prerequisites. (line 6) @@ -6122,19 +6139,19 @@ Index of Concepts * cd (shell command): Execution. (line 12) * cd (shell command) <1>: MAKE Variable. (line 16) * chains of rules: Chained Rules. (line 6) -* check (standard target): Goals. (line 115) -* clean (standard target): Goals. (line 76) +* check (standard target): Goals. (line 114) +* clean (standard target): Goals. (line 75) * clean target: Simple Makefile. (line 85) * clean target <1>: Cleanup. (line 11) * cleaning up: Cleanup. (line 6) -* clobber (standard target): Goals. (line 87) -* co: Catalogue of Rules. (line 167) +* clobber (standard target): Goals. (line 86) +* co: Catalogue of Rules. (line 162) * co <1>: Implicit Variables. (line 66) * combining rules by prerequisite: Combine By Prerequisite. (line 6) * command expansion: Shell Function. (line 6) * command line variable definitions, and recursion: Options/Recursion. - (line 25) + (line 26) * command line variables: Overriding. (line 6) * commands, sequences of: Canned Recipes. (line 6) * comments, in makefile: Makefile Contents. (line 41) @@ -6154,9 +6171,9 @@ Index of Concepts * conventions for makefiles: Makefile Conventions. (line 6) * convert guile types: Guile Types. (line 6) -* ctangle: Catalogue of Rules. (line 153) +* ctangle: Catalogue of Rules. (line 149) * ctangle <1>: Implicit Variables. (line 103) -* cweave: Catalogue of Rules. (line 153) +* cweave: Catalogue of Rules. (line 149) * cweave <1>: Implicit Variables. (line 97) * data base of make rules: Options Summary. (line 210) * deducing recipes (implicit rules): make Deduces. (line 6) @@ -6183,15 +6200,15 @@ Index of Concepts * directory search algorithm: Search Algorithm. (line 6) * directory search, traditional (GPATH): Search Algorithm. (line 42) * disabling parallel execution: Parallel Disable. (line 6) -* dist (standard target): Goals. (line 107) -* distclean (standard target): Goals. (line 85) +* dist (standard target): Goals. (line 106) +* distclean (standard target): Goals. (line 84) * dollar sign ($), in function call: Syntax of Functions. (line 6) * dollar sign ($), in rules: Rule Syntax. (line 33) * dollar sign ($), in variable name: Computed Names. (line 6) * dollar sign ($), in variable reference: Reference. (line 6) * DOS, choosing a shell in: Choosing the Shell. (line 38) * double-colon rules: Double-Colon. (line 6) -* duplicate words, removing: Text Functions. (line 156) +* duplicate words, removing: Text Functions. (line 155) * E2BIG: Options/Recursion. (line 66) * echoing of recipes: Echoing. (line 6) * editor: Introduction. (line 22) @@ -6224,7 +6241,7 @@ Index of Concepts * extensions, Guile: Guile Integration. (line 6) * extensions, load directive: load Directive. (line 6) * extensions, loading: Loading Objects. (line 6) -* f77: Catalogue of Rules. (line 51) +* f77: Catalogue of Rules. (line 50) * f77 <1>: Implicit Variables. (line 57) * FDL, GNU Free Documentation License: GNU Free Documentation License. (line 6) @@ -6232,7 +6249,7 @@ Index of Concepts * features, missing: Missing. (line 6) * file name functions: File Name Functions. (line 6) * file name of makefile: Makefile Names. (line 6) -* file name of makefile, how to specify: Makefile Names. (line 31) +* file name of makefile, how to specify: Makefile Names. (line 30) * file name prefix, adding: File Name Functions. (line 78) * file name suffix: File Name Functions. (line 42) * file name suffix, adding: File Name Functions. (line 67) @@ -6251,16 +6268,16 @@ Index of Concepts * files, avoiding recompilation of: Avoiding Compilation. (line 6) * files, intermediate: Chained Rules. (line 16) -* filtering out words: Text Functions. (line 134) -* filtering words: Text Functions. (line 116) -* finding strings: Text Functions. (line 105) +* filtering out words: Text Functions. (line 133) +* filtering words: Text Functions. (line 115) +* finding strings: Text Functions. (line 104) * flags: Options Summary. (line 6) * flags for compilers: Implicit Variables. (line 6) * flavor of variable: Flavor Function. (line 6) * flavors of variables: Flavors. (line 6) * FORCE: Force Targets. (line 6) * force targets: Force Targets. (line 6) -* Fortran, rule to compile: Catalogue of Rules. (line 51) +* Fortran, rule to compile: Catalogue of Rules. (line 50) * function arguments, special characters in: Syntax of Functions. (line 40) * functions: Functions. (line 6) @@ -6276,7 +6293,7 @@ Index of Concepts * generating prerequisites automatically: Include. (line 51) * generating prerequisites automatically <1>: Automatic Prerequisites. (line 6) -* get: Catalogue of Rules. (line 176) +* get: Catalogue of Rules. (line 171) * get <1>: Implicit Variables. (line 69) * globbing (wildcards): Wildcards. (line 6) * goal: How Make Works. (line 12) @@ -6314,11 +6331,11 @@ Index of Concepts * including other makefiles: Include. (line 6) * incompatibilities: Missing. (line 6) * independent targets: Multiple Targets. (line 14) -* Info, rule to format: Catalogue of Rules. (line 160) +* Info, rule to format: Catalogue of Rules. (line 156) * inheritance, suppressing: Suppressing Inheritance. (line 6) * input during parallel execution: Parallel Input. (line 6) -* install (standard target): Goals. (line 93) +* install (standard target): Goals. (line 92) * installation directories, creating: Directory Variables. (line 20) * installations, staged: DESTDIR. (line 6) * interface for loaded objects: Loaded Object API. (line 6) @@ -6327,7 +6344,7 @@ Index of Concepts * intermediate targets, explicit: Special Targets. (line 48) * interrupt: Interrupts. (line 6) * job slots: Parallel. (line 6) -* job slots, and recursion: Options/Recursion. (line 33) +* job slots, and recursion: Options/Recursion. (line 34) * job slots, sharing: Job Slots. (line 6) * jobs, limiting based on load: Parallel. (line 35) * jobserver: Job Slots. (line 16) @@ -6336,20 +6353,20 @@ Index of Concepts * joining lists of words: File Name Functions. (line 89) * killing (interruption): Interrupts. (line 6) * last-resort default rules: Last Resort. (line 6) -* ld: Catalogue of Rules. (line 86) -* lex: Catalogue of Rules. (line 125) +* ld: Catalogue of Rules. (line 84) +* lex: Catalogue of Rules. (line 122) * lex <1>: Implicit Variables. (line 73) -* Lex, rule to run: Catalogue of Rules. (line 125) +* Lex, rule to run: Catalogue of Rules. (line 122) * libraries for linking, directory search: Libraries/Search. (line 6) * library archive, suffix rule for: Archive Suffix Rules. (line 6) * limiting jobs based on load: Parallel. (line 35) * link libraries, and directory search: Libraries/Search. (line 6) * link libraries, patterns matching: Libraries/Search. (line 6) -* linking, predefined rule for: Catalogue of Rules. (line 86) -* lint: Catalogue of Rules. (line 147) +* linking, predefined rule for: Catalogue of Rules. (line 84) +* lint: Catalogue of Rules. (line 144) * lint <1>: Implicit Variables. (line 80) -* lint, rule to run: Catalogue of Rules. (line 147) +* lint, rule to run: Catalogue of Rules. (line 144) * list of all prerequisites: Automatic Variables. (line 71) * list of changed prerequisites: Automatic Variables. (line 62) * load average: Parallel. (line 35) @@ -6366,7 +6383,7 @@ Index of Concepts (line 40) * lpr (shell command): Wildcard Examples. (line 21) * lpr (shell command) <1>: Empty Targets. (line 25) -* m2c: Catalogue of Rules. (line 73) +* m2c: Catalogue of Rules. (line 72) * m2c <1>: Implicit Variables. (line 60) * macro: Using Variables. (line 10) * make depend: Automatic Prerequisites. @@ -6377,7 +6394,7 @@ Index of Concepts * make procedures in guile: Guile Interface. (line 6) * makefile: Introduction. (line 7) * makefile name: Makefile Names. (line 6) -* makefile name, how to specify: Makefile Names. (line 31) +* makefile name, how to specify: Makefile Names. (line 30) * makefile rule parts: Rule Introduction. (line 6) * makefile syntax, evaluating: Eval Function. (line 6) * makefile, and MAKEFILES variable: MAKEFILES Variable. (line 6) @@ -6394,7 +6411,7 @@ Index of Concepts * makefiles, and MAKEFILE_LIST variable: Special Variables. (line 8) * makefiles, and special variables: Special Variables. (line 6) * makefiles, parsing: Parsing Makefiles. (line 6) -* makeinfo: Catalogue of Rules. (line 160) +* makeinfo: Catalogue of Rules. (line 156) * makeinfo <1>: Implicit Variables. (line 84) * MAKE_TMPDIR: Temporary Files. (line 10) * match-anything rule: Match-Anything Rules. @@ -6404,15 +6421,15 @@ Index of Concepts * missing features: Missing. (line 6) * mistakes with wildcards: Wildcard Pitfall. (line 6) * modified variable reference: Substitution Refs. (line 6) -* Modula-2, rule to compile: Catalogue of Rules. (line 73) -* mostlyclean (standard target): Goals. (line 79) +* Modula-2, rule to compile: Catalogue of Rules. (line 72) +* mostlyclean (standard target): Goals. (line 78) * multi-line variable definition: Multi-Line. (line 6) * multiple rules for one target: Multiple Rules. (line 6) * multiple rules for one target (::): Double-Colon. (line 6) * multiple targets: Multiple Targets. (line 6) * multiple targets, in pattern rule: Pattern Intro. (line 44) * name of makefile: Makefile Names. (line 6) -* name of makefile, how to specify: Makefile Names. (line 31) +* name of makefile, how to specify: Makefile Names. (line 30) * nested variable reference: Computed Names. (line 6) * newline, quoting, in makefile: Simple Makefile. (line 41) * newline, quoting, in recipes: Splitting Recipe Lines. @@ -6451,14 +6468,14 @@ Index of Concepts * parallel output to terminal: Terminal Output. (line 6) * parsing makefiles: Parsing Makefiles. (line 6) * parts of makefile rule: Rule Introduction. (line 6) -* Pascal, rule to compile: Catalogue of Rules. (line 47) +* Pascal, rule to compile: Catalogue of Rules. (line 46) * pattern rule: Pattern Intro. (line 6) * pattern rule, expansion: Reading Makefiles. (line 103) * pattern rules, order of: Pattern Match. (line 30) * pattern rules, static (not implicit): Static Pattern. (line 6) * pattern rules, static, syntax of: Static Usage. (line 6) * pattern-specific variables: Pattern-specific. (line 6) -* pc: Catalogue of Rules. (line 47) +* pc: Catalogue of Rules. (line 46) * pc <1>: Implicit Variables. (line 63) * phony targets: Phony Targets. (line 6) * phony targets and recipe execution: Instead of Execution. @@ -6496,7 +6513,7 @@ Index of Concepts * preserving intermediate files: Chained Rules. (line 63) * preserving with .PRECIOUS: Special Targets. (line 32) * preserving with .SECONDARY: Special Targets. (line 64) -* print (standard target): Goals. (line 98) +* print (standard target): Goals. (line 97) * print target: Wildcard Examples. (line 21) * print target <1>: Empty Targets. (line 25) * printing directories: -w Option. (line 6) @@ -6516,12 +6533,12 @@ Index of Concepts * quoting newline, in makefile: Simple Makefile. (line 41) * quoting newline, in recipes: Splitting Recipe Lines. (line 6) -* Ratfor, rule to compile: Catalogue of Rules. (line 51) -* RCS, rule to extract from: Catalogue of Rules. (line 167) +* Ratfor, rule to compile: Catalogue of Rules. (line 50) +* RCS, rule to extract from: Catalogue of Rules. (line 162) * reading from a file: File Function. (line 6) * reading makefiles: Reading Makefiles. (line 6) * README: Makefile Names. (line 9) -* realclean (standard target): Goals. (line 86) +* realclean (standard target): Goals. (line 85) * realpath: File Name Functions. (line 113) * recipe: Simple Makefile. (line 74) * recipe execution, single invocation: Special Targets. (line 185) @@ -6555,15 +6572,15 @@ Index of Concepts (line 6) * recording events with empty targets: Empty Targets. (line 6) * recursion: Recursion. (line 6) -* recursion, and -C: Options/Recursion. (line 30) -* recursion, and -f: Options/Recursion. (line 30) -* recursion, and -j: Options/Recursion. (line 33) -* recursion, and -o: Options/Recursion. (line 30) -* recursion, and -t: MAKE Variable. (line 35) -* recursion, and -W: Options/Recursion. (line 30) +* recursion, and -C: Options/Recursion. (line 31) +* recursion, and -f: Options/Recursion. (line 31) +* recursion, and -j: Options/Recursion. (line 34) +* recursion, and -o: Options/Recursion. (line 31) +* recursion, and -t: MAKE Variable. (line 34) +* recursion, and -W: Options/Recursion. (line 31) * recursion, and -w: -w Option. (line 20) * recursion, and command line variable definitions: Options/Recursion. - (line 25) + (line 26) * recursion, and environment: Variables/Recursion. (line 6) * recursion, and MAKE variable: MAKE Variable. (line 6) * recursion, and MAKEFILES variable: MAKEFILES Variable. (line 15) @@ -6582,7 +6599,7 @@ Index of Concepts * remaking makefiles: Remaking Makefiles. (line 6) * removal of target files: Errors. (line 63) * removal of target files <1>: Interrupts. (line 6) -* removing duplicate words: Text Functions. (line 156) +* removing duplicate words: Text Functions. (line 155) * removing targets on failure: Special Targets. (line 101) * removing whitespace from split lines: Splitting Lines. (line 40) * removing, to clean up: Cleanup. (line 6) @@ -6615,8 +6632,8 @@ Index of Concepts (line 6) * rule, with multiple targets: Multiple Targets. (line 6) * rules, and $: Rule Syntax. (line 33) -* s. (SCCS file prefix): Catalogue of Rules. (line 176) -* SCCS, rule to extract from: Catalogue of Rules. (line 176) +* s. (SCCS file prefix): Catalogue of Rules. (line 171) +* SCCS, rule to extract from: Catalogue of Rules. (line 171) * search algorithm, implicit rule: Implicit Rule Search. (line 6) * search path for prerequisites (VPATH): Directory Search. (line 6) @@ -6624,7 +6641,7 @@ Index of Concepts (line 6) * search path for prerequisites (VPATH), and link libraries: Libraries/Search. (line 6) -* searching for strings: Text Functions. (line 105) +* searching for strings: Text Functions. (line 104) * secondary expansion: Secondary Expansion. (line 6) * secondary expansion and explicit rules: Secondary Expansion. (line 103) @@ -6636,15 +6653,15 @@ Index of Concepts * secondary targets: Special Targets. (line 64) * sed (shell command): Automatic Prerequisites. (line 72) -* selecting a word: Text Functions. (line 160) -* selecting word lists: Text Functions. (line 169) +* selecting a word: Text Functions. (line 159) +* selecting word lists: Text Functions. (line 168) * sequences of commands: Canned Recipes. (line 6) * setting options from environment: Options/Recursion. (line 89) * setting options in makefiles: Options/Recursion. (line 89) * setting variables: Setting. (line 6) * several rules for one target: Multiple Rules. (line 6) * several targets in a rule: Multiple Targets. (line 6) -* shar (standard target): Goals. (line 104) +* shar (standard target): Goals. (line 103) * shell command, function for: Shell Function. (line 6) * shell file name pattern (in include): Include. (line 13) * shell variables, setting in recipes: Execution. (line 12) @@ -6661,14 +6678,14 @@ Index of Concepts * simple variable expansion: Using Variables. (line 6) * simplifying with variables: Variables Simplify. (line 6) * simply expanded variables: Simple Assignment. (line 9) -* sorting words: Text Functions. (line 148) +* sorting words: Text Functions. (line 147) * spaces, in variable values: Simple Assignment. (line 57) * spaces, stripping: Text Functions. (line 81) * special characters in function arguments: Syntax of Functions. (line 40) * special targets: Special Targets. (line 6) * special variables: Special Variables. (line 6) -* specifying makefile name: Makefile Names. (line 31) +* specifying makefile name: Makefile Names. (line 30) * splitting long lines: Splitting Lines. (line 6) * splitting recipes: Splitting Recipe Lines. (line 6) @@ -6689,7 +6706,7 @@ Index of Concepts * stem, variable for: Automatic Variables. (line 87) * stopping make: Make Control Functions. (line 11) -* strings, searching for: Text Functions. (line 105) +* strings, searching for: Text Functions. (line 104) * stripping whitespace: Text Functions. (line 81) * sub-make: Variables/Recursion. (line 6) * subdirectories, recursion for: Recursion. (line 6) @@ -6708,10 +6725,10 @@ Index of Concepts * syntax of rules: Rule Syntax. (line 6) * tab character (in commands): Rule Syntax. (line 25) * tabs in rules: Rule Introduction. (line 21) -* TAGS (standard target): Goals. (line 112) -* tangle: Catalogue of Rules. (line 153) +* TAGS (standard target): Goals. (line 111) +* tangle: Catalogue of Rules. (line 149) * tangle <1>: Implicit Variables. (line 100) -* tar (standard target): Goals. (line 101) +* tar (standard target): Goals. (line 100) * target: Rules. (line 6) * target pattern, implicit: Pattern Intro. (line 9) * target pattern, static (not implicit): Static Usage. (line 17) @@ -6738,14 +6755,14 @@ Index of Concepts * terminal rule: Match-Anything Rules. (line 6) * terminal, output to: Terminal Output. (line 6) -* test (standard target): Goals. (line 116) +* test (standard target): Goals. (line 115) * testing compilation: Testing. (line 6) -* tex: Catalogue of Rules. (line 153) +* tex: Catalogue of Rules. (line 149) * tex <1>: Implicit Variables. (line 87) -* TeX, rule to run: Catalogue of Rules. (line 153) -* texi2dvi: Catalogue of Rules. (line 160) +* TeX, rule to run: Catalogue of Rules. (line 149) +* texi2dvi: Catalogue of Rules. (line 156) * texi2dvi <1>: Implicit Variables. (line 91) -* Texinfo, rule to format: Catalogue of Rules. (line 160) +* Texinfo, rule to format: Catalogue of Rules. (line 156) * tilde (~): Wildcards. (line 16) * TMP: Temporary Files. (line 13) * TMPDIR: Temporary Files. (line 13) @@ -6757,7 +6774,7 @@ Index of Concepts * traditional directory search (GPATH): Search Algorithm. (line 42) * types of prerequisites: Prerequisite Types. (line 6) * types, conversion of: Guile Types. (line 6) -* undefined variables, warning message: Options Summary. (line 354) +* undefined variables, warning message: Options Summary. (line 352) * undefining variable: Undefine Directive. (line 6) * updating archive symbol directories: Archive Symbols. (line 6) * updating loaded objects: Remaking Loaded Objects. @@ -6776,7 +6793,7 @@ Index of Concepts * variables, appending to: Appending. (line 6) * variables, automatic: Automatic Variables. (line 6) * variables, command line: Overriding. (line 6) -* variables, command line, and recursion: Options/Recursion. (line 25) +* variables, command line, and recursion: Options/Recursion. (line 26) * variables, computed names: Computed Names. (line 6) * variables, conditional assignment: Conditional Assignment. (line 6) @@ -6808,7 +6825,7 @@ Index of Concepts * variables, substitution reference: Substitution Refs. (line 6) * variables, target-specific: Target-specific. (line 6) * variables, unexpanded value: Value Function. (line 6) -* variables, warning for undefined: Options Summary. (line 354) +* variables, warning for undefined: Options Summary. (line 352) * varying prerequisites: Static Pattern. (line 6) * verbatim variable definition: Multi-Line. (line 6) * vpath: Directory Search. (line 6) @@ -6816,9 +6833,9 @@ Index of Concepts * VPATH, and link libraries: Libraries/Search. (line 6) * warnings, printing: Make Control Functions. (line 35) -* weave: Catalogue of Rules. (line 153) +* weave: Catalogue of Rules. (line 149) * weave <1>: Implicit Variables. (line 94) -* Web, rule to run: Catalogue of Rules. (line 153) +* Web, rule to run: Catalogue of Rules. (line 149) * what if: Instead of Execution. (line 41) * whitespace, avoiding on line split: Splitting Lines. (line 40) @@ -6832,21 +6849,21 @@ Index of Concepts * wildcards and MS-DOS/MS-Windows backslashes: Wildcard Pitfall. (line 31) * Windows, choosing a shell in: Choosing the Shell. (line 38) -* word, selecting a: Text Functions. (line 160) -* words, extracting first: Text Functions. (line 186) -* words, extracting last: Text Functions. (line 199) -* words, filtering: Text Functions. (line 116) -* words, filtering out: Text Functions. (line 134) -* words, finding number: Text Functions. (line 181) +* word, selecting a: Text Functions. (line 159) +* words, extracting first: Text Functions. (line 184) +* words, extracting last: Text Functions. (line 197) +* words, filtering: Text Functions. (line 115) +* words, filtering out: Text Functions. (line 133) +* words, finding number: Text Functions. (line 180) * words, iterating over: Foreach Function. (line 6) * words, joining lists: File Name Functions. (line 89) -* words, removing duplicates: Text Functions. (line 156) -* words, selecting lists of: Text Functions. (line 169) +* words, removing duplicates: Text Functions. (line 155) +* words, selecting lists of: Text Functions. (line 168) * writing recipes: Recipes. (line 6) * writing rules: Rules. (line 6) * writing to a file: File Function. (line 6) -* yacc: Catalogue of Rules. (line 121) +* yacc: Catalogue of Rules. (line 118) * yacc <1>: Implicit Variables. (line 77) * yacc <2>: Canned Recipes. (line 18) -* Yacc, rule to run: Catalogue of Rules. (line 121) +* Yacc, rule to run: Catalogue of Rules. (line 118) diff --git a/doc/make.info-3 b/doc/make.info-3 index d10e16b..e348f1b 100644 Binary files a/doc/make.info-3 and b/doc/make.info-3 differ diff --git a/doc/make.texi b/doc/make.texi index e3a3ade..aa488eb 100644 --- a/doc/make.texi +++ b/doc/make.texi @@ -3,7 +3,7 @@ @setfilename make.info @include version.texi -@set EDITION 0.76 +@set EDITION 0.77 @settitle GNU @code{make} @setchapternewpage odd @@ -27,7 +27,7 @@ of @cite{The GNU Make Manual}, for GNU @code{make} version @value{VERSION}. Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, -2020, 2021, 2022 Free Software Foundation, Inc. +2020, 2021, 2022, 2023 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -1279,19 +1279,16 @@ makefile as has been traditionally done with other versions of @findex /usr/gnu/include @findex /usr/local/include @findex /usr/include -If the specified name does not start with a slash, and the file is not -found in the current directory, several other directories are searched. +If the specified name does not start with a slash (or a drive letter and colon +when GNU Make is compiled with MS-DOS / MS-Windows path support), and the file +is not found in the current directory, several other directories are searched. First, any directories you have specified with the @samp{-I} or -@samp{--include-dir} options are searched -(@pxref{Options Summary, ,Summary of Options}). -Then the following directories (if they exist) -are searched, in this order: -@file{@var{prefix}/include} (normally @file{/usr/local/include} +@samp{--include-dir} options are searched (@pxref{Options Summary, ,Summary of +Options}). Then the following directories (if they exist) are searched, in +this order: @file{@var{prefix}/include} (normally @file{/usr/local/include} @footnote{GNU Make compiled for MS-DOS and MS-Windows behaves as if -@var{prefix} has been defined to be the root of the DJGPP tree -hierarchy.}) -@file{/usr/gnu/include}, -@file{/usr/local/include}, @file{/usr/include}. +@var{prefix} has been defined to be the root of the DJGPP tree hierarchy.}) +@file{/usr/gnu/include}, @file{/usr/local/include}, @file{/usr/include}. The @code{.INCLUDE_DIRS} variable will contain the current list of directories that make will search for included files. @xref{Special @@ -1712,7 +1709,7 @@ the results of the expanded macro (@pxref{Eval Function}). @findex .SECONDEXPANSION Previously we learned that GNU @code{make} works in two distinct phases: a read-in phase and a target-update phase (@pxref{Reading -Makefiles, , How @code{make} Reads a Makefile}). GNU make also has +Makefiles, , How @code{make} Reads a Makefile}). GNU Make also has the ability to enable a @emph{second expansion} of the prerequisites (only) for some or all targets defined in the makefile. In order for this second expansion to occur, the special target @@ -2156,7 +2153,7 @@ The wildcard characters in @code{make} are @samp{*}, @samp{?} and specifies a list of all the files (in the working directory) whose names end in @samp{.c}. -If an expression matches multiple files than the results will be +If an expression matches multiple files then the results will be sorted.@footnote{Some older versions of GNU @code{make} did not sort the results of wildcard expansion.} However multiple expressions will not be globally sorted. For example, @file{*.c *.h} will list all the files whose @@ -3077,7 +3074,7 @@ Suppose @file{hello.bin} is up to date in regards to the source files, @code{.SECONDARY} make would rebuild @file{hello.o} then rebuild @file{hello.bin} even though the source files had not changed. By declaring @file{hello.o} as @code{.SECONDARY} @code{make} will not need to rebuild it -and won't need to rebuild @file{hello.bin} either. Of course, of one of the +and won't need to rebuild @file{hello.bin} either. Of course, if one of the source files @emph{were} updated then all object files would be rebuilt so that the creation of @file{hello.bin} could succeed. @@ -5073,10 +5070,12 @@ set up automatically by @code{make} to contain the flag letters that @code{make} received. Thus, if you do @w{@samp{make -ks}} then @code{MAKEFLAGS} gets the value @samp{ks}. -As a consequence, every sub-@code{make} gets a value for @code{MAKEFLAGS} -in its environment. In response, it takes the flags from that value and -processes them as if they had been given as arguments. -@xref{Options Summary, ,Summary of Options}. +As a consequence, every sub-@code{make} gets a value for @code{MAKEFLAGS} in +its environment. In response, it takes the flags from that value and +processes them as if they had been given as arguments. @xref{Options Summary, +,Summary of Options}. This means that, unlike other environment variables, +@code{MAKEFLAGS} specified in the environment take precedence over +@code{MAKEFLAGS} specified in the makefile. The value of @code{MAKEFLAGS} is a possibly empty group of characters representing single-letter options that take no argument, followed by a space @@ -5226,7 +5225,7 @@ string to avoid duplicating flags during recursion. It's best to use @code{GNUMAKEFLAGS} only with flags which won't materially change the behavior of your makefiles. If your makefiles -require GNU make anyway then simply use @code{MAKEFLAGS}. Flags such +require GNU Make anyway then simply use @code{MAKEFLAGS}. Flags such as @samp{--no-print-directory} or @samp{--output-sync} may be appropriate for @code{GNUMAKEFLAGS}. @@ -7352,7 +7351,7 @@ marking an archive file up to date: @example archive.a: @dots{} -ifneq (,$(findstring t,$(word 1,-$(MAKEFLAGS)))) +ifneq (,$(findstring t,$(firstword -$(MAKEFLAGS)))) +touch archive.a +ranlib -t archive.a else @@ -11333,7 +11332,7 @@ If no pattern rule has been found then try step 5 and step 6 again with a modified definition of ``ought to exist'': if a filename is mentioned as a target or as an explicit prerequisite of @emph{any} target, then it ought to exist. This check is only present for backward-compatibility with older -versions of GNU make: we don't recommend relying on it. +versions of GNU Make: we don't recommend relying on it. @item If no implicit rule applies, the rule for @code{.DEFAULT}, if any, @@ -11498,7 +11497,7 @@ and make all the members of the archive file prerequisites of that rule. For example, @example -libfoo.a: libfoo.a(x.o) libfoo.a(y.o) @dots{} +libfoo.a: libfoo.a(x.o y.o @dots{}) ranlib libfoo.a @end example @@ -11519,15 +11518,38 @@ updates the @file{__.SYMDEF} member automatically. @cindex archive, and @code{-j} @cindex @code{-j}, and archive update -It is important to be careful when using parallel execution (the -@code{-j} switch; @pxref{Parallel, ,Parallel Execution}) and archives. -If multiple @code{ar} commands run at the same time on the same archive -file, they will not know about each other and can corrupt the file. +The built-in rules for updating archives are incompatible with parallel +builds. These rules (required by the POSIX standard) add each object file +into the archive as it's compiled. When parallel builds are enabled this +allows multiple @code{ar} commands to be updating the same archive +simultaneously, which is not supported. + +If you want to use parallel builds with archives you can override the default +rules by adding these lines to your makefile: + +@example +(%) : % ; +%.a : ; $(AR) $(ARFLAGS) $@@ $? +@end example + +The first line changes the rule that updates an individual object in the +archive to do nothing, and the second line changes the default rule for +building an archive to update all the outdated objects (@code{$?}) in one +command. -Possibly a future version of @code{make} will provide a mechanism to -circumvent this problem by serializing all recipes that operate on the -same archive file. But for the time being, you must either write your -makefiles to avoid this problem in some other way, or not use @code{-j}. +Of course you will still need to declare the prerequisites of your library +using the archive syntax: + +@example +libfoo.a: libfoo.a(x.o y.o @dots{}) +@end example + +If you prefer to write an explicit rule you can use: + +@example +libfoo.a: libfoo.a(x.o y.o @dots{}) + $(AR) $(ARFLAGS) $@@ $? +@end example @node Archive Suffix Rules, , Archive Pitfalls, Archives @section Suffix Rules for Archive Files @@ -11754,7 +11776,7 @@ internalize it: @example @group define GUILEIO -;; A simple Guile IO library for GNU make +;; A simple Guile IO library for GNU Make (define MKPORT #f) @@ -11820,10 +11842,10 @@ symbol to be stored in a @code{make} variable. @cartouche @quotation Warning The @code{load} directive and extension capability is considered a -``technology preview'' in this release of GNU make. We encourage you +``technology preview'' in this release of GNU Make. We encourage you to experiment with this feature and we appreciate any feedback on it. However we cannot guarantee to maintain backward-compatibility in the -next release. Consider using GNU Guile instead for extending GNU make +next release. Consider using GNU Guile instead for extending GNU Make (@pxref{Guile Function, ,The @code{guile} Function}). @end quotation @end cartouche @@ -11893,7 +11915,7 @@ The initializing function will be provided the file name and line number of the invocation of the @code{load} operation. It should return a value of type @code{int}, which must be @code{0} on failure and non-@code{0} on success. If the return value is @code{-1}, then -GNU make will @emph{not} attempt to rebuild the object file +GNU Make will @emph{not} attempt to rebuild the object file (@pxref{Remaking Loaded Objects, ,How Loaded Objects Are Remade}). For example: diff --git a/doc/stamp-vti b/doc/stamp-vti index c1ea3be..6f03b92 100644 --- a/doc/stamp-vti +++ b/doc/stamp-vti @@ -1,4 +1,4 @@ -@set UPDATED 31 October 2022 -@set UPDATED-MONTH October 2022 -@set EDITION 4.4 -@set VERSION 4.4 +@set UPDATED 26 February 2023 +@set UPDATED-MONTH February 2023 +@set EDITION 4.4.1 +@set VERSION 4.4.1 diff --git a/doc/version.texi b/doc/version.texi index c1ea3be..6f03b92 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -1,4 +1,4 @@ -@set UPDATED 31 October 2022 -@set UPDATED-MONTH October 2022 -@set EDITION 4.4 -@set VERSION 4.4 +@set UPDATED 26 February 2023 +@set UPDATED-MONTH February 2023 +@set EDITION 4.4.1 +@set VERSION 4.4.1 diff --git a/lib/Makefile.am b/lib/Makefile.am index 1301aa0..19536ed 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -1,6 +1,6 @@ ## DO NOT EDIT! GENERATED AUTOMATICALLY! ## Process this file with automake to produce Makefile.in. -# Copyright (C) 2002-2022 Free Software Foundation, Inc. +# Copyright (C) 2002-2023 Free Software Foundation, Inc. # # 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 @@ -152,7 +152,7 @@ endif ## begin gnulib module intprops -EXTRA_DIST += intprops.h +EXTRA_DIST += intprops-internal.h intprops.h ## end gnulib module intprops @@ -206,28 +206,6 @@ EXTRA_DIST += warn-on-use.h ## end gnulib module snippet/warn-on-use -## begin gnulib module stdbool - -BUILT_SOURCES += $(STDBOOL_H) - -# We need the following in order to create when the system -# doesn't have one that works. -if GL_GENERATE_STDBOOL_H -stdbool.h: stdbool.in.h $(top_builddir)/config.status - $(gl_V_at)$(SED_HEADER_STDOUT) \ - -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' \ - $(srcdir)/stdbool.in.h > $@-t - $(AM_V_at)mv $@-t $@ -else -stdbool.h: $(top_builddir)/config.status - rm -f $@ -endif -MOSTLYCLEANFILES += stdbool.h stdbool.h-t - -EXTRA_DIST += stdbool.in.h - -## end gnulib module stdbool - mostlyclean-local: mostlyclean-generic @for dir in '' $(MOSTLYCLEANDIRS); do \ diff --git a/lib/Makefile.in b/lib/Makefile.in index 889eb60..d6d7047 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -14,7 +14,7 @@ @SET_MAKE@ -# Copyright (C) 2002-2022 Free Software Foundation, Inc. +# Copyright (C) 2002-2023 Free Software Foundation, Inc. # # 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 @@ -140,7 +140,7 @@ subdir = lib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ $(top_srcdir)/m4/acinclude.m4 $(top_srcdir)/m4/alloca.m4 \ - $(top_srcdir)/m4/asm-underscore.m4 \ + $(top_srcdir)/m4/asm-underscore.m4 $(top_srcdir)/m4/c-bool.m4 \ $(top_srcdir)/m4/dospaths.m4 $(top_srcdir)/m4/eaccess.m4 \ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/findprog-in.m4 \ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/gettext.m4 \ @@ -152,8 +152,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longlong.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/sig_atomic_t.m4 \ - $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/warn-on-use.m4 \ - $(top_srcdir)/m4/year2038.m4 $(top_srcdir)/m4/zzgnulib.m4 \ + $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/zzgnulib.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) @@ -309,6 +308,9 @@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ CTAGS = @CTAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ @@ -330,7 +332,6 @@ GUILE_CFLAGS = @GUILE_CFLAGS@ GUILE_LIBS = @GUILE_LIBS@ HAVE_ALLOCA_H = @HAVE_ALLOCA_H@ HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ -HAVE__BOOL = @HAVE__BOOL@ HOST_CPU = @HOST_CPU@ HOST_CPU_C_ABI = @HOST_CPU_C_ABI@ INSTALL = @INSTALL@ @@ -375,7 +376,6 @@ REMOTE = @REMOTE@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ -STDBOOL_H = @STDBOOL_H@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ USE_SYSTEM_GLOB = @USE_SYSTEM_GLOB@ @@ -388,6 +388,7 @@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -447,12 +448,12 @@ noinst_HEADERS = noinst_LIBRARIES = libgnu.a noinst_LTLIBRARIES = EXTRA_DIST = alloca.c alloca.in.h concat-filename.h filename.h \ - intprops.h fnmatch.in.h glob.in.h fnmatch.c fnmatch.in.h \ - glob.c glob.in.h warn-on-use.h stdbool.in.h -BUILT_SOURCES = $(ALLOCA_H) $(am__append_3) $(STDBOOL_H) + intprops-internal.h intprops.h fnmatch.in.h glob.in.h \ + fnmatch.c fnmatch.in.h glob.c glob.in.h warn-on-use.h +BUILT_SOURCES = $(ALLOCA_H) $(am__append_3) SUFFIXES = MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t \ - $(am__append_4) stdbool.h stdbool.h-t + $(am__append_4) MOSTLYCLEANDIRS = CLEANFILES = DISTCLEANFILES = @@ -986,16 +987,6 @@ uninstall-am: @USE_SYSTEM_GLOB_FALSE@ } > $@-t && \ @USE_SYSTEM_GLOB_FALSE@ mv -f $@-t $@ -# We need the following in order to create when the system -# doesn't have one that works. -@GL_GENERATE_STDBOOL_H_TRUE@stdbool.h: stdbool.in.h $(top_builddir)/config.status -@GL_GENERATE_STDBOOL_H_TRUE@ $(gl_V_at)$(SED_HEADER_STDOUT) \ -@GL_GENERATE_STDBOOL_H_TRUE@ -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' \ -@GL_GENERATE_STDBOOL_H_TRUE@ $(srcdir)/stdbool.in.h > $@-t -@GL_GENERATE_STDBOOL_H_TRUE@ $(AM_V_at)mv $@-t $@ -@GL_GENERATE_STDBOOL_H_FALSE@stdbool.h: $(top_builddir)/config.status -@GL_GENERATE_STDBOOL_H_FALSE@ rm -f $@ - mostlyclean-local: mostlyclean-generic @for dir in '' $(MOSTLYCLEANDIRS); do \ if test -n "$$dir" && test -d $$dir; then \ diff --git a/lib/alloca.in.h b/lib/alloca.in.h index e2b1461..a1bb3d7 100644 --- a/lib/alloca.in.h +++ b/lib/alloca.in.h @@ -1,6 +1,6 @@ /* Memory allocation on the stack. - Copyright (C) 1995, 1999, 2001-2004, 2006-2022 Free Software Foundation, + Copyright (C) 1995, 1999, 2001-2004, 2006-2023 Free Software Foundation, Inc. This file is free software: you can redistribute it and/or modify diff --git a/lib/concat-filename.c b/lib/concat-filename.c index f054849..62842a6 100644 --- a/lib/concat-filename.c +++ b/lib/concat-filename.c @@ -1,5 +1,5 @@ /* Construct a full filename from a directory and a relative filename. - Copyright (C) 2001-2004, 2006-2022 Free Software Foundation, Inc. + Copyright (C) 2001-2004, 2006-2023 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 diff --git a/lib/concat-filename.h b/lib/concat-filename.h index 0348b0d..0912226 100644 --- a/lib/concat-filename.h +++ b/lib/concat-filename.h @@ -1,5 +1,5 @@ /* Construct a full filename from a directory and a relative filename. - Copyright (C) 2001-2004, 2007-2022 Free Software Foundation, Inc. + Copyright (C) 2001-2004, 2007-2023 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 diff --git a/lib/filename.h b/lib/filename.h index ab77ca2..a2400a9 100644 --- a/lib/filename.h +++ b/lib/filename.h @@ -1,5 +1,5 @@ /* Basic filename support macros. - Copyright (C) 2001-2022 Free Software Foundation, Inc. + Copyright (C) 2001-2023 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 diff --git a/lib/findprog-in.c b/lib/findprog-in.c index 72a05db..c0768c2 100644 --- a/lib/findprog-in.c +++ b/lib/findprog-in.c @@ -1,5 +1,5 @@ /* Locating a program in a given path. - Copyright (C) 2001-2004, 2006-2022 Free Software Foundation, Inc. + Copyright (C) 2001-2004, 2006-2023 Free Software Foundation, Inc. Written by Bruno Haible , 2001, 2019. This file is free software: you can redistribute it and/or modify @@ -22,7 +22,6 @@ #include "findprog.h" #include -#include #include #include #include diff --git a/lib/findprog.h b/lib/findprog.h index e47acc5..6223394 100644 --- a/lib/findprog.h +++ b/lib/findprog.h @@ -1,5 +1,5 @@ /* Locating a program in PATH. - Copyright (C) 2001-2003, 2009-2022 Free Software Foundation, Inc. + Copyright (C) 2001-2003, 2009-2023 Free Software Foundation, Inc. Written by Bruno Haible , 2001. This file is free software: you can redistribute it and/or modify @@ -18,8 +18,6 @@ #ifndef _FINDPROG_H #define _FINDPROG_H -#include - #ifdef __cplusplus extern "C" { #endif diff --git a/lib/fnmatch.c b/lib/fnmatch.c index 4da8c5f..01da376 100644 --- a/lib/fnmatch.c +++ b/lib/fnmatch.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999 Free Software +/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2023 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -128,48 +128,20 @@ extern char *getenv (); extern int errno; # endif -/* This function doesn't exist on most systems. */ - -# if !defined HAVE___STRCHRNUL && !defined _LIBC -static char * -__strchrnul (s, c) - const char *s; - int c; -{ - char *result = strchr (s, c); - if (result == NULL) - result = strchr (s, '\0'); - return result; -} -# endif - -# ifndef internal_function -/* Inside GNU libc we mark some function in a special way. In other - environments simply ignore the marking. */ -# define internal_function -# endif - /* Match STRING against the filename pattern PATTERN, returning zero if it matches, nonzero if not. */ -static int internal_fnmatch __P ((const char *pattern, const char *string, - int no_leading_period, int flags)) - internal_function; static int -internal_function -internal_fnmatch (pattern, string, no_leading_period, flags) - const char *pattern; - const char *string; - int no_leading_period; - int flags; +internal_fnmatch (const char *pattern, const char *string, + int no_leading_period, int flags) { - register const char *p = pattern, *n = string; - register unsigned char c; + const char *p = pattern, *n = string; + unsigned char c; /* Note that this evaluates C many times. */ # ifdef _LIBC -# define FOLD(c) ((flags & FNM_CASEFOLD) ? tolower (c) : (c)) +# define FOLD(c) (unsigned char)((flags & FNM_CASEFOLD) ? tolower (c) : (c)) # else -# define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER (c) ? tolower (c) : (c)) +# define FOLD(c) (unsigned char)((flags & FNM_CASEFOLD) && ISUPPER (c) ? tolower (c) : (c)) # endif while ((c = *p++) != '\0') @@ -237,7 +209,9 @@ internal_fnmatch (pattern, string, no_leading_period, flags) { const char *endp; - endp = __strchrnul (n, (flags & FNM_FILE_NAME) ? '/' : '\0'); + endp = strchr (n, (flags & FNM_FILE_NAME) ? '/' : '\0'); + if (endp == NULL) + endp = n + strlen (n); if (c == '[') { @@ -292,7 +266,7 @@ internal_fnmatch (pattern, string, no_leading_period, flags) { /* Nonzero if the sense of the character class is inverted. */ static int posixly_correct; - register int not; + int not; char cold; if (posixly_correct == 0) @@ -478,10 +452,7 @@ internal_fnmatch (pattern, string, no_leading_period, flags) int -fnmatch (pattern, string, flags) - const char *pattern; - const char *string; - int flags; +fnmatch (const char *pattern, const char *string, int flags) { return internal_fnmatch (pattern, string, flags & FNM_PERIOD, flags); } diff --git a/lib/fnmatch.in.h b/lib/fnmatch.in.h index a788c8e..a809971 100644 --- a/lib/fnmatch.in.h +++ b/lib/fnmatch.in.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999 Free Software +/* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2023 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -24,27 +24,6 @@ USA. */ extern "C" { #endif -#if defined __cplusplus || (defined __STDC__ && __STDC__) || defined WINDOWS32 -# if !defined __GLIBC__ -# undef __P -# define __P(protos) protos -# endif -#else /* Not C++ or ANSI C. */ -# undef __P -# define __P(protos) () -/* We can get away without defining `const' here only because in this file - it is used only inside the prototype for `fnmatch', which is elided in - non-ANSI C where `const' is problematical. */ -#endif /* C++ or ANSI C. */ - -#ifndef const -# if (defined __STDC__ && __STDC__) || defined __cplusplus || defined WINDOWS32 -# define __const const -# else -# define __const -# endif -#endif - /* We #undef these before defining them because some losing systems (HP-UX A.08.07 for example) define these in . */ #undef FNM_PATHNAME @@ -75,8 +54,7 @@ extern "C" { /* Match NAME against the filename pattern PATTERN, returning zero if it matches, FNM_NOMATCH if not. */ -extern int fnmatch __P ((__const char *__pattern, __const char *__name, - int __flags)); +extern int fnmatch (const char *pattern, const char *name, int flags); #ifdef __cplusplus } diff --git a/lib/getloadavg.c b/lib/getloadavg.c index 37e8280..59b53e7 100644 --- a/lib/getloadavg.c +++ b/lib/getloadavg.c @@ -1,6 +1,6 @@ /* Get the system load averages. - Copyright (C) 1985-1989, 1991-1995, 1997, 1999-2000, 2003-2022 Free Software + Copyright (C) 1985-1989, 1991-1995, 1997, 1999-2000, 2003-2023 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with gnulib. @@ -82,7 +82,6 @@ #include #include -#include #include # include diff --git a/lib/glob.c b/lib/glob.c index adad16f..271a2d1 100644 --- a/lib/glob.c +++ b/lib/glob.c @@ -1,5 +1,5 @@ -/* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999 Free -Software Foundation, Inc. +/* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +2023 Free Software Foundation, Inc. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -38,9 +38,6 @@ USA. */ /* #define NDEBUG 1 */ #include -#include /* Needed on stupid SunOS for assert. */ - - /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling @@ -50,7 +47,9 @@ USA. */ it is simpler to just do this in the source for each such file. */ #define GLOB_INTERFACE_VERSION 1 -#if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 +#if defined _LIBC +# define ELIDE_CODE +#elif defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 # include # if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION # define ELIDE_CODE @@ -63,7 +62,7 @@ USA. */ # include #endif -#if defined HAVE_UNISTD_H || defined _LIBC +#if defined HAVE_UNISTD_H # include # ifndef POSIX # ifdef _POSIX_VERSION @@ -83,11 +82,6 @@ extern int errno; # define __set_errno(val) errno = (val) #endif -#ifndef NULL -# define NULL 0 -#endif - - #if defined HAVE_DIRENT_H || defined __GNU_LIBRARY__ # include # define NAMLEN(dirent) strlen((dirent)->d_name) @@ -108,7 +102,6 @@ extern int errno; # endif /* HAVE_VMSDIR_H */ #endif - /* In GNU systems, defines this macro for us. */ #ifdef _D_NAMLEN # undef NAMLEN @@ -130,49 +123,10 @@ extern int errno; # define REAL_DIR_ENTRY(dp) (dp->d_ino != 0) #endif /* POSIX */ -#if defined STDC_HEADERS || defined __GNU_LIBRARY__ -# include -# include -# define ANSI_STRING -#else /* No standard headers. */ - -extern char *getenv (); - -# ifdef HAVE_STRING_H -# include -# define ANSI_STRING -# else -# include -# endif -# ifdef HAVE_MEMORY_H -# include -# endif - -extern char *malloc (), *realloc (); -extern void free (); - -extern void qsort (); -extern void abort (), exit (); - -#endif /* Standard headers. */ - -#ifndef ANSI_STRING - -# ifndef bzero -extern void bzero (); -# endif -# ifndef bcopy -extern void bcopy (); -# endif - -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# define strrchr rindex -/* memset is only used for zero here, but let's be paranoid. */ -# define memset(s, better_be_zero, n) \ - ((void) ((better_be_zero) == 0 ? (bzero((s), (n)), 0) : (abort(), 0))) -#endif /* Not ANSI_STRING. */ +#include +#include -#if !defined HAVE_STRCOLL && !defined _LIBC +#if !defined HAVE_STRCOLL # define strcoll strcmp #endif @@ -182,32 +136,6 @@ extern void bcopy (); # define mempcpy(Dest, Src, Len) __mempcpy (Dest, Src, Len) #endif -#if !defined __GNU_LIBRARY__ && !defined __DJGPP__ -# ifdef __GNUC__ -__inline -# endif -# ifndef __SASC -# ifdef WINDOWS32 -static void * -my_realloc (void *p, unsigned int n) -# else -static char * -my_realloc (p, n) - char *p; - unsigned int n; -# endif -{ - /* These casts are the for sake of the broken Ultrix compiler, - which warns of illegal pointer combinations otherwise. */ - if (p == NULL) - return (char *) malloc (n); - return (char *) realloc (p, n); -} -# define realloc my_realloc -# endif /* __SASC */ -#endif /* __GNU_LIBRARY__ || __DJGPP__ */ - - #if !defined __alloca && !defined __GNU_LIBRARY__ # ifdef __GNUC__ @@ -229,7 +157,6 @@ extern char *alloca (); #endif #ifndef __GNU_LIBRARY__ -# define __stat stat # ifdef STAT_MACROS_BROKEN # undef S_ISDIR # endif @@ -238,25 +165,6 @@ extern char *alloca (); # endif #endif -#ifdef _LIBC -# undef strdup -# define strdup(str) __strdup (str) -# define sysconf(id) __sysconf (id) -# define closedir(dir) __closedir (dir) -# define opendir(name) __opendir (name) -# define readdir(str) __readdir (str) -# define getpwnam_r(name, bufp, buf, len, res) \ - __getpwnam_r (name, bufp, buf, len, res) -# ifndef __stat -# define __stat(fname, buf) __xstat (_STAT_VER, fname, buf) -# endif -#endif - -#if !(defined STDC_HEADERS || defined __GNU_LIBRARY__) -# undef size_t -# define size_t unsigned int -#endif - /* Some system header files erroneously define these. We want our own definitions from to take precedence. */ #ifndef __GNU_LIBRARY__ @@ -284,30 +192,26 @@ extern char *alloca (); # define __alloca alloca #endif -#if !defined __stat -# define __stat stat -#endif - #ifdef HAVE_GETLOGIN_R -extern int getlogin_r __P ((char *, size_t)); +extern int getlogin_r (char *, size_t); #else -extern char *getlogin __P ((void)); +extern char *getlogin (void); #endif static #if __GNUC__ - 0 >= 2 inline #endif -const char *next_brace_sub __P ((const char *begin)); -static int glob_in_dir __P ((const char *pattern, const char *directory, - int flags, - int (*errfunc) (const char *, int), - glob_t *pglob)); -static int prefix_array __P ((const char *prefix, char **array, size_t n)); -static int collated_compare __P ((const __ptr_t, const __ptr_t)); - -#if !defined _LIBC || !defined NO_GLOB_PATTERN_P -int __glob_pattern_p __P ((const char *pattern, int quote)); +const char *next_brace_sub (const char *begin); +static int glob_in_dir (const char *pattern, const char *directory, + int flags, + int (*errfunc) (const char *, int), + glob_t *pglob); +static int prefix_array (const char *prefix, char **array, size_t n); +static int collated_compare (const void *, const void *); + +#if !defined NO_GLOB_PATTERN_P +int __glob_pattern_p (const char *pattern, int quote); #endif /* Find the end of the sub-pattern in a brace expression. We define @@ -317,8 +221,7 @@ static inline #endif const char * -next_brace_sub (begin) - const char *begin; +next_brace_sub (const char *begin) { unsigned int depth = 0; const char *cp = begin; @@ -364,11 +267,8 @@ next_brace_sub (begin) If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned. Otherwise, `glob' returns zero. */ int -glob (pattern, flags, errfunc, pglob) - const char *pattern; - int flags; - int (*errfunc) __P ((const char *, int)); - glob_t *pglob; +glob (const char *pattern, int flags, + int (*errfunc) (const char *, int), glob_t *pglob) { const char *filename; const char *dirname; @@ -647,7 +547,7 @@ glob (pattern, flags, errfunc, pglob) { int success; char *name; -# if defined HAVE_GETLOGIN_R || defined _LIBC +# if defined HAVE_GETLOGIN_R size_t buflen = sysconf (_SC_LOGIN_NAME_MAX) + 1; if (buflen == 0) @@ -663,7 +563,7 @@ glob (pattern, flags, errfunc, pglob) if (success) { struct passwd *p; -# if defined HAVE_GETPWNAM_R || defined _LIBC +# if defined HAVE_GETPWNAM_R size_t pwbuflen = sysconf (_SC_GETPW_R_SIZE_MAX); char *pwtmpbuf; struct passwd pwbuf; @@ -748,7 +648,7 @@ glob (pattern, flags, errfunc, pglob) /* Look up specific user's home directory. */ { struct passwd *p; -# if defined HAVE_GETPWNAM_R || defined _LIBC +# if defined HAVE_GETPWNAM_R size_t buflen = sysconf (_SC_GETPW_R_SIZE_MAX); char *pwtmpbuf; struct passwd pwbuf; @@ -816,7 +716,7 @@ glob (pattern, flags, errfunc, pglob) if ((flags & GLOB_NOCHECK) || (((flags & GLOB_ALTDIRFUNC) ? (*pglob->gl_stat) (dirname, &st) - : __stat (dirname, &st)) == 0 + : stat (dirname, &st)) == 0 && S_ISDIR (st.st_mode))) { pglob->gl_pathv @@ -833,7 +733,7 @@ glob (pattern, flags, errfunc, pglob) while (pglob->gl_pathc < pglob->gl_offs) pglob->gl_pathv[pglob->gl_pathc++] = NULL; -#if defined HAVE_STRDUP || defined _LIBC +#if defined HAVE_STRDUP pglob->gl_pathv[pglob->gl_pathc] = strdup (dirname); #else { @@ -865,7 +765,7 @@ glob (pattern, flags, errfunc, pglob) have to glob for the directory, and then glob for the pattern in each directory found. */ glob_t dirs; - register size_t i; + size_t i; status = glob (dirname, ((flags & (GLOB_ERR | GLOB_NOCHECK | GLOB_NOESCAPE)) @@ -879,7 +779,7 @@ glob (pattern, flags, errfunc, pglob) appending the results to PGLOB. */ for (i = 0; i < dirs.gl_pathc; ++i) { - int old_pathc; + size_t old_pathc; #ifdef SHELL { @@ -962,7 +862,7 @@ glob (pattern, flags, errfunc, pglob) /* First check whether this really is a directory. */ if (((flags & GLOB_ALTDIRFUNC) - ? (*pglob->gl_stat) (dir, &st) : __stat (dir, &st)) != 0 + ? (*pglob->gl_stat) (dir, &st) : stat (dir, &st)) != 0 || !S_ISDIR (st.st_mode)) /* No directory, ignore this entry. */ continue; @@ -1038,7 +938,7 @@ glob (pattern, flags, errfunc, pglob) for (i = oldcount; i < pglob->gl_pathc; ++i) if (((flags & GLOB_ALTDIRFUNC) ? (*pglob->gl_stat) (pglob->gl_pathv[i], &st) - : __stat (pglob->gl_pathv[i], &st)) == 0 + : stat (pglob->gl_pathv[i], &st)) == 0 && S_ISDIR (st.st_mode)) { size_t len = strlen (pglob->gl_pathv[i]) + 2; @@ -1056,12 +956,12 @@ glob (pattern, flags, errfunc, pglob) if (!(flags & GLOB_NOSORT)) { /* Sort the vector. */ - int non_sort = oldcount; + size_t non_sort = oldcount; if ((flags & GLOB_DOOFFS) && pglob->gl_offs > oldcount) non_sort = pglob->gl_offs; - qsort ((__ptr_t) &pglob->gl_pathv[non_sort], + qsort ((void *) &pglob->gl_pathv[non_sort], pglob->gl_pathc - non_sort, sizeof (char *), collated_compare); } @@ -1072,25 +972,22 @@ glob (pattern, flags, errfunc, pglob) /* Free storage allocated in PGLOB by a previous `glob' call. */ void -globfree (pglob) - register glob_t *pglob; +globfree (glob_t *pglob) { if (pglob->gl_pathv != NULL) { - register size_t i; + size_t i; for (i = 0; i < pglob->gl_pathc; ++i) if (pglob->gl_pathv[i] != NULL) - free ((__ptr_t) pglob->gl_pathv[i]); - free ((__ptr_t) pglob->gl_pathv); + free (pglob->gl_pathv[i]); + free (pglob->gl_pathv); } } /* Do a collated comparison of A and B. */ static int -collated_compare (a, b) - const __ptr_t a; - const __ptr_t b; +collated_compare (const void *a, const void *b) { const char *const s1 = *(const char *const * const) a; const char *const s2 = *(const char *const * const) b; @@ -1110,15 +1007,12 @@ collated_compare (a, b) A slash is inserted between DIRNAME and each elt of ARRAY, unless DIRNAME is just "/". Each old element of ARRAY is freed. */ static int -prefix_array (dirname, array, n) - const char *dirname; - char **array; - size_t n; +prefix_array (const char *dirname, char **array, size_t n) { - register size_t i; + size_t i; size_t dirlen = strlen (dirname); #if defined __MSDOS__ || defined WINDOWS32 - int sep_char = '/'; + char sep_char = '/'; # define DIRSEP_CHAR sep_char #else # define DIRSEP_CHAR '/' @@ -1150,7 +1044,7 @@ prefix_array (dirname, array, n) if (new == NULL) { while (i > 0) - free ((__ptr_t) array[--i]); + free (array[--i]); return 1; } @@ -1165,7 +1059,7 @@ prefix_array (dirname, array, n) new[dirlen] = DIRSEP_CHAR; memcpy (&new[dirlen + 1], array[i], eltlen); #endif - free ((__ptr_t) array[i]); + free (array[i]); array[i] = new; } @@ -1174,15 +1068,13 @@ prefix_array (dirname, array, n) /* We must not compile this function twice. */ -#if !defined _LIBC || !defined NO_GLOB_PATTERN_P +#if !defined NO_GLOB_PATTERN_P /* Return nonzero if PATTERN contains any metacharacters. Metacharacters can be quoted with backslashes if QUOTE is nonzero. */ int -__glob_pattern_p (pattern, quote) - const char *pattern; - int quote; +__glob_pattern_p (const char *pattern, int quote) { - register const char *p; + const char *p; int open = 0; for (p = pattern; *p != '\0'; ++p) @@ -1209,9 +1101,6 @@ __glob_pattern_p (pattern, quote) return 0; } -# ifdef _LIBC -weak_alias (__glob_pattern_p, glob_pattern_p) -# endif #endif @@ -1220,14 +1109,10 @@ weak_alias (__glob_pattern_p, glob_pattern_p) The GLOB_NOSORT bit in FLAGS is ignored. No sorting is ever done. The GLOB_APPEND flag is assumed to be set (always appends). */ static int -glob_in_dir (pattern, directory, flags, errfunc, pglob) - const char *pattern; - const char *directory; - int flags; - int (*errfunc) __P ((const char *, int)); - glob_t *pglob; +glob_in_dir (const char *pattern, const char *directory, int flags, + int (*errfunc) (const char *, int), glob_t *pglob) { - __ptr_t stream = NULL; + void *stream = NULL; struct globlink { @@ -1271,7 +1156,7 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob) # endif if (((flags & GLOB_ALTDIRFUNC) ? (*pglob->gl_stat) (fullname, &st) - : __stat (fullname, &st)) == 0) + : stat (fullname, &st)) == 0) /* We found this file to be existing. Now tell the rest of the function to copy this name into the result. */ flags |= GLOB_NOCHECK; @@ -1298,7 +1183,7 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob) { stream = ((flags & GLOB_ALTDIRFUNC) ? (*pglob->gl_opendir) (directory) - : (__ptr_t) opendir (directory)); + : (void *) opendir (directory)); if (stream == NULL) { if (errno != ENOTDIR @@ -1350,10 +1235,9 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob) if (new->name == NULL) goto memory_error; #ifdef HAVE_MEMPCPY - *((char *) mempcpy ((__ptr_t) new->name, name, len)) - = '\0'; + *((char *) mempcpy (new->name, name, len)) = '\0'; #else - memcpy ((__ptr_t) new->name, name, len); + memcpy (new->name, name, len); new->name[len] = '\0'; #endif new->next = names; @@ -1428,7 +1312,7 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob) while (names != NULL) { if (names->name != NULL) - free ((__ptr_t) names->name); + free (names->name); names = names->next; } return GLOB_NOSPACE; diff --git a/lib/glob.in.h b/lib/glob.in.h index 0992de3..5633d8b 100644 --- a/lib/glob.in.h +++ b/lib/glob.in.h @@ -1,5 +1,5 @@ -/* Copyright (C) 1991, 1992, 1995, 1996, 1997, 1998 Free Software Foundation, -Inc. +/* Copyright (C) 1991, 1992, 1995, 1996, 1997, 1998, 2023 Free Software +Foundation, Inc. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -19,60 +19,12 @@ USA. */ #ifndef _GLOB_H #define _GLOB_H 1 +#include + #ifdef __cplusplus extern "C" { #endif -#undef __ptr_t -#if defined __cplusplus || (defined __STDC__ && __STDC__) || defined WINDOWS32 -# if !defined __GLIBC__ -# undef __P -# undef __PMT -# define __P(protos) protos -# define __PMT(protos) protos -# if !defined __GNUC__ || __GNUC__ < 2 -# undef __const -# define __const const -# endif -# endif -# define __ptr_t void * -#else /* Not C++ or ANSI C. */ -# undef __P -# undef __PMT -# define __P(protos) () -# define __PMT(protos) () -# undef __const -# define __const -# define __ptr_t char * -#endif /* C++ or ANSI C. */ - -/* We need `size_t' for the following definitions. */ -#ifndef __size_t -# if defined __FreeBSD__ -# define __size_t size_t -# else -# if defined __GNUC__ && __GNUC__ >= 2 -typedef __SIZE_TYPE__ __size_t; -# else -/* This is a guess. */ -/*hb - * Conflicts with DECCs already defined type __size_t. - * Defining an own type with a name beginning with '__' is no good. - * Anyway if DECC is used and __SIZE_T is defined then __size_t is - * already defined (and I hope it's exactly the one we need here). - */ -# if !(defined __DECC && defined __SIZE_T) -typedef unsigned long int __size_t; -# endif -# endif -# endif -#else -/* The GNU CC stddef.h version defines __size_t as empty. We need a real - definition. */ -# undef __size_t -# define __size_t size_t -#endif - /* Bits set in the FLAGS argument to `glob'. */ #define GLOB_ERR (1 << 0)/* Return on read errors. */ #define GLOB_MARK (1 << 1)/* Append a slash to each name. */ @@ -120,21 +72,21 @@ struct stat; #endif typedef struct { - __size_t gl_pathc; /* Count of paths matched by the pattern. */ + size_t gl_pathc; /* Count of paths matched by the pattern. */ char **gl_pathv; /* List of matched pathnames. */ - __size_t gl_offs; /* Slots to reserve in `gl_pathv'. */ + size_t gl_offs; /* Slots to reserve in `gl_pathv'. */ int gl_flags; /* Set to FLAGS, maybe | GLOB_MAGCHAR. */ /* If the GLOB_ALTDIRFUNC flag is set, the following functions are used instead of the normal file access functions. */ - void (*gl_closedir) __PMT ((void *)); - struct dirent *(*gl_readdir) __PMT ((void *)); - __ptr_t (*gl_opendir) __PMT ((__const char *)); - int (*gl_lstat) __PMT ((__const char *, struct stat *)); + void (*gl_closedir) (void *); + struct dirent *(*gl_readdir) (void *); + void * (*gl_opendir) (const char *); + int (*gl_lstat) (const char *, struct stat *); #if defined(VMS) && defined(__DECC) && !defined(_POSIX_C_SOURCE) - int (*gl_stat) __PMT ((__const char *, struct stat *, ...)); + int (*gl_stat) (const char *, struct stat *, ...); #else - int (*gl_stat) __PMT ((__const char *, struct stat *)); + int (*gl_stat) (const char *, struct stat *); #endif } glob_t; @@ -142,18 +94,18 @@ typedef struct struct stat64; typedef struct { - __size_t gl_pathc; + size_t gl_pathc; char **gl_pathv; - __size_t gl_offs; + size_t gl_offs; int gl_flags; /* If the GLOB_ALTDIRFUNC flag is set, the following functions are used instead of the normal file access functions. */ - void (*gl_closedir) __PMT ((void *)); - struct dirent64 *(*gl_readdir) __PMT ((void *)); - __ptr_t (*gl_opendir) __PMT ((__const char *)); - int (*gl_lstat) __PMT ((__const char *, struct stat64 *)); - int (*gl_stat) __PMT ((__const char *, struct stat64 *)); + void (*gl_closedir) (void *); + struct dirent64 *(*gl_readdir) (void *); + void * (*gl_opendir) (const char *); + int (*gl_lstat) (const char *, struct stat64 *); + int (*gl_stat) (const char *, struct stat64 *); } glob64_t; #endif @@ -162,11 +114,11 @@ typedef struct # define globfree globfree64 #else # ifdef _LARGEFILE64_SOURCE -extern int glob64 __P ((__const char *__pattern, int __flags, - int (*__errfunc) (__const char *, int), - glob64_t *__pglob)); +extern int glob64 (const char *pattern, int flags, + int (*errfunc) (const char *, int), + glob64_t *pglob); -extern void globfree64 __P ((glob64_t *__pglob)); +extern void globfree64 (glob64_t *pglob); # endif #endif @@ -179,18 +131,18 @@ extern void globfree64 __P ((glob64_t *__pglob)); If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned. Otherwise, `glob' returns zero. */ #if _FILE_OFFSET_BITS != 64 || __GNUC__ < 2 -extern int glob __P ((__const char *__pattern, int __flags, - int (*__errfunc) (__const char *, int), - glob_t *__pglob)); +extern int glob (const char *pattern, int flags, + int (*errfunc) (const char *, int), + glob_t *pglob); /* Free storage allocated in PGLOB by a previous `glob' call. */ -extern void globfree __P ((glob_t *__pglob)); +extern void globfree (glob_t *pglob); #else -extern int glob __P ((__const char *__pattern, int __flags, - int (*__errfunc) (__const char *, int), - glob_t *__pglob)) __asm__ ("glob64"); +extern int glob (const char *pattern, int flags, + int (*errfunc) (const char *, int), + glob_t *pglob) __asm__ ("glob64"); -extern void globfree __P ((glob_t *__pglob)) __asm__ ("globfree64"); +extern void globfree (glob_t *pglob) __asm__ ("globfree64"); #endif @@ -200,7 +152,7 @@ extern void globfree __P ((glob_t *__pglob)) __asm__ ("globfree64"); This function is not part of the interface specified by POSIX.2 but several programs want to use it. */ -extern int glob_pattern_p __P ((__const char *__pattern, int __quote)); +extern int glob_pattern_p (const char *pattern, int quote); #endif #ifdef __cplusplus diff --git a/lib/intprops-internal.h b/lib/intprops-internal.h new file mode 100644 index 0000000..0467a9c --- /dev/null +++ b/lib/intprops-internal.h @@ -0,0 +1,392 @@ +/* intprops-internal.h -- properties of integer types not visible to users + + Copyright (C) 2001-2023 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 + 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, + 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 . */ + +#ifndef _GL_INTPROPS_INTERNAL_H +#define _GL_INTPROPS_INTERNAL_H + +#include + +/* Return a value with the common real type of E and V and the value of V. + Do not evaluate E. */ +#define _GL_INT_CONVERT(e, v) ((1 ? 0 : (e)) + (v)) + +/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see + . */ +#define _GL_INT_NEGATE_CONVERT(e, v) ((1 ? 0 : (e)) - (v)) + +/* The extra casts in the following macros work around compiler bugs, + e.g., in Cray C 5.0.3.0. */ + +/* True if the real type T is signed. */ +#define _GL_TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) + +/* Return 1 if the real expression E, after promotion, has a + signed or floating type. Do not evaluate E. */ +#define _GL_EXPR_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) + + +/* Minimum and maximum values for integer types and expressions. */ + +/* The width in bits of the integer type or expression 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 _GL_TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) + +/* The maximum and minimum values for the type of the expression E, + after integer promotion. E is not evaluated. */ +#define _GL_INT_MINIMUM(e) \ + (_GL_EXPR_SIGNED (e) \ + ? ~ _GL_SIGNED_INT_MAXIMUM (e) \ + : _GL_INT_CONVERT (e, 0)) +#define _GL_INT_MAXIMUM(e) \ + (_GL_EXPR_SIGNED (e) \ + ? _GL_SIGNED_INT_MAXIMUM (e) \ + : _GL_INT_NEGATE_CONVERT (e, 1)) +#define _GL_SIGNED_INT_MAXIMUM(e) \ + (((_GL_INT_CONVERT (e, 1) << (_GL_TYPE_WIDTH (+ (e)) - 2)) - 1) * 2 + 1) + +/* Work around OpenVMS incompatibility with C99. */ +#if !defined LLONG_MAX && defined __INT64_MAX +# define LLONG_MAX __INT64_MAX +# define LLONG_MIN __INT64_MIN +#endif + +/* This include file assumes that signed types are two's complement without + padding bits; the above macros have undefined behavior otherwise. + If this is a problem for you, please let us know how to fix it for your host. + This assumption is tested by the intprops-tests module. */ + +/* 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 +#else +# define _GL_HAVE___TYPEOF__ 0 +#endif + +/* Return 1 if the integer type or expression T might be signed. Return 0 + 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) _GL_TYPE_SIGNED (__typeof__ (t)) +#else +# define _GL_SIGNED_TYPE_OR_EXPR(t) 1 +#endif + +/* Return 1 if - A would overflow in [MIN,MAX] arithmetic. + A should not have side effects, and A's type should be an + integer with minimum value MIN and maximum MAX. */ +#define _GL_INT_NEGATE_RANGE_OVERFLOW(a, min, max) \ + ((min) < 0 ? (a) < - (max) : 0 < (a)) + +/* True if __builtin_add_overflow (A, B, P) and __builtin_sub_overflow + (A, B, P) work when P is non-null. */ +#ifdef __EDG__ +/* EDG-based compilers like nvc 22.1 cannot add 64-bit signed to unsigned + . */ +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 +#elif defined __has_builtin +# define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow) +/* __builtin_{add,sub}_overflow exists but is not reliable in GCC 5.x and 6.x, + see . */ +#elif 7 <= __GNUC__ +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 1 +#else +# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 +#endif + +/* True if __builtin_mul_overflow (A, B, P) works when P is non-null. */ +#if defined __clang_major__ && __clang_major__ < 14 +/* Work around Clang bug . */ +# define _GL_HAS_BUILTIN_MUL_OVERFLOW 0 +#else +# define _GL_HAS_BUILTIN_MUL_OVERFLOW _GL_HAS_BUILTIN_ADD_OVERFLOW +#endif + +/* True if __builtin_add_overflow_p (A, B, C) works, and similarly for + __builtin_sub_overflow_p and __builtin_mul_overflow_p. */ +#ifdef __EDG__ +/* In EDG-based compilers like ICC 2021.3 and earlier, + __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 + +#if (!defined _GL_STDCKDINT_H && 202311 <= __STDC_VERSION__ \ + && ! (_GL_HAS_BUILTIN_ADD_OVERFLOW && _GL_HAS_BUILTIN_MUL_OVERFLOW)) +# include +#endif + +/* Store the low-order bits of A + B, A - B, A * B, respectively, into *R. + Return 1 if the result overflows. Arguments should not have side + effects and A, B and *R can be of any integer type other than char, + bool, a bit-precise integer type, or an enumeration type. */ +#if _GL_HAS_BUILTIN_ADD_OVERFLOW +# define _GL_INT_ADD_WRAPV(a, b, r) __builtin_add_overflow (a, b, r) +# define _GL_INT_SUBTRACT_WRAPV(a, b, r) __builtin_sub_overflow (a, b, r) +#elif defined ckd_add && defined ckd_sub && !defined _GL_STDCKDINT_H +# define _GL_INT_ADD_WRAPV(a, b, r) ckd_add (r, + (a), + (b)) +# define _GL_INT_SUBTRACT_WRAPV(a, b, r) ckd_sub (r, + (a), + (b)) +#else +# define _GL_INT_ADD_WRAPV(a, b, r) \ + _GL_INT_OP_WRAPV (a, b, r, +, _GL_INT_ADD_RANGE_OVERFLOW) +# define _GL_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 __EDG__) +# define _GL_INT_MULTIPLY_WRAPV(a, b, r) __builtin_mul_overflow (a, b, r) +# else + /* Work around GCC bug 91450. */ +# define _GL_INT_MULTIPLY_WRAPV(a, b, r) \ + ((!_GL_SIGNED_TYPE_OR_EXPR (*(r)) && _GL_EXPR_SIGNED (a) && _GL_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 +#elif defined ckd_mul && !defined _GL_STDCKDINT_H +# define _GL_INT_MULTIPLY_WRAPV(a, b, r) ckd_mul (r, + (a), + (b)) +#else +# define _GL_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 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 and OVERFLOW the overflow predicate. Return 1 if the + result overflows. Arguments should not have side effects, + and A, B and *R can be of any integer type other than char, bool, a + bit-precise integer type, or an enumeration type. */ +#if 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS +# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \ + (_Generic \ + (*(r), \ + signed char: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + signed char, SCHAR_MIN, SCHAR_MAX), \ + unsigned char: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned char, 0, UCHAR_MAX), \ + short int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + short int, SHRT_MIN, SHRT_MAX), \ + unsigned short int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned short int, 0, USHRT_MAX), \ + int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + int, INT_MIN, INT_MAX), \ + unsigned int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned int, 0, UINT_MAX), \ + long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX), \ + unsigned long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + unsigned long int, 0, ULONG_MAX), \ + long long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + long long int, LLONG_MIN, LLONG_MAX), \ + unsigned long long int: \ + _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + unsigned long long int, 0, ULLONG_MAX))) +#else +/* Store the low-order bits of A B into *R, where OP specifies + the operation and OVERFLOW the overflow predicate. If *R is + signed, its type is ST with bounds SMIN..SMAX; otherwise its type + is UT with bounds U..UMAX. ST and UT are narrower than int. + Return 1 if the result overflows. Arguments should not have side + effects, and A, B and *R can be of any integer type other than + char, bool, a bit-precise integer type, or an enumeration type. */ +# if _GL_HAVE___TYPEOF__ +# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ + (_GL_TYPE_SIGNED (__typeof__ (*(r))) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, st, smin, smax) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, ut, 0, umax)) +# else +# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ + (overflow (a, b, smin, smax) \ + ? (overflow (a, b, 0, umax) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 1) \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) < 0) \ + : (overflow (a, b, 0, umax) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) >= 0 \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 0))) +# endif + +# 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, \ + unsigned char, UCHAR_MAX) \ + : sizeof *(r) == sizeof (short int) \ + ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ + short int, SHRT_MIN, SHRT_MAX, \ + unsigned short int, USHRT_MAX) \ + : sizeof *(r) == sizeof (int) \ + ? (_GL_EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + int, INT_MIN, INT_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ + unsigned int, 0, UINT_MAX)) \ + : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow)) +# ifdef LLONG_MAX +# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + (sizeof *(r) == sizeof (long int) \ + ? (_GL_EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + unsigned long int, 0, ULONG_MAX)) \ + : (_GL_EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + long long int, LLONG_MIN, LLONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ + unsigned long long int, 0, ULLONG_MAX))) +# else +# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ + (_GL_EXPR_SIGNED (*(r)) \ + ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + long int, LONG_MIN, LONG_MAX) \ + : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ + unsigned long int, 0, ULONG_MAX)) +# endif +#endif + +/* Store the low-order bits of A B into *R, where the operation + is given by OP. Use the unsigned type UT for calculation to avoid + overflow problems. *R's type is T, with extrema TMIN and TMAX. + T can be any signed integer type other than char, bool, a + bit-precise integer type, or an enumeration type. + Return 1 if the result overflows. */ +#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \ + (overflow (a, b, tmin, tmax) \ + ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 1) \ + : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 0)) + +/* Return 1 if the integer expressions A - B and -A would overflow, + respectively. Arguments should not have side effects, + and can be any signed integer type other than char, bool, a + bit-precise integer type, or an enumeration type. + These macros are tuned for their last input argument being a constant. */ + +#if _GL_HAS_BUILTIN_OVERFLOW_P +# define _GL_INT_NEGATE_OVERFLOW(a) \ + __builtin_sub_overflow_p (0, a, (__typeof__ (- (a))) 0) +#else +# define _GL_INT_NEGATE_OVERFLOW(a) \ + _GL_INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) +#endif + +/* Return the low-order bits of A B, where the operation is given + by OP. Use the unsigned type UT for calculation to avoid undefined + behavior on signed integer overflow, and convert the result to type T. + UT is at least as wide as T and is no narrower than unsigned int, + T is two's complement, and there is no padding or trap representations. + Assume that converting UT to T yields the low-order bits, as is + done in all known two's-complement C compilers. E.g., see: + https://gcc.gnu.org/onlinedocs/gcc/Integers-implementation.html + + According to the C standard, converting UT to T yields an + implementation-defined result or signal for values outside T's + range. However, code that works around this theoretical problem + runs afoul of a compiler bug in Oracle Studio 12.3 x86. See: + https://lists.gnu.org/r/bug-gnulib/2017-04/msg00049.html + As the compiler bug is real, don't try to work around the + theoretical problem. */ + +#define _GL_INT_OP_WRAPV_VIA_UNSIGNED(a, b, op, ut, t) \ + ((t) ((ut) (a) op (ut) (b))) + +/* Return true if the numeric values A + B, A - B, A * B fall outside + the range TMIN..TMAX. Arguments should not have side effects + and can be any integer type other than char, bool, + a bit-precise integer type, or an enumeration type. + TMIN should be signed and nonpositive. + TMAX should be positive, and should be signed unless TMIN is zero. */ +#define _GL_INT_ADD_RANGE_OVERFLOW(a, b, tmin, tmax) \ + ((b) < 0 \ + ? (((tmin) \ + ? ((_GL_EXPR_SIGNED (_GL_INT_CONVERT (a, (tmin) - (b))) || (b) < (tmin)) \ + && (a) < (tmin) - (b)) \ + : (a) <= -1 - (b)) \ + || ((_GL_EXPR_SIGNED (a) ? 0 <= (a) : (tmax) < (a)) && (tmax) < (a) + (b))) \ + : (a) < 0 \ + ? (((tmin) \ + ? ((_GL_EXPR_SIGNED (_GL_INT_CONVERT (b, (tmin) - (a))) || (a) < (tmin)) \ + && (b) < (tmin) - (a)) \ + : (b) <= -1 - (a)) \ + || ((_GL_EXPR_SIGNED (_GL_INT_CONVERT (a, b)) || (tmax) < (b)) \ + && (tmax) < (a) + (b))) \ + : (tmax) < (b) || (tmax) - (b) < (a)) +#define _GL_INT_SUBTRACT_RANGE_OVERFLOW(a, b, tmin, tmax) \ + (((a) < 0) == ((b) < 0) \ + ? ((a) < (b) \ + ? !(tmin) || -1 - (tmin) < (b) - (a) - 1 \ + : (tmax) < (a) - (b)) \ + : (a) < 0 \ + ? ((!_GL_EXPR_SIGNED (_GL_INT_CONVERT ((a) - (tmin), b)) && (a) - (tmin) < 0) \ + || (a) - (tmin) < (b)) \ + : ((! (_GL_EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ + && _GL_EXPR_SIGNED (_GL_INT_CONVERT ((tmax) + (b), a))) \ + && (tmax) <= -1 - (b)) \ + || (tmax) + (b) < (a))) +#define _GL_INT_MULTIPLY_RANGE_OVERFLOW(a, b, tmin, tmax) \ + ((b) < 0 \ + ? ((a) < 0 \ + ? (_GL_EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ + ? (a) < (tmax) / (b) \ + : ((_GL_INT_NEGATE_OVERFLOW (b) \ + ? _GL_INT_CONVERT (b, tmax) >> (_GL_TYPE_WIDTH (+ (b)) - 1) \ + : (tmax) / -(b)) \ + <= -1 - (a))) \ + : _GL_INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (b, tmin)) && (b) == -1 \ + ? (_GL_EXPR_SIGNED (a) \ + ? 0 < (a) + (tmin) \ + : 0 < (a) && -1 - (tmin) < (a) - 1) \ + : (tmin) / (b) < (a)) \ + : (b) == 0 \ + ? 0 \ + : ((a) < 0 \ + ? (_GL_INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (a, tmin)) && (a) == -1 \ + ? (_GL_EXPR_SIGNED (b) ? 0 < (b) + (tmin) : -1 - (tmin) < (b) - 1) \ + : (tmin) / (a) < (b)) \ + : (tmax) / (b) < (a))) + +#endif /* _GL_INTPROPS_INTERNAL_H */ diff --git a/lib/intprops.h b/lib/intprops.h index d4a917f..44b5e60 100644 --- a/lib/intprops.h +++ b/lib/intprops.h @@ -1,6 +1,6 @@ /* intprops.h -- properties of integer types - Copyright (C) 2001-2022 Free Software Foundation, Inc. + Copyright (C) 2001-2023 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,19 +15,10 @@ You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ - #ifndef _GL_INTPROPS_H #define _GL_INTPROPS_H -#include - -/* Return a value with the common real type of E and V and the value of V. - Do not evaluate E. */ -#define _GL_INT_CONVERT(e, v) ((1 ? 0 : (e)) + (v)) - -/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see - . */ -#define _GL_INT_NEGATE_CONVERT(e, v) ((1 ? 0 : (e)) - (v)) +#include "intprops-internal.h" /* The extra casts in the following macros work around compiler bugs, e.g., in Cray C 5.0.3.0. */ @@ -37,11 +28,11 @@ #define TYPE_IS_INTEGER(t) ((t) 1.5 == 1) /* True if the real type T is signed. */ -#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) +#define TYPE_SIGNED(t) _GL_TYPE_SIGNED (t) /* Return 1 if the real expression E, after promotion, has a signed or floating type. Do not evaluate E. */ -#define EXPR_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0) +#define EXPR_SIGNED(e) _GL_EXPR_SIGNED (e) /* Minimum and maximum values for integer types and expressions. */ @@ -49,7 +40,7 @@ /* The width in bits of the integer type or expression 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) +#define TYPE_WIDTH(t) _GL_TYPE_WIDTH (t) /* The maximum and minimum values for the integer type T. */ #define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t)) @@ -58,51 +49,6 @@ ? (t) -1 \ : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1))) -/* The maximum and minimum values for the type of the expression E, - after integer promotion. E is not evaluated. */ -#define _GL_INT_MINIMUM(e) \ - (EXPR_SIGNED (e) \ - ? ~ _GL_SIGNED_INT_MAXIMUM (e) \ - : _GL_INT_CONVERT (e, 0)) -#define _GL_INT_MAXIMUM(e) \ - (EXPR_SIGNED (e) \ - ? _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)) - 2)) - 1) * 2 + 1) - -/* Work around OpenVMS incompatibility with C99. */ -#if !defined LLONG_MAX && defined __INT64_MAX -# define LLONG_MAX __INT64_MAX -# define LLONG_MIN __INT64_MIN -#endif - -/* This include file assumes that signed types are two's complement without - padding bits; the above macros have undefined behavior otherwise. - If this is a problem for you, please let us know how to fix it for your host. - This assumption is tested by the intprops-tests module. */ - -/* 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 -#else -# define _GL_HAVE___TYPEOF__ 0 -#endif - -/* Return 1 if the integer type or expression T might be signed. Return 0 - 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 -# define _GL_SIGNED_TYPE_OR_EXPR(t) 1 -#endif - /* Bound on length of the string representing an unsigned integer value representable in B bits. log10 (2.0) < 146/485. The smallest value of B where this bound is not tight is 2621. */ @@ -129,12 +75,11 @@ /* Range overflow checks. The INT__RANGE_OVERFLOW macros return 1 if the corresponding C - 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 harder to use and may be less - efficient than the INT__WRAPV, INT__OK, and - INT__OVERFLOW macros described below. + operators overflow arithmetically when given the same arguments. + These macros do not rely on undefined or implementation-defined behavior. + Although their implementations are simple and straightforward, + they are harder to use and may be less efficient than the + INT__WRAPV, INT__OK, and INT__OVERFLOW macros described below. Example usage: @@ -181,9 +126,7 @@ /* Return 1 if - A would overflow in [MIN,MAX] arithmetic. See above for restrictions. */ #define INT_NEGATE_RANGE_OVERFLOW(a, min, max) \ - ((min) < 0 \ - ? (a) < - (max) \ - : 0 < (a)) + _GL_INT_NEGATE_RANGE_OVERFLOW (a, min, max) /* Return 1 if A * B would overflow in [MIN,MAX] arithmetic. See above for restrictions. Avoid && and || as they tickle @@ -227,43 +170,6 @@ ? (a) < (min) >> (b) \ : (max) >> (b) < (a)) -/* True if __builtin_add_overflow (A, B, P) and __builtin_sub_overflow - (A, B, P) work when P is non-null. */ -#ifdef __EDG__ -/* EDG-based compilers like nvc 22.1 cannot add 64-bit signed to unsigned - . */ -# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 -#elif defined __has_builtin -# define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow) -/* __builtin_{add,sub}_overflow exists but is not reliable in GCC 5.x and 6.x, - see . */ -#elif 7 <= __GNUC__ -# define _GL_HAS_BUILTIN_ADD_OVERFLOW 1 -#else -# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 -#endif - -/* True if __builtin_mul_overflow (A, B, P) works when P is non-null. */ -#if defined __clang_major__ && __clang_major__ < 14 -/* Work around Clang bug . */ -# define _GL_HAS_BUILTIN_MUL_OVERFLOW 0 -#else -# define _GL_HAS_BUILTIN_MUL_OVERFLOW _GL_HAS_BUILTIN_ADD_OVERFLOW -#endif - -/* True if __builtin_add_overflow_p (A, B, C) works, and similarly for - __builtin_sub_overflow_p and __builtin_mul_overflow_p. */ -#ifdef __EDG__ -/* In EDG-based compilers like ICC 2021.3 and earlier, - __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 (e.g., A and B) have the same type as MIN and MAX. Instead, they assume @@ -350,13 +256,18 @@ 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) + 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 + 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. + A, B, and *R should be integers; they need not be the same type, + and they need not be all signed or all unsigned. + However, none of the integer types should be bit-precise, + and *R's type should not be char, bool, or an enumeration type. + Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B, A % B, and A << B would overflow, respectively. */ @@ -364,12 +275,7 @@ _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW) #define INT_SUBTRACT_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW) -#if _GL_HAS_BUILTIN_OVERFLOW_P -# define INT_NEGATE_OVERFLOW(a) INT_SUBTRACT_OVERFLOW (0, a) -#else -# define INT_NEGATE_OVERFLOW(a) \ - INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a)) -#endif +#define INT_NEGATE_OVERFLOW(a) _GL_INT_NEGATE_OVERFLOW (a) #define INT_MULTIPLY_OVERFLOW(a, b) \ _GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW) #define INT_DIVIDE_OVERFLOW(a, b) \ @@ -391,224 +297,9 @@ /* 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. */ -#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 __EDG__) -# 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 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 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: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - signed char, SCHAR_MIN, SCHAR_MAX), \ - unsigned char: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - unsigned char, 0, UCHAR_MAX), \ - short int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - short int, SHRT_MIN, SHRT_MAX), \ - unsigned short int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - unsigned short int, 0, USHRT_MAX), \ - int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - int, INT_MIN, INT_MAX), \ - unsigned int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - unsigned int, 0, UINT_MAX), \ - long int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - long int, LONG_MIN, LONG_MAX), \ - unsigned long int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - unsigned long int, 0, ULONG_MAX), \ - long long int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ - long long int, LLONG_MIN, LLONG_MAX), \ - unsigned long long int: \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ - unsigned long long int, 0, ULLONG_MAX))) -#else -/* Store the low-order bits of A B into *R, where OP specifies - the operation and OVERFLOW the overflow predicate. If *R is - signed, its type is ST with bounds SMIN..SMAX; otherwise its type - is UT with bounds U..UMAX. ST and UT are narrower than int. - Return 1 if the result overflows. See above for restrictions. */ -# if _GL_HAVE___TYPEOF__ -# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ - (TYPE_SIGNED (__typeof__ (*(r))) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, st, smin, smax) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, ut, 0, umax)) -# else -# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \ - (overflow (a, b, smin, smax) \ - ? (overflow (a, b, 0, umax) \ - ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 1) \ - : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) < 0) \ - : (overflow (a, b, 0, umax) \ - ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) >= 0 \ - : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 0))) -# endif - -# 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, \ - unsigned char, UCHAR_MAX) \ - : sizeof *(r) == sizeof (short int) \ - ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \ - short int, SHRT_MIN, SHRT_MAX, \ - unsigned short int, USHRT_MAX) \ - : sizeof *(r) == sizeof (int) \ - ? (EXPR_SIGNED (*(r)) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - int, INT_MIN, INT_MAX) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \ - unsigned int, 0, UINT_MAX)) \ - : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow)) -# ifdef LLONG_MAX -# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ - (sizeof *(r) == sizeof (long int) \ - ? (EXPR_SIGNED (*(r)) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - long int, LONG_MIN, LONG_MAX) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - unsigned long int, 0, ULONG_MAX)) \ - : (EXPR_SIGNED (*(r)) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ - long long int, LLONG_MIN, LLONG_MAX) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \ - unsigned long long int, 0, ULLONG_MAX))) -# else -# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ - (EXPR_SIGNED (*(r)) \ - ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - long int, LONG_MIN, LONG_MAX) \ - : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ - unsigned long int, 0, ULONG_MAX)) -# endif -#endif - -/* Store the low-order bits of A B into *R, where the operation - is given by OP. Use the unsigned type UT for calculation to avoid - overflow problems. *R's type is T, with extrema TMIN and TMAX. - T must be a signed integer type. Return 1 if the result overflows. */ -#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \ - (overflow (a, b, tmin, tmax) \ - ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 1) \ - : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 0)) - -/* Return the low-order bits of A B, where the operation is given - by OP. Use the unsigned type UT for calculation to avoid undefined - behavior on signed integer overflow, and convert the result to type T. - UT is at least as wide as T and is no narrower than unsigned int, - T is two's complement, and there is no padding or trap representations. - Assume that converting UT to T yields the low-order bits, as is - done in all known two's-complement C compilers. E.g., see: - https://gcc.gnu.org/onlinedocs/gcc/Integers-implementation.html - - According to the C standard, converting UT to T yields an - implementation-defined result or signal for values outside T's - range. However, code that works around this theoretical problem - runs afoul of a compiler bug in Oracle Studio 12.3 x86. See: - https://lists.gnu.org/r/bug-gnulib/2017-04/msg00049.html - As the compiler bug is real, don't try to work around the - theoretical problem. */ - -#define _GL_INT_OP_WRAPV_VIA_UNSIGNED(a, b, op, ut, t) \ - ((t) ((ut) (a) op (ut) (b))) - -/* Return true if the numeric values A + B, A - B, A * B fall outside - the range TMIN..TMAX. Arguments should be integer expressions - without side effects. TMIN should be signed and nonpositive. - TMAX should be positive, and should be signed unless TMIN is zero. */ -#define _GL_INT_ADD_RANGE_OVERFLOW(a, b, tmin, tmax) \ - ((b) < 0 \ - ? (((tmin) \ - ? ((EXPR_SIGNED (_GL_INT_CONVERT (a, (tmin) - (b))) || (b) < (tmin)) \ - && (a) < (tmin) - (b)) \ - : (a) <= -1 - (b)) \ - || ((EXPR_SIGNED (a) ? 0 <= (a) : (tmax) < (a)) && (tmax) < (a) + (b))) \ - : (a) < 0 \ - ? (((tmin) \ - ? ((EXPR_SIGNED (_GL_INT_CONVERT (b, (tmin) - (a))) || (a) < (tmin)) \ - && (b) < (tmin) - (a)) \ - : (b) <= -1 - (a)) \ - || ((EXPR_SIGNED (_GL_INT_CONVERT (a, b)) || (tmax) < (b)) \ - && (tmax) < (a) + (b))) \ - : (tmax) < (b) || (tmax) - (b) < (a)) -#define _GL_INT_SUBTRACT_RANGE_OVERFLOW(a, b, tmin, tmax) \ - (((a) < 0) == ((b) < 0) \ - ? ((a) < (b) \ - ? !(tmin) || -1 - (tmin) < (b) - (a) - 1 \ - : (tmax) < (a) - (b)) \ - : (a) < 0 \ - ? ((!EXPR_SIGNED (_GL_INT_CONVERT ((a) - (tmin), b)) && (a) - (tmin) < 0) \ - || (a) - (tmin) < (b)) \ - : ((! (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ - && EXPR_SIGNED (_GL_INT_CONVERT ((tmax) + (b), a))) \ - && (tmax) <= -1 - (b)) \ - || (tmax) + (b) < (a))) -#define _GL_INT_MULTIPLY_RANGE_OVERFLOW(a, b, tmin, tmax) \ - ((b) < 0 \ - ? ((a) < 0 \ - ? (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \ - ? (a) < (tmax) / (b) \ - : ((INT_NEGATE_OVERFLOW (b) \ - ? _GL_INT_CONVERT (b, tmax) >> (TYPE_WIDTH (+ (b)) - 1) \ - : (tmax) / -(b)) \ - <= -1 - (a))) \ - : INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (b, tmin)) && (b) == -1 \ - ? (EXPR_SIGNED (a) \ - ? 0 < (a) + (tmin) \ - : 0 < (a) && -1 - (tmin) < (a) - 1) \ - : (tmin) / (b) < (a)) \ - : (b) == 0 \ - ? 0 \ - : ((a) < 0 \ - ? (INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (a, tmin)) && (a) == -1 \ - ? (EXPR_SIGNED (b) ? 0 < (b) + (tmin) : -1 - (tmin) < (b) - 1) \ - : (tmin) / (a) < (b)) \ - : (tmax) / (b) < (a))) +#define INT_ADD_WRAPV(a, b, r) _GL_INT_ADD_WRAPV (a, b, r) +#define INT_SUBTRACT_WRAPV(a, b, r) _GL_INT_SUBTRACT_WRAPV (a, b, r) +#define INT_MULTIPLY_WRAPV(a, b, r) _GL_INT_MULTIPLY_WRAPV (a, b, r) /* 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; @@ -624,6 +315,8 @@ A, B, and *R should be integers; they need not be the same type, and they need not be all signed or all unsigned. + However, none of the integer types should be bit-precise, + and *R's type should not be char, bool, or an enumeration type. These macros work correctly on all known practical hosts, and do not rely on undefined behavior due to signed arithmetic overflow. @@ -635,8 +328,8 @@ 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) +#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 --git a/lib/stdbool.in.h b/lib/stdbool.in.h deleted file mode 100644 index 125de5a..0000000 --- a/lib/stdbool.in.h +++ /dev/null @@ -1,143 +0,0 @@ -/* Copyright (C) 2001-2003, 2006-2022 Free Software Foundation, Inc. - Written by Bruno Haible , 2001. - - 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 . */ - -#ifndef _GL_STDBOOL_H -#define _GL_STDBOOL_H - -/* ISO C 99 for platforms that lack it. */ - -/* Usage suggestions: - - Programs that use should be aware of some limitations - and standards compliance issues. - - Standards compliance: - - - must be #included before 'bool', 'false', 'true' - can be used. - - - You cannot assume that sizeof (bool) == 1. - - - Programs should not undefine the macros bool, true, and false, - as C99 lists that as an "obsolescent feature". - - Limitations of this substitute, when used in a C89 environment: - - - must be #included before the '_Bool' type can be used. - - - You cannot assume that _Bool is a typedef; it might be a macro. - - - Bit-fields of type 'bool' are not supported. Portable code - should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'. - - - In C99, casts and automatic conversions to '_Bool' or 'bool' are - performed in such a way that every nonzero value gets converted - to 'true', and zero gets converted to 'false'. This doesn't work - with this substitute. With this substitute, only the values 0 and 1 - give the expected result when converted to _Bool' or 'bool'. - - - C99 allows the use of (_Bool)0.0 in constant expressions, but - this substitute cannot always provide this property. - - Also, it is suggested that programs use 'bool' rather than '_Bool'; - this isn't required, but 'bool' is more common. */ - - -/* 7.16. Boolean type and values */ - -/* BeOS already #defines false 0, true 1. We use the same - definitions below, but temporarily we have to #undef them. */ -#if defined __BEOS__ && !defined __HAIKU__ -# include /* defines bool but not _Bool */ -# undef false -# undef true -#endif - -#ifdef __cplusplus -# if !defined _MSC_VER -# define _Bool bool -# define bool bool -# endif -#else -# if defined __BEOS__ && !defined __HAIKU__ - /* A compiler known to have 'bool'. */ - /* If the compiler already has both 'bool' and '_Bool', we can assume they - are the same types. */ -# if !@HAVE__BOOL@ -typedef bool _Bool; -# endif -# else -# if !defined __GNUC__ - /* If @HAVE__BOOL@: - Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when - the built-in _Bool type is used. See - https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html - https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html - https://lists.gnu.org/r/bug-coreutils/2005-10/msg00086.html - Similar bugs are likely with other compilers as well; this file - wouldn't be used if was working. - So we override the _Bool type. - If !@HAVE__BOOL@: - Need to define _Bool ourselves. As 'signed char' or as an enum type? - Use of a typedef, with SunPRO C, leads to a stupid - "warning: _Bool is a keyword in ISO C99". - Use of an enum type, with IRIX cc, leads to a stupid - "warning(1185): enumerated type mixed with another type". - Even the existence of an enum type, without a typedef, - "Invalid enumerator. (badenum)" with HP-UX cc on Tru64. - The only benefit of the enum, debuggability, is not important - with these compilers. So use 'signed char' and no enum. */ -# define _Bool signed char -# else - /* With this compiler, trust the _Bool type if the compiler has it. */ -# if !@HAVE__BOOL@ - /* For the sake of symbolic names in gdb, define true and false as - enum constants, not only as macros. - It is tempting to write - typedef enum { false = 0, true = 1 } _Bool; - so that gdb prints values of type 'bool' symbolically. But then - values of type '_Bool' might promote to 'int' or 'unsigned int' - (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int' - (see ISO C 99 6.3.1.1.(2)). So add a negative value to the - enum; this ensures that '_Bool' promotes to 'int'. */ -typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool; -# endif -# endif -# endif -# define bool _Bool -#endif - -/* The other macros must be usable in preprocessor directives. */ -#ifdef __cplusplus -# if !defined _MSC_VER -# define false false -# define true true -# endif -/* In Sun C++ 5.11 (Solaris Studio 12.2) and older, 'true' as a preprocessor - expression evaluates to 0, not 1. Fix this by overriding 'true'. Note that - the replacement has to be of type 'bool'. */ -# if defined __SUNPRO_CC && true != 1 -# undef true -# define true (!false) -# endif -#else -# define false 0 -# define true 1 -#endif - -#define __bool_true_false_are_defined 1 - -#endif /* _GL_STDBOOL_H */ diff --git a/lib/warn-on-use.h b/lib/warn-on-use.h index 94f5b92..3075603 100644 --- a/lib/warn-on-use.h +++ b/lib/warn-on-use.h @@ -1,5 +1,5 @@ /* A C macro for emitting warnings if a function is used. - Copyright (C) 2010-2022 Free Software Foundation, Inc. + Copyright (C) 2010-2023 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 diff --git a/m4/00gnulib.m4 b/m4/00gnulib.m4 index dea34e8..7fe03e0 100644 --- a/m4/00gnulib.m4 +++ b/m4/00gnulib.m4 @@ -1,5 +1,5 @@ # 00gnulib.m4 serial 8 -dnl Copyright (C) 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2023 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 --git a/m4/acinclude.m4 b/m4/acinclude.m4 index d7131a8..64c97d1 100644 --- a/m4/acinclude.m4 +++ b/m4/acinclude.m4 @@ -1,7 +1,7 @@ -dnl acinclude.m4 -- Extra macros needed for GNU make. +dnl acinclude.m4 -- Extra macros needed for GNU Make. dnl dnl Automake will incorporate this into its generated aclocal.m4. -dnl Copyright (C) 1998-2022 Free Software Foundation, Inc. +dnl Copyright (C) 1998-2023 Free Software Foundation, Inc. dnl This file is part of GNU Make. dnl dnl GNU Make is free software; you can redistribute it and/or modify it under @@ -43,8 +43,8 @@ AC_MSG_RESULT(working...) cf_cv_netlibs="" cf_test_netlibs=yes AC_CHECK_FUNCS(gethostname,,[ - CF_RECHECK_FUNC(gethostname,nsl,cf_cv_netlibs,[ - CF_RECHECK_FUNC(gethostname,socket,cf_cv_netlibs)])]) + CF_RECHECK_FUNC(gethostname,nsl,cf_cv_netlibs,[ + CF_RECHECK_FUNC(gethostname,socket,cf_cv_netlibs)])]) # # FIXME: sequent needs this library (i.e., -lsocket -linet -lnsl), but # I don't know the entrypoints - 97/7/22 TD @@ -52,12 +52,12 @@ AC_CHECK_LIB(inet,main,cf_cv_netlibs="-linet $cf_cv_netlibs") # if test "$ac_cv_func_lsocket" != no ; then AC_CHECK_FUNCS(socket,,[ - CF_RECHECK_FUNC(socket,socket,cf_cv_netlibs,[ - CF_RECHECK_FUNC(socket,bsd,cf_cv_netlibs)])]) + CF_RECHECK_FUNC(socket,socket,cf_cv_netlibs,[ + CF_RECHECK_FUNC(socket,bsd,cf_cv_netlibs)])]) fi # AC_CHECK_FUNCS(gethostbyname,,[ - CF_RECHECK_FUNC(gethostbyname,nsl,cf_cv_netlibs)]) + CF_RECHECK_FUNC(gethostbyname,nsl,cf_cv_netlibs)]) ]) LIBS="$LIBS $cf_cv_netlibs" test $cf_test_netlibs = no && echo "$cf_cv_netlibs" >&AC_FD_MSG @@ -77,14 +77,14 @@ dnl used (autoconf does not distinguish between a null token and one that is dnl set to 'no'). AC_DEFUN([CF_RECHECK_FUNC],[ AC_CHECK_LIB($2,$1,[ - CF_UPPER(cf_tr_func,$1) - AC_DEFINE_UNQUOTED(HAVE_$cf_tr_func,1,[Define if you have function $1]) - ac_cv_func_$1=yes - $3="-l$2 [$]$3"],[ - ac_cv_func_$1=unknown - unset ac_cv_func_$1 2>/dev/null - $4], - [[$]$3]) + CF_UPPER(cf_tr_func,$1) + AC_DEFINE_UNQUOTED(HAVE_$cf_tr_func,1,[Define if you have function $1]) + ac_cv_func_$1=yes + $3="-l$2 [$]$3"],[ + ac_cv_func_$1=unknown + unset ac_cv_func_$1 2>/dev/null + $4], + [[$]$3]) ])dnl dnl --------------------------------------------------------------------------- dnl Make an uppercase version of a variable @@ -118,7 +118,7 @@ AC_DEFUN([AC_STRUCT_ST_MTIM_NSEC], CPPFLAGS="$ac_save_CPPFLAGS -DST_MTIM_NSEC=$ac_val" AC_TRY_COMPILE([#include #include - ], [struct stat s; s.ST_MTIM_NSEC;], + ], [struct stat s; s.ST_MTIM_NSEC;], [ac_cv_struct_st_mtim_nsec=$ac_val; break]) done CPPFLAGS="$ac_save_CPPFLAGS" @@ -126,7 +126,7 @@ AC_DEFUN([AC_STRUCT_ST_MTIM_NSEC], if test $ac_cv_struct_st_mtim_nsec != no; then AC_DEFINE_UNQUOTED([ST_MTIM_NSEC], [$ac_cv_struct_st_mtim_nsec], - [Define if struct stat contains a nanoseconds field]) + [Define if struct stat contains a nanoseconds field]) fi ] ) diff --git a/m4/alloca.m4 b/m4/alloca.m4 index dc6f47e..c685fac 100644 --- a/m4/alloca.m4 +++ b/m4/alloca.m4 @@ -1,5 +1,5 @@ # alloca.m4 serial 21 -dnl Copyright (C) 2002-2004, 2006-2007, 2009-2022 Free Software Foundation, +dnl Copyright (C) 2002-2004, 2006-2007, 2009-2023 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 --git a/m4/asm-underscore.m4 b/m4/asm-underscore.m4 index 950aa8d..65ae55a 100644 --- a/m4/asm-underscore.m4 +++ b/m4/asm-underscore.m4 @@ -1,5 +1,5 @@ # asm-underscore.m4 serial 5 -dnl Copyright (C) 2010-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2010-2023 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 --git a/m4/c-bool.m4 b/m4/c-bool.m4 new file mode 100644 index 0000000..f614371 --- /dev/null +++ b/m4/c-bool.m4 @@ -0,0 +1,51 @@ +# Check for bool that conforms to C2023. + +dnl Copyright 2022-2023 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. + +AC_DEFUN([gl_C_BOOL], +[ + AC_CACHE_CHECK([for bool, true, false], [gl_cv_c_bool], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE([[ + #if true == false + #error "true == false" + #endif + extern bool b; + bool b = true == false;]])], + [gl_cv_c_bool=yes], + [gl_cv_c_bool=no])]) + if test "$gl_cv_c_bool" = yes; then + AC_DEFINE([HAVE_C_BOOL], [1], + [Define to 1 if bool, true and false work as per C2023.]) + fi + + AC_CHECK_HEADERS_ONCE([stdbool.h]) + + dnl The "zz" puts this toward config.h's end, to avoid potential + dnl collisions with other definitions. + dnl If 'bool', 'true' and 'false' do not work, arrange for them to work. + dnl In C, this means including if it is not already included. + dnl However, if the preprocessor mistakenly treats 'true' as 0, + dnl define it to a bool expression equal to 1; this is needed in + dnl Sun C++ 5.11 (Oracle Solaris Studio 12.2, 2010) and older. + AH_VERBATIM([zzbool], +[#ifndef HAVE_C_BOOL +# if !defined __cplusplus && !defined __bool_true_false_are_defined +# if HAVE_STDBOOL_H +# include +# else +# if defined __SUNPRO_C +# error " is not usable with this configuration. To make it usable, add -D_STDC_C99= to $CC." +# else +# error " does not exist on this platform. Use gnulib module 'stdbool-c99' instead of gnulib module 'stdbool'." +# endif +# endif +# endif +# if !true +# define true (!false) +# endif +#endif]) +]) diff --git a/m4/dospaths.m4 b/m4/dospaths.m4 index 51deaf0..c1a1934 100644 --- a/m4/dospaths.m4 +++ b/m4/dospaths.m4 @@ -1,7 +1,7 @@ # Test if the system uses DOS-style pathnames (drive specs and backslashes) # By Paul Smith . Based on dos.m4 by Jim Meyering. # -# Copyright (C) 1993-2022 Free Software Foundation, Inc. +# Copyright (C) 1993-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under diff --git a/m4/eaccess.m4 b/m4/eaccess.m4 index 6ab3d50..19134c0 100644 --- a/m4/eaccess.m4 +++ b/m4/eaccess.m4 @@ -1,5 +1,5 @@ # eaccess.m4 serial 2 -dnl Copyright (C) 2003, 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2003, 2009-2023 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 --git a/m4/extensions.m4 b/m4/extensions.m4 index 0b3e4b5..5336b8d 100644 --- a/m4/extensions.m4 +++ b/m4/extensions.m4 @@ -1,7 +1,7 @@ -# serial 22 -*- Autoconf -*- +# serial 23 -*- Autoconf -*- # Enable extensions on systems that normally disable them. -# Copyright (C) 2003, 2006-2022 Free Software Foundation, Inc. +# Copyright (C) 2003, 2006-2023 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. @@ -31,7 +31,7 @@ m4_ifndef([AC_CHECK_INCLUDES_DEFAULT], # its dependencies. This will ensure that the gl_USE_SYSTEM_EXTENSIONS # invocation occurs in gl_EARLY, not in gl_INIT. -m4_version_prereq([2.70.1], [], [ +m4_version_prereq([2.72], [], [ # AC_USE_SYSTEM_EXTENSIONS # ------------------------ @@ -113,11 +113,15 @@ AH_VERBATIM([USE_SYSTEM_EXTENSIONS], #ifndef __STDC_WANT_IEC_60559_DFP_EXT__ # undef __STDC_WANT_IEC_60559_DFP_EXT__ #endif +/* Enable extensions specified by C23 Annex F. */ +#ifndef __STDC_WANT_IEC_60559_EXT__ +# undef __STDC_WANT_IEC_60559_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. */ +/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ #ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ # undef __STDC_WANT_IEC_60559_TYPES_EXT__ #endif @@ -187,6 +191,7 @@ dnl it should only be defined when necessary. AC_DEFINE([__STDC_WANT_IEC_60559_ATTRIBS_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_BFP_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_DFP_EXT__]) + AC_DEFINE([__STDC_WANT_IEC_60559_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_FUNCS_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_TYPES_EXT__]) AC_DEFINE([__STDC_WANT_LIB_EXT2__]) diff --git a/m4/findprog-in.m4 b/m4/findprog-in.m4 index 5a295e2..394f79a 100644 --- a/m4/findprog-in.m4 +++ b/m4/findprog-in.m4 @@ -1,5 +1,5 @@ # findprog-in.m4 serial 1 -dnl Copyright (C) 2003, 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2003, 2009-2023 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 --git a/m4/getloadavg.m4 b/m4/getloadavg.m4 index 2270648..3739f24 100644 --- a/m4/getloadavg.m4 +++ b/m4/getloadavg.m4 @@ -1,7 +1,7 @@ # Check for getloadavg. -# Copyright (C) 1992-1996, 1999-2000, 2002-2003, 2006, 2008-2022 Free Software -# Foundation, Inc. +# Copyright (C) 1992-1996, 1999-2000, 2002-2003, 2006, 2008-2023 Free +# Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -160,7 +160,7 @@ AC_CHECK_HEADERS([nlist.h], ])dnl ])# gl_PREREQ_GETLOADAVG -# ---- GNU make +# ---- GNU Make # These macros are imported from stdlib which we don't want to include # Only the getloadavg content is imported. diff --git a/m4/gnulib-cache.m4 b/m4/gnulib-cache.m4 index a761238..0dd5761 100644 --- a/m4/gnulib-cache.m4 +++ b/m4/gnulib-cache.m4 @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2022 Free Software Foundation, Inc. +# Copyright (C) 2002-2023 Free Software Foundation, Inc. # # 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 diff --git a/m4/gnulib-common.m4 b/m4/gnulib-common.m4 index 8a5daa2..84dc0a6 100644 --- a/m4/gnulib-common.m4 +++ b/m4/gnulib-common.m4 @@ -1,5 +1,5 @@ -# gnulib-common.m4 serial 73 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +# gnulib-common.m4 serial 75d +dnl Copyright (C) 2007-2023 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. @@ -38,6 +38,11 @@ AC_DEFUN([gl_COMMON_BODY], [ AIX system header files and several gnulib header files use precisely this syntax with 'extern'. */ # define _Noreturn [[noreturn]] +# elif (defined __clang__ && __clang_major__ < 16 \ + && defined _GL_WORK_AROUND_LLVM_BUG_59792) + /* Compile with -D_GL_WORK_AROUND_LLVM_BUG_59792 to work around + that rare LLVM bug, though you may get many false-alarm warnings. */ +# define _Noreturn # elif ((!defined __cplusplus || defined __clang__) \ && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ || (!defined __STRICT_ANSI__ \ @@ -105,17 +110,13 @@ AC_DEFUN([gl_COMMON_BODY], [ # define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4) #endif -#ifdef __has_c_attribute -# if ((defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710 \ - && _GL_GNUC_PREREQ (4, 6)) -# pragma GCC diagnostic ignored "-Wpedantic" -# endif -# define _GL_HAS_C_ATTRIBUTE(attr) __has_c_attribute (__##attr##__) -#else -# define _GL_HAS_C_ATTRIBUTE(attr) 0 +/* Disable GCC -Wpedantic if using __has_c_attribute and this is not C23+. */ +#if (defined __has_c_attribute && _GL_GNUC_PREREQ (4, 6) \ + && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710) +# pragma GCC diagnostic ignored "-Wpedantic" #endif -]dnl There is no _GL_ATTRIBUTE_ALIGNED; use stdalign's _Alignas instead. +]dnl There is no _GL_ATTRIBUTE_ALIGNED; use stdalign's alignas instead. [ /* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function is the size of the returned memory block. @@ -123,29 +124,35 @@ AC_DEFUN([gl_COMMON_BODY], [ by the Nth argument of the function is the size of the returned memory block. */ /* Applies to: function, pointer to function, function types. */ -#if _GL_HAS_ATTRIBUTE (alloc_size) -# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) -#else -# define _GL_ATTRIBUTE_ALLOC_SIZE(args) +#ifndef _GL_ATTRIBUTE_ALLOC_SIZE +# if _GL_HAS_ATTRIBUTE (alloc_size) +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) +# else +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) +# endif #endif /* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the function and report an error if it cannot do so. */ /* Applies to: function. */ -#if _GL_HAS_ATTRIBUTE (always_inline) -# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) -#else -# define _GL_ATTRIBUTE_ALWAYS_INLINE +#ifndef _GL_ATTRIBUTE_ALWAYS_INLINE +# if _GL_HAS_ATTRIBUTE (always_inline) +# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) +# else +# define _GL_ATTRIBUTE_ALWAYS_INLINE +# endif #endif /* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show in stack traces when debugging. The compiler should omit the function from stack traces. */ /* Applies to: function. */ -#if _GL_HAS_ATTRIBUTE (artificial) -# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) -#else -# define _GL_ATTRIBUTE_ARTIFICIAL +#ifndef _GL_ATTRIBUTE_ARTIFICIAL +# if _GL_HAS_ATTRIBUTE (artificial) +# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) +# else +# define _GL_ATTRIBUTE_ARTIFICIAL +# endif #endif /* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ @@ -153,14 +160,16 @@ AC_DEFUN([gl_COMMON_BODY], [ /* Avoid __attribute__ ((cold)) on MinGW; see thread starting at . Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */ -#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ -# ifndef __SUNPRO_C -# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +#ifndef _GL_ATTRIBUTE_COLD +# if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif # else -# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# define _GL_ATTRIBUTE_COLD # endif -#else -# define _GL_ATTRIBUTE_COLD #endif /* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate @@ -170,10 +179,12 @@ AC_DEFUN([gl_COMMON_BODY], [ forever, and does not call longjmp. (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (const) -# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) -#else -# define _GL_ATTRIBUTE_CONST +#ifndef _GL_ATTRIBUTE_CONST +# if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +# else +# define _GL_ATTRIBUTE_CONST +# endif #endif /* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers @@ -182,16 +193,25 @@ AC_DEFUN([gl_COMMON_BODY], [ _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that can be freed via 'free'; it can be used only after declaring 'free'. */ /* Applies to: functions. Cannot be used on inline functions. */ -#if _GL_GNUC_PREREQ (11, 0) -# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) -#else -# define _GL_ATTRIBUTE_DEALLOC(f, i) +#ifndef _GL_ATTRIBUTE_DEALLOC +# if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +# else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +# endif #endif /* If gnulib's or has already defined this macro, continue to use this earlier definition, since may not have been included yet. */ #ifndef _GL_ATTRIBUTE_DEALLOC_FREE -# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +# if defined __cplusplus && defined __GNUC__ && !defined __clang__ +/* Work around GCC bug */ +# define _GL_ATTRIBUTE_DEALLOC_FREE \ + _GL_ATTRIBUTE_DEALLOC ((void (*) (void *)) free, 1) +# else +# define _GL_ATTRIBUTE_DEALLOC_FREE \ + _GL_ATTRIBUTE_DEALLOC (free, 1) +# endif #endif /* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. @@ -202,12 +222,18 @@ AC_DEFUN([gl_COMMON_BODY], [ - enumeration, enumeration item, - typedef, in C++ also: namespace, class, template specialization. */ -#if _GL_HAS_C_ATTRIBUTE (deprecated) -# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] -#elif _GL_HAS_ATTRIBUTE (deprecated) -# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GL_ATTRIBUTE_DEPRECATED +#ifndef _GL_ATTRIBUTE_DEPRECATED +# ifdef __has_c_attribute +# if __has_c_attribute (__deprecated__) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +# endif +# endif +# if !defined _GL_ATTRIBUTE_DEPRECATED && _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +# endif +# ifndef _GL_ATTRIBUTE_DEPRECATED +# define _GL_ATTRIBUTE_DEPRECATED +# endif #endif /* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and @@ -215,24 +241,28 @@ AC_DEFUN([gl_COMMON_BODY], [ _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and the function call is not optimized away. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (error) -# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) -# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) -#elif _GL_HAS_ATTRIBUTE (diagnose_if) -# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) -# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) -#else -# define _GL_ATTRIBUTE_ERROR(msg) -# define _GL_ATTRIBUTE_WARNING(msg) +#if !(defined _GL_ATTRIBUTE_ERROR && defined _GL_ATTRIBUTE_WARNING) +# if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +# elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +# else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +# endif #endif /* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain visible to debuggers etc., even with '-fwhole-program'. */ /* Applies to: functions, variables. */ -#if _GL_HAS_ATTRIBUTE (externally_visible) -# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) -#else -# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#ifndef _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +# if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +# else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +# endif #endif /* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if @@ -240,12 +270,18 @@ AC_DEFUN([gl_COMMON_BODY], [ 'default' label. The compiler should not warn in this case. */ /* Applies to: Empty statement (;), inside a 'switch' statement. */ /* Always expands to something. */ -#if _GL_HAS_C_ATTRIBUTE (fallthrough) -# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] -#elif _GL_HAS_ATTRIBUTE (fallthrough) -# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) -#else -# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#ifndef _GL_ATTRIBUTE_FALLTHROUGH +# ifdef __has_c_attribute +# if __has_c_attribute (__fallthrough__) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +# endif +# endif +# if !defined _GL_ATTRIBUTE_FALLTHROUGH && _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +# endif +# ifndef _GL_ATTRIBUTE_FALLTHROUGH +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +# endif #endif /* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) @@ -259,10 +295,12 @@ AC_DEFUN([gl_COMMON_BODY], [ If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK are suitable for the format string. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (format) -# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) -#else -# define _GL_ATTRIBUTE_FORMAT(spec) +#ifndef _GL_ATTRIBUTE_FORMAT +# if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +# else +# define _GL_ATTRIBUTE_FORMAT(spec) +# endif #endif /* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other @@ -270,19 +308,23 @@ AC_DEFUN([gl_COMMON_BODY], [ exception handling. This declaration lets the compiler optimize that unit more aggressively. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (leaf) -# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) -#else -# define _GL_ATTRIBUTE_LEAF +#ifndef _GL_ATTRIBUTE_LEAF +# if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +# else +# define _GL_ATTRIBUTE_LEAF +# endif #endif /* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly allocated memory. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (malloc) -# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) -#else -# define _GL_ATTRIBUTE_MALLOC +#ifndef _GL_ATTRIBUTE_MALLOC +# if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +# else +# define _GL_ATTRIBUTE_MALLOC +# endif #endif /* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the @@ -290,10 +332,12 @@ AC_DEFUN([gl_COMMON_BODY], [ strict aliasing optimization. */ /* Applies to: types. */ /* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ -#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C -# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) -#else -# define _GL_ATTRIBUTE_MAY_ALIAS +#ifndef _GL_ATTRIBUTE_MAY_ALIAS +# if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +# else +# define _GL_ATTRIBUTE_MAY_ALIAS +# endif #endif /* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if @@ -305,13 +349,24 @@ AC_DEFUN([gl_COMMON_BODY], [ - enumeration, enumeration item, - typedef, in C++ also: class. */ -/* In C++ and C2x, this is spelled [[__maybe_unused__]]. +/* In C++ and C23, this is spelled [[__maybe_unused__]]. GCC's syntax is __attribute__ ((__unused__)). - clang supports both syntaxes. */ -#if _GL_HAS_C_ATTRIBUTE (maybe_unused) -# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] -#else -# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED + clang supports both syntaxes. Except that with clang ≥ 6, < 10, in C++ mode, + __has_c_attribute (__maybe_unused__) yields true but the use of + [[__maybe_unused__]] nevertheless produces a warning. */ +#ifndef _GL_ATTRIBUTE_MAYBE_UNUSED +# if defined __clang__ && defined __cplusplus +# if !defined __apple_build_version__ && __clang_major__ >= 10 +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +# endif +# elif defined __has_c_attribute +# if __has_c_attribute (__maybe_unused__) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +# endif +# endif +# ifndef _GL_ATTRIBUTE_MAYBE_UNUSED +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +# endif #endif /* Alternative spelling of this macro, for convenience and for compatibility with glibc/include/libc-symbols.h. */ @@ -323,21 +378,38 @@ AC_DEFUN([gl_COMMON_BODY], [ discard the return value. The compiler may warn if the caller does not use the return value, unless the caller uses something like ignore_value. */ /* Applies to: function, enumeration, class. */ -#if _GL_HAS_C_ATTRIBUTE (nodiscard) -# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] -#elif _GL_HAS_ATTRIBUTE (warn_unused_result) -# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) -#else -# define _GL_ATTRIBUTE_NODISCARD +#ifndef _GL_ATTRIBUTE_NODISCARD +# if defined __clang__ && defined __cplusplus + /* With clang up to 15.0.6 (at least), in C++ mode, [[__nodiscard__]] produces + a warning. + The 1000 below means a yet unknown threshold. When clang++ version X + starts supporting [[__nodiscard__]] without warning about it, you can + replace the 1000 with X. */ +# if __clang_major__ >= 1000 +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +# endif +# elif defined __has_c_attribute +# if __has_c_attribute (__nodiscard__) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +# endif +# endif +# if !defined _GL_ATTRIBUTE_NODISCARD && _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +# endif +# ifndef _GL_ATTRIBUTE_NODISCARD +# define _GL_ATTRIBUTE_NODISCARD +# endif #endif /* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the function. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (noinline) -# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) -#else -# define _GL_ATTRIBUTE_NOINLINE +#ifndef _GL_ATTRIBUTE_NOINLINE +# if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +# else +# define _GL_ATTRIBUTE_NOINLINE +# endif #endif /* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... @@ -345,20 +417,24 @@ AC_DEFUN([gl_COMMON_BODY], [ _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be null. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (nonnull) -# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) -#else -# define _GL_ATTRIBUTE_NONNULL(args) +#ifndef _GL_ATTRIBUTE_NONNULL +# if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +# else +# define _GL_ATTRIBUTE_NONNULL(args) +# endif #endif /* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is not meant to be NUL-terminated. */ /* Applies to: struct/union members and variables that are arrays of element type '[[un]signed] char'. */ -#if _GL_HAS_ATTRIBUTE (nonstring) -# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) -#else -# define _GL_ATTRIBUTE_NONSTRING +#ifndef _GL_ATTRIBUTE_NONSTRING +# if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +# else +# define _GL_ATTRIBUTE_NONSTRING +# endif #endif /* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ @@ -366,10 +442,12 @@ AC_DEFUN([gl_COMMON_BODY], [ /* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus -# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) -#else -# define _GL_ATTRIBUTE_NOTHROW +#ifndef _GL_ATTRIBUTE_NOTHROW +# if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +# else +# define _GL_ATTRIBUTE_NOTHROW +# endif #endif /* _GL_ATTRIBUTE_PACKED declares: @@ -378,10 +456,12 @@ AC_DEFUN([gl_COMMON_BODY], [ minimizing the memory required. */ /* Applies to: struct members, struct, union, in C++ also: class. */ -#if _GL_HAS_ATTRIBUTE (packed) -# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) -#else -# define _GL_ATTRIBUTE_PACKED +#ifndef _GL_ATTRIBUTE_PACKED +# if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +# else +# define _GL_ATTRIBUTE_PACKED +# endif #endif /* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate @@ -391,19 +471,23 @@ AC_DEFUN([gl_COMMON_BODY], [ observable state, and always returns exactly once. (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (pure) -# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) -#else -# define _GL_ATTRIBUTE_PURE +#ifndef _GL_ATTRIBUTE_PURE +# if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define _GL_ATTRIBUTE_PURE +# endif #endif /* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is a non-NULL pointer. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (returns_nonnull) -# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) -#else -# define _GL_ATTRIBUTE_RETURNS_NONNULL +#ifndef _GL_ATTRIBUTE_RETURNS_NONNULL +# if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +# else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +# endif #endif /* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a @@ -411,17 +495,21 @@ AC_DEFUN([gl_COMMON_BODY], [ _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (sentinel) -# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) -#else -# define _GL_ATTRIBUTE_SENTINEL(pos) +#ifndef _GL_ATTRIBUTE_SENTINEL +# if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +# else +# define _GL_ATTRIBUTE_SENTINEL(pos) +# endif #endif /* A helper macro. Don't use it directly. */ -#if _GL_HAS_ATTRIBUTE (unused) -# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) -#else -# define _GL_ATTRIBUTE_UNUSED +#ifndef _GL_ATTRIBUTE_UNUSED +# if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define _GL_ATTRIBUTE_UNUSED +# endif #endif ]dnl There is no _GL_ATTRIBUTE_VISIBILITY; see m4/visibility.m4 instead. @@ -432,10 +520,12 @@ AC_DEFUN([gl_COMMON_BODY], [ /* Applies to: label (both in C and C++). */ /* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;' syntax. But clang does. */ -#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ -# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED -#else -# define _GL_UNUSED_LABEL +#ifndef _GL_UNUSED_LABEL +# if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +# else +# define _GL_UNUSED_LABEL +# endif #endif ]) AH_VERBATIM([async_safe], diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4 index 27c859d..43803a2 100644 --- a/m4/gnulib-comp.m4 +++ b/m4/gnulib-comp.m4 @@ -1,5 +1,5 @@ # DO NOT EDIT! GENERATED AUTOMATICALLY! -# Copyright (C) 2002-2022 Free Software Foundation, Inc. +# Copyright (C) 2002-2023 Free Software Foundation, Inc. # # 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 @@ -44,6 +44,7 @@ AC_DEFUN([gl_EARLY], # Code from module alloca: # Code from module alloca-opt: + # Code from module c99: # Code from module concat-filename: # Code from module extensions: # Code from module fdl: @@ -55,10 +56,10 @@ AC_DEFUN([gl_EARLY], # Code from module intprops: # Code from module largefile: AC_REQUIRE([AC_SYS_LARGEFILE]) - AC_REQUIRE([gl_YEAR2038_EARLY]) # Code from module make-glob: # Code from module make-macros: # Code from module snippet/warn-on-use: + # Code from module std-gnu11: # Code from module stdbool: ]) @@ -98,20 +99,59 @@ AC_DEFUN([gl_INIT], AC_REQUIRE([gl_HOST_CPU_C_ABI]) AC_REQUIRE([gl_LARGEFILE]) # Check the system to see if it provides GNU glob. If not, use our - # local version. - AC_CACHE_CHECK([if system libc has GNU glob], [make_cv_sys_gnu_glob], - [ AC_EGREP_CPP([gnu glob],[ - #include - #include - #include - #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 - # include - # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 - gnu glob - # endif - #endif], - [make_cv_sys_gnu_glob=yes], - [make_cv_sys_gnu_glob=no])]) + # local version. Also avoid versions of glibc which have symlink bug + # https://sourceware.org/bugzilla/show_bug.cgi?id=866 (test from gnulib) + AC_CACHE_CHECK([if system libc has working GNU glob], [make_cv_sys_gnu_glob],[ + if ln -s conf-doesntexist conf$$-globtest 2>/dev/null; then + make_check_symlink=yes + else + make_check_symlink=no + fi + if test $cross_compiling = yes || test $make_check_symlink = no; then + # When cross-compiling or without symlink support, check the version + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include + #include + #include + ]], + [[ + #if _GNU_GLOB_INTERFACE_VERSION == 0 + GNU glob not available in libc + #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 27) + GNU glob in libc has dangling symlink bug + #endif + ]])], + [make_cv_sys_gnu_glob=yes], + [make_cv_sys_gnu_glob=no]) + else + # Check for GNU glob, and that it handles dangling symlinks properly + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[#include + #include + #include + #include + ]], + [[ + #if _GNU_GLOB_INTERFACE_VERSION == 0 + return 1; + #else + glob_t found; + if (glob ("conf*-globtest", 0, 0, &found) == GLOB_NOMATCH) + return 1; + globfree (&found); + #endif + ]])], + [make_cv_sys_gnu_glob=yes], + [make_cv_sys_gnu_glob=no], + [dnl We don't get here. + : + ]) + fi + test $make_check_symlink = no || rm -f conf$$-globtest + ]) # Tell automake about this, so it can build the right .c files. AM_CONDITIONAL([USE_SYSTEM_GLOB], [test "$make_cv_sys_gnu_glob" = yes]) # Tell build.sh which to use @@ -119,9 +159,7 @@ AC_DEFUN([gl_INIT], AC_SUBST([USE_SYSTEM_GLOB]) # Check for DOS-style pathnames. pds_AC_DOS_PATHS - gl_STDBOOL_H - gl_CONDITIONAL_HEADER([stdbool.h]) - AC_PROG_MKDIR_P + gl_C_BOOL # End of code from modules m4_ifval(gl_LIBSOURCES_LIST, [ m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ || @@ -307,13 +345,14 @@ AC_DEFUN([gl_FILE_LIST], [ lib/getloadavg.c lib/glob.c lib/glob.in.h + lib/intprops-internal.h lib/intprops.h - lib/stdbool.in.h lib/warn-on-use.h m4/00gnulib.m4 m4/acinclude.m4 m4/alloca.m4 m4/asm-underscore.m4 + m4/c-bool.m4 m4/dospaths.m4 m4/eaccess.m4 m4/extensions.m4 @@ -322,8 +361,7 @@ AC_DEFUN([gl_FILE_LIST], [ m4/gnulib-common.m4 m4/host-cpu-c-abi.m4 m4/largefile.m4 - m4/stdbool.m4 + m4/std-gnu11.m4 m4/warn-on-use.m4 - m4/year2038.m4 m4/zzgnulib.m4 ]) diff --git a/m4/host-cpu-c-abi.m4 b/m4/host-cpu-c-abi.m4 index b922324..134f228 100644 --- a/m4/host-cpu-c-abi.m4 +++ b/m4/host-cpu-c-abi.m4 @@ -1,5 +1,5 @@ # host-cpu-c-abi.m4 serial 15 -dnl Copyright (C) 2002-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2002-2023 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 --git a/m4/largefile.m4 b/m4/largefile.m4 index 3e8b5e3..7fb81b8 100644 --- a/m4/largefile.m4 +++ b/m4/largefile.m4 @@ -1,7 +1,7 @@ # Enable large files on systems where this is not the default. # Enable support for files on Linux file systems with 64-bit inode numbers. -# Copyright 1992-1996, 1998-2022 Free Software Foundation, Inc. +# Copyright 1992-1996, 1998-2023 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. @@ -10,8 +10,9 @@ # It does not set _LARGEFILE_SOURCE=1 on HP-UX/ia64 32-bit, although this # setting of _LARGEFILE_SOURCE is needed so that declares fseeko # and ftello in C++ mode as well. +# Fixed in Autoconf 2.72, which has AC_SYS_YEAR2038. AC_DEFUN([gl_SET_LARGEFILE_SOURCE], -[ + m4_ifndef([AC_SYS_YEAR2038], [[ AC_REQUIRE([AC_CANONICAL_HOST]) AC_FUNC_FSEEKO case "$host_os" in @@ -20,10 +21,10 @@ AC_DEFUN([gl_SET_LARGEFILE_SOURCE], [Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2).]) ;; esac -]) + ]]) +) -# Work around a problem in Autoconf through at least 2.71 on glibc 2.34+ -# with _TIME_BITS. Also, work around a problem in autoconf <= 2.69: +# Work around a problem in autoconf <= 2.69: # AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5, # or configures them incorrectly in some cases. m4_version_prereq([2.70], [], [ @@ -43,33 +44,258 @@ m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES], ]) ])# m4_version_prereq 2.70 +# Support AC_SYS_YEAR2038, even if Autoconf 2.71 or earlier. +# This code is taken from Autoconf master. +m4_ifndef([AC_SYS_YEAR2038], [ + +# _AC_SYS_YEAR2038_TEST_CODE +# -------------------------- +# C code used to probe for time_t that can represent time points more +# than 2**31 - 1 seconds after the epoch. With the usual Unix epoch, +# these correspond to dates after 2038-01-18 22:14:07 +0000 (Gregorian), +# hence the name. +AC_DEFUN([_AC_SYS_YEAR2038_TEST_CODE], +[[ + #include + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; +]]) + +# _AC_SYS_YEAR2038_OPTIONS +# ------------------------ +# List of known ways to enable support for large time_t. If you change +# this list you probably also need to change the AS_CASE at the end of +# _AC_SYS_YEAR2038_PROBE. +m4_define([_AC_SYS_YEAR2038_OPTIONS], m4_normalize( + ["none needed"] dnl 64-bit and newer 32-bit Unix + ["-D_TIME_BITS=64"] dnl glibc 2.34 with some 32-bit ABIs + ["-D__MINGW_USE_VC2005_COMPAT"] dnl 32-bit MinGW + ["-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"] + dnl 32-bit MinGW (misconfiguration) +)) + +# _AC_SYS_YEAR2038_PROBE([IF-NOT-DETECTED]) +# ----------------------------------------- +# Subroutine of AC_SYS_YEAR2038. Probe for time_t that can represent +# time points more than 2**31 - 1 seconds after the epoch (dates after +# 2038-01-18, see above) and set the cache variable ac_cv_sys_year2038_opts +# to one of the values in the _AC_SYS_YEAR2038_OPTIONS list, or to +# "support not detected" if none of them worked. Then, set compilation +# options and #defines as necessary to enable large time_t support. +# +# Note that we do not test whether mktime, localtime, etc. handle +# large values of time_t correctly, as that would require use of +# AC_TRY_RUN. Note also that some systems only support large time_t +# together with large off_t. +# +# If support is not detected, the behavior depends on which of the +# top-level AC_SYS_YEAR2038 macros was used (see below). +# +# If you change this macro you may also need to change +# _AC_SYS_YEAR2038_OPTIONS. +AC_DEFUN([_AC_SYS_YEAR2038_PROBE], +[AC_CACHE_CHECK([for $CC option to enable timestamps after Jan 2038], + [ac_cv_sys_year2038_opts], + [ac_save_CPPFLAGS="$CPPFLAGS" + ac_opt_found=no + for ac_opt in _AC_SYS_YEAR2038_OPTIONS; do + AS_IF([test x"$ac_opt" != x"none needed"], + [CPPFLAGS="$ac_save_CPPFLAGS $ac_opt"]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_YEAR2038_TEST_CODE])], + [ac_cv_sys_year2038_opts="$ac_opt" + ac_opt_found=yes]) + test $ac_opt_found = no || break + done + CPPFLAGS="$ac_save_CPPFLAGS" + test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected"]) + +ac_have_year2038=yes +AS_CASE([$ac_cv_sys_year2038_opts], + ["none needed"], [], + ["support not detected"], + [ac_have_year2038=no + AS_CASE([$enable_year2038], + [yes], + [# If we're not cross compiling and 'touch' works with a large + # timestamp, then we can presume the system supports wider time_t + # *somehow* and we just weren't able to detect it. One common + # case that we deliberately *don't* probe for is a system that + # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers + # wide time_t. (It would be inappropriate for us to override an + # intentional use of -m32.) Error out, demanding use of + # --disable-year2038 if this is intentional. + AS_IF([test $cross_compiling = no], + [AS_IF([TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null], + [AS_CASE([`TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null`], + [*'Feb 7 2106'* | *'Feb 7 17:10'*], + [AC_MSG_FAILURE(m4_text_wrap( + [this system appears to support timestamps after January 2038, + but no mechanism for enabling wide 'time_t' was detected. + Did you mean to build a 64-bit binary? (e.g. 'CC="${CC} -m64"'.) + To proceed with 32-bit time_t, configure with '--disable-year2038'.], + [], [], [55]))])])])])], + + ["-D_TIME_BITS=64"], + [AC_DEFINE([_TIME_BITS], [64], + [Number of bits in time_t, on hosts where this is settable.])], + + ["-D__MINGW_USE_VC2005_COMPAT=1"], + [AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1], + [Define to 1 on platforms where this makes time_t a 64-bit type.])], -# _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, -# CACHE-VAR, -# DESCRIPTION, -# PROLOGUE, [FUNCTION-BODY]) -# -------------------------------------------------------- -m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE], -[AC_CACHE_CHECK([for $1 value needed for large files], [$3], -[while :; do - m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( - [AC_LANG_PROGRAM([$5], [$6])], - [$3=no; break]) - m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( - [AC_LANG_PROGRAM([#undef $1 -#define $1 $2 -$5], [$6])], - [$3=$2; break]) - $3=unknown - break -done]) -case $$3 in #( - no | unknown) ;; - *) AC_DEFINE_UNQUOTED([$1], [$$3], [$4]);; -esac -rm -rf conftest*[]dnl -])# _AC_SYS_LARGEFILE_MACRO_VALUE + ["-U_USE_32_BIT_TIME_T"*], + [AC_MSG_FAILURE(m4_text_wrap( + [the 'time_t' type is currently forced to be 32-bit. + It will stop working after January 2038. + Remove _USE_32BIT_TIME_T from the compiler flags.], + [], [], [55]))], + + [AC_MSG_ERROR( + [internal error: bad value for \$ac_cv_sys_year2038_opts])]) +]) + +# _AC_SYS_YEAR2038_ENABLE +# ----------------------- +# Subroutine of AC_SYS_YEAR2038 and _AC_SYS_YEAR2038_OPT_IN. +# Depending on which of the YEAR2038 macros was used, add either an +# --enable-year2038, or a --disable-year2038, or no option at all to +# the configure script. Note that this is expanded very late and +# therefore there cannot be any code in the AC_ARG_ENABLE. The +# default value for enable_year2038 is emitted unconditionally +# because the generated code always looks at this variable. +m4_define([_AC_SYS_YEAR2038_ENABLE], +[m4_divert_text([DEFAULTS], + m4_provide_if([AC_SYS_YEAR2038], + [enable_year2038=yes], + [enable_year2038=no]))]dnl +[AC_ARG_ENABLE([year2038], + m4_provide_if([AC_SYS_YEAR2038], + [AS_HELP_STRING([--disable-year2038], + [do not support timestamps after 2038])], + [AS_HELP_STRING([--enable-year2038], + [support timestamps after 2038])]))]) + +# _AC_SYS_YEAR2038_OPT_IN +# ----------------------- +# If the --enable-year2038 option is given to configure, attempt to +# detect and activate support for large time_t on 32-bit systems. +# This macro is automatically invoked by AC_SYS_LARGEFILE when large +# *file* support is detected. It does not AC_REQUIRE AC_SYS_LARGEFILE +# to avoid a dependency loop, and is therefore unsafe to expose as a +# documented macro. +AC_DEFUN([_AC_SYS_YEAR2038_OPT_IN], +[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl + AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE]) + AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE]) +])]) + +# AC_SYS_YEAR2038 +# --------------- +# Attempt to detect and activate support for large time_t. +# On systems where time_t is not always 64 bits, this probe can be +# skipped by passing the --disable-year2038 option to configure. +AC_DEFUN([AC_SYS_YEAR2038], +[AC_REQUIRE([AC_SYS_LARGEFILE])]dnl +[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl + AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE]) + AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE]) +])]) + +# _AC_SYS_LARGEFILE_TEST_CODE +# --------------------------- +# C code used to probe for large file support. +m4_define([_AC_SYS_LARGEFILE_TEST_CODE], +[@%:@include + /* Check that off_t can represent 2**63 - 1 correctly. + 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)) + int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]];[]dnl +]) + +# _AC_SYS_LARGEFILE_OPTIONS +# ------------------------- +# List of known ways to enable support for large files. If you change +# this list you probably also need to change the AS_CASE at the end of +# _AC_SYS_LARGEFILE_PROBE. +m4_define([_AC_SYS_LARGEFILE_OPTIONS], m4_normalize( + ["none needed"] dnl Most current systems + ["-D_FILE_OFFSET_BITS=64"] dnl X/Open LFS spec + ["-D_LARGE_FILES=1"] dnl AIX (which versions?) + ["-n32"] dnl Irix 6.2 w/ SGI compiler +)) + +# _AC_SYS_LARGEFILE_PROBE +# ----------------------- +# Subroutine of AC_SYS_LARGEFILE. Probe for large file support and set +# the cache variable ac_cv_sys_largefile_opts to one of the values in +# the _AC_SYS_LARGEFILE_OPTIONS list, or to "support not detected" if +# none of the options in that list worked. Then, set compilation +# options and #defines as necessary to enable large file support. +# +# If large file support is not detected, the behavior depends on which of +# the top-level AC_SYS_LARGEFILE macros was used (see below). +# +# If you change this macro you may also need to change +# _AC_SYS_LARGEFILE_OPTIONS. +AC_DEFUN([_AC_SYS_LARGEFILE_PROBE], +[AC_CACHE_CHECK([for $CC option to enable large file support], + [ac_cv_sys_largefile_opts], + [ac_save_CC="$CC" + ac_opt_found=no + for ac_opt in _AC_SYS_LARGEFILE_OPTIONS; do + AS_IF([test x"$ac_opt" != x"none needed"], + [CC="$ac_save_CC $ac_opt"]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_CODE])], + [ac_cv_sys_largefile_opts="$ac_opt" + ac_opt_found=yes]) + test $ac_opt_found = no || break + done + CC="$ac_save_CC" + test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected"]) + +ac_have_largefile=yes +AS_CASE([$ac_cv_sys_largefile_opts], + ["none needed"], [], + ["support not detected"], + [ac_have_largefile=no], + + ["-D_FILE_OFFSET_BITS=64"], + [AC_DEFINE([_FILE_OFFSET_BITS], [64], + [Number of bits in a file offset, on hosts where this is settable.])], + + ["-D_LARGE_FILES=1"], + [AC_DEFINE([_LARGE_FILES], [1], + [Define to 1 on platforms where this makes off_t a 64-bit type.])], + + ["-n32"], + [CC="$CC -n32"], + + [AC_MSG_ERROR( + [internal error: bad value for \$ac_cv_sys_largefile_opts])]) + +_AC_SYS_YEAR2038_OPT_IN +]) +# _AC_SYS_LARGEFILE_ENABLE +# ------------------------ +# Subroutine of AC_SYS_LARGEFILE. Note that this +# is expanded very late and therefore there cannot be any code in the +# AC_ARG_ENABLE. The default value for enable_largefile is emitted +# unconditionally because the generated shell code always looks at +# this variable. +m4_define([_AC_SYS_LARGEFILE_ENABLE], +[m4_divert_text([DEFAULTS], + enable_largefile=yes)]dnl +[AC_ARG_ENABLE([largefile], + [AS_HELP_STRING([--disable-largefile], [omit support for large files])])]) # AC_SYS_LARGEFILE # ---------------- @@ -80,44 +306,14 @@ rm -rf conftest*[]dnl # Additionally, on Linux file systems with 64-bit inodes a file that happens # to have a 64-bit inode number cannot be accessed by 32-bit applications on # Linux x86/x86_64. This can occur with file systems such as XFS and NFS. +# This macro allows configuration to continue if the system doesn't support +# large files. AC_DEFUN([AC_SYS_LARGEFILE], -[AC_ARG_ENABLE(largefile, - [ --disable-largefile omit support for large files]) -AS_IF([test "$enable_largefile" != no], - [AC_CACHE_CHECK([for special C compiler options needed for large files], - ac_cv_sys_largefile_CC, - [ac_cv_sys_largefile_CC=no - if test "$GCC" != yes; then - ac_save_CC=$CC - while :; do - # IRIX 6.2 and later do not support large files by default, - # so use the C compiler's -n32 option if that helps. - AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])]) - AC_COMPILE_IFELSE([], [break]) - CC="$CC -n32" - AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break]) - break - done - CC=$ac_save_CC - rm -f conftest.$ac_ext - fi]) - if test "$ac_cv_sys_largefile_CC" != no; then - CC=$CC$ac_cv_sys_largefile_CC - fi - - _AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, - ac_cv_sys_file_offset_bits, - [Number of bits in a file offset, on hosts where this is settable.], - [_AC_SYS_LARGEFILE_TEST_INCLUDES]) - AS_CASE([$ac_cv_sys_file_offset_bits], - [unknown], - [_AC_SYS_LARGEFILE_MACRO_VALUE([_LARGE_FILES], [1], - [ac_cv_sys_large_files], - [Define for large files, on AIX-style hosts.], - [_AC_SYS_LARGEFILE_TEST_INCLUDES])], - [64], - [gl_YEAR2038_BODY([])])]) -])# AC_SYS_LARGEFILE +[m4_provide_if([_AC_SYS_LARGEFILE_PROBE], [], [dnl + AS_IF([test "$enable_largefile" != no], [_AC_SYS_LARGEFILE_PROBE]) + AC_CONFIG_COMMANDS_PRE([_AC_SYS_LARGEFILE_ENABLE]) +])]) +])# m4_ifndef AC_SYS_YEAR2038 # Enable large files on systems where this is implemented by Gnulib, not by the # system headers. diff --git a/m4/sig_atomic_t.m4 b/m4/sig_atomic_t.m4 index 2e8c48d..268f131 100644 --- a/m4/sig_atomic_t.m4 +++ b/m4/sig_atomic_t.m4 @@ -1,5 +1,5 @@ # sig_atomic_t.m4 serial 3 -dnl Copyright (C) 2003, 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2003, 2009-2023 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 --git a/m4/stdbool.m4 b/m4/stdbool.m4 deleted file mode 100644 index c67908a..0000000 --- a/m4/stdbool.m4 +++ /dev/null @@ -1,118 +0,0 @@ -# Check for stdbool.h that conforms to C99. - -dnl Copyright (C) 2002-2006, 2009-2022 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. - -#serial 9 - -# Prepare for substituting if it is not supported. - -AC_DEFUN([gl_STDBOOL_H], -[ - AC_REQUIRE([AC_CHECK_HEADER_STDBOOL]) - AC_REQUIRE([AC_CANONICAL_HOST]) - - dnl On some platforms, does not exist or does not conform to C99. - dnl On Solaris 10 with CC=cc CXX=CC, exists but is not usable - dnl in C++ mode (and no exists). In this case, we use our - dnl replacement, also in C mode (for binary compatibility between C and C++). - if test "$ac_cv_header_stdbool_h" = yes; then - case "$host_os" in - solaris*) - if test -z "$GCC"; then - GL_GENERATE_STDBOOL_H=true - else - GL_GENERATE_STDBOOL_H=false - fi - ;; - *) - GL_GENERATE_STDBOOL_H=false - ;; - esac - else - GL_GENERATE_STDBOOL_H=true - fi - - if test "$ac_cv_type__Bool" = yes; then - HAVE__BOOL=1 - else - HAVE__BOOL=0 - fi - AC_SUBST([HAVE__BOOL]) -]) - -m4_version_prereq([2.72], [], [ - -AC_DEFUN([AC_CHECK_HEADER_STDBOOL], - [AC_CHECK_TYPES([_Bool]) - AC_CACHE_CHECK([for stdbool.h that conforms to C99 or later], - [ac_cv_header_stdbool_h], - [AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[#include - - /* "true" and "false" should be usable in #if expressions and - integer constant expressions, and "bool" should be a valid - type name. - - Although C 1999 requires bool, true, and false to be macros, - C 2023 and C++ 2011 overrule that, so do not test for that. - Although C 1999 requires __bool_true_false_are_defined and - _Bool, C 2023 says they are obsolescent, so do not require - them. */ - - #if !true - #error "'true' is not true" - #endif - #if true != 1 - #error "'true' is not equal to 1" - #endif - 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 sb { bool s: 1; bool t; } s; - char l[sizeof s.t > 0 ? 1 : -1]; - - /* The following fails for - HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ - 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 - https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html - https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html - */ - bool p = true; - bool *pp = &p; - ]], - [[ - bool ps = &s; - *pp |= p; - *pp |= ! p; - - /* 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); - ]])], - [ac_cv_header_stdbool_h=yes], - [ac_cv_header_stdbool_h=no])]) -])# AC_CHECK_HEADER_STDBOOL - -]) # m4_version_prereq 2.72 diff --git a/m4/warn-on-use.m4 b/m4/warn-on-use.m4 index a81731f..10649c5 100644 --- a/m4/warn-on-use.m4 +++ b/m4/warn-on-use.m4 @@ -1,5 +1,5 @@ # warn-on-use.m4 serial 10 -dnl Copyright (C) 2010-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2010-2023 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 --git a/m4/year2038.m4 b/m4/year2038.m4 deleted file mode 100644 index 06db589..0000000 --- a/m4/year2038.m4 +++ /dev/null @@ -1,124 +0,0 @@ -# year2038.m4 serial 7 -dnl Copyright (C) 2017-2022 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 Attempt to ensure that 'time_t' can go past the year 2038 and that -dnl the functions 'time', 'stat', etc. work with post-2038 timestamps. - -AC_DEFUN([gl_YEAR2038_EARLY], -[ - AC_REQUIRE([AC_CANONICAL_HOST]) - case "$host_os" in - mingw*) - AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1], - [For 64-bit time_t on 32-bit mingw.]) - ;; - esac -]) - -# gl_YEAR2038_TEST_INCLUDES -# ------------------------- -AC_DEFUN([gl_YEAR2038_TEST_INCLUDES], -[[ - #include - /* Check that time_t can represent 2**32 - 1 correctly. */ - #define LARGE_TIME_T \\ - ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) - int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 - && LARGE_TIME_T % 65537 == 0) - ? 1 : -1]; -]]) - -# gl_YEAR2038_BODY(REQUIRE-YEAR2038-SAFE) ------------------------------------------ -AC_DEFUN([gl_YEAR2038_BODY], -[ - AC_ARG_ENABLE([year2038], - [ --disable-year2038 omit support for timestamps past the year 2038]) - AS_IF([test "$enable_year2038" != no], - [ - dnl On many systems, time_t is already a 64-bit type. - dnl On those systems where time_t is still 32-bit, it requires kernel - dnl and libc support to make it 64-bit. For glibc 2.34 and later on Linux, - dnl defining _TIME_BITS=64 and _FILE_OFFSET_BITS=64 is needed on x86 and ARM. - dnl - dnl On native Windows, the system include files define types __time32_t - dnl and __time64_t. By default, time_t is an alias of - dnl - __time32_t on 32-bit mingw, - dnl - __time64_t on 64-bit mingw and on MSVC (since MSVC 8). - dnl But when compiling with -D__MINGW_USE_VC2005_COMPAT, time_t is an - dnl alias of __time64_t. - dnl And when compiling with -D_USE_32BIT_TIME_T, time_t is an alias of - dnl __time32_t. - AC_CACHE_CHECK([for time_t past the year 2038], [gl_cv_type_time_t_y2038], - [AC_COMPILE_IFELSE( - [AC_LANG_SOURCE([gl_YEAR2038_TEST_INCLUDES])], - [gl_cv_type_time_t_y2038=yes], [gl_cv_type_time_t_y2038=no]) - ]) - if test "$gl_cv_type_time_t_y2038" = no; then - AC_CACHE_CHECK([for 64-bit time_t with _TIME_BITS=64], - [gl_cv_type_time_t_bits_macro], - [AC_COMPILE_IFELSE( - [AC_LANG_SOURCE([[#define _TIME_BITS 64 - #define _FILE_OFFSET_BITS 64 - ]gl_YEAR2038_TEST_INCLUDES])], - [gl_cv_type_time_t_bits_macro=yes], - [gl_cv_type_time_t_bits_macro=no]) - ]) - if test "$gl_cv_type_time_t_bits_macro" = yes; then - AC_DEFINE([_TIME_BITS], [64], - [Number of bits in a timestamp, on hosts where this is settable.]) - dnl AC_SYS_LARGFILE also defines this; it's OK if we do too. - AC_DEFINE([_FILE_OFFSET_BITS], [64], - [Number of bits in a file offset, on hosts where this is settable.]) - gl_cv_type_time_t_y2038=yes - fi - fi - if test $gl_cv_type_time_t_y2038 = no; then - AC_COMPILE_IFELSE( - [AC_LANG_SOURCE( - [[#ifdef _USE_32BIT_TIME_T - int ok; - #else - error fail - #endif - ]])], - [AC_MSG_FAILURE( - [The 'time_t' type stops working after January 2038. - Remove _USE_32BIT_TIME_T from the compiler flags.])], - [# If not cross-compiling and $1 says we should check, - # and 'touch' works with a large timestamp, then evidently wider time_t - # is desired and supported, so fail and ask the builder to fix the - # problem. Otherwise, just warn the builder. - m4_ifval([$1], - [if test $cross_compiling = no \ - && TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null; then - case `TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null` in - *'Feb 7 2106'* | *'Feb 7 17:10'*) - AC_MSG_FAILURE( - [The 'time_t' type stops working after January 2038, - and your system appears to support a wider 'time_t'. - Try configuring with 'CC="${CC} -m64"'. - To build with a 32-bit time_t anyway (not recommended), - configure with '--disable-year2038'.]);; - esac - rm -f conftest.time - fi]) - if test "$gl_warned_about_y2038" != yes; then - AC_MSG_WARN( - [The 'time_t' type stops working after January 2038, - and this package needs a wider 'time_t' type - if there is any way to access timestamps after that. - Configure with 'CC="${CC} -m64"' perhaps?]) - gl_warned_about_y2038=yes - fi - ]) - fi]) -]) - -AC_DEFUN([gl_YEAR2038], -[ - gl_YEAR2038_BODY([require-year2038-safe]) -]) diff --git a/m4/zzgnulib.m4 b/m4/zzgnulib.m4 index fd73a20..362102b 100644 --- a/m4/zzgnulib.m4 +++ b/m4/zzgnulib.m4 @@ -1,5 +1,5 @@ # zzgnulib.m4 serial 1 -dnl Copyright (C) 2020-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2020-2023 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 --git a/makefile.com b/makefile.com index 382c74d..878c5e3 100644 --- a/makefile.com +++ b/makefile.com @@ -154,7 +154,7 @@ $ exit $ endsubroutine : compileit $! $!----------------------------------------------------------------------------- -$!Copyright (C) 1996-2022 Free Software Foundation, Inc. +$!Copyright (C) 1996-2023 Free Software Foundation, Inc. $!This file is part of GNU Make. $! $!GNU Make is free software; you can redistribute it and/or modify it under diff --git a/mk/Amiga.mk b/mk/Amiga.mk index 1f2afe3..c712092 100644 --- a/mk/Amiga.mk +++ b/mk/Amiga.mk @@ -1,8 +1,8 @@ -# GNU -*-Makefile-*- to build GNU make on Amiga +# GNU -*-Makefile-*- to build GNU Make on Amiga # # Amiga overrides for use with Basic.mk. # -# Copyright (C) 2017-2022 Free Software Foundation, Inc. +# Copyright (C) 2017-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under diff --git a/mk/VMS.mk b/mk/VMS.mk index 33ef306..c6ca377 100644 --- a/mk/VMS.mk +++ b/mk/VMS.mk @@ -1,8 +1,8 @@ -# GNU -*-Makefile-*- to build GNU make on VMS +# GNU -*-Makefile-*- to build GNU Make on VMS # # VMS overrides for use with Basic.mk. # -# Copyright (C) 2017-2022 Free Software Foundation, Inc. +# Copyright (C) 2017-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under diff --git a/mk/Windows32.mk b/mk/Windows32.mk index 310fe7b..27712f3 100644 --- a/mk/Windows32.mk +++ b/mk/Windows32.mk @@ -1,8 +1,8 @@ -# GNU -*-Makefile-*- to build GNU make on Windows +# GNU -*-Makefile-*- to build GNU Make on Windows # # Windows overrides for use with Basic.mk. # -# Copyright (C) 2017-2022 Free Software Foundation, Inc. +# Copyright (C) 2017-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under diff --git a/mk/msdosdjgpp.mk b/mk/msdosdjgpp.mk index 98bfe0d..3aac907 100644 --- a/mk/msdosdjgpp.mk +++ b/mk/msdosdjgpp.mk @@ -1,8 +1,8 @@ -# GNU -*-Makefile-*- to build GNU make on MS-DOS with DJGPP +# GNU -*-Makefile-*- to build GNU Make on MS-DOS with DJGPP # # MS-DOS overrides for use with Basic.mk. # -# Copyright (C) 2017-2022 Free Software Foundation, Inc. +# Copyright (C) 2017-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under diff --git a/po/Makevars b/po/Makevars index f7abd7b..fa4db0b 100644 --- a/po/Makevars +++ b/po/Makevars @@ -9,7 +9,7 @@ top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ \ - \ + \ --from-code=UTF-8\ --flag=_:1:pass-c-format\ --flag=N_:1:pass-c-format\ diff --git a/po/POTFILES.in b/po/POTFILES.in index 040d60f..39c3d80 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,5 +1,5 @@ # List of source files containing translatable strings. -# Copyright (C) 2000-2022 Free Software Foundation, Inc. +# Copyright (C) 2000-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under diff --git a/po/be.po b/po/be.po index 9f9803f..0ce59e2 100644 --- a/po/be.po +++ b/po/be.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: make 3.80\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" "PO-Revision-Date: 2003-10-21 11:50+0300\n" "Last-Translator: Ales Nyakhaychyk \n" "Language-Team: Belarusian \n" @@ -129,7 +129,7 @@ msgstr " (убудаваны):" msgid " (from '%s', line %lu):\n" msgstr " (з\"%s\", радок %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -137,62 +137,62 @@ msgstr "" "\n" "# Тэчкі\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "" -#: src/dir.c:1122 +#: src/dir.c:1123 #, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "" -#: src/dir.c:1155 +#: src/dir.c:1156 #, c-format msgid "# %s (key %s, mtime %s): " msgstr "" -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "" -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "" -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Не" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " файлаў, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "не" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr "" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " так далёка." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr "" @@ -212,176 +212,176 @@ msgstr "" msgid "unterminated variable reference" msgstr "" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "" -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "" -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" -#: src/file.c:407 +#: src/file.c:404 #, fuzzy, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Выдаляецца файл \"%s\"" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Выдаляюцца прамежкавыя файлы...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr "" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Бягучы час" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: адбітак часу па-за дапушчальнымі межамі, падстаўляецца %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Ня мэта:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "" -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "" -#: src/file.c:1098 +#: src/file.c:1095 #, fuzzy msgid "# Command line target." msgstr "загадны радок" -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "" -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "" -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "" -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "" -#: src/file.c:1111 +#: src/file.c:1108 msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "" -#: src/file.c:1113 +#: src/file.c:1110 msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "" -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Так сама робяцца:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Час зьмяненьня ніколі не правяраўся." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Файл ня йснуе." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Файл вельмі стары." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Апошняе зьмяненьне %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Файл быў абноўлены." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Файл ня быў абноўлены." -#: src/file.c:1139 +#: src/file.c:1136 #, fuzzy msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Загады, што выконваюцца зараз (ГЭТА - ПАМЫЛКА)." -#: src/file.c:1142 +#: src/file.c:1139 #, fuzzy msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Загады, што выконваюцца зараз (ГЭТА - ПАМЫЛКА)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Пасьпяхова абноўлены." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "" -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "" -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -389,14 +389,14 @@ msgstr "" "\n" "# Файлы" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" "# " msgstr "" -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "" @@ -461,132 +461,137 @@ msgstr "windows32_openpipe (): памылка ў process_init_fd()\n" msgid "Cleaning up temporary batch file %s\n" msgstr "" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, fuzzy, c-format msgid "open: %s: %s" msgstr "%s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, fuzzy, c-format msgid "write: %s: %s" msgstr "%s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, fuzzy, c-format msgid "close: %s: %s" msgstr "%s%s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "" + +#: src/function.c:2422 #, fuzzy, c-format msgid "read: %s: %s" msgstr "%s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, fuzzy, c-format msgid "file: invalid file operation: %s" msgstr "%s: нерэчаісны выбар -- %c.\n" -#: src/function.c:2527 +#: src/function.c:2552 #, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "" -#: src/function.c:2539 +#: src/function.c:2564 #, fuzzy, c-format msgid "unimplemented on this platform: function '%s'" msgstr "Ня зроблена для гэтае плятформы: функцыя \"%s\"" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "" -#: src/getopt.c:659 +#: src/getopt.c:663 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: выбар \"%s\" - неадназначы.\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: выбар \"--%s\" не дазваляе довад.\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: выбар \"%c%s\" не дазваляе довад.\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, fuzzy, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: выбар \"%s\" патрабуе довад.\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: нераспазнаны выбар \"--%s\".\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: нераспазнаны выбар \"%c%s\".\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: недапушчальны выбар -- %c.\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: нерэчаісны выбар -- %c.\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: выбар патрабуе довад -- %c.\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: выбар \"-W %s\" - неадназначын.\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: выбар \"-W %s\" не дазваляе довад.\n" @@ -636,280 +641,290 @@ msgstr "" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "" -#: src/implicit.c:326 +#: src/implicit.c:328 #, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:501 +#: src/implicit.c:503 #, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "" -#: src/implicit.c:768 +#: src/implicit.c:770 #, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:770 +#: src/implicit.c:772 #, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:827 +#: src/implicit.c:829 #, fuzzy, c-format msgid "'%s' ought to exist.\n" msgstr "Файл \"%s\" ня йснуе.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "" -#: src/implicit.c:856 +#: src/implicit.c:858 #, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "" -#: src/implicit.c:870 +#: src/implicit.c:872 #, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "" -#: src/implicit.c:885 +#: src/implicit.c:887 #, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "" -#: src/implicit.c:886 +#: src/implicit.c:888 #, fuzzy, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Выдаляюцца прамежкавыя файлы...\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:931 +#: src/implicit.c:933 #, c-format msgid "Not found '%s'.\n" msgstr "" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "" -#: src/job.c:380 +#: src/job.c:377 #, fuzzy msgid "Cannot create a temporary file" msgstr "fwrite (часовы файл)" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr "" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr "" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 #, fuzzy msgid "" msgstr " (убудаваны):" -#: src/job.c:587 +#: src/job.c:584 #, fuzzy, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "*** [%s] Памылка %d" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Чакаюцца незавершаныя працы...." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr "" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" "Counted %d args in failed launch\n" msgstr "" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "" + +#: src/job.c:1923 src/job.c:1951 #, fuzzy, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s Няма правіла каб зрабіць мэту \"%s\", патрэбную для \"%s\"%s" -#: src/job.c:1910 -#, fuzzy -msgid "target does not exist" -msgstr "# Файл ня йснуе." +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "" -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "" -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "" -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "" -#: src/job.c:2869 +#: src/job.c:2920 #, fuzzy, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL зьменена (раней \"%s\", зараз \"%s\")" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -954,147 +969,147 @@ msgstr "" msgid "The 'load' operation is not supported on this platform" msgstr "Паралельня працы (-j) не падтрымліваюцца на гэтае плятхорме." -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Выбары:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr "" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr "" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" msgstr "" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" msgstr "" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr "" " -h, --help Друкуе гэтае паведамленьне й выходзіць.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" msgstr "" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr "" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " "N.\n" msgstr "" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " "them.\n" msgstr "" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " "it.\n" msgstr "" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base Друкуе нутраную базу даньняў make.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" msgstr "" -#: src/main.c:375 +#: src/main.c:378 #, fuzzy msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Не адлюстроўваць загады.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1102,69 +1117,69 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Выключае -k.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" -#: src/main.c:384 +#: src/main.c:387 #, fuzzy msgid " --trace Print tracing information.\n" msgstr "" " -h, --help Друкуе гэтае паведамленьне й выходзіць.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Друкуе бягучую тэчку.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr "" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" msgstr "" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "пусты радок нерэчаісны ў якасьці назвы файла" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Выкарыстаньне: %s [выбары] [мэта] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1173,7 +1188,7 @@ msgstr "" "\n" "Гэта праграма пабудавана для %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1182,17 +1197,17 @@ msgstr "" "\n" "Гэта праграма падубавана для %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "Паведамляйце пра памылкі на .\n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1202,181 +1217,186 @@ msgid "" "ExceptionAddress = 0x%p\n" msgstr "" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (часовы файл): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "" -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" -#: src/main.c:1930 +#: src/main.c:1946 #, fuzzy, c-format msgid "Makefile from standard input specified twice" msgstr "Makefile са стандартнага ўводу зададзены двойчы." -#: src/main.c:1940 +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "" + +#: src/main.c:1959 #, fuzzy, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite (часовы файл)" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Паралельня працы (-j) не падтрымліваюцца на гэтае плятхорме." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "" -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "" -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Абнаўляюцца make-файлы....\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "" -#: src/main.c:2548 +#: src/main.c:2565 #, fuzzy, c-format msgid "Included makefile '%s' was not found." msgstr "Makefile \"%s\" ня знойдзен" -#: src/main.c:2552 +#: src/main.c:2569 #, fuzzy, c-format msgid "Makefile '%s' was not found" msgstr "Makefile \"%s\" ня знойдзен" -#: src/main.c:2700 +#: src/main.c:2717 #, c-format msgid "Couldn't change back to original directory" msgstr "" -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Няма мэт" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" -#: src/main.c:3186 +#: src/main.c:3222 #, fuzzy, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "выбар \"-%c\" патрабуе станоўчы цэлы довад" -#: src/main.c:3267 +#: src/main.c:3315 #, fuzzy, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "выбар \"-%c\" патрабуе станоўчы цэлы довад" -#: src/main.c:3652 +#: src/main.c:3721 #, fuzzy, c-format msgid "%sBuilt for %s\n" msgstr "" "\n" "Гэта праграма пабудавана для %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, fuzzy, c-format msgid "%sBuilt for %s (%s)\n" msgstr "" "\n" "Гэта праграма падубавана для %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later , 2019, 2020, 2022. -# +# Alexander Shopov , 2019, 2020, 2022, 2023. +# phony target изкуствена msgid "" msgstr "" -"Project-Id-Version: make 4.3.92\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2022-10-31 02:23-0400\n" -"PO-Revision-Date: 2022-10-24 10:55+0200\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-15 14:19+0200\n" "Last-Translator: Alexander Shopov \n" "Language-Team: Bulgarian \n" "Language: bg\n" @@ -130,7 +130,7 @@ msgstr " (вградено):" msgid " (from '%s', line %lu):\n" msgstr " (от „%s“, ред %lu)\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -138,62 +138,62 @@ msgstr "" "\n" "# Директории\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# „%s“: не може да се получи информация чрез „stat“.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (ключ %s, време на промяна %s): не може да се отвори.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (устройство %d, i-възел [%d,%d,%d]): не може да се отвори.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (устройство %ld, i-възел %ld): не може да се отвори.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (ключ %s, време на промяна %s): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (устройство %d, i-възел [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (устройство %ld, i-възел %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Няма" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " файлове, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "няма" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " пречки" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " засега." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " пречки в %lu директории.\n" @@ -215,175 +215,175 @@ msgstr "Рекурсивната променлива „%s“ сочи себе msgid "unterminated variable reference" msgstr "незавършен указател към променлива" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Рецептата е указана за файл „%s“ при %s:%lu," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Рецептата за файла „%s“ бе открита при търсене на вградените правила." -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "но сега „%s“ се счита за същия файл като „%s“." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Рецептата за „%s“ се прескача, а се ползва тази за „%s“." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "единичното двоеточие „%s“ не може да се преименува на двойно двоеточие „%s“" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "двойното двоеточие „%s“ не може да се преименува на единично двоеточие „%s“" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "••• Изтриване на междинния файл „%s“" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Изтриване на междинните файлове…\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "„%s“ не може да е едновременно „.NOTINTERMEDIATE“ и „.INTERMEDIATE“" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "„%s“ не може да е едновременно „.NOTINTERMEDIATE“ и „.SECONDARY“" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr "„.NOTINTERMEDIATE“ и „.SECONDARY“ са несъвместими" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Текущо време" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: времевото клеймо е извън диапазона, замества се с „%s“" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Не е цел:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Ценен файл (изискване на „.PRECIOUS“)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." -msgstr "# Фалшива цел (изискване на „.PHONY“)." +msgstr "# Изкуствена цел (изискване на „.PHONY“)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Цел на командния ред." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Стандартен, MAKEFILES или -include/sinclude makefile." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Вградено правило" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Търсенето във вградените правила е извършено." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Търсенето във вградените правила не е извършено." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Вградена/статична основа на шаблон: „%s“\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Файлът е междинно изискване." -#: src/file.c:1111 +#: src/file.c:1108 msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Файлът е изискване на „.NOTINTERMEDIATE.“" -#: src/file.c:1113 +#: src/file.c:1110 msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Вторичен файл (изискване на „.SECONDARY“)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Също изгражда:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Времето на промяна не е проверено." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Файлът не съществува." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Файлът е много стар." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Последна промяна на „%s“\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Файлът е обновен." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Файлът не е обновен." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Рецептата в момента се изпълнява (това е ГРЕШКА)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Рецептата за зависимостите в момента се изпълнява (това е ГРЕШКА)" -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Успешно обновено." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Трябва да бъде обновено („-q“ е зададена)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Неуспешно обновяване." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Неправилна стойност в член на „command_state“!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -391,7 +391,7 @@ msgstr "" "\n" "# Файлове" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -401,7 +401,7 @@ msgstr "" "# статистика за речника за файлове:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: полето „%s“ не е кеширано: %s" @@ -468,132 +468,137 @@ msgstr "„windows32_openpipe()“: неуспешно извикване на msgid "Cleaning up temporary batch file %s\n" msgstr "Изчистване на временен файл за пакетна обработка „%s“\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "файл: липсва име на файл" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "отваряне: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "запазване: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "затваряне: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "файл: прекалено много аргументи" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "файл: неуспешно отваряне на „%s“: %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "четене: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "файл: неправилно действие върху файл: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "недостатъчен брой аргументи (%u) към функцията „%s“" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "без реализация на тази платформа: функция „%s“" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "незавършено извикване на функцията „%s“: липсва „%c“" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Празно име на функция" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Грешно име на функция: „%s“" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Името на функцията е твърде дълго: „%s“" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Неправилен минимален брой аргументи (%u) за функцията „%s“" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Неправилен максимален брой аргументи (%u) за функцията „%s“" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: опцията „%s“ не е еднозначна\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: опцията „--%s“ не приема аргумент\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: опцията „%c%s“ не приема аргумент\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: опцията „%s“ изисква аргумент\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: непозната опция „--%s“\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: непозната опция „%c%s“\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: непозволена опция — %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: неправилна опция — „%c“\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: опцията изисква аргумент — %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: опцията „-W %s“ не е еднозначна\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: опцията „-W %s“ не приема аргумент\n" @@ -643,181 +648,181 @@ msgstr "Търсене на вградено правило по член на msgid "No archive-member implicit rule found for '%s'.\n" msgstr "Липсва вградено правило по член на архив за „%s“.\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Избягване на вградено правило по член на архив за „%s“.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "Нов, засилен опит.\n" -#: src/implicit.c:501 +#: src/implicit.c:503 #, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Пробване на шаблонно правило „%s“ с основа „%.*s“.\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Твърде дълга основа: „%s%.*s“.\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Отхвърляне на правилото „%s“ заради неизпълнимото изискване „%s“.\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "" "Отхвърляне на правилото „%s“ заради неизпълнимото вградено изискване „%s“.\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Опитване на изискването „%s“.\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Опитване на вграденото изискване „%s“.\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, c-format msgid "'%s' ought to exist.\n" msgstr "„%s“ задължително трябва да съществува.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "„%s“ е открит.\n" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "Използва се правилото за съвместимост „%s“ заради „%s“.\n" -#: src/implicit.c:856 +#: src/implicit.c:858 #, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "" "Изискването „%s“ на целта „%s“ не се квалифицира като задължително да " "съществува.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Изисканото „%s“ е открито чрез „VPATH“ „%s“.\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Търсене на правило с изричен файл „%s“.\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Търсене на правило с междинен файл „%s“.\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Отхвърляне на правило „%s“ заради неизпълнимото изискване „%s“.\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, c-format msgid "Not found '%s'.\n" msgstr "„%s“ липсва.\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Открито е вградено правило „%s“ за „%s“.\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Търсене на правило за съвместимост за „%s“.\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Не е открито вградено правило за „%s“.\n" -#: src/job.c:380 +#: src/job.c:377 msgid "Cannot create a temporary file" msgstr "Не може да се създаде временен файл" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (паметта е разтоварена)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (прескачане)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "<вградено>" -#: src/job.c:587 +#: src/job.c:584 #, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Грешка %d%s%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "••• Изчакване на незавършени задачи…" -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Незавършил дъщерен процес %p (%s) ИД_ПР %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (отдалечено)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Приключване на спечелелия дъщерен процес %p ИД_ПР %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Приключване на изгубилия дъщерен процес %p ИД_ПР %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Изчистване на временен файл за пакетна обработка „%s“\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Неуспешно изчистване на временен файл за пакетна обработка „%s“: %d\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Изчистване на дъщерния процес %p PID %s%s от веригата.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Освобождаване на жетона за дъщерен процес %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "„process_easy()“ не успя да стартира процес (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -826,92 +831,103 @@ msgstr "" "\n" "При неуспешно стартиране са изброени %d аргумента\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Поставяне на дъщерния процес %p (%s) PID %s%s във веригата.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Получен е жетон за дъщерен процес %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: обновяване на целта „%s“, защото: целта е изкуствена (.PHONY)" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: обновяване на целта „%s“, защото: целта не съществува" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: обновяване на целта „%s“ заради: %s" -#: src/job.c:1910 -msgid "target does not exist" -msgstr "целта не съществува" +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: обновяване на целта „%s“ заради: неизвестни причини" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" "на тази операционна система не могат да се налагат ограничения за " "натоварването" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "ограничението не може да бъде наложено: " -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "" "няма повече манипулатори за файлове: стандартният вход не може да се дублира" -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "" "няма повече манипулатори за файлове: стандартният изход не може да се дублира" -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "" "няма повече манипулатори за файлове: стандартната грешка не може да се " "дублира" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "Стандартният вход не може да се възстанови" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "Стандартният изход не може да се възстанови" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "Стандартната грешка не може да се възстанови" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" "„make“ приключи дъщерен процес с идентификатор %s, все още се чака за %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: пространството на средата може да е изчерпано" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "Променливата „SHELL“ е променена (бе „%s“, а сега е „%s“)\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Не може да се създаде временен файл за пакетна обработка в „%s“\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -920,7 +936,7 @@ msgstr "" "Съдържание на файл за пакетна обработка:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -929,7 +945,7 @@ msgstr "" "Съдържание на файла за пакетна обработка:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -975,19 +991,19 @@ msgstr "Изключване на споделен обект %s\n" msgid "The 'load' operation is not supported on this platform" msgstr "Операцията за зареждане („load“) не се поддържа на тази платформа" -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Опции:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m прескача се, за съвместимост\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make безусловно изграждане на всички цели\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -996,16 +1012,16 @@ msgstr "" " преминаване към тази ДИРЕКТОРИЯ, преди да се\n" " прави каквото и да е\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d информация за изчистване на грешки\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr " --debug[=ФЛАГОВЕ] вид информация за изчистване на грешки\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1016,14 +1032,14 @@ msgstr "" "изграждането\n" " (makefile)\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " --eval=НИЗ, --eval=НИЗ изчисляване на НИЗа като израз във файловете\n" " управляващи изграждането (makefile)\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1033,15 +1049,15 @@ msgstr "" "изграждането\n" " (makefile)\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help извеждане на тази помощ и изход\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors незачитане на грешките от рецептите\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1049,7 +1065,7 @@ msgstr "" " -I ДИРЕКТОРИЯ, --include-dir=ДИРЕКТОРИЯ\n" " търсене на вмъкнатите файлове в ДИРЕКТОРИЯта\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1058,19 +1074,19 @@ msgstr "" "БРОЙ,\n" " без аргумент — без ограничения\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" " --jobserver-style=СТИЛ избор на ползвания стил за сървъра за задачи\n" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going продължаване дори и някои от целите не могат\n" " да се изградят\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1080,7 +1096,7 @@ msgstr "" " множество задачи се стартират, само ако\n" " натоварването е ≤N\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1088,7 +1104,7 @@ msgstr "" " -L, --check-symlink-times използване на минималното време на промяна\n" " измежду символна връзка и целта ѝ\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1097,7 +1113,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " извеждане на целите без изпълнение\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1107,7 +1123,7 @@ msgstr "" " без преизграждане на ФАЙЛа, който да се\n" " счита за много стар\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1116,13 +1132,13 @@ msgstr "" " ВИД синхронизация на изхода от паралелните " "задачи\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base извеждане на вътрешната база от данни на " "„make“\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1130,17 +1146,17 @@ msgstr "" " -q, --question без изпълнение на цели, само изходният код\n" " да указва дали те са актуални\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules изключване на вградените правила\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables изключване на вграденото задаване на " "променливи\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" @@ -1148,17 +1164,17 @@ msgstr "" " --shuffle[={SEED|random|reverse|none}]\n" " разбъркване на изискванията и целите\n" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet без извеждане на рецептите\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent извеждане на рецептите (изключване на „--" "silent“)\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1166,29 +1182,29 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Изключване на „-k“\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch обновяване на информацията чрез „touch“ " "вместо\n" " ново изграждане\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr "" " --trace извеждане на информация за изчистване на " "грешки\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version извеждане на версията и изход\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory извеждане на текущата директория\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1196,7 +1212,7 @@ msgstr "" " --no-print-directory изключване на „-w“, дори ако вградената\n" " функционалност я е включила\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1204,7 +1220,7 @@ msgstr "" " -W ФАЙЛ, --what-if=ФАЙЛ, --new-file=ФАЙЛ, --assume-new=ФАЙЛ\n" " считане на ФАЙЛа за абсолютно нов\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1212,32 +1228,32 @@ msgstr "" " --warn-undefined-variables предупреждаване при използването\n" " на незададена променлива\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "грешка при запис: стандартна грешка" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "задаването на празен низ за име на файл е грешка" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "неправилно ниво за изчистване на грешки „%s“" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "непознат вид синхронизация „%s“ към опцията „--output-sync“" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Употреба: %s [ОПЦИЯ]… [ФАЙЛ]…\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1246,7 +1262,7 @@ msgstr "" "\n" "Тази програма е изградена за %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1255,19 +1271,19 @@ msgstr "" "\n" "Тази програма е изградена за %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "" "Съобщавайте за програмни грешки на .\n" "За грешки в българския превод на .\n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: прихванато прекъсване/изключение (код = 0x%lx, адрес = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1282,32 +1298,32 @@ msgstr "" "Флагове на изключение = %lx\n" "Адрес на изключение = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Нарушение на достъпа: операция за запис на адрес 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Нарушение на достъпа: операция за четене на адрес 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "„find_and_set_shell()“ задава стандартна обвивка = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "„find_and_set_shell()“ — търсенето в пътя задава стандартна обвивка = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "изтриване („unlink“ на временен файл): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1315,155 +1331,162 @@ msgstr "" "ПРЕДУПРЕЖДЕНИЕ: сървърът за задачи не е наличен, ползва се „-j1“. Добавете " "„+“ към родителското правило на „make“." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "ПРЕДУПРЕЖДЕНИЕ: в подизграждане е зададено „-j%d“. Режимът на сървър за " "задачи се изключва." -#: src/main.c:1930 +#: src/main.c:1946 #, c-format msgid "Makefile from standard input specified twice" msgstr "Файлът управляващ изграждането е зададен двукратно на стандартния вход" -#: src/main.c:1940 +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "" +"файлът управляващ изграждането, не може да се запази от стандартния вход във " +"временен файл" + +#: src/main.c:1959 #, c-format msgid "fwrite: temporary file %s: %s" msgstr "запис („fwrite“ на временен файл) %s: %s" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "ПРЕДУПРЕЖДЕНИЕ: в подизграждане е зададено „-j%d“. Режимът на сървър за " "задачи се изключва." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Тази система не поддържа паралелни задачи („-j“)." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Преминаване към еднозадачен режим (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "Използва се контролер за сървъра за задачи „%s“\n" -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "Използва се ключалка за синхронизация на изхода: %s\n" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Не се поддържат символни връзки: „-L“ се изключва." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "Включен е режимът на разбъркване: %s\n" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Обновяване на управляващите изграждането файлове (makefile)…\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" "Управляващият изграждането файл „%s“ може да зацикли, затова не се " "пресъздава.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: не може да се зареди" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Неуспешно пресъздаване на управляващия изграждането файл „%s“" -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Вмъкнатият управляващ изграждането файл „%s“ липсва" -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Управляващият изграждането файл „%s“ липсва" -#: src/main.c:2700 +#: src/main.c:2717 #, c-format msgid "Couldn't change back to original directory" msgstr "Невъзможно връщане към първоначалната директория" -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Изпълнение наново[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "Стандартната цел „.DEFAULT_GOAL“ съдържа повече от една цел" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Няма цели" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Не е зададена цел, а и липсва управляващ изграждането файл" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Обновяване на целите…\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "ПРЕДУПРЕЖДЕНИЕ: проблем със системния часовник — изграждането може да е " "непълно." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "опцията „%s%s“ изисква непразен аргумент-низ" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "опцията „%c“ изисква положителен, целочислен аргумент" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sИзградена за %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sИзградена за %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later , 2011, 2013, 2014, 2016, 2019, 2020. -# Petr Pisar , 2022. +# Petr Pisar , 2022, 2023. # # directive → klíčové slovo (nepřekládat jako příkaz kvůli záměně) # hash → haÅ¡ (zapisovat česky) @@ -26,10 +26,10 @@ # msgid "" msgstr "" -"Project-Id-Version: make 4.3.92\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2022-10-31 02:23-0400\n" -"PO-Revision-Date: 2022-10-25 20:18+02:00\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-15 22:49+01:00\n" "Last-Translator: Petr Pisar \n" "Language-Team: Czech \n" "Language: cs\n" @@ -151,7 +151,7 @@ msgstr " (vestavěný):" msgid " (from '%s', line %lu):\n" msgstr " (z „%s“, řádek %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -159,65 +159,65 @@ msgstr "" "\n" "# Adresáře\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: nebylo možné nad ním zavolat stat().\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (klíč %s, čas změny obsahu %s): nebylo možné otevřít.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (zařízení %d, iuzel [%d,%d,%d]): nebylo možné otevřít.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (zařízení %ld, iuzel %ld): nebylo možné otevřít.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (klíč %s, čas změny obsahu %s): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (zařízení %d, iuzel [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (zařízení %ld, iuzel %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Žádný" # TODO: Pluralize -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " souborů, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "žádný " # TODO: Pluralize -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " nemožností " -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " zatím." # TODO: Pluralize -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " nemožností v %lu adresářích.\n" @@ -237,175 +237,175 @@ msgstr "Rekurzivní proměnná „%s“ odkazuje na sebe (nakonec)" msgid "unterminated variable reference" msgstr "neukončený odkaz na proměnnou" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Návod byl určen pro soubor „%s“ v %s:%lu," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Návod pro soubor „%s“ byl nalezen hledáním implicitních pravidel," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "ale „%s“ se nyní považuje za soubor totožný s „%s“." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Návod pro „%s“ bude ignorován ve prospěch návodu pro „%s“." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "„%s“ s jednoduchou dvojtečkou nelze přejmenovat na „%s“ s dvojitou dvojtečkou" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "„%s“ s dvojitou dvojtečkou nelze přejmenovat na „%s“ s jednoduchou dvojtečkou" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "Maže se mezilehlý soubor „%s“ " -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Odstraňují se mezilehlé soubory…\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "%s nemůže být zároveň .NOTINTERMEDIATE a .INTERMEDIATE" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "%s nemůže být zároveň .NOTINTERMEDIATE a .SECONDARY" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr ".NOTINTERMEDIATE a .SECONDARY se vzájemně vylučují" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Aktuální čas" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Časový údaj mimo rozsah, nahrazuje se %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Není cílem:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Cenný soubor (prerekvizita k .PRECIOUS)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# FaleÅ¡ný cíl (prerekvizita k .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Cíl příkazové řádky." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Default, MAKEFILES nebo -include/sinclude makefile." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Vestavěné pravidlo" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Hledalo se za pomoci implicitních pravidel." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Nehledalo se za pomoci implicitních pravidel." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Kořen implicitního/statického vzoru: „%s“\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Soubor je mezilehlá prerekvizita." -#: src/file.c:1111 +#: src/file.c:1108 msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Soubor je prerekvizita k .NOTINTERMEDIATE." -#: src/file.c:1113 +#: src/file.c:1110 msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Souboru je druhotný (prerekvizita k .SECONDARY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Rovněž vyrábí:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Čas změny obsahu se nikdy nekontroluje." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Soubor neexistuje." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Soubor je velmi starý." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Obsah naposledy změněn v %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Soubor byl aktualizován." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Soubor nebyl aktualizován." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Návod se právě vykonává (TOTO JE CHYBA)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Návod pro závislosti se právě vykonává (TOTO JE CHYBA)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Úspěšně aktualizováno." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Je třeba aktualizovat (-q je nastaveno)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Aktualizace selhala." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Neplatná hodnota v členu „command_state“!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -413,7 +413,7 @@ msgstr "" "\n" "# Soubory" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -423,7 +423,7 @@ msgstr "" "# Statistika haÅ¡ovací tabulky souborů:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Položka „%s“ není v keÅ¡i: %s" @@ -473,8 +473,8 @@ msgstr "" #, c-format msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" msgstr "" -"windows32_openpipe: volání DuplicateHandle(chybový výstup) selhalo (chyba=" -"%lu)\n" +"windows32_openpipe: volání DuplicateHandle(chybový výstup) selhalo " +"(chyba=%lu)\n" #: src/function.c:1715 #, c-format @@ -491,132 +491,137 @@ msgstr "windows32_openpipe(): funkce process_init_fd() selhala\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Dočasný dávkový soubor %s se uklízí\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "soubor: chybí název souboru" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "otevření: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "zápis: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "zavření: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "soubor: příliÅ¡ mnoho argumentů" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "soubor: „%s“ se nepodařilo otevřít: %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "čtení: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "soubor: neplatná operace na souboru: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "nedostatečný počet argumentů (%u) funkce „%s“" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "na této platformě neimplementováno: funkce „%s“" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "neukončené volání funkce „%s“: chybí „%c“" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Prázdný název funkce" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Neplatný název funkce: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Název funkce je příliÅ¡ dlouhý: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Neplatný minimální počet argumentů (%u) funkce %s" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Neplatný maximální počet argumentů (%u) funkce %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: přepínač „%s“ není jednoznačný\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: přepínače „--%s“ nepřipouÅ¡tí argument\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: přepínač „%c%s“ nepřipouÅ¡tí argument\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: přepínač „%s“ vyžaduje argument\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: nerozpoznaný přepínač „--%s“\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: nerozpoznaný přepínač „%c%s“\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: zakázaný přepínač – %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: neplatný přepínač – %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: přepínač vyžaduje argument – %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: přepínač „-W %s“ není jednoznačný\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: přepínač „-W %s“ nepřipouÅ¡tí argument\n" @@ -667,180 +672,180 @@ msgstr "Hledá se implicitní pravidlo prvku archivu pro „%s“.\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "Žádné implicitní pravidlo prvku archivu pro „%s“ nebylo nalezeno.\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Zabraňuje se rekurzi implicitního pravidla pro pravidlo „%s“.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "Zkouší se důkladněji.\n" -#: src/implicit.c:501 +#: src/implicit.c:503 #, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Zkouší se pravidlo vzoru „%s“ s kořenem „%.*s“.\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Kořen je příliÅ¡ dlouhý: „%s%.*s“.\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Zamítá se pravidlo „%s“ kvůli nemožné prerekvizitě pravidla „%s“.\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Zamítá se pravidlo „%s“ kvůli nemožné implicitní prerekvizitě „%s“.\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Zkouší se prerekvizita pravidla „%s“.\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Zkouší se implicitní prerekvizita „%s“.\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, c-format msgid "'%s' ought to exist.\n" msgstr "„%s“ by mělo existovat.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "Nalezeno „%s“.\n" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "Použije se pravidlo kompatibility „%s“ kvůli „%s“.\n" -#: src/implicit.c:856 +#: src/implicit.c:858 #, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "Prerekvizita „%s“ pravidla „%s“ neznamená, že by měla existovat.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Nalezena prerekvizita „%s“ jako VPATH „%s“.\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Hledá se pravidlo s explicitním souborem „%s“.\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Hledá se pravidlo s mezilehlým souborem „%s“.\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Zamítá se pravidlo „%s“ kvůli nemožné prerekvizitě „%s“.\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, c-format msgid "Not found '%s'.\n" msgstr "„%s“ nebylo nenalezeno.\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Nalezeno implicitní pravidlo „%s“ pro „%s“.\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Hledá se pravidlo kompatibility pro „%s“.\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Pro „%s“ nenalezeno žádné implicitní pravidlo.\n" -#: src/job.c:380 +#: src/job.c:377 msgid "Cannot create a temporary file" msgstr "Dočasný soubor nelze vytvořit" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (obraz paměti uložen)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (ignorováno)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:587 +#: src/job.c:584 #, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Chyba %d%s%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Čeká se na nedokončené úlohy…" -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Živý potomek %p (%s) PID %s %s\n" # Continuation of Live child -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (vzdálený)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Uklízí se vyhrávající potomek %p PID %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Uklízí se prohrávající potomek %p PID %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Uklízí se dočasný dávkový soubor %s\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Úklid dočasného dávkového souboru %s selhal (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Z řetězce se odstraňuje potomek %p PID %s%s.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Uvolněn token pro potomka %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() nedokázala spustit proces (chyba=%ld)\n" # FIXME: Pluralize -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -849,85 +854,96 @@ msgstr "" "\n" "Napočítáno %d argumentů v selhaném spuÅ¡tění\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Do řetězce se přidává potomek %p (%s) PID %s%s.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Získán token pro potomka %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: aktualizovat cíl „%s“ kvůli: cíl je .PHONY" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: aktualizovat cíl „%s“ kvůli: cíl neexistuje" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: aktualizovat cíl „%s“ potřebný pro %s" -#: src/job.c:1910 -msgid "target does not exist" -msgstr "cíl neexistuje" +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: aktualizovat cíl „%s“ kvůli: důvody nejsou známy" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "na tomto operačním systému nelze vynutit omezení zátěže" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "omezení zátěže nelze vynutit: " -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "nedostatek deskriptorů souboru: standardní vstup nelze zduplikovat" -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "nedostatek deskriptorů souboru: standardní výstup nelze zduplikovat" -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "nedostatek deskriptorů souboru: chybový výstup nelze zduplikovat" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "Standardní vstup nelze obnovit" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "Standardní výstup nelze obnovit" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "Chybový výstup nelze obnovit" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make uklidil potomka s PID %s, stále se čeká na PID %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: možná byl vyčerpán prostor pro prostředí" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "Proměnná $SHELL se změnila (byla „%s“, nyní je „%s“)\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Vytváří se dočasný dávkový soubor %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -936,7 +952,7 @@ msgstr "" "Obsah dávkového souboru:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -945,7 +961,7 @@ msgstr "" "Obsah dávkového souboru:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (řádek %d) Chybný kontext shellu (!unixy && !batch_mode_shell)\n" @@ -990,19 +1006,19 @@ msgstr "Uvolňuje se sdílený objekt %s\n" msgid "The 'load' operation is not supported on this platform" msgstr "Na této platformě není operace zavedení (load) podporována" -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Přepínače:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignoruje se kvůli kompatibilitě.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Bezpodmínečně vyrobí vÅ¡echny cíle.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -1010,17 +1026,17 @@ msgstr "" " -C ADRESÁŘ, --directory=ADRESÁŘ\n" " Před děláním čehokoliv se přepne do ADRESÁŘE.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d Vypisuje mnoho ladicích údajů.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=PŘÍZNAKY] Vypisuje ladicí údaje rozličných druhů.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1028,12 +1044,12 @@ msgstr "" " -e, --environment-overrides\n" " Proměnné prostředí přebijí ty z makefilu.\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr " -E ŘETĚZEC, --eval=ŘETĚZEC Vyhodnotí ŘETĚZEC jako kód makefilu.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1041,15 +1057,15 @@ msgstr "" " -f SOUBOR, --file=SOUBOR, --makefile=SOUBOR\n" " Načte SOUBOR coby makefile.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Vypíše tuto zprávu a skončí.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Ignoruje chyby z návodů.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1057,7 +1073,7 @@ msgstr "" " -I ADRESÁŘ, --include-dir=ADRESÁŘ\n" " Vložené makefily hledá v ADRESÁŘI.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1065,17 +1081,17 @@ msgstr "" " -j [N], --jobs[=N] Dovolí nejvíce N úloh najednou;\n" " nekonečno úloh bez argumentu.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr " --jobserver-style=DRUH Vybere druh správce úloh.\n" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Pokračuje, když některé cíle nelze vyrobit.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1085,7 +1101,7 @@ msgstr "" " NespouÅ¡tí souběžné úlohy, dokud zátěž\n" " neklesne pod N.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1093,7 +1109,7 @@ msgstr "" " -L, --check-symlink-times Použije nejnovější čas změny obsahu z časů\n" " symbolických odkazů a cíle.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1103,7 +1119,7 @@ msgstr "" " Ve skutečnosti nevykoná žádný návod, pouze\n" " jej vypíše.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1113,7 +1129,7 @@ msgstr "" " Považuje SOUBOR za velmi starý a znovu jej\n" " nevyrobí.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1122,11 +1138,11 @@ msgstr "" " Synchronizuje výstup souběžných úloh podle " "DRUHU.\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base Vypíše vnitřní databázi programu make.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1134,15 +1150,15 @@ msgstr "" " -q, --question Nespustí žádný návod. Návratový kód řekne,\n" " jestli je aktuální.\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules Vypne vestavěná implicitní pravidla.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " -R, --no-builtin-variables Vypne vestavěné nastavení proměnných.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" @@ -1152,15 +1168,15 @@ msgstr "" " inicializační vektor, „random“ náhodně,\n" " „reverse“ pozpátku, „none“ nemíchat.\n" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Neopisuje návod.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr " --no-silent Opisuje návod (vypne režim --silent).\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1168,32 +1184,32 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Vypne -k.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr " -t, --touch Namísto výroby cílů jim změní čas.\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Vypisuje trasovací údaje.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Vypíše číslo verze programu make a skončí.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Vypisuje aktuální adresář.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr "" " --no-print-directory Vypne -w, i kdyby byl zapnut implicitně.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1201,7 +1217,7 @@ msgstr "" " -W SOUBOR, --what-if=SOUBOR, --new-file=SOUBOR, --assume-new=SOUBOR\n" " Považuje SOUBOR za nekonečně nový.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1209,32 +1225,32 @@ msgstr "" " --warn-undefined-variables Upozorní, kdykoliv je odkazováno na\n" " nedefinovanou proměnnou.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "chyba zápisu: standardní výstup" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "prázdný řetězec není platný název souboru" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "zadána neznámá úroveň ladění „%s“" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "neznámý druh synchronizace výstupu „%s“" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Použití: %s [PŘEPÍNAČE] [CÍLE]…\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1243,7 +1259,7 @@ msgstr "" "\n" "Tento program byl sestaven pro %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1252,19 +1268,19 @@ msgstr "" "\n" "Tento program byl sestaven pro %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "" "Chyby v programu hlaste anglicky na . Nedostatky\n" "v překladu hlaste česky na .\n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Zachyceno přeruÅ¡ení/výjimka (kód = 0x%lx, adresa = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1279,32 +1295,32 @@ msgstr "" "Příznaky výjimky = %lx\n" "Adresa výjimky = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "PoruÅ¡ení přístupu: operace zápisu na adrese 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "PoruÅ¡ení přístupu: operace čtení na adrese 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() nastavuje default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "find_and_set_shell() při prohledávání cesty nastavila default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (dočasný soubor): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1312,149 +1328,154 @@ msgstr "" "pozor: správce úloh není dostupný: použije se -j1. Do nadřízeného pravidla " "maku přidejte „+“." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "pozor: -j%d vnuceno podřízenému programu make: režim správce úloh se restuje." -#: src/main.c:1930 +#: src/main.c:1946 #, c-format msgid "Makefile from standard input specified twice" msgstr "Makefile na standardním vstupu uveden dvakrát" -#: src/main.c:1940 +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Makefile ze standardního vstupu nelze uložit do dočasného souboru" + +#: src/main.c:1959 #, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite: dočasný soubor %s: %s" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "pozor: -j%d vnuceno v souboru makefile: režim správce úloh se resetuje." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Na této platformě nejsou paralelní úlohy (-j) podporovány." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Návrat k jednoúlohovému režimu (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "Jako řadič správce úloh se používá %s\n" -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "Jako mutex pro synchronizaci výstupu se používá %s\n" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Symbolické odkazy nejsou podporovány: vypíná se -L." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "Zapnut způsob míchání: %s\n" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Soubory makefile se aktualizují…\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefile „%s“ může cyklit, nebude znovu vyroben.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: zavedení selhalo" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Výroba nového makefilu „%s“ selhala." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Vložený makefile „%s“ nebyl nalezen." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefile „%s“ nebyl nalezen" -#: src/main.c:2700 +#: src/main.c:2717 #, c-format msgid "Couldn't change back to original directory" msgstr "Nebylo možné se vrátit do původního adresáře" -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Znovu se spouÅ¡tí [%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL obsahuje více než jeden cíl" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Žádné cíle" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Nezadány žádné cíle a žádné makefily nenalezeny" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Aktualizují se cíle…\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "pozor: ZjiÅ¡těn posun hodin. VaÅ¡e sestavení možná nebude úplné." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "přepínače „%s%s“ vyžaduje neprázdný řetězcový argument" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "přepínač „-%c“ vyžaduje kladný celočíselný argument" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sSestaveno pro %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%s Sestaveno pro %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later \n" "Language-Team: Danish \n" @@ -139,7 +139,7 @@ msgstr " (indbyggede):" msgid " (from '%s', line %lu):\n" msgstr " (fra \"%s\", linje %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -147,62 +147,62 @@ msgstr "" "\n" "# Filkataloger\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: kunne ikke undersøges med stat.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (nøgle %s, mtime %s): kunne ikke Ã¥bnes.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (enhed %d, inode [%d,%d,%d]): kunne ikke Ã¥bnes.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (enhed %ld, inode %ld): kunne ikke Ã¥bnes.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (nøgle %s, mtime %s): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (enhed %d, inode [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (enhed %ld, inode %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Ingen" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " filer, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "ingen" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " umuligheder" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " indtil videre." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " umuligheder i %lu kataloger.\n" @@ -223,174 +223,174 @@ msgstr "Rekursiv variabel \"%s\" refererer (i sidste ende) til sig selv" msgid "unterminated variable reference" msgstr "uafsluttet variabelreference" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Opskrift blev angivet for filen \"%s\" i %s:%lu," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Opskrift for filen \"%s\" blev fundet ved implicit regelsøgning," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "men \"%s\" bliver nu anset som samme fil som \"%s\"." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" "Opskriften for \"%s\" vil blive ignoreret til fordel for den for \"%s\"." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "kan ikke ændre enkelt-kolon \"%s\" til dobbelt-kolon \"%s\"" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "kan ikke ændre dobbelt-kolon \"%s\" til enkelt-kolon \"%s\"" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Sletter mellemfil \"%s\"" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Sletter mellemfiler ...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "%s kan ikke være bÃ¥de .NOTINTERMEDIATE og .INTERMEDIATE" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "%s kan ikke være bÃ¥de .NOTINTERMEDIATE og .SECONDARY" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr ".NOTINTERMEDIATE og .SECONDARY udelukker hinanden" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Aktuel tid" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Tidsstempel i forkert omrÃ¥de; bruger %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Ikke et mÃ¥l:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Værdifuld fil (forudsætning for .PRECIOUS)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Falsk mÃ¥l (forudsætning for .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# KommandolinjemÃ¥l." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Et forvalg, MAKEFILES, eller -include/sinclude makefile." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Indbygget regel" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Der er udført implicit regelsøgning." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Der er ikke udført implicit regelsøgning." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Implicit/statisk mønsterstamme: \"%s\"\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Filen er en mellemfil." -#: src/file.c:1111 +#: src/file.c:1108 msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Filen er en forudsætning for .NOTINTERMEDIATE." -#: src/file.c:1113 +#: src/file.c:1110 msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Filen er sekundær (forudsætning for .SECONDARY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Skaber ogsÃ¥:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Ændringstid ikke tjekket." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Filen findes ikke." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Filen er meget gammel." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Sidst ændret %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Filen er blevet opdateret." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Filen er ikke blevet opdateret." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Der køres kommandoer nu (DETTE ER EN FEJL)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Kommandoer for afhængigheder køres nu (DETTE ER EN FEJL)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Opdateret med godt resultat." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Behøver opdatering (-q er sat)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Opdatering mislykkedes." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Ugyldig værdi i \"command_state\"-felt!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -398,7 +398,7 @@ msgstr "" "\n" "# Filer" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -408,7 +408,7 @@ msgstr "" "# Statistik for fil-hash-spande:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Feltet \"%s\" er ikke i cache: %s" @@ -473,132 +473,137 @@ msgstr "windows32_openpipe(): process_init_fd() mislykkedes\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Afrydder midlertidig batchfil %s\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "fil: mangler filnavn" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "Ã¥bn: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "skriv: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "luk: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "fil: for mange argumenter" -#: src/function.c:2397 +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "fil: ugyldig filoperation: %s" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "læs: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "fil: ugyldig filoperation: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "utilstrækkeligt antal argumenter (%u) til funktionen \"%s\"" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "ikke implementeret pÃ¥ denne platform: funktionen \"%s\"" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "uafsluttet kald til funktionen \"%s\"; manglende \"%c\"" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Tomt funktionsnavn" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Ugyldigt funktionsnavn: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Funktionsnavn er for langt: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "utilstrækkeligt antal argumenter (%u) til funktionen \"%s\"" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Utilstrækkeligt antal argumenter (%u) til funktionen \"%s\"" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: tilvalget \"%s\" er flertydigt\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: tilvalget \"--%s\" tillader ikke et argument\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: tilvalget \"%c%s\" tillader ikke et argument\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s tilvalget \"%s\" kræver et argument\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: ukendt tilvalg \"--%s\"\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: ukendt tilvalg \"%c%s\"\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: ulovligt tilvalg -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: ugyldigt tilvalg -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: tilvalg kræver et argument -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: tilvalget \"-W %s\" er flertydigt\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: tilvalget \"-W %s\" tillader ikke et argument\n" @@ -649,180 +654,180 @@ msgstr "Kigger efter en implicit regel for arkivelementer for \"%s\".\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "Ingen implicit regel for arkivelementer for \"%s\".\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "UndgÃ¥r rekursion i implicitte regler for reglen \"%s\".\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "Prøver ivrigere.\n" -#: src/implicit.c:501 +#: src/implicit.c:503 #, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Prøver mønsterreglen \"%s\" med stammen \"%.*s\".\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Stamme for lang: \"%s%.*s\".\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Afviser reglen \"%s\" pÃ¥ grund af umulig regelforudsætning \"%s\".\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "" "Afviser reglen \"%s\" pÃ¥ grund af umulig implicit forudsætning \"%s\".\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Prøver regelforudsætning \"%s\".\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Prøver implicit forudsætning \"%s\".\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, c-format msgid "'%s' ought to exist.\n" msgstr "\"%s\" bør findes.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "Fandt \"%s\".\n" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "Bruger kompatibilitetsreglen \"%s\" pÃ¥ grund af \"%s\".\n" -#: src/implicit.c:856 +#: src/implicit.c:858 #, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "" "Forudsætningen \"%s\" for reglen \"%s\" tæller ikke som én, der bør findes.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Fandt forudsætning \"%s\" som VPATH \"%s\".\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Kigger efter en regel med eksplicit fil \"%s\".\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Kigger efter en regel med mellemfil \"%s\".\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Afviser reglen \"%s\" pÃ¥ grund af umulig forudsætning \"%s\".\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, c-format msgid "Not found '%s'.\n" msgstr "Fandt ikke \"%s\".\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Fandt en implicit regel \"%s\" for \"%s\".\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Kigger efter en kompatibilitetsregel for \"%s\".\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Ingen implicit regel for \"%s\" fundet.\n" -#: src/job.c:380 +#: src/job.c:377 msgid "Cannot create a temporary file" msgstr "Kan ikke oprette en midlertidig fil" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (core-fil efterladt)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr "(ignoreret)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:587 +#: src/job.c:584 #, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Fejl %d%s%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Venter pÃ¥ uafsluttede job...." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Levende underproces %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (eksternt)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Høster vindende underproces %p PID %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Høster tabende underproces %p PID %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Rydder midlertidig batchfil %s\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Oprydning af midlertidig batchfil %s mislykkedes (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Fjerner underproces %p PID %s%s fra kæde.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Frigav symbol for underproces %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() fejlede ved igangsætning af proces (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -831,85 +836,96 @@ msgstr "" "\n" "Talte %d argumenter i fejlet igangsætning\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Sætter underproces %p (%s) PID %s%s pÃ¥ kæden.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Fik symbol for underproces %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: opdatér mÃ¥let \"%s\" pÃ¥ grund af: %s" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: opdatér mÃ¥let \"%s\" pÃ¥ grund af: %s" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: opdatér mÃ¥let \"%s\" pÃ¥ grund af: %s" -#: src/job.c:1910 -msgid "target does not exist" -msgstr "mÃ¥let findes ikke" +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: opdatér mÃ¥let \"%s\" pÃ¥ grund af: %s" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "kan ikke gennemtvinge belastningsgrænser pÃ¥ dette styrestystem" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "kan ikke gennemtvinge belastningsgrænse: " -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "ikke flere filhÃ¥ndtag: Kunne ikke duplikere stdin" -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "ikke flere filhÃ¥ndtag: Kunne ikke duplikere stdout" -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "ikke flere filhÃ¥ndtag: kunne ikke duplikere stderr" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "Kunne ikke gendanne stdin" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "Kunne ikke gendanne stdout" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "Kunne ikke gendanne stderr" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make høstede underproces med pid %s, venter endnu pÃ¥ pid %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: miljøplads er mÃ¥ske opbrugt" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL ændret (var \"%s\", nu \"%s\")\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Opretter midlertidig batchfil %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -918,7 +934,7 @@ msgstr "" "Indhold af batchfil:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -927,7 +943,7 @@ msgstr "" "Indhold af batchfil:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (linje %d) Forkert skal-kontekst (!unixy && !batch_mode_shell)\n" @@ -972,19 +988,19 @@ msgstr "Afindlæser delt objekt %s\n" msgid "The 'load' operation is not supported on this platform" msgstr "Operationen indlæs (\"load\") understøttes ikke pÃ¥ denne platform" -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Tilvalg:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignoreret af hensyn til kompabilitet.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Skab alle mÃ¥l betingelsesløst.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -992,18 +1008,18 @@ msgstr "" " -C KATALOG, --directory=KATALOG\n" " Skift allerførst til KATALOG.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Udskriv en masse fejlsøgningsinformation.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=FLAG] Udskriv diverse fejlsøgningsinformationer.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1011,13 +1027,13 @@ msgstr "" " -e, --environment-overrides\n" " Miljøvariable har forrang for makefiler.\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E STRENG, --eval=STRENG Evaluér STRENG som en makefil-erklæring.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1025,15 +1041,15 @@ msgstr "" " -f FIL, --file=FIL, --makefile=FIL\n" " Læs FIL som en makefil.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Udskriv denne besked og afslut.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Ignorér fejl fra kommandoer.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1041,7 +1057,7 @@ msgstr "" " -I KATALOG, --include-dir=KATALOG\n" " Søg i KATALOG efter inkluderede makefiler.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1049,18 +1065,18 @@ msgstr "" " -j [N], --jobs[=N] Tillad N samtidige job;\n" " ubegrænset antal hvis N ikke er givet.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" " --jobserver-style=STIL Vælg stilen af jobserver, der skal bruges.\n" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Fortsæt selvom nogen mÃ¥l ikke kan skabes.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1070,7 +1086,7 @@ msgstr "" " Start kun flere job hvis belastning er under " "N.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1078,7 +1094,7 @@ msgstr "" " -L, --check-symlink-times Brug sidste mtime mellem symbolske lænker og " "mÃ¥l.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1088,7 +1104,7 @@ msgstr "" " Udfør ikke nogen kommandoer; udskriv dem " "bare.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1097,7 +1113,7 @@ msgstr "" " -o FIL, --old-file=FIL, --assume-old=FIL\n" " Anse FIL som forældet og genskab den ikke.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1106,11 +1122,11 @@ msgstr "" " Synkronisér udskrift af parallelle job efter " "TYPE\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base Udskriv makes interne database.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1119,16 +1135,16 @@ msgstr "" "angiver\n" " om mÃ¥let er tidssvarende.\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules SlÃ¥ de indbyggede implicitte regler fra.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " -R, --no-builtin-variables SlÃ¥ de indbyggede variabelværdier fra.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" @@ -1136,17 +1152,17 @@ msgstr "" " --shuffle[={BASISTAL|random|reverse|none}]\n" " Bland forudsætninger og mÃ¥l.\n" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Udskriv ikke kommandoer.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Udskriv opskrifter (slÃ¥ tilstanden --silent " "fra).\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1154,32 +1170,32 @@ msgstr "" " -S, --no-keep-going, --stop\n" " SlÃ¥r -k fra.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Berør mÃ¥l i stedet for at genskabe dem.\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Udskriv trace-information.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version Udskriv makes versionnummer og afslut.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Udskriv det aktuelle katalog.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr "" " --no-print-directory SlÃ¥ -w fra; ogsÃ¥ hvis slÃ¥et til implicit.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1187,39 +1203,39 @@ msgstr "" " -W FIL, --what-if=FIL, --new-file=FIL, --assume-new=FIL\n" " Anse FIL som værende nyskabt.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" " --warn-undefined-variables Advar nÃ¥r en udefineret variabel bruges.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "skrivefejl: stdout" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "en tom streng er ugyldig som filnavn" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "ukendt specifikation af fejlsøgningsniveau \"%s\"" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "ukendt type \"%s\" af output-sync" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Brug: %s [tilvalg] [mÃ¥l] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1228,7 +1244,7 @@ msgstr "" "\n" "Dette program er bygget til %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1237,17 +1253,17 @@ msgstr "" "\n" "Dette program er bygget til %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "Send fejlmeldinger (pÃ¥ engelsk) til .\n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Afbrydelse/undtagelse fanget (kode = 0x%lx, addr = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1262,31 +1278,31 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Adgangskrænkelse: skriveoperation pÃ¥ adresse 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Adgangskrænkelse: læseoperation pÃ¥ adresse 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() sætter default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell()-stisøgning sætter default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (midlertidig fil): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1294,151 +1310,156 @@ msgstr "" "advarsel: jobserver ikke tilgængelig: bruger -j1. Tilføj \"+\" til " "ophavsmakeregel." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "advarsel: -j%d tvunget i undermake: nulstiller jobservertilstand." -#: src/main.c:1930 +#: src/main.c:1946 #, c-format msgid "Makefile from standard input specified twice" msgstr "Makefil fra standard-ind er angivet to gange" -#: src/main.c:1940 +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Kan ikke oprette en midlertidig fil" + +#: src/main.c:1959 #, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite: midlertidig fil %s: %s" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "advarsel: -j%d tvunget i makefil: nulstiller jobservertilstand." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Parallelle job (-j) er ikke understøttet pÃ¥ denne platform." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Sætter tilbage til enkelt job-tilstand (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "Bruger jobserverstyring %s\n" -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "Bruger outputsynkroniseringsmutex %s\n" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Symbolske lænker understøttes ikke: Deaktiverer -L." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "Blandet tilstand slÃ¥et til: %s\n" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Opdaterer makefiler....\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" "Makefilen \"%s\" fÃ¥r mÃ¥ske make til at køre i ring; genskaber den ikke.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: kunne ikke indlæse" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Genskabelse af makefilen \"%s\" mislykkedes." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Inkluderet makefil \"%s\" blev ikke fundet." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefilen \"%s\" blev ikke fundet" -#: src/main.c:2700 +#: src/main.c:2717 #, c-format msgid "Couldn't change back to original directory" msgstr "Kunne ikke skifte tilbage til det oprindelige katalog" -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Udfører igen[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL indeholder mere end et mÃ¥l" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Ingen mÃ¥l" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Ingen angivne mÃ¥l og ingen makefil fundet" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Opdaterer endemÃ¥l....\n" # build? -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "advarsel: Der blev registreret en uoverensstemmelse i urets tid. Din " "kompilering kan være ufuldstændig." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "\"-%s%s\"-tilvalget kræver et strengargument, der ikke er tomt" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "\"-%c\"-tilvalget kræver et positivt heltalligt argument" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sBygget til %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sBygget til %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later , 2000. # Karl Eichwalder , 2002, 2005. # Philipp Thomas 2013, 2016 -# Roland Illig , 2020, 2022. +# Roland Illig , 2020-2023. # # Vereinheitlichen: # ================= @@ -15,10 +15,10 @@ # msgid "" msgstr "" -"Project-Id-Version: make 4.3.92\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2022-10-31 02:23-0400\n" -"PO-Revision-Date: 2022-10-26 00:56+0200\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-15 14:11+0100\n" "Last-Translator: Roland Illig \n" "Language-Team: German \n" "Language: de\n" @@ -26,7 +26,7 @@ msgstr "" "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 3.2\n" +"X-Generator: Poedit 3.2.2\n" #: src/ar.c:47 #, c-format @@ -144,7 +144,7 @@ msgstr " (eingebaut):" msgid " (from '%s', line %lu):\n" msgstr " (aus „%s“, Zeile %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -152,63 +152,63 @@ msgstr "" "\n" "# Verzeichnisse\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: Status konnte nicht festgestellt werden.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "" "# %s ( Schlüssel %s, letzte Änderung %s): konnte nicht geöffnet werden.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (Gerät %d, Inode [%d,%d,%d]): konnte nicht geöffnet werden.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (Gerät %ld, Inode %ld): konnte nicht geöffnet werden.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (Schlüssel %s, letzte Änderung %s): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (Gerät %d, Inode [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (Gerät %ld, Inode %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Keine" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " Dateien, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "keine" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " Unmöglichkeiten" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " bisher." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " Unmöglichkeiten in %lu Verzeichnissen.\n" @@ -230,179 +230,179 @@ msgstr "Rekursive Variable „%s“ referenziert sich (schließlich) selbst" msgid "unterminated variable reference" msgstr "Nicht abgeschlossene Variablenreferenz" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Das Rezept für die Datei „%s“ wurde in %s:%lu angegeben," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" "Das Rezept für die Datei „%s“ wurde aufgrund der Suche nach impliziten " "Regeln gefunden," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "aber „%s“ wird jetzt als dieselbe Datei wie „%s“ betrachtet." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Das Rezept für „%s“ wird ignoriert, das für „%s“ wird bevorzugt." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "„%s“ mit einfachem Doppelpunkt kann nicht in „%s“ mit doppeltem Doppelpunkt " "geändert werden" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "„%s“ mit doppeltem Doppelpunkt kann nicht in „%s“ mit einfachem Doppelpunkt " "geändert werden" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Löschen der Zwischendatei „%s“" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Die Zwischendateien werden gelöscht…\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "%s kann nicht gleichzeitig .NOTINTERMEDIATE und .INTERMEDIATE sein" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "%s kann nicht gleichzeitig .NOTINTERMEDIATE und .SECONDARY sein" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr ".NOTINTERMEDIATE und .SECONDARY schließen sich gegenseitig aus" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Aktuelle Zeit" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Zeitstempel außerhalb des Gültigkeitsbereichs; %s wird ersetzt" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Dies ist kein Ziel:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Wertvolle Datei (benötigt von .PRECIOUS)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Vorgetäuschtes Ziel (benötigt von .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Kommandozeilen-Ziel." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Eine standardmäßige, MAKEFILES oder -include/sinclude Makedatei." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Eingebaute Regel" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Die Suche nach impliziten Regeln wurde durchgeführt." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Die Suche nach impliziten Regeln wurde nicht durchgeführt." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Stamm für implizite/statische Muster: „%s“\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Datei ist ein Zwischenschritt in den Voraussetzungen." -#: src/file.c:1111 +#: src/file.c:1108 msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Die Datei ist eine Voraussetzung für .NOTINTERMEDIATE." -#: src/file.c:1113 +#: src/file.c:1110 msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Die Datei ist sekundär (Voraussetzung von .SECONDARY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Erzeugt außerdem:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Zeit der letzten Änderung wurde nicht überprüft." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Die Datei existiert nicht." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Datei ist sehr alt." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Zuletzt geändert %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Datei wurde aktualisiert." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Datei wurde nicht aktualisiert." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Derzeit läuft das Rezept (DIES IST EIN FEHLER)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Derzeit läuft das Rezept für Abhängigkeiten (DIES IST EIN FEHLER)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Erfolgreich aktualisiert." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Eine Aktualisierung ist notwendig (-q ist angegeben)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Aktualisierung ist fehlgeschlagen." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Ungültiger Wert im „command_state“-Strukturelement!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -410,7 +410,7 @@ msgstr "" "\n" "# Dateien" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -420,7 +420,7 @@ msgstr "" "# Statistik der Hash-Tabelle für Dateien:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Feld „%s“ wird nicht zwischengespeichert: %s" @@ -486,132 +486,137 @@ msgstr "windows32_openpipe(): process_init_fd() ist fehlgeschlagen\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Die temporäre Stapelverarbeitungsdatei %s wird gelöscht\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "Datei: fehlender Dateiname" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "Öffnen: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "Schreiben: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "Schließen: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "Datei: zu viele Argumente" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "Datei: Fehler beim Öffnen von „%s“: %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "Lesen: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "Unzulässige Dateioperation: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "Zu wenig Argumente (%u) für die Funktion „%s“" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "Auf dieser Rechnerkonfiguration nicht implementiert: Funktion „%s“" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "Nicht beendeter Aufruf der Funktion „%s“: „%c“ fehlt" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Leerer Funktionsname" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Unzulässiger Funktionsname: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Der Funktionsname ist zu lang: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Ungültige minimale Anzahl von Argumenten (%u) für die Funktion „%s“" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Ungülte maximale Anzahl an Argumenten (%u) für die Funktion „%s“" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: Option „%s“ ist mehrdeutig\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: Option „--%s“ erlaubt kein Argument\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: Option „%c%s“ erlaubt kein Argument\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: Option „%s“ erfordert ein Argument\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: unbekannte Option „--%s“\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: unbekannte Option „%c%s“\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: unzulässige Option -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: ungültige Option -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: Option erfordert ein Argument -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: Option „-W %s“ ist mehrdeutig\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: Option „-W %s“ erlaubt kein Argument\n" @@ -664,183 +669,183 @@ msgstr "" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "Keine implizite Regel für Archiveinträge für „%s“ gefunden.\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Rekursion in den impliziten Regeln für Regel „%s“ wird vermieden.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "Nächster Versuch, jetzt hartnäckiger.\n" -#: src/implicit.c:501 +#: src/implicit.c:503 #, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Muster-Regel „%s“ mit Stamm „%.*s“ wird probiert.\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Stamm zu lang: „%s%.*s“.\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "" "Regel „%s“ wird abgelehnt, da die vorausgesetzte Regel „%s“ unmöglich ist.\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "" "Regel „%s“ wird abgelehnt, da die implizite Voraussetzung „%s“ unmöglich " "ist.\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Regel-Voraussetzung „%s“ wird ausprobiert.\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Implizite Voraussetzung „%s“ wird ausprobiert.\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, c-format msgid "'%s' ought to exist.\n" msgstr "„%s“ sollte eigentlich existieren.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "„%s“ gefunden.\n" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "Verwendung der Kompatibilitätsregel „%s“ aufgrund von „%s“.\n" -#: src/implicit.c:856 +#: src/implicit.c:858 #, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "" "Die Voraussetzung „%s“ der Regel „%s“ reicht nicht als „sollte existieren“.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Die Voraussetzung „%s“ wurde als VPATH „%s“ gefunden.\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Es wird nach einer Regel mit der expliziten Datei „%s“ gesucht.\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Es wird nach einer Regel mit der Zwischendatei „%s“ gesucht.\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Regel „%s“ wird abgelehnt, da die Voraussetzung „%s“ unmöglich ist.\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, c-format msgid "Not found '%s'.\n" msgstr "„%s“ wurde nicht gefunden.\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Eine implizite Regel „%s“ für „%s“ wurde gefunden.\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Es wird nach einer Kompatibilitäts-Regel für „%s“ gesucht.\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Keine implizite Regel für „%s“ gefunden.\n" -#: src/job.c:380 +#: src/job.c:377 msgid "Cannot create a temporary file" msgstr "Eine temporäre Datei kann nicht erzeugt werden" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (Speicherauszug erstellt)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (ignoriert)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:587 +#: src/job.c:584 #, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Fehler %d%s%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Es wird auf noch nicht beendete Prozesse gewartet …" -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Aktiver Kindprozess %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (entfernt)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Erfolgreicher Kindprozess %p PID %s %s wird eingesammelt\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Erfolgloser Kindprozess %p PID %s %s wird eingesammelt\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Temporäre Stapelverarbeitungsdatei „%s“ wird aufgeräumt\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "" "Fehler beim Aufräumen der temporären Stapelverarbeitungsdatei „%s“ (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Kindprozess %p PID %s%s wird aus der Kette entfernt.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Token des Kindprozesses %p PID (%s) wurde freigegeben.\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "„process_easy()“ konnte den Prozess nicht starten (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -849,95 +854,106 @@ msgstr "" "\n" "%d Argumente gehörten zum fehlgeschlagenen Prozessstart\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Kindprozess %p (%s) PID %s%s wird in die Kette aufgenommen.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Token für den Kindprozess %p (%s) erhalten.\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: Ziel „%s“ wird aktualisiert, da das Ziel .PHONY ist" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: Ziel „%s“ wird aktualisiert, da das Ziel nicht existiert" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: Ziel „%s“ wird aktualisiert wegen: %s" -#: src/job.c:1910 -msgid "target does not exist" -msgstr "Ziel existiert nicht" +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: Ziel „%s“ wird aktualisiert aus unbekanntem Grund" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" "Auf diesem Betriebssystem kann die Einhaltung der Lastbeschränkung nicht " "erzwungen werden" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "Lasteinschränkung kann nicht erzwungen werden: " -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "" "Keine weiteren Datei-Handles verfügbar: die Standardeingabe konnte nicht " "dupliziert werden" -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "" "Keine weiteren Datei-Handles verfügbar: die Standardausgabe konnte nicht " "dupliziert werden" -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "" "Keine weiteren Datei-Handles verfügbar: die Standardfehlerausgabe konnte " "nicht dupliziert werden" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "Die Standardeingabe konnte nicht wiederhergestellt werden" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "Die Standardausgabe konnte nicht wiederhergestellt werden" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "Standardfehlerausgabe konnte nicht wiederhergestellt werden" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" "„make“ hat den Kindprozess %s eingesammelt, wartet jedoch noch auf den " "Prozess %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: der Platz in der Programmumgebung könnte erschöpft sein" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL gewechselt (war „%s“, ist jetzt „%s“)\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Temporäre Stapelverarbeitungsdatei %s wird erstellt\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -946,7 +962,7 @@ msgstr "" "Inhalt der Stapelverarbeitungsdatei:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -955,7 +971,7 @@ msgstr "" "Inhalt der Stapelverarbeitungsdatei:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (Zeile %d) Falscher Shell-Kontext (!unixy && !batch_mode_shell)\n" @@ -1000,20 +1016,20 @@ msgstr "Gemeinsames Objekt %s wird entladen\n" msgid "The 'load' operation is not supported on this platform" msgstr "Die Operation „load“ wird auf dieser Plattform nicht unterstützt" -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Optionen:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr "" " -b, -m Wird aus Kompatibilitätsgründen ignoriert\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Alle Ziele ohne Bedingungen erstellen.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -1022,19 +1038,19 @@ msgstr "" " In VERZEICHNIS wechseln, bevor etwas getan\n" " wird.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Viele Informationen zur Fehlersuche ausgeben.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=KENNUNGEN] Verschiedene Arten von Informationen zur\n" " Fehlersuche ausgeben.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1042,14 +1058,14 @@ msgstr "" " -e, --environment-overrides\n" " Umgebungsvariablen überschreiben Makedateien.\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E ZKETTE, --eval=ZKETTE ZEICHENKETTE wie einen Makedatei-Eintrag\n" " auswerten.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1057,15 +1073,15 @@ msgstr "" " -f DATEI, --file=DATEI, --makefile=DATEI\n" " DATEI als Makedatei einlesen.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Diese Meldung ausgeben und beenden.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Fehler in Rezepten ignorieren.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1074,7 +1090,7 @@ msgstr "" " VERZEICHNIS nach eingebundenen\n" " Makedateien durchsuchen.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1082,20 +1098,20 @@ msgstr "" " -j [N], --jobs[=N] N Jobs gleichzeitig erlauben;\n" " weggelassenes N bedeutet beliebig viele.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" " --jobserver-style=STIL Stil des zu verwendenden Jobservers " "auswählen.\n" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Weiterlaufen, auch wenn einige Ziele nicht\n" " erzeugt werden konnten.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1105,7 +1121,7 @@ msgstr "" " Jobs nur dann starten, wenn die Auslastung\n" " unter N ist.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1114,7 +1130,7 @@ msgstr "" " Verknüpfung oder dem Ziel verwenden,\n" " je nachdem, welche neuer ist.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1123,7 +1139,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " Keine Rezepte ausführen, nur ausgeben.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1133,7 +1149,7 @@ msgstr "" " DATEI als sehr alt ansehen und nicht neu\n" " erzeugen.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1142,12 +1158,12 @@ msgstr "" " Die Ausgabe paralleler Jobs nach TYP\n" " synchronisieren.\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base Die interne Datenbank von „make“ ausgeben.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1156,19 +1172,19 @@ msgstr "" "an,\n" " ob die Dateien aktuell sind.\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Die eingebauten impliziten Regeln " "deaktivieren.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Die eingebauten Variablenbelegungen\n" " deaktivieren.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" @@ -1176,17 +1192,17 @@ msgstr "" " --shuffle[={SAAT|random|reverse|none}]\n" " Die Voraussetzungen und Ziele durchmischen.\n" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Rezepte nicht ausgeben.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Rezepte ausgeben\n" " (deaktiviert den --silent-Modus).\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1194,30 +1210,30 @@ msgstr "" " -S, --no-keep-going, --stop\n" " -k abschalten.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Die Ziele werden nur als aktualisiert " "markiert,\n" " nicht tatsächlich erneuert\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr "" " --trace Informationen zur Spurensuche ausgeben.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Die Versionsnummer von „make“ ausgeben und\n" " Programm beenden\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Das aktuelle Verzeichnis ausgeben.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1225,7 +1241,7 @@ msgstr "" " --no-print-directory -w abschalten, selbst wenn es implizit\n" " eingeschaltet wurde.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1233,7 +1249,7 @@ msgstr "" " -W DATEI, --what-if=DATEI, --new-file=DATEI, --assume-new=DATEI\n" " DATEI als unendlich neu erachten.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1241,32 +1257,32 @@ msgstr "" " --warn-undefined-variables Eine Warnung ausgeben, wenn eine undefinierte\n" " Variable referenziert wird.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "Schreibfehler: Standardausgabe" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "Eine leere Zeichenkette ist als Dateiname ungültig" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "Unbekanntes Debug-Level „%s“ angegeben" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "Unbekannter Typ von Ausgabesynchronisierung „%s“" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Aufruf: %s [Optionen] [Ziele] …\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1275,7 +1291,7 @@ msgstr "" "\n" "Diese Programm wurde für %s gebaut\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1284,18 +1300,18 @@ msgstr "" "\n" "Diese Programm wurde für %s (%s) gebaut\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "Fehlermeldungen (auf Englisch) bitte an senden.\n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" "%s: bekam Unterbrechung/Ausnahme signalisiert (Code = 0x%lx, Adr = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1310,31 +1326,31 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Zugriffsverletzung: Schreiboperation an Adresse 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Zugriffsverletzung: Leseoperation an Adresse 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() setzt default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell() Suche im Pfad setzt default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (temporäre Datei): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1342,155 +1358,162 @@ msgstr "" "Warnung: Kein Jobserver verfügbar: -j1 wird gesetzt. Fügen Sie der " "Ursprungsregel „+“ hinzu." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "Warnung: -j%d in „make“-Verarbeitungszweig erzwungen: Jobserver-Modus wird " "zurückgesetzt." -#: src/main.c:1930 +#: src/main.c:1946 #, c-format msgid "Makefile from standard input specified twice" msgstr "Die Makedatei wurde zweimal über die Standardeingabe angegeben" -#: src/main.c:1940 +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "" +"Fehler beim Speichern der Makedatei aus der Standardeingabe in einer " +"temporären Datei" + +#: src/main.c:1959 #, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite: temporäre Datei „%s“: %s" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "Warnung: -j%d in Makedatei erzwungen: Jobserver-Modus wird zurückgesetzt." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "" "Parallele Abarbeitung (-j) wird auf dieser Plattform nicht unterstützt." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Umstellung auf Einzel-Job-Verarbeitung (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "Jobserver-Controller %s wird verwendet\n" -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "Ausgabe-Synchronisierungs-Mutex %s wird verwendet\n" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" "Symbolische Verknüpfungen werden nicht unterstützt: -L wird abgeschaltet." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "Durchmisch-Modus aktiviert: %s\n" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Makedateien werden aktualisiert …\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" "Makedatei „%s“ könnte eine Schleife enthalten; sie wird nicht neu erzeugt.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: konnte nicht geladen werden" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Makedatei „%s“ konnte nicht neu erstellt werden." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Die eingebundene Makedatei „%s“ wurde nicht gefunden." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Die Makedatei „%s“ wurde nicht gefunden" -#: src/main.c:2700 +#: src/main.c:2717 #, c-format msgid "Couldn't change back to original directory" msgstr "Konnte nicht in das ursprüngliche Verzeichnis wechseln" -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Erneute Ausführung[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL beinhaltet mehr als ein Ziel" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Keine Ziele" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Es wurden keine Ziele angegeben und keine Makedatei gefunden" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Ziele werden aktualisiert …\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "Warnung: Mit der Uhr stimmt etwas nicht.\n" " Der Bauauftrag könnte unvollständig sein." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "Die Option „%s%s“ verlangt eine nicht-leere Zeichenkette als Argument" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "Die Option „-%c“ verlangt eine positive ganze Zahl als Argument" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sGebaut für %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sGebaut für %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later \n" "Language-Team: Spanish \n" @@ -150,7 +150,7 @@ msgstr " (integrado):" msgid " (from '%s', line %lu):\n" msgstr " (de '%s', linea %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -158,7 +158,7 @@ msgstr "" "\n" "# Directorios\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: podría no estar establecido.\n" @@ -166,14 +166,14 @@ msgstr "# %s: podría no estar establecido.\n" # ¿No sobraría el "posiblemente"? # Propongo dejarlo en " no se pudo abrir ". sv # Ok. Es consistente con otras traducciones. mm -#: src/dir.c:1122 +#: src/dir.c:1123 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (llave %s, mtime %I64u): no se pudo abrir.\n" # En el K & R aparece inode traducido como nodo-i. ¿qué te parece? sv # Bien. Me gusta con el guioncito. mm -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "" @@ -182,49 +182,49 @@ msgstr "" # ¿No sobraría el "posiblemente"? # Propongo dejarlo en " no se pudo abrir ". sv # Ok. Es consistente con otras traducciones. mm -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (dispositivo %ld, nodo-i %ld): no se pudo abrir.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (llave %s, mtime %I64u): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (dispositivo %d, nodo-i [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (dispositivo %ld, nodo-i %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "No" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " archivos, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "no" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " imposibilidades" # ¿"So far" no era "hasta ahora"? (no me hagas mucho caso) sv # Si tu traducción es mejor. Aceptada. mm -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " hasta ahora." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " imposibilidades en %lu directorios.\n" @@ -256,14 +256,14 @@ msgstr "La variable recursiva '%s' se auto-referencia" msgid "unterminated variable reference" msgstr "la referencia a la variable está sin terminar" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Se especificaron instrucciones para el archivo '%s' en %s:%lu," # Buscando en las legras implícitas em+ # Utilicé por búsqueda en para evitar el gerundio. mm -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" @@ -272,7 +272,7 @@ msgstr "" # "now" es "ahora". ¿te lo has comido consciente o inconscientemente? sv # inconscientemente. mm -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "pero '%s' se considera ahora como el mismo archivo que `%s'." @@ -281,7 +281,7 @@ msgstr "pero '%s' se considera ahora como el mismo archivo que `%s'." # "To ignore" *no* es ignorar. sv # Propongo "no serán tenidas en cuenta" a falta de algo mejor. # Ok. Mi necedad sobrepasa el milenio. mm -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" @@ -291,62 +291,62 @@ msgstr "" # Me suena que eso de colon es algo así como punto, dos puntos o punto y coma. # ¿Podrías comprobarlo? sv # Es un punto sencillo (.). A ver si te gusta mi propuesta. mm -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "no se puede cambiar un punto (.) '%s' por dos puntos (:) '%s'" # Lo mismo. sv -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "no se pueden cambiar dos puntos (:) '%s' por un punto (.) '%s'" # Propongo un cambio en el tiempo verbal: Se borra el archivo temporal. sv # Ok. mm -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Se borra el archivo intermedio '%s'" # Propongo un cambio en el tiempo verbal: Se borra el archivo temporal. sv # Ok. mm -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "*** Se borran los archivos intermedios...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr "" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Hora actual" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Fecha fuera de intervalo; sustituyéndola %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# No es un objetivo:" # Pondría: es una dependencia de em+ # Si, tienes razón. mm -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Archivo valioso (es una dependencia de .PRECIOUS)." @@ -358,7 +358,7 @@ msgstr "# Archivo valioso (es una dependencia de .PRECIOUS)." # No. Incondicional no es una traducción correcta. Que tal si al rato # se les ocurre hacer una nueva instrucción .INCONDITIONAL. # Si quieres podríamos pensar en otra traducción como señuelo o algo así. mm -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# objetivo falso (dependencia de .PHONY)." @@ -369,7 +369,7 @@ msgstr "# objetivo falso (dependencia de .PHONY)." # Están traduciendo commands como comandos? Son más bien ordenes o # instrucciones. Por mi parte no hay problema, incluso me gusta más # comandos, pero es un anglicismo. mm -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Objetivo en línea de instrucciones." @@ -381,11 +381,11 @@ msgstr "# Objetivo en línea de instrucciones." # Así pues tu traducción es completamente equivocada, lo siento. # Pondría: Fichero por defecto o definido en la variable MAKEFILE em+ # Cierto, lo has entendido bien. Arreglo acorde. mm -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Por omisión, MAKEFILES, o -include/sinclude makefile." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Regla incorporada" @@ -393,7 +393,7 @@ msgstr "# Regla incorporada" # Ok. Es más literal. mm # Atención ! , es la búsqueda 'de'reglas implícitas em+ # Ok. Ojo, debo pluralizar regla e implícita. Platicarlo con Ulrich. mm -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# La búsqueda de reglas implícitas ha sido efectuada." @@ -401,22 +401,22 @@ msgstr "# La búsqueda de reglas implícitas ha sido efectuada." # Ok. Es más literal. mm # Atención ! , es la búsqueda 'de'reglas implícitas em+ # Ok. Ojo, debo pluralizar regla e implícita. Platicarlo con Ulrich. mm -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# La búsqueda de reglas implícitas ha sido efectuada." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Tema del patrón implícita/estática: '%s'\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# El archivo es una dependencia intermedia." # Pondría: es una dependencia de em+ # Si, tienes razón. mm -#: src/file.c:1111 +#: src/file.c:1108 #, fuzzy msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Archivo valioso (es una dependencia de .PRECIOUS)." @@ -429,14 +429,14 @@ msgstr "# Archivo valioso (es una dependencia de .PRECIOUS)." # No. Incondicional no es una traducción correcta. Que tal si al rato # se les ocurre hacer una nueva instrucción .INCONDITIONAL. # Si quieres podríamos pensar en otra traducción como señuelo o algo así. mm -#: src/file.c:1113 +#: src/file.c:1110 #, fuzzy msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# objetivo falso (dependencia de .PHONY)." # Sugerencia: "crea". sv # Ok. Aunque, viendolo bien, que tal "hace"? mm. -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# También hace:" @@ -444,60 +444,60 @@ msgstr "# También hace:" # Ok. Mejora. mm # No pondría nunca, sino simplemente 'no se comprobó 'em+ # Si, es lo mismo pero es más español. mm -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# La fecha de modificación no se comprobó." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# El archivo no existe." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# El archivo es muy viejo." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Última modificación %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# El archivo ha sido actualizado." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# El archivo ha sido actualizado." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Las instrucciones continúan en ejecución (ESTO ES UN BUG)." # ¿No sería más bien "las instrucciones de las dependencias"? sv # Si, que babas soy. Ahora corrijo. mm -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "" "# Las instrucciones de las dependencias continúan en ejecución (ESTO ES UN " "BUG)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Actualizado con éxito." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Necesita ser actualizado (la opción -q está activa)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Fallo al ser actualizado." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# ¡Valor inválido en el miembro 'command_state'!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -505,7 +505,7 @@ msgstr "" "\n" "# Archivos" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -515,7 +515,7 @@ msgstr "" "# estadísticas de la tabla «hash» de los archivos:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: El campo '%s' no está en «cache»: %s" @@ -585,12 +585,12 @@ msgstr "windows32_openpipe(): fallo en process_init_fd()\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Limpiando el archivo temporal %s\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "archivo: falta el nombre del archivo" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "abrir: %s: %s" @@ -604,21 +604,26 @@ msgstr "abrir: %s: %s" # else # printf ("%s[%u]: %s ", program, makelevel, message); # Como notarás lo del directorio va en otro lado. -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "escribir: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "cerrar: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "archivo: demasiados argumentos" +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "archivo: operación de archivo no válida: %s" + # Probablemente sea aquí donde haya que ponerle el "el" para que "Entering" # concuerde bien con esta frase y con la anterior simultáneamente. sv # No. Ya revisé el fuente y transcribo el trozo pertinente: @@ -628,113 +633,113 @@ msgstr "archivo: demasiados argumentos" # else # printf ("%s[%u]: %s ", program, makelevel, message); # Como notarás lo del directorio va en otro lado. -#: src/function.c:2397 +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "leer: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "archivo: operación de archivo no válida: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, fuzzy, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "Número de argumentos (%d) insuficientes para la función '%s'" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "No implementado en esta plataforma: función '%s'" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "la llamada a la función '%s' no concluyó: falta '%c'" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Nombre de función vacío" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Nombre de función no válido: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Nombre de función demasiado largo: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Número insuficiente de argumentos (%u) para la función %s" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "El número máximo de argumentos (%u) no es válido para la función %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: la opción '%s' es ambigua\n" # No admite ningún argumento. sv # Ok. Y vuelve la burra al trigo. mm -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: la opción '--%s' no admite ningún argumento\n" # Lo mismo. sv # Ok. mm -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: la opción '%c%s' no admite ningún argumento\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: la opción '%s' requiere un argumento\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: opción no reconocida '--%s'\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: opción no reconocida '%c%s'\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: opción inválida -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: opción inválida -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: la opción requiere un argumento -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: la opción '-W %s' es ambigua\n" # No admite ningún argumento. sv # Ok. Y vuelve la burra al trigo. mm -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: la opción '-W %s' no admite ningún argumento\n" @@ -801,12 +806,12 @@ msgstr "Buscando una regla implícita para el miembro del archivo '%s'.\n" # Me gusta evade, pero evita es correcto. Acepto tu sugerencia. mm # No me gusta se evita, pondría evitando em+ # Ok. Pero a mi paranoia de evitar gerundios dónde la dejas? mm -#: src/implicit.c:326 +#: src/implicit.c:328 #, fuzzy, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Evitando la recursión en la regla implícita.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "" @@ -819,12 +824,12 @@ msgstr "" # De momento cambio la regla patron por una regla de patron , y # pondría a toda costa gerundio ( intentando ) em+ # Ok con el gerundio. Pero también tengo que meditarlo. mm -#: src/implicit.c:501 +#: src/implicit.c:503 #, fuzzy, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Intentando una regla de patrón con el tema '%.*s'.\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Tema demasiado largo: '%s%.*s'.\n" @@ -836,7 +841,7 @@ msgstr "Tema demasiado largo: '%s%.*s'.\n" # aparecer tal y como está ahora (Se rechaza la dependencia imposible # `%s' `%s )'em+ # Ok. mm -#: src/implicit.c:768 +#: src/implicit.c:770 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Se rechaza la regla de dependencia imposible '%s'.\n" @@ -848,7 +853,7 @@ msgstr "Se rechaza la regla de dependencia imposible '%s'.\n" # aparecer tal y como está ahora (Se rechaza la dependencia imposible # `%s' `%s )'em+ # Ok. mm -#: src/implicit.c:770 +#: src/implicit.c:772 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Se rechaza la dependencia implícita imposible '%s'.\n" @@ -861,7 +866,7 @@ msgstr "Se rechaza la dependencia implícita imposible '%s'.\n" # De momento cambio la regla patron por una regla de patron , y # pondría a toda costa gerundio ( intentando ) em+ # Ok con el gerundio. Pero también tengo que meditarlo. mm -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Intentando la regla de dependencia '%s'.\n" @@ -873,42 +878,42 @@ msgstr "Intentando la regla de dependencia '%s'.\n" # Me gusta evade, pero evita es correcto. Acepto tu sugerencia. mm # No me gusta se evita, pondría evitando em+ # Ok. Pero a mi paranoia de evitar gerundios dónde la dejas? mm -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Probando la dependencia implícita '%s'.\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, fuzzy, c-format msgid "'%s' ought to exist.\n" msgstr "El archivo '%s' no existe.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "" -#: src/implicit.c:842 +#: src/implicit.c:844 #, fuzzy, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "%s: actualizar el objetivo '%s' a causa de: %s" -#: src/implicit.c:856 +#: src/implicit.c:858 #, fuzzy, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "La dependencia '%s' del objetivo '%s' no existe.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, fuzzy, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Se encontró la dependencia '%s' como la VPATH '%s'.\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, fuzzy, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Se busca una regla con el archivo intermedio '%s'.\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Se busca una regla con el archivo intermedio '%s'.\n" @@ -920,19 +925,19 @@ msgstr "Se busca una regla con el archivo intermedio '%s'.\n" # aparecer tal y como está ahora (Se rechaza la dependencia imposible # `%s' `%s )'em+ # Ok. mm -#: src/implicit.c:927 +#: src/implicit.c:929 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Se rechaza la regla de dependencia imposible '%s'.\n" # Se ha encontrado em+ # Ok, pero procuro evitar como a la muerte los gerundios. mm -#: src/implicit.c:931 +#: src/implicit.c:933 #, fuzzy, c-format msgid "Not found '%s'.\n" msgstr "No se ha encontrado ninguna regla implícita para '%s'.\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, fuzzy, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Se encontró una regla implícita para '%s'.\n" @@ -941,19 +946,19 @@ msgstr "Se encontró una regla implícita para '%s'.\n" # Ten en cuenta que este mensaje no parece un mensaje de error, sino más # de "debug" o de "verbose". sv # Cierto. mm -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, fuzzy, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Buscando una regla implícita para '%s'.\n" # Se ha encontrado em+ # Ok, pero procuro evitar como a la muerte los gerundios. mm -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "No se ha encontrado ninguna regla implícita para '%s'.\n" -#: src/job.c:380 +#: src/job.c:377 #, fuzzy msgid "Cannot create a temporary file" msgstr "No se puede crear un archivo temporal\n" @@ -962,21 +967,21 @@ msgstr "No se puede crear un archivo temporal\n" # volcado de `core' no significa nada, que te parece si mejor dejamos # el core dumped, o bien volcado del núcleo o algo así. Por el momento # no cambio nada. mm -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (core dumped) [Núcleo vaciado a un archivo]" # Preferiría mil veces "sin efecto" o algo parecido. sv # Ok. Habíamos quedado en `no tiene efecto'. mm -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (no tiene efecto)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:587 +#: src/job.c:584 #, fuzzy, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Error %d%s" @@ -984,71 +989,71 @@ msgstr "%s[%s: %s] Error %d%s" # ¿Y job -> trabajos? sv # Si, pero no hablas de una computadora multi-trabajos sino multi-tareas. # Por eso elegí tareas. Lo platicamos con más calma? mm -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Se espera a que terminen otras tareas...." # ¿De verdad se dice "vivo"? Si es un proceso, se me ocurre "activo". sv # Me gusta lo de activo. mm -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Hijo activo %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (remoto)" # Lo mismo, pon Proceso hijo, y quita lo que hay # entre paréntesis em+ -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Se recupera al proceso hijo ganador %p PID %s %s\n" # Lo mismo, pon Proceso hijo, y quita lo que hay # entre paréntesis em+ -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Se recupera al proceso hijo perdido %p PID %s %s\n" # Give up no es enfocar, es abandonar, o desistir em+ # Si, metí la pata. mm -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Se limpia el archivo temporal %s\n" # Give up no es enfocar, es abandonar, o desistir em+ # Si, metí la pata. mm -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Fallo al limpiar el archivo temporal por lotes %s (%d)\n" # Proceso hijo em+ # Ok. -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Se elimina al proceso hijo %p PID %s%s de la cadena.\n" # Lo mismo, pon Proceso hijo, y quita lo que hay # entre paréntesis em+ -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Se libera el token para el proceso hijo %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "fallo en process_easy() para lanzar al proceso (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -1059,88 +1064,98 @@ msgstr "" # Proceso hijo em+ # Ok. -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Se pone al proceso hijo %p (%s) PID %s%s en la cadena.\n" # Lo mismo, pon Proceso hijo, y quita lo que hay # entre paréntesis em+ -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Se obtiene el token para el proceso hijo %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: actualizar el objetivo '%s' a causa de: %s" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: actualizar el objetivo '%s' a causa de: %s" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: actualizar el objetivo '%s' a causa de: %s" -#: src/job.c:1910 -#, fuzzy -msgid "target does not exist" -msgstr "%s: el objetivo '%s' no existe" +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: actualizar el objetivo '%s' a causa de: %s" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "no se pueden forzar los límites de carga en este sistema operativo" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "no se puede forzar la carga límite: " -#: src/job.c:2195 +#: src/job.c:2238 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdin" msgstr "no hay más manejadores de archivos: no se puede duplicar stdin\n" -#: src/job.c:2207 +#: src/job.c:2250 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdout" msgstr "no hay más manejadores de archivos: no se puede duplicar stdout\n" -#: src/job.c:2221 +#: src/job.c:2264 #, fuzzy, c-format msgid "no more file handles: could not duplicate stderr" msgstr "no hay más manejadores de archivos: no se puede duplicar stderr\n" -#: src/job.c:2236 +#: src/job.c:2279 #, fuzzy, c-format msgid "Could not restore stdin" msgstr "No se puede restaurar stdin\n" -#: src/job.c:2244 +#: src/job.c:2287 #, fuzzy, c-format msgid "Could not restore stdout" msgstr "No se puede restaurar stdout\n" -#: src/job.c:2252 +#: src/job.c:2295 #, fuzzy, c-format msgid "Could not restore stderr" msgstr "No se puede restaurar stderr\n" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "hacer un hijo descarriado %s, aún se espera por el pid %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: el espacio ambiental podría estar agotado" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL ha cambiado (era '%s' y ahora es '%s')\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Se crea el archivo temporal %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -1149,7 +1164,7 @@ msgstr "" "Contenido del archivo de lotes:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -1158,7 +1173,7 @@ msgstr "" "Contenido del archivo de lotes:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -1205,23 +1220,23 @@ msgstr "" msgid "The 'load' operation is not supported on this platform" msgstr "La operación 'load' no está implementada en esta plataforma." -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Opciones:\n" # Lo mismo de arriba con "ignorar". sv # Ok. mm. -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr "" " -b, -m No se tendrá en cuenta por compatibilidad.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" " -B, --always-make Hace incondicionalmente todos los objetivos.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -1232,7 +1247,7 @@ msgstr "" # ¿"depurado" o "depuración"? sv # Puse de depurado para evitar la cacofonía información depuración. # Sugerencias bienvenidas. mm -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Se imprimirán grandes cantidades de información de depurado.\n" @@ -1240,14 +1255,14 @@ msgstr "" # ¿"depurado" o "depuración"? sv # Puse de depurado para evitar la cacofonía información depuración. # Sugerencias bienvenidas. mm -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=BANDERAS] Se imprimirán varios tipos de información de " "depurado.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1256,14 +1271,14 @@ msgstr "" " Las variables ambientales se imponen a las de los " "makefiles.\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E CADENA, --eval=CADENA Evalúa la CADENA como una instrucción de un " "makefile.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1271,7 +1286,7 @@ msgstr "" " -f ARCHIVO, --file=ARCHIVO, --makefile=ARCHIVO\n" " Lee al ARCHIVO como un makefile.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Muestra este mensaje y finaliza.\n" @@ -1281,13 +1296,13 @@ msgstr " -h, --help Muestra este mensaje y finaliza.\n" # tambien. # No me gusta este mensaje, preferiría: Se ignoran los errores obtenidos # en la ejecución de las instrucciones em+ -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" " -i, --ignore-errors No se toman en cuenta los errores provenientes " "de las instrucciones.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1298,7 +1313,7 @@ msgstr "" # Yo traduciría "infinite" por "infinitos", no por "una infinidad", que # parece que son muchos menos... sv # Ok. mm -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1307,20 +1322,20 @@ msgstr "" "especifica un\n" "argumento son infinitos.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" # No entiendo por qué aquí empleas subjuntivo: "pudieron". sv # Es incorrecto. Es una de las opciones `k' que dice... mm -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Sigue avanzando aún cuando no se puedan crear " "algunos objetivos.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1330,7 +1345,7 @@ msgstr "" " No inicia con trabajos múltiples a menos que la carga esté por debajo " "de N.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1338,7 +1353,7 @@ msgstr "" " -L, --check-symlink-times Utiliza el último mtime entre los enlaces " "simbólicos y los objetivos.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1348,7 +1363,7 @@ msgstr "" " No ejecuta ninguna instrucción; sólo las " "muestra.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1358,7 +1373,7 @@ msgstr "" " Supone que ARCHIVO es muy viejo y no lo " "reconstruye.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1369,13 +1384,13 @@ msgstr "" # de 'make' em+ # ok. mm -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base Se imprime la base de datos interna de " "'make'.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1389,7 +1404,7 @@ msgstr "" # ¡ Por favor ! , ¿ pero qué es eso de interconstruidas ? # Pon almacenadas internamente, que es exactamente lo que son :) em+ # Bueno, bajo protesta. mm -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Se deshabilitan las reglas implícitas " @@ -1400,29 +1415,29 @@ msgstr "" # ¡ Por favor ! , ¿ pero qué es eso de interconstruidas ? # Pon almacenadas internamente, que es exactamente lo que son :) em+ # Bueno, bajo protesta. mm -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Se deshabilitan los ajustes a las variables " "almacenadas internamente.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" msgstr "" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet No muestra las instrucciones.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Muestra las instrucciones (desactiva el modo --" "silent).\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1435,7 +1450,7 @@ msgstr "" # # Pues entonces cámbialo arriba tambien em+ # En donde? mm -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Se tocan los objetivos en vez de " @@ -1444,20 +1459,20 @@ msgstr "" # ¿"depurado" o "depuración"? sv # Puse de depurado para evitar la cacofonía información depuración. # Sugerencias bienvenidas. mm -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Muestra trazas.\n" # Me comería el "Se" inicial. "Muestra la versión..." sv # Ok. mm -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Muestra la versión del make y finaliza.\n" # Lo mismo. sv -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Muestra el directorio actual.\n" @@ -1466,7 +1481,7 @@ msgstr " -w, --print-directory Muestra el directorio actual.\n" # apaga luz Mari Luz apaga luz ,que yo no puedo vivir con # tanta luz ... ( canción tradicional ) ( no lo pude evitar ) em+ # Juar, Juar, Juar. Coincido, pero el sentido es el mismo. mm -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1474,7 +1489,7 @@ msgstr "" " --no-print-directory Desactiva -w, aún cuando haya sido activado " "implícitamente.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1485,7 +1500,7 @@ msgstr "" # Lo mismo. sv # Todas estas parecen descripciones de opciones. -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1502,22 +1517,22 @@ msgstr "" # else # printf ("%s[%u]: %s ", program, makelevel, message); # Como notarás lo del directorio va en otro lado. -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "error al escribir: stdout" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "no se permite que una cadena vacía sea el nombre de un archivo" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "se especificó un nivel de depuración desconocido '%s'" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "tipo de sincronización de salida desconocido '%s'" @@ -1527,12 +1542,12 @@ msgstr "tipo de sincronización de salida desconocido '%s'" # "target" es "objetivo", no "objetivos". Fíjate que lleva puntos # suspensivos, permitiendo así varios objetivos. sv # Ok. mm -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Modo de empleo: %s [opciones] [objetivo] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1541,7 +1556,7 @@ msgstr "" "\n" "Este programa fue construido para %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1550,18 +1565,18 @@ msgstr "" "\n" "Este programa construido para %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "Informe sobre los errores a \n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" "%s: Se atrapó una interrupción/excepción (código = 0x%lx, dirección = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1576,33 +1591,33 @@ msgstr "" "Banderas de la excepción = %lx\n" "Dirección de la excepción = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Violación de acceso: operación de escritura en la dirección 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Violación de acceso: operación de lectura en la dirección 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "la función find_and_set_shell() pone el valor del default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "la función find_and_set_shell() pone el valor de la ruta de búsceda " "default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (archivo temporal)" -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1610,65 +1625,70 @@ msgstr "" "atención: el servidor de tareas no está disponible: se utilizará -j1. Añada " "'+' a la regla padre del make." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "atención: se fuerza a -j%d en el submake: se restablece el modo de servidor " "de tareas." -#: src/main.c:1930 +#: src/main.c:1946 #, fuzzy, c-format msgid "Makefile from standard input specified twice" msgstr "" "El archivo Makefile ha sido especificado dos veces desde la entrada estándard" -#: src/main.c:1940 +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "No se puede crear un archivo temporal\n" + +#: src/main.c:1959 #, fuzzy, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite (archivo temporal)" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "atención: se fuerza a -j%d en el makefile: se restablece el modo de servidor " "de tareas." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "" "Los trabajos en paralelo (-j) no están implementados en esta plataforma." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Reajustando al modo monotarea (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "" -#: src/main.c:2250 +#: src/main.c:2262 #, fuzzy, c-format msgid "Using output-sync mutex %s\n" msgstr "tipo de sincronización de salida desconocido '%s'" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Los enlaces simbólicos no están implementados: se deshabilitan con -L." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "" # Antes pusiste "makefiles". Coherencia. sv # Cierto. mm -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Actualizando archivos makefiles....\n" @@ -1679,73 +1699,73 @@ msgstr "Actualizando archivos makefiles....\n" # Pondría ( como en un mensaje anterior ) se autoreferencia ... em+ # He puesto makefile con minúsculas , par ser coherentes em+ # Ok. Es más breve. mm. -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" "El makefile '%s' podría entrar en bucle; por lo tanto, no se reconstruye.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: fallo al cargar" # Lo mismo. sv -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Fallo al reconstruir el makefile '%s'." # Lo mismo. sv -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "No se encontró el makefile incluído '%s'." # Lo mismo. sv -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "No se encontró el makefile '%s'" -#: src/main.c:2700 +#: src/main.c:2717 #, fuzzy, c-format msgid "Couldn't change back to original directory" msgstr "No se pudo regresar al directorio original." -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Re-ejecutando[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL contien más de un objetivo" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "No hay objetivos" # Sugerencia: "No se especificó ningún objetivo ... " sv # Ok. Me gusta. mm -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "No se especificó ningún objetivo y no se encontró ningún makefile" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Actualizando los objetivos finales....\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" @@ -1754,29 +1774,29 @@ msgstr "" # Me comería el "de" de "requiere de" sv # Ok. mm -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "la opción '%s%s' requiere un argumento no-vacío de tipo cadena" # Me comería el "de" de "requiere de" sv # Ok. mm -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "la opción '-%c' requiere un argumento positivo y entero" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sEste programa fue construido para %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sEste programa fue construido para %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, fuzzy, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later \n" "Language-Team: Finnish \n" @@ -131,7 +131,7 @@ msgstr " (sisäänrakennettu):" msgid " (from '%s', line %lu):\n" msgstr " (tiedosto ”%s”, rivi %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -139,63 +139,63 @@ msgstr "" "\n" "# Hakemistot\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: tilaa ei voitu lukea.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (avain %s, maika %d): ei voitu avata.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (laite %d, i-solmu [%d,%d,%d]): ei voitu avata.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (laite %ld, i-solmu %ld): ei voitu avata.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (avain %s, maika %d: " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (laite %d, i-solmu [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (laite %ld, i-solmu %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Ei" # Juuri näin, muodostetaan käännöslause yksittäisistä sanoista... -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " tiedostoa, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "ei" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " mahdottomuutta" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " tähän mennessä." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " mahdottomuutta %lu hakemistossa.\n" @@ -215,180 +215,180 @@ msgstr "Rekursiivinen muuttuja ”%s” viittaa (lopulta) itseensä" msgid "unterminated variable reference" msgstr "päättämätön muuttujaviittaus" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Tiedostolle ”%s” määriteltiin resepti paikassa %s:%lu," -#: src/file.c:277 +#: src/file.c:274 #, fuzzy, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Tiedostolle ”%s” löytyi komentoja oletussääntöhaussa," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "mutta ”%s”:n katsotaan nyt olevan sama tiedosto kuin ”%s”." -#: src/file.c:284 +#: src/file.c:281 #, fuzzy, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" "Tiedoston ”%s” komentoja ei huomioida, vaan käytetään komentoja tiedostosta " "”%s”." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Poistetaan aputiedosto ”%s”" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Poistetaan aputiedostot...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr "" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Tämänhetkinen aika" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Aikaleima ei ole sallitulla välillä, korvataan %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Ei kohde:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Arvokas tiedosto (ennakkoehto .PRECIOUS:ille)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Valekohde (ennakkoehto .PHONY:lle)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Komentorivikohde." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Oletus-, MAKEFILES- tai -include/sinclude -makefile-tiedosto." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Sisäänrakennettu sääntö" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Oletussääntöhaku on suoritettu." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Oletussääntöhakua ei ole suoritettu." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Tiedosto on välitason ennakkoehto." -#: src/file.c:1111 +#: src/file.c:1108 #, fuzzy msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Arvokas tiedosto (ennakkoehto .PRECIOUS:ille)." -#: src/file.c:1113 +#: src/file.c:1110 #, fuzzy msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Valekohde (ennakkoehto .PHONY:lle)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Tuotetaan myös:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Muutosaikaa ei koskaan tarkastettu." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Tiedosto ei ole olemassa." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Tiedosto on hyvin vanha." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Viimeksi muutettu %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Tiedosto on päivitetty." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Tiedostoa ei ole päivitetty." -#: src/file.c:1139 +#: src/file.c:1136 #, fuzzy msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Ajossa olevat komennot (TÄMÄ ON OHJELMISTOVIKA)." -#: src/file.c:1142 +#: src/file.c:1139 #, fuzzy msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Ajossa olevat riippuvuuskomennot (TÄMÄ ON OHJELMISTOVIKA)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Päivitetty onnistuneesti." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Vaatii päivitystä (-q on asetettu)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Päivitys epäonnistui." -#: src/file.c:1163 +#: src/file.c:1160 #, fuzzy msgid "# Invalid value in 'command_state' member!" msgstr "# Virheellinen arvo ”command_state”-jäsenessä!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -396,7 +396,7 @@ msgstr "" "\n" "# Tiedostot" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -406,7 +406,7 @@ msgstr "" "# tilasto tiedostojen hajautustaulusta:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Kenttää ”%s” ei välimuistitettu: %s" @@ -476,132 +476,137 @@ msgstr "windows32_openpipe(): process_init_fd() epäonnistui\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Siivotaan väliaikainen komentotiedosto %s\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "tiedosto: tiedostonimi puuttuu" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "tiedosto: liian monta argumenttia" -#: src/function.c:2397 +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "tiedosto: virheellinen tiedostotoiminto: %s" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "tiedosto: virheellinen tiedostotoiminto: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, fuzzy, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "liian vähän (%d) argumentteja funktiolle ”%s”" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "ei toteutettu tällä alustalla: funktio ”%s”" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "päättämätön kutsu funktioon ”%s”: puuttuva ”%c”" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Tyhjä funktionimi" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Virheellinen funktionimi: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Funktionimi on liian pitkä: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, fuzzy, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Virheellinen vähimmäisargumenttimäärä (%d) funktiolle %s" -#: src/function.c:2801 +#: src/function.c:2826 #, fuzzy, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Virheellinen enimmäisargumenttimäärä (%d) funktiolle %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: valitsin ”%s” on moniselitteinen\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: valitsin ”--%s” ei salli argumenttia\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: valitsin ”%c%s” ei salli argumenttia\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: valitsin ”%s” vaatii argumentin\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: tunnistamaton valitsin ”--%s”\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: tunnistamaton valitsin ”%c%s”\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: virheellinen valitsin -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: virheellinen valitsin -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: valitsin vaatii argumentin -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: valitsin ”-W %s” on moniselitteinen\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: valitsin ”-W %s” ei salli argumenttia\n" @@ -651,180 +656,180 @@ msgstr "Etsitään arkistojäsenen oletussääntöä kohteelle ”%s”.\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "Etsitään arkistojäsenen oletussääntöä kohteelle ”%s”.\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, fuzzy, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Vältetään oletussääntörekursio.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:501 +#: src/implicit.c:503 #, fuzzy, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Kokeillaan hahmosääntöä rungolla ”%.*s”.\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, fuzzy, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Liian pitkä runko: ”%.*s”.\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Hylätään mahdoton säännön ennakkoehto ”%s”.\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Hylätään mahdoton oletusennakkoehto ”%s”.\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Yritetään käyttää säännön ennakkoehtoa ”%s”.\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Yritetään käyttää oletusennakkoehtoa ”%s”.\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, fuzzy, c-format msgid "'%s' ought to exist.\n" msgstr "Tiedosto ”%s” ei ole olemassa.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "" -#: src/implicit.c:842 +#: src/implicit.c:844 #, fuzzy, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "" "%1$s”%3$s”-kohteen tarvitseman kohteen ”%2$s” tuottamiseen ei ole sääntöä%4$s" -#: src/implicit.c:856 +#: src/implicit.c:858 #, fuzzy, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "Kohteen ”%2$s” ennakkoehto ”%1$s” ei ole olemassa.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, fuzzy, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Löydettiin ennakkoehto ”%s”, joka on VPATH ”%s”\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, fuzzy, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Etsitään sääntöä aputiedostolla ”%s”.\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Etsitään sääntöä aputiedostolla ”%s”.\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Hylätään mahdoton säännön ennakkoehto ”%s”.\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, fuzzy, c-format msgid "Not found '%s'.\n" msgstr "Kohteelle ”%s” ei löytynyt oletussääntöä.\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, fuzzy, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Kohteelle ”%s” löytyi oletussääntö.\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, fuzzy, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Etsitään oletussääntöä kohteelle ”%s”.\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Kohteelle ”%s” ei löytynyt oletussääntöä.\n" -#: src/job.c:380 +#: src/job.c:377 #, fuzzy msgid "Cannot create a temporary file" msgstr "Väliaikaistiedoston luominen ei onnistu\n" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (muisti vedostettu)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (ei huomioida)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:587 +#: src/job.c:584 #, fuzzy, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Virhe %d%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Odotetaan keskeneräisiä töitä...." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (etä)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Siivotaan väliaikainen komentotiedosto %s\n" -#: src/job.c:972 +#: src/job.c:969 #, fuzzy, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Siivotaan väliaikainen komentotiedosto %s\n" -#: src/job.c:1083 +#: src/job.c:1080 #, fuzzy, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Poistetaan ketjusta lapsiprosessi 0x%08lx PID %ld%s.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, fuzzy, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() epäonnistui prosessin käynnistämisessä (v=%d)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -833,91 +838,104 @@ msgstr "" "\n" "Laskettiin %d argumenttia epäonnistuneessa käynnistyksessä\n" -#: src/job.c:1650 +#: src/job.c:1654 #, fuzzy, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Lisätään ketjuun lapsiprosessi 0x%08lx (%s) PID %ld%s.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "" -#: src/job.c:1909 +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "" +"%1$s”%3$s”-kohteen tarvitseman kohteen ”%2$s” tuottamiseen ei ole sääntöä%4$s" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "" +"%1$s”%3$s”-kohteen tarvitseman kohteen ”%2$s” tuottamiseen ei ole sääntöä%4$s" + +#: src/job.c:1923 src/job.c:1951 #, fuzzy, c-format msgid "%s: update target '%s' due to: %s" msgstr "" "%1$s”%3$s”-kohteen tarvitseman kohteen ”%2$s” tuottamiseen ei ole sääntöä%4$s" -#: src/job.c:1910 -#, fuzzy -msgid "target does not exist" -msgstr "%s: kohde ”%s” ei ole olemassa" +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "" +"%1$s”%3$s”-kohteen tarvitseman kohteen ”%2$s” tuottamiseen ei ole sääntöä%4$s" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "kuormarajoja ei voi ottaa käyttöön tässä käyttöjärjestelmässä" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "kuormarajaa ei voi ottaa käyttöön: " -#: src/job.c:2195 +#: src/job.c:2238 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdin" msgstr "" "tiedostokahvoja ei ole enempää: vakiosyötteen kahdentaminen ei onnistunut\n" -#: src/job.c:2207 +#: src/job.c:2250 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdout" msgstr "" "tiedostokahvoja ei ole enempää: vakiotulosteen kahdentaminen epäonnistui\n" -#: src/job.c:2221 +#: src/job.c:2264 #, fuzzy, c-format msgid "no more file handles: could not duplicate stderr" msgstr "" "tiedostokahvoja ei ole enempää: vakiovirhetulosteen kahdentaminen ei " "onnistunut\n" -#: src/job.c:2236 +#: src/job.c:2279 #, fuzzy, c-format msgid "Could not restore stdin" msgstr "Vakiosyötettä ei voitu palauttaa\n" -#: src/job.c:2244 +#: src/job.c:2287 #, fuzzy, c-format msgid "Could not restore stdout" msgstr "Vakiotulostetta ei voitu palauttaa\n" -#: src/job.c:2252 +#: src/job.c:2295 #, fuzzy, c-format msgid "Could not restore stderr" msgstr "Vakiovirhetulostetta ei voitu palauttaa\n" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: ympäristötila saattaa olla lopussa" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL muuttunut (oli ”%s”, nyt ”%s”)\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Luodaan väliaikainen komentotiedosto %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -926,7 +944,7 @@ msgstr "" "Komentojonotiedoston sisältö:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -935,7 +953,7 @@ msgstr "" "Komentojonotiedoston sisältö:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (rivi %d) Väärä kuoriympäristö (!unixy && !batch_mode_shell)\n" @@ -980,20 +998,20 @@ msgstr "" msgid "The 'load' operation is not supported on this platform" msgstr "Rinnakkaiset työt (-j) eivät ole tuettuja tällä alustalla." -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Valitsimet:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr "" " -b, -m Yhteensopivuuden vuoksi jätetään huomiotta.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Tuota kaikki kohteet ehdoitta.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -1001,16 +1019,16 @@ msgstr "" " -C HAKEMISTO, --directory=HAKEMISTO\n" " Siirry HAKEMISTOon ennen jatkamista.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d Näytä runsaasti vianetsintätietoja.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr " --debug[=LIPUT] Näytä monenlaisia vianetsintätietoja.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1019,13 +1037,13 @@ msgstr "" " Ympäristömuuttujat kumoavat makefile-" "tiedostot.\n" -#: src/main.c:332 +#: src/main.c:335 #, fuzzy msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr " -E MJONO, --eval=MJONO Lavenna MJONO makefile-lausekkeena.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1033,16 +1051,16 @@ msgstr "" " -f TIEDOSTO, --file=TIEDOSTO, --makefile=TIEDOSTO\n" " Käytä TIEDOSTOa makefile-tiedostona.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Näytä tämä viesti ja poistu.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" " -i, --ignore-errors Älä huomioi suoritettujen reseptien virheitä.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1051,7 +1069,7 @@ msgstr "" " Etsi sisällytettäviä makefile:ja " "HAKEMISTOsta.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1059,18 +1077,18 @@ msgstr "" " -j [N], --jobs[=N] Salli N yhtäaikaista työtä; ilman N:ää " "ääretön.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Jatka vaikka joidenkin kohteiden tuottaminen\n" " epäonnistuisi.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1080,7 +1098,7 @@ msgstr "" " Älä aloita useita töitä ellei kuormitus alle " "N.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1088,7 +1106,7 @@ msgstr "" " -L, --check-symlink-times Käytä uusinta mtime-aikaa symlinkkien ja\n" " kohteen välillä.\n" -#: src/main.c:355 +#: src/main.c:358 #, fuzzy msgid "" " -n, --just-print, --dry-run, --recon\n" @@ -1099,7 +1117,7 @@ msgstr "" " Näytä ajettavat komennot, älä käynnistä " "niitä.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1108,17 +1126,17 @@ msgstr "" " -o TIEDOSTO, --old-file=TIEDOSTO, --assume-old=TIEDOSTO\n" " Käsittele TIEDOSTO vanhana, älä tuota sitä.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base Näytä make:in sisäinen tietokanta.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1126,35 +1144,35 @@ msgstr "" " -q, --question Älä aja reseptiä; paluuarvo kertoo ajan-\n" " tasaisuuden.\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Poista käytöstä sisäiset oletussäännöt.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Poista käytöstä sisäiset muuttuja-asetukset.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" msgstr "" -#: src/main.c:375 +#: src/main.c:378 #, fuzzy msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Älä kaiuta komentoja.\n" -#: src/main.c:377 +#: src/main.c:380 #, fuzzy msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " -q, --question Älä aja komentoja; paluuarvo kertoo ajan-\n" " tasaisuuden.\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1162,24 +1180,24 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Kumoaa valitsimen -k.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr " -t, --touch Kosketa kohteita tuottamisen sijaan.\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Näytä jäljitystietoja.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version Näytä make:in versionumero ja poistu.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Näytä nykyinen hakemisto.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1187,7 +1205,7 @@ msgstr "" " --no-print-directory Kumoa -w, vaikka se olisi käytössä " "oletuksena.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1196,7 +1214,7 @@ msgstr "" "new=TIEDOSTO\n" " Käsittele TIEDOSTO aina uutena.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1204,32 +1222,32 @@ msgstr "" " --warn-undefined-variables Varoita viittauksista määrittelemättömiin\n" " muuttujiin.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "kirjoitusvirhe: vakiotuloste" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "tyhjä merkkijono ei kelpaa tiedostonimeksi" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "tuntematon vianetsintätason määritys ”%s”" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Käyttö: %s [valitsimet] [kohde] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1238,7 +1256,7 @@ msgstr "" "\n" "Tämä ohjelma on käännetty järjestelmälle %s.\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1247,18 +1265,18 @@ msgstr "" "\n" "Tämä ohjelma on käännetty järjestelmälle %s (%s).\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "" "Ilmoita ohjelmistovioista (englanniksi) osoitteeseen .\n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Keskeytys/poikkeus siepattu (koodi = 0x%lx, osoite = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, fuzzy, c-format msgid "" "\n" @@ -1273,31 +1291,31 @@ msgstr "" "Poikkeusliput = %x\n" "Poikkeusosoite = %x\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Suojausvirhe: kirjoitusoperaatio osoitteeseen 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Suojausvirhe: lukuoperaatio osoitteeseen 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, fuzzy, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell asettaa default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, fuzzy, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell: polkuhaku asetti default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (väliaikaistiedosto): " -#: src/main.c:1833 +#: src/main.c:1849 #, fuzzy, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1305,150 +1323,155 @@ msgstr "" "varoitus: työpalvelin ei käytettävissä: käytetään -j1. Lisää ”+” ylemmän " "tason make-sääntöön." -#: src/main.c:1841 +#: src/main.c:1857 #, fuzzy, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "varoitus: -jN pakotettu ali-make:ssa: poistetaan työpalvelin käytöstä." -#: src/main.c:1930 +#: src/main.c:1946 #, fuzzy, c-format msgid "Makefile from standard input specified twice" msgstr "Makefile-tiedosto vakiosyötteestä määritelty kahdesti." -#: src/main.c:1940 +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Väliaikaistiedoston luominen ei onnistu\n" + +#: src/main.c:1959 #, fuzzy, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite (väliaikaistiedosto)" -#: src/main.c:2095 +#: src/main.c:2107 #, fuzzy, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "varoitus: -jN pakotettu ali-make:ssa: poistetaan työpalvelin käytöstä." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Rinnakkaiset työt (-j) eivät ole tuettuja tällä alustalla." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Palataan yhden työn (-j1) tilaan." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "" -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Ei tukea symbolisille linkeille: poistetaan -L käytöstä." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Päivitetään makefile-tiedostoja....\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" "Ei uudelleentuoteta makefile-tiedostoa ”%s” – vältetään mahdollinen ikuinen " "silmukka.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: lataaminen epäonnistui" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Makefile-tiedoston ”%s” uudelleentuottaminen epäonnistui." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Sisällytettyä makefile-tiedostoa ”%s” ei löytynyt." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefile-tiedostoa ”%s” ei löytynyt" -#: src/main.c:2700 +#: src/main.c:2717 #, fuzzy, c-format msgid "Couldn't change back to original directory" msgstr "Ei voitu siirtyä takaisin alkuperäiseen hakemistoon." -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Uudelleenkäynnistetään[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL sisältää yli yhden kohteen" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Ei kohteita" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Kohteita ei ole annettu, eikä makefileä löytynyt" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "varoitus: Havaittu väärä kellonaika. Koonnos saattaa olla epätäydellinen." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "valitsin ”%s%s” vaatii ei-tyhjän merkkijonoargumentin" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "valitsin ”-%c” vaatii positiivisen kokonaislukuargumentin" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sTämä ohjelma on käännetty järjestelmälle %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sTämä ohjelma on käännetty järjestelmälle %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later \n" "Language-Team: French \n" @@ -141,7 +141,7 @@ msgstr " (commande interne) :" msgid " (from '%s', line %lu):\n" msgstr " (de « %s », ligne %lu) : \n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -149,62 +149,62 @@ msgstr "" "\n" "# Répertoires\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: « stat » impossible.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (clé %s, mtime %I64u) : ouverture impossible.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (périphérique %d, inode [%d,%d,%d]) : ouverture impossible.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (périphérique %ld, inode %ld) : ouverture impossible.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (clé %s, mtime %I64u) : " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (périphérique %d, inode [%d,%d,%d]) : " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (périphérique %ld, inode %ld) : " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Aucun" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " fichier(s), " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "aucune" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " impossibilité(s)" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " jusqu'ici." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " impossibilités dans %lu répertoires.\n" @@ -224,183 +224,183 @@ msgstr "La variable récursive « %s » se référence elle-même (à la fin)" msgid "unterminated variable reference" msgstr "référence incomplète à une variable" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Une recette a été spécifiée pour le fichier « %s » dans %s : %lu," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" "La recette pour le fichier « %s » a été trouvée par une recherche de règle " "implicite," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "" "mais « %s » est maintenant considéré comme étant le même fichier que « %s »." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "La recette pour « %s » sera ignorée en faveur de celle pour « %s »." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "impossible de renommer le deux-points simple « %s » en deux-points double " "« %s »" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "impossible de renommer le deux-points double « %s » en deux-points simple " "« %s »" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Suppression du fichier intermédiaire « %s »" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Suppression des fichiers intermédiaires...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr "" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Heure actuelle" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s : horodatage hors limite ; remplacement par %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Pas une cible :" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Fichier précieux (dépendance de .PRECIOUS)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Cible factice (dépendance de .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Cible de la ligne de commande." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Une valeur par défaut, MAKEFILES ou -include/sinclude makefile." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Pas de règle interne" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# La recherche de règle implicite a été effectuée." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# La recherche de règle implicite n'a pas été effectuée." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Préfixe de motif implicite ou statique : « %s »\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Le fichier est une dépendance intermédiaire." -#: src/file.c:1111 +#: src/file.c:1108 #, fuzzy msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Fichier précieux (dépendance de .PRECIOUS)." -#: src/file.c:1113 +#: src/file.c:1110 #, fuzzy msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Cible factice (dépendance de .PHONY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Fabrique également :" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Heure de modification jamais vérifiée." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Le fichier n'existe pas." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Le fichier est très ancien." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Dernière modification %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Le fichier a été mis à jour." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Le fichier n'a pas été mis à jour." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Recette en cours d'exécution (CECI EST UNE ANOMALIE)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "" "# Recette de dépendances en cours d'exécution (CECI EST UNE ANOMALIE)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Mise à jour réussie." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# À besoin d'être mis à jour (l'option -q est activée)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# N'a pas pu être mis à jour." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Valeur non valable dans le membre « command_state » !" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -408,7 +408,7 @@ msgstr "" "\n" "# Fichiers" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -418,7 +418,7 @@ msgstr "" "# stats des tables de hachage des fichiers :\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s : le champ « %s » n'est pas en cache : %s" @@ -488,132 +488,137 @@ msgstr "windows32_openpipe() : process_init_fd() a échoué\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Nettoyage du fichier de commandes temporaire %s\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file : fichier manquant" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open : %s : %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write : %s : %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close : %s : %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file : trop d'arguments" -#: src/function.c:2397 +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file : opération invalide : %s" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read : %s : %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file : opération invalide : %s" -#: src/function.c:2527 +#: src/function.c:2552 #, fuzzy, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "nombre d'arguments insuffisant (%d) pour la fonction « %s »" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "non implémenté sur cette plateforme : fonction « %s »" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "appel à la fonction « %s » non terminé : « %c » manquant" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Nom de fonction absent" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Nom de fonction invalide : %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Nom de fonction trop long : %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Nombre d'arguments insuffisant (%u) pour la fonction %s" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Nombre d'arguments excessif (%u) pour la fonction %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s : l'option « %s » est ambiguë\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s : l'option « --%s » ne prend pas d'argument\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s : l'option « %c%s » ne prend pas d'argument\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s : l'option « %s » nécessite un argument\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s : option non reconnue « --%s »\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s : option non reconnue « %c%s »\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s : option non admise -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s : option incorrecte -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s : l'option nécessite un argument -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s : l'option « -W %s » est ambiguë\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s : l'option « -W %s » ne prend pas d'argument\n" @@ -664,179 +669,179 @@ msgstr "Recherche d'une règle implicite de membre d'archive pour « %s ».\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "Recherche d'une règle implicite de membre d'archive pour « %s ».\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, fuzzy, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Évitement de récursion dans une règle implicite.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:501 +#: src/implicit.c:503 #, fuzzy, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Essai du motif avec « %.*s » comme radical.\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Motif trop long : « %s%.*s ».\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Rejet d'une dépendance de règle impossible « %s ».\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Rejet d'une dépendance implicite impossible « %s ».\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Essai de la dépendance de règle « %s ».\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Essai de la dépendance implicite « %s ».\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, fuzzy, c-format msgid "'%s' ought to exist.\n" msgstr "Le fichier « %s » n'existe pas.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "" -#: src/implicit.c:842 +#: src/implicit.c:844 #, fuzzy, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "%s : mise à jour de la cible « %s » causée par : %s" -#: src/implicit.c:856 +#: src/implicit.c:858 #, fuzzy, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "La dépendance « %s » de la cible « %s » n'existe pas.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, fuzzy, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Dépendance trouvée « %s » comme VPATH « %s »\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, fuzzy, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Recherche d'une règle contenant le fichier intermédaire « %s ».\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Recherche d'une règle contenant le fichier intermédaire « %s ».\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Rejet d'une dépendance de règle impossible « %s ».\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, fuzzy, c-format msgid "Not found '%s'.\n" msgstr "Pas de règle implicite trouvée pour « %s ».\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, fuzzy, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Règle implicite trouvée pour « %s ».\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, fuzzy, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Recherche d'une règle implicite pour « %s ».\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Pas de règle implicite trouvée pour « %s ».\n" -#: src/job.c:380 +#: src/job.c:377 #, fuzzy msgid "Cannot create a temporary file" msgstr "Impossible de créer un fichier temporaire\n" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (core dump créé)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (ignorée)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:587 +#: src/job.c:584 #, fuzzy, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s : %s] Erreur %d%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Attente des tâches non terminées...." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Processus fils actif %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (distant)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Récolte du processus fils gagnant %p PID %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Récolte du processus fils perdant %p PID %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Nettoyage du fichier de commande temporaire %s\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Le nettoyage du fichier de commandes temporaire %s a échoué (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Retrait du processus fils %p PID %s%s de la chaîne.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Jeton relâché pour le processus fils %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() n'a pas pu lancer de processus (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -845,93 +850,103 @@ msgstr "" "\n" "%d arguments comptés lors du lancement échoué\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Ajout du processus fils %p (%s) PID %s%s à la chaîne.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Jeton obtenu pour le processus fils %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s : mise à jour de la cible « %s » causée par : %s" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s : mise à jour de la cible « %s » causée par : %s" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s : mise à jour de la cible « %s » causée par : %s" -#: src/job.c:1910 -#, fuzzy -msgid "target does not exist" -msgstr "%s : la cible « %s » n'existe pas" +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s : mise à jour de la cible « %s » causée par : %s" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" "impossible d'imposer des limites de charge sur ce système d'exploitation" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "impossible d'imposer des limites de charge : " -#: src/job.c:2195 +#: src/job.c:2238 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdin" msgstr "" "plus d'identificateur de fichier disponible : impossible de dupliquer stdin\n" -#: src/job.c:2207 +#: src/job.c:2250 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdout" msgstr "" "plus d'identificateur de fichier disponible : impossible de dupliquer " "stdout\n" -#: src/job.c:2221 +#: src/job.c:2264 #, fuzzy, c-format msgid "no more file handles: could not duplicate stderr" msgstr "" "plus d'identificateurs de fichier disponible : impossible de dupliquer " "stderr\n" -#: src/job.c:2236 +#: src/job.c:2279 #, fuzzy, c-format msgid "Could not restore stdin" msgstr "Impossible de restaurer stdin\n" -#: src/job.c:2244 +#: src/job.c:2287 #, fuzzy, c-format msgid "Could not restore stdout" msgstr "Impossible de restaurer stdout\n" -#: src/job.c:2252 +#: src/job.c:2295 #, fuzzy, c-format msgid "Could not restore stderr" msgstr "Impossible de restaurer stderr\n" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" "make a récolté le processus fils pid %s, toujours en attente du pid %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe : l'espace d'environnement est peut-être épuisé" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL a été modifié (de « %s » à « %s »)\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Création d'un fichier de commande temporaire %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -940,7 +955,7 @@ msgstr "" "Contenu du fichier de commande :\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -949,7 +964,7 @@ msgstr "" "Contenu du fichier Batch :%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -996,20 +1011,20 @@ msgid "The 'load' operation is not supported on this platform" msgstr "" "Les opérations « load » ne sont pas prises en charge sur cette plateforme." -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Options :\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignoré pour compatibilité.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" " -B, --always-make Fabriquer toutes les cibles sans condition.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -1018,19 +1033,19 @@ msgstr "" " Se placer dans le RÉPERTOIRE avant toute " "action.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Afficher beaucoup d'informations de débogage.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=FLAGS] Afficher divers types d'informations de " "débogage.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1039,14 +1054,14 @@ msgstr "" " Les variables d'environment sont prioritaires " "sur les makefiles.\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E STRING, --eval=STRING Évaluer la chaîne STRING comme une instruction " "de makefile.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1054,16 +1069,16 @@ msgstr "" " -f FICHIER, --file=FICHIER, --makefile=FICHIER\n" " Lire le FICHIER comme un makefile.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Afficher ce message et quitter.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" " -i, --ignore-errors Ignorer les erreurs venant des recettes.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1072,7 +1087,7 @@ msgstr "" " Chercher dans le RÉPERTOIRE les makefiles " "traités par inclusion.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1080,18 +1095,18 @@ msgstr "" " -j [N], --jobs[=N] Autoriser N tâches simultanées ; nombre infini " "si utilisé sans argument.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Poursuivre même si certaines cibles n'ont pas " "pu être fabriquées.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1101,7 +1116,7 @@ msgstr "" " Ne pas lancer de tâches multiples à moins que " "la charge soit inférieure à N.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1109,7 +1124,7 @@ msgstr "" " -L, --check-symlink-times Utiliser le « mtime » le plus récent entre les " "liens symboliques et la cible.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1119,7 +1134,7 @@ msgstr "" " N'exécuter aucune recette ; seulement les " "afficher.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1129,7 +1144,7 @@ msgstr "" " Considérer le FICHIER comme étant très ancien " "et ne pas le refabriquer.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1138,12 +1153,12 @@ msgstr "" " Synchronise la sortie des tâches parallèles " "par TYPE.\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base Afficher la base de données interne de make.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1151,34 +1166,34 @@ msgstr "" " -q, --question Ne pas exécuter de recette ; le code de sortie " "indique si la cible est à jour.\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Désactiver les règles implicites internes.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Désactiver les réglages des variables " "internes.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" msgstr "" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Ne pas répéter les recettes.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Répéter les recette (désactive le mode --" "silent).\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1186,28 +1201,28 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Désactiver -k.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Assigner l'heure actuelle aux cibles au lieu " "de les refabriquer.\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Afficher les traces mémoire.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Afficher le numéro de version de make et " "quitter.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Afficher le répertoire courant.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1215,7 +1230,7 @@ msgstr "" " --no-print-directory Désactiver l'option -w, même si elle a été " "activée implicitement.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1224,7 +1239,7 @@ msgstr "" " Considérer le FICHIER comme étant toujours " "nouveau.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1232,32 +1247,32 @@ msgstr "" " --warn-undefined-variables Prévenir lorsqu'une variable non définie est " "référencée.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "erreur d'écriture : stdout" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "une chaîne vide n'est pas un nom de fichier valable" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "niveau de débogage inconnu « %s »" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "type de output-sync « %s » inconnu" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Utilisation : %s [options] [cible] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1266,7 +1281,7 @@ msgstr "" "\n" "Ce programme est construit pour %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1275,18 +1290,18 @@ msgstr "" "\n" "Ce programme est construit pour %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "Signaler les anomalies à .\n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" "%s: interception de l'interruption/exception (code = 0x%lx, addr = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1301,32 +1316,32 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Violation d'accès : opération d'écriture à l'adresse 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Violation d'accès : opération de lecture à l'adresse 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() définit default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "La recherche de chemin de find_and_set_shell() a définit default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (fichier temporaire) : " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1334,156 +1349,161 @@ msgstr "" "avertissement : jobserver n'est pas disponible : utilisation de -j1. Ajouter " "« + » à la règle parent du make." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "avertissement : -j%d forcé dans un submake : réinitialisation du mode " "jobserver." -#: src/main.c:1930 +#: src/main.c:1946 #, fuzzy, c-format msgid "Makefile from standard input specified twice" msgstr "Makefile depuis l'entrée standard spécifié deux fois." -#: src/main.c:1940 +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Impossible de créer un fichier temporaire\n" + +#: src/main.c:1959 #, fuzzy, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite (fichier temporaire)" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "avertissement : -j%d forcé dans un makefile : réinitialisation du mode " "jobserver." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "" "Les tâches en parallèle (-j) ne sont pas prises en charge sur cette " "plateforme." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "On revient en mode monotâche (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "" -#: src/main.c:2250 +#: src/main.c:2262 #, fuzzy, c-format msgid "Using output-sync mutex %s\n" msgstr "type de output-sync « %s » inconnu" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" "Les liens symboliques ne sont pas pris en charge : désactivation de -L." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Mise à jour des makefiles....\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Le makefile « %s » pourrait boucler ; on ne recommence pas.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s : %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s : echec du chargement" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Échec de refabrication du makefile « %s »." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Le makefile inclus « %s » est introuvable." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Le makefile « %s » est introuvable" -#: src/main.c:2700 +#: src/main.c:2717 #, fuzzy, c-format msgid "Couldn't change back to original directory" msgstr "Impossible de revenir dans le répertoire d'origine." -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Réexécution[%u] :" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL contient plus d'une cible" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Pas de cible" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Pas de cible spécifiée et aucun makefile n'a été trouvé" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Mise à jour des objectifs cibles....\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "avertissement : décalage d'horloge détecté. La construction peut être " "incomplète." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "l'option « %s%s » a besoin d'une chaîne non vide comme argument" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "l'option « -%c » prend en argument un entier positif" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sConstruit pour %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sConstruit pour %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, fuzzy, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later \n" "Language-Team: Irish \n" @@ -131,7 +131,7 @@ msgstr " (insuite):" msgid " (from '%s', line %lu):\n" msgstr " (ó '%s', líne %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -139,62 +139,62 @@ msgstr "" "\n" "# Comhadlanna\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: níorbh fhéidir é a stat.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (eochair %s, mtime %I64u): níorbh fhéidir é a oscailt.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (gléas %d, i-nód [%d,%d,%d]): níorbh fhéidir é a oscailt.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (gléas %ld, i-nód %ld): níorbh fhéidir é a oscailt.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (eochair %s, mtime %I64u): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (gléas %d, i-nód [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (gléas %ld, i-nód %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Níl" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " comhad, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "níl" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " rudaí neamhfhéideartha" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " go dtí seo." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " rudaí neamhfhéideartha i %lu comhadlann.\n" @@ -214,178 +214,178 @@ msgstr "Déanann an athróg athchúrsach '%s' tagairt di féin (ar deireadh)" msgid "unterminated variable reference" msgstr "tagairt d'athróg gan chríochnú" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Sonraíodh oideas le haghaidh comhaid '%s' ag %s:%lu," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Aimsíodh oideas le haghaidh '%s' trí chuardach ar rialacha intuigthe," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "ach anois is ionann iad na comhaid '%s' agus '%s'." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" "Déanfar neamhshuim ar an oideas le haghaidh '%s'; úsáidfear an ceann le " "haghaidh '%s' ina ionad." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "ní féidir idirstad aonair '%s' a athainmnigh le hidirstad dúbailte '%s'" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "ní féidir idirstad dúbailte '%s' a athainmniú le hidirstad aonair '%s'" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Comhad idirmheánach '%s' á scriosadh" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Comhaid idirmheánacha á mbaint...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr "" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "An t-am anois" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Stampa ama as raon; %s á úsáid ina ionad" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Ní sprioc é:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Comhad luachmhar (réamhriachtanas de .PRECIOUS)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Sprioc bhréige (réamhriachtanas de .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Sprioc líne na n-orduithe." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Makefile réamhshocraithe, nó ó MAKEFILES, nó -include/sinclude." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Riail insuite" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Rinneadh cuardach ar rialacha intuigthe." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Ní dhearnadh cuardach ar rialacha intuigthe." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Stoc patrúin intuigthe/statach: '%s'\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Tá an comhad ina réamhriachtanas idirmheánach." -#: src/file.c:1111 +#: src/file.c:1108 #, fuzzy msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Comhad luachmhar (réamhriachtanas de .PRECIOUS)." -#: src/file.c:1113 +#: src/file.c:1110 #, fuzzy msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Sprioc bhréige (réamhriachtanas de .PHONY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Déanann sé freisin:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Níor seiceáladh an t-am mionathraithe riamh." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Níl a leithéid de chomhad ann." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Tá an comhad an-aosta." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Athraithe %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Nuashonraíodh an comhad." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Níor nuashonraíodh an comhad." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Oideas á rith faoi láthair (IS FABHT É SEO)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Oideas spleáchais á rith (IS FABHT É SEO)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# D'éirigh leis an nuashonrú." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Tá gá le nuashonrú (-q sainithe)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Theip ar an nuashonrú." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Luach neamhbhailí sa bhall 'command_state'!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -393,7 +393,7 @@ msgstr "" "\n" "# Comhaid" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -403,7 +403,7 @@ msgstr "" "# comhaid hais-tábla stait:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Níl réimse '%s' i dtaisce: %s" @@ -473,132 +473,137 @@ msgstr "windows32_openpipe(): theip ar process_init_fd()\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Baisc-chomhad sealadach %s á ghlanadh\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "comhad: ainm comhaid ar iarraidh" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "oscailt: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "scríobh: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "dúnadh: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "comhad: an iomarca argóintí" -#: src/function.c:2397 +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "comhad: oibríocht neamhbhailí ar chomhad: %s" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "léamh: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "comhad: oibríocht neamhbhailí ar chomhad: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, fuzzy, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "easpa argóintí (%d) ar fheidhm '%s'" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "níl feidhm '%s' ar fáil ar an chóras seo" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "glao ar fheidhm '%s' gan chríochnú: '%c' ar iarraidh" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Tá ainm na feidhme folamh" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Tá ainm na feidhme neamhbhailí: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Tá ainm na feidhme rófhada: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Íosmhéid argóintí neamhbhailí (%u) d'fheidhm %s" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Uasmhéid argóintí neamhbhailí (%u) d'fheidhm %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: Tá an rogha '%s' débhríoch\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha '--%s'\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha '%c%s'\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: tá argóint de dhíth i ndiaidh na rogha '%s'\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: rogha anaithnid '--%s'\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: rogha anaithnid '%c%s'\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: rogha neamhcheadaithe -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: rogha neamhbhailí -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: tá argóint de dhíth i ndiaidh na rogha -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: Tá an rogha '-W %s' débhríoch\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha '-W %s'\n" @@ -648,179 +653,179 @@ msgstr "Ag lorg riail intuigthe le haghaidh bhall cartlainne '%s'.\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "Ag lorg riail intuigthe le haghaidh bhall cartlainne '%s'.\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, fuzzy, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Athchúrsáil de bharr rialacha intuigthe á seachaint.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:501 +#: src/implicit.c:503 #, fuzzy, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Ag baint triail as riail phatrúin le stoc '%.*s'.\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, fuzzy, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Stoc rófhada: '%.*s'.\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Réamhriachtanas neamhfhéideartha rialach '%s' á dhiúltú.\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Réamhriachtanas intuigthe neamhfhéideartha '%s' á dhiúltú.\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Ag baint triail as réamhriachtanas rialach '%s'.\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Ag baint triail as réamhriachtanas intuigthe '%s'.\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, fuzzy, c-format msgid "'%s' ought to exist.\n" msgstr "Níl comhad '%s' ann.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "" -#: src/implicit.c:842 +#: src/implicit.c:844 #, fuzzy, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "%s: nuashonrú sprioc '%s' mar gheall ar: %s" -#: src/implicit.c:856 +#: src/implicit.c:858 #, fuzzy, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "Níl réamhriachtanas '%s' den sprioc '%s' ann.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, fuzzy, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Aimsíodh réamhriachtanas '%s' mar VPATH '%s'\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, fuzzy, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Ag lorg riail le comhad idirmheánach '%s'.\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Ag lorg riail le comhad idirmheánach '%s'.\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Réamhriachtanas neamhfhéideartha rialach '%s' á dhiúltú.\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, fuzzy, c-format msgid "Not found '%s'.\n" msgstr "Níor aimsíodh aon riail intuigthe le haghaidh '%s'.\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, fuzzy, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Aimsíodh riail intuigthe le haghaidh '%s'.\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, fuzzy, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Ag lorg riail intuigthe le haghaidh '%s'.\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Níor aimsíodh aon riail intuigthe le haghaidh '%s'.\n" -#: src/job.c:380 +#: src/job.c:377 #, fuzzy msgid "Cannot create a temporary file" msgstr "Ní féidir comhad sealadach a chruthú\n" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (córdhumpa)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (rinneadh neamhshuim air)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:587 +#: src/job.c:584 #, fuzzy, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Earráid %d%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Ag fanacht le jabanna neamhchríochnaithe..." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Mac beo %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (i gcéin)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Mac a bhuaigh á bhaint: %p PID %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Mac a chaill á bhaint: %p PID %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Baisc-chomhad sealadach %s á ghlanadh\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Níorbh fhéidir baisc-chomhad sealadach %s a ghlanadh (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Mac %p PID %s%s á bhaint ón slabhra.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Saoradh ceadchomhartha le haghaidh mac %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "theip ar process_easy(); níor tosaíodh próiseas (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -829,86 +834,96 @@ msgstr "" "\n" "%d argóint sa tosú teipthe\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Mac %p (%s) PID %s%s á chur ar an slabhra.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Fuarthas ceadchomhartha le haghaidh mac %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: nuashonrú sprioc '%s' mar gheall ar: %s" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: nuashonrú sprioc '%s' mar gheall ar: %s" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: nuashonrú sprioc '%s' mar gheall ar: %s" -#: src/job.c:1910 -#, fuzzy -msgid "target does not exist" -msgstr "%s: níl sprioc '%s' ann" +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: nuashonrú sprioc '%s' mar gheall ar: %s" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "ní féidir srianta lóid a chur i bhfeidhm ar an chóras oibriúcháin seo" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "ní féidir srian lóid a chur i bhfeidhm: " -#: src/job.c:2195 +#: src/job.c:2238 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdin" msgstr "níl aon hanla comhaid le fáil: níorbh fhéidir stdin a chóipeáil\n" -#: src/job.c:2207 +#: src/job.c:2250 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdout" msgstr "níl aon hanla comhaid le fáil: níorbh fhéidir stdout a chóipeáil\n" -#: src/job.c:2221 +#: src/job.c:2264 #, fuzzy, c-format msgid "no more file handles: could not duplicate stderr" msgstr "níl aon hanla comhaid le fáil: níorbh fhéidir stderr a chóipeáil\n" -#: src/job.c:2236 +#: src/job.c:2279 #, fuzzy, c-format msgid "Could not restore stdin" msgstr "Níorbh fhéidir stdin a athchóiriú\n" -#: src/job.c:2244 +#: src/job.c:2287 #, fuzzy, c-format msgid "Could not restore stdout" msgstr "Níorbh fhéidir stdout a athchóiriú\n" -#: src/job.c:2252 +#: src/job.c:2295 #, fuzzy, c-format msgid "Could not restore stderr" msgstr "Níorbh fhéidir stderr a athchóiriú\n" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "bhain make mac le PID %s, ag feitheamh le PID %s fós\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: seans nach bhfuil aon spás fágtha sa timpeallacht" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "Athraíodh $SHELL (ba '%s' é, ach is '%s' é anois)\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Baisc-chomhad sealadach %s á chruthú\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -917,7 +932,7 @@ msgstr "" "Inneachar an bhaisc-chomhaid:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -926,7 +941,7 @@ msgstr "" "Inneachar an bhaisc-chomhaid:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -972,19 +987,19 @@ msgstr "" msgid "The 'load' operation is not supported on this platform" msgstr "Níl an oibríocht 'load' ar fáil ar an gcóras seo." -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Roghanna:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Déan neamhshuim (comhoiriúnacht)\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Déan gach sprioc, gan choinníollacha.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -992,18 +1007,18 @@ msgstr "" " -C COMHADLANN, --directory=COMHADLANN\n" " Téigh go COMHADLANN roimh dhéanamh aon rud.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d Taispeáin go leor eolas dífhabhtaithe.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=BRATACHA] Taispeáin eolas fabhtaithe de chineálacha " "éagsúla.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1011,14 +1026,14 @@ msgstr "" " -e, --environment-overrides\n" " Sáraíonn athróga timpeallachta makefileanna.\n" -#: src/main.c:332 +#: src/main.c:335 #, fuzzy msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " --eval=TEAGHRÁN Luacháil TEAGHRÁN mar ráiteas makefile.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1026,15 +1041,15 @@ msgstr "" " -f COMHAD, --file=COMHAD, --makefile=COMHAD\n" " Léigh COMHAD mar makefile.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Taispeáin an chabhair seo agus scoir.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Déan neamhshuim ar earráidí ó oidis.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1043,7 +1058,7 @@ msgstr "" " Cuardaigh i gCOMHADLANN ar makefileanna " "breise.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1051,18 +1066,18 @@ msgstr "" " -j [N], --jobs[=N] Ceadaigh N jab le chéile; éigríoch mura " "gceaptar arg.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Lean ar aghaidh fiú nach féidir sprioc a " "dhéanamh.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1072,7 +1087,7 @@ msgstr "" " Ná tosaigh jabanna iomadúla mura bhfuil an lód " "níos lú ná N.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1081,7 +1096,7 @@ msgstr "" "nasc\n" " siombalach nó ar an sprioc.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1091,7 +1106,7 @@ msgstr "" " Ná rith aon oideas; taispeáin na orduithe " "amháin.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1101,7 +1116,7 @@ msgstr "" " Caith le COMHAD mar cheann cianaosta; ná " "hathdhéan é.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1110,12 +1125,12 @@ msgstr "" " Sioncronaigh aschur ó jabanna comhthreomhara " "de réir CINEÁL.\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base Taispeáin an bunachar sonraí inmheánach.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1123,33 +1138,33 @@ msgstr "" " -q, --question Ná rith aon oideas; stádas scortha = 0 má tá " "sé cothrom le dáta.\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Díchumasaigh na rialacha intuigthe insuite.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " -R, --no-builtin-variables Díchumasaigh na hathróga insuite.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" msgstr "" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Ná déan macalla ar orduithe.\n" -#: src/main.c:377 +#: src/main.c:380 #, fuzzy msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " -q, --question Ná rith aon oideas; stádas scortha = 0 má tá " "sé cothrom le dáta.\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1157,27 +1172,27 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Múch -k.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Teagmhaigh spriocanna in ionad iad a " "athdhéanamh.\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Taispeáin faisnéis dífhabhtaithe.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Taispeáin eolas faoin leagan agus scoir.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Taispeáin an chomhadlann reatha.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1185,7 +1200,7 @@ msgstr "" " --no-print-directory Múch -w, fiú má tá sé i bhfeidhm go " "hintuigthe.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1194,7 +1209,7 @@ msgstr "" " Caith le COMHAD mar cheann úrnua (go " "héigríoch).\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1202,32 +1217,32 @@ msgstr "" " --warn-undefined-variables Tabhair rabhadh má dhéantar tagairt d'athróg " "gan sainmhíniú.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "earráid scríofa: stdout" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "ní féidir teaghrán folamh a úsáid mar ainm comhaid" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "leibhéal dífhabhtaithe anaithnid '%s'" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "cineál anaithnid '%s' le haghaidh output-sync" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Úsáid: %s [roghanna] [sprioc] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1236,7 +1251,7 @@ msgstr "" "\n" "Tógadh an clár seo le haghaidh %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1245,17 +1260,17 @@ msgstr "" "\n" "Tógadh an clár seo le haghaidh %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "Seol tuairiscí fabhtanna chuig \n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Fuarthas idirbhriseadh/eisceacht (cód = 0x%lx, seoladh = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1270,31 +1285,31 @@ msgstr "" "BratachaEisceachta = %lx\n" "SeoladhEisceachta = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Sárú cearta rochtana: oibríocht scríofa ag seoladh 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Sárú cearta rochtana: oibríocht léimh ag seoladh 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "tá find_and_set_shell() ag socrú default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "shocraigh find_and_set_shell() conair chuardaigh default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (comhad sealadach): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1302,147 +1317,152 @@ msgstr "" "rabhadh: níl an jabfhreastalaí ar fáil: ag úsáid -j1. Cuir '+' leis an " "máthair-riail." -#: src/main.c:1841 +#: src/main.c:1857 #, fuzzy, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "rabhadh: -jN fórsáilte i bhfo-make: mód jabfhreastalaí á dhíchumasú." -#: src/main.c:1930 +#: src/main.c:1946 #, fuzzy, c-format msgid "Makefile from standard input specified twice" msgstr "Sonraíodh Makefile ón ionchur caighdeánach faoi dhó." -#: src/main.c:1940 +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Ní féidir comhad sealadach a chruthú\n" + +#: src/main.c:1959 #, fuzzy, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite (comhad sealadach)" -#: src/main.c:2095 +#: src/main.c:2107 #, fuzzy, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "rabhadh: -jN fórsáilte i bhfo-make: mód jabfhreastalaí á dhíchumasú." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Níl jabanna parailéalacha (-j) ar fáil ar an gcóras seo." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Á athshocrú le haghaidh jabanna aonair (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "" -#: src/main.c:2250 +#: src/main.c:2262 #, fuzzy, c-format msgid "Using output-sync mutex %s\n" msgstr "cineál anaithnid '%s' le haghaidh output-sync" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "ní thacaítear le naisc shiombalacha: -L á dhíchumasú." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Makefileanna á nuashonrú....\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Seans go lúbfar an Makefile '%s'; ní athdhéanfar é.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: theip ar lódáil" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Níorbh fhéidir makefile '%s' a athdhéanamh." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Níor aimsíodh makefile '%s' atá san áireamh." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Níor aimsíodh makefile '%s'" -#: src/main.c:2700 +#: src/main.c:2717 #, fuzzy, c-format msgid "Couldn't change back to original directory" msgstr "Níorbh fhéidir filleadh ar an gcomhadlann roimhe seo." -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Á rith arís[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "tá níos mó ná aon sprioc amháin i .DEFAULT_GOAL" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Níl aon sprioc ann" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Níor sonraíodh aon sprioc agus níor aimsíodh aon makefile" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Cinn sprice á nuashonrú....\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "rabhadh: Clog ar sceabha. Seans nár chríochnaigh an tógáil." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "caithfidh tú teaghrán neamhfholamh a thabhairt mar argóint le '%s%s'" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "caithfidh tú slánuimhir dheimhneach a thabhairt mar argóint le '-%c'" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sTógadh an clár seo le haghaidh %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sTógadh an clár seo le haghaidh %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, fuzzy, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later \n" "Language-Team: Galician \n" @@ -137,7 +137,7 @@ msgstr " (incorporadas):" msgid " (from '%s', line %lu):\n" msgstr " (desde «%s», liña %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -145,62 +145,62 @@ msgstr "" "\n" "# Directorios\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: non foi posíbel facer a operación de stat.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (clave %s, mtime %d): non foi posíbel abrir.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (dispositivo %d, inodo [%d,%d,%d]): non foi posíbel abrir.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (dispositivo %ld, inodo %ld): non foi posíbel abrir.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (clave %s, mtime %d): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (dispositivo %d, inodo [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (dispositivo %ld, inodo %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Non" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " ficheiros, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "non" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " imposíbeis" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " ata aquí." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " imposíbeis en %lu directorios.\n" @@ -220,179 +220,179 @@ msgstr "A variábel recursiva «%s» fai referencia a si mesma (ao final)" msgid "unterminated variable reference" msgstr "referencia a variábel non rematada" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "" -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" -#: src/file.c:281 +#: src/file.c:278 #, fuzzy, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "pero agora considérase que «%s» é o mesmo ficheiro que «%s»." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" -#: src/file.c:304 +#: src/file.c:301 #, fuzzy, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "non é posíbel renomear «%s» con dous puntos a «%s» con catro puntos" -#: src/file.c:310 +#: src/file.c:307 #, fuzzy, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "non é posíbel renomear «%s» con catro puntos a «%s» con dous puntos" -#: src/file.c:407 +#: src/file.c:404 #, fuzzy, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Eliminando o ficheiro intermedio «%s»" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Retirando os ficheiros intermedios...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr "" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Hora actual" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Marca de tempo fóra de rango; substituíndo %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Non é un obxectivo:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Ficheiro precioso (prerrequisito de .PRECIOUS)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Obxectivo falso (prerrequisito de .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Obxectivo da liña de ordes." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Un ficheiro de make por defecto, MAKEFILES, ou -include/sinclude." -#: src/file.c:1102 +#: src/file.c:1099 #, fuzzy msgid "# Builtin rule" msgstr "" "\n" "# Non hai regras implícitas." -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Fíxose a busca de regras implícitas." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Non se fixo a busca de regras implícitas." -#: src/file.c:1107 +#: src/file.c:1104 #, fuzzy, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Raíz do patrón implícito/estático: «%s»\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# O ficheiro é un prerrequisito intermedio." -#: src/file.c:1111 +#: src/file.c:1108 #, fuzzy msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Ficheiro precioso (prerrequisito de .PRECIOUS)." -#: src/file.c:1113 +#: src/file.c:1110 #, fuzzy msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Obxectivo falso (prerrequisito de .PHONY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Tamén se fai:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Nunca se comprobou o tempo de modificación." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# O ficheiro non existe." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# O ficheiro é moi antigo." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Última modificación: %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# O ficheiro foi actualizado." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# O ficheiro non foi actualizado." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "" -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "" -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Actualizado con éxito." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Ten que ser actualizado (-q está definido)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Produciuse un erro ao actualizar." -#: src/file.c:1163 +#: src/file.c:1160 #, fuzzy msgid "# Invalid value in 'command_state' member!" msgstr "# Valor non válido no membro «command_state»!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -400,7 +400,7 @@ msgstr "" "\n" "# Ficheiros" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -410,7 +410,7 @@ msgstr "" "# estatísticas da táboa hash de ficheiros:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "" @@ -481,132 +481,137 @@ msgstr "windows32_openpipe(): a chamada a process_init_fd() fallou\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Limpando o ficheiro de lotes temporal %s\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, fuzzy, c-format msgid "open: %s: %s" msgstr "%s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, fuzzy, c-format msgid "write: %s: %s" msgstr "erro de escritura: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, fuzzy, c-format msgid "close: %s: %s" msgstr "%s%s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "" + +#: src/function.c:2422 #, fuzzy, c-format msgid "read: %s: %s" msgstr "%s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, fuzzy, c-format msgid "file: invalid file operation: %s" msgstr "%s: opción incorrecta -- %c\n" -#: src/function.c:2527 +#: src/function.c:2552 #, fuzzy, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "número de argumentos insuficiente (%d) na chamada á función «%s»" -#: src/function.c:2539 +#: src/function.c:2564 #, fuzzy, c-format msgid "unimplemented on this platform: function '%s'" msgstr "non implementada nesta plataforma: función «%s»" -#: src/function.c:2608 +#: src/function.c:2633 #, fuzzy, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "chamada á función «%s» non rematada: falta «%c»" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "" -#: src/function.c:2798 +#: src/function.c:2823 #, fuzzy, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "número de argumentos insuficiente (%d) na chamada á función «%s»" -#: src/function.c:2801 +#: src/function.c:2826 #, fuzzy, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "número de argumentos insuficiente (%d) na chamada á función «%s»" -#: src/getopt.c:659 +#: src/getopt.c:663 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: a opción «%s» é ambigua\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: a opción «--%s» non permite ningún argumento\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: a opción «%c%s» non permite ningún argumento\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, fuzzy, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: a opción «%s» require un argumento\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: opción «--%s» non recoñecida\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: opción «%c%s» non recoñecida\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: opción inaceptábel -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: opción incorrecta -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: a opción require un argumento -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: a opción «-W %s» é ambigua\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: a opción «-W %s» non permite ningún argumento\n" @@ -656,180 +661,180 @@ msgstr "Buscando unha regra implícita membro do arquivo para «%s».\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "Buscando unha regra implícita membro do arquivo para «%s».\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, fuzzy, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Evitando a recursión de regras implícitas.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:501 +#: src/implicit.c:503 #, fuzzy, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Probando a regra de patrón con raíz «%.*s».\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "" -#: src/implicit.c:768 +#: src/implicit.c:770 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Rexeitando o prerrequisito imposíbel «%s».\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Rexeitando o prerrequisito implícito imposíbel «%s».\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, fuzzy, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Probando o prerrequisito «%s».\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, fuzzy, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Probando o prerrequisito implícito «%s».\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, fuzzy, c-format msgid "'%s' ought to exist.\n" msgstr "O ficheiro «%s» non existe.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "" -#: src/implicit.c:856 +#: src/implicit.c:858 #, fuzzy, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "O prerrequisito «%s» do obxectivo «%s» non existe.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, fuzzy, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Atopouse a o prerrequisito «%s» como VPATH «%s»\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, fuzzy, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Buscando unha regra co ficheiro intermedio «%s».\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, fuzzy, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Buscando unha regra co ficheiro intermedio «%s».\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Rexeitando o prerrequisito imposíbel «%s».\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, fuzzy, c-format msgid "Not found '%s'.\n" msgstr "Non se atopou unha regra implícita para «%s».\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, fuzzy, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Atopouse unha regra implícita de «%s».\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, fuzzy, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Buscando unha regra implícita para «%s».\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, fuzzy, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Non se atopou unha regra implícita para «%s».\n" -#: src/job.c:380 +#: src/job.c:377 #, fuzzy msgid "Cannot create a temporary file" msgstr "Non foi posíbel crear un ficheiro temporal\n" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (memoria envorcada)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (ignorado)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 #, fuzzy msgid "" msgstr " (incorporadas):" -#: src/job.c:587 +#: src/job.c:584 #, fuzzy, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "*** [%s] Erro %d" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Agardando por traballos non rematados...." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Proceso fillo vivo %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (remoto)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Colleitando o proceso fillo gañador %p PID %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Colleitando o proceso fillo perdedor %p PID %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Limpando o ficheiro de lotes temporal %s\n" -#: src/job.c:972 +#: src/job.c:969 #, fuzzy, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Limpando o ficheiro de lotes temporal %s\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Retirando o proceso fillo %p PID %s%s da cadea.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Liberouse un elemento para o proceso fillo %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "produciuse un erro ao iniciar process_easy() o proceso (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -838,101 +843,111 @@ msgstr "" "\n" "Contáronse %d argumentos no inicio que fallou\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Poñendo o proceso fillo %p (%s) PID %s%s na cadea.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Obtívose un elemento para o proceso fillo %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "O prerrequisito «%s» do obxectivo «%s» non existe.\n" + +#: src/job.c:1923 src/job.c:1951 #, fuzzy, c-format msgid "%s: update target '%s' due to: %s" msgstr "%sNon hai unha regra para facer o obxectivo «%s», que precisa «%s»%s" -#: src/job.c:1910 -#, fuzzy -msgid "target does not exist" -msgstr "# O ficheiro non existe." +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "non é posíbel impoñer límites de carga neste sistema operativo" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "non é posíbel impoñer un límite de carga: " -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "" -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "" -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" "make colleitou un proceso fillo de pid %s, aínda se agarda polo pid %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "" -#: src/job.c:2869 +#: src/job.c:2920 #, fuzzy, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "O valor de $SHELL cambiou (antes era «%s», agora é «%s»)\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Creando un ficheiro por lotes temporal %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -979,20 +994,20 @@ msgstr "" msgid "The 'load' operation is not supported on this platform" msgstr "Non se admiten os traballos en paralelo (-j) nesta plataforma." -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Opcións:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignorado por compatibilidade.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" " -B, --always-make Facer todos os obxectivos incondicionalmente.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -1000,19 +1015,19 @@ msgstr "" " -C DIRECTORIO, --directory=DIRECTORIO\n" " Cambiar ao DIRECTORIO antes de facer nada.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Mostrar moita información de depuración.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=MODIFICADORES] Mostrar varios tipos de información de " "depuración.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1021,12 +1036,12 @@ msgstr "" " As variábei de ambiente substitúen aos " "makefiles.\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1034,15 +1049,15 @@ msgstr "" " -f FICHEIRO, --file=FICHEIRO, --makefile=FICHEIRO\n" " Ler o FICHEIRO como makefile.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Mostrar esta mensaxe e saír.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1051,7 +1066,7 @@ msgstr "" " Buscar os makefiles incluídos\n" " no DIRECTORIO.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1059,18 +1074,18 @@ msgstr "" " -j [N], --jobs[=N] Permitir N traballos á vez; infinitos sen\n" " un argumento.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Continuar cando no se poidan facer\n" " algúns obxectivos.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1080,13 +1095,13 @@ msgstr "" " Non iniciar varios traballos con carga\n" " superior a N.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" -#: src/main.c:355 +#: src/main.c:358 #, fuzzy msgid "" " -n, --just-print, --dry-run, --recon\n" @@ -1096,7 +1111,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " Non executar ningún comando; só amosalos.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1106,49 +1121,49 @@ msgstr "" " Tratar o FICHEIRO como moi antigo e non " "refacelo.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base Mostrar a base de datos interna de make.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Desactivar as regras implícitas incorporadas.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Desactivar os valores das variábeis " "incorporadas.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" msgstr "" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr "" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1156,28 +1171,28 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Desactiva -k.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Tocar os obxectivos no canto de os refacer.\n" -#: src/main.c:384 +#: src/main.c:387 #, fuzzy msgid " --trace Print tracing information.\n" msgstr "" " -d Mostrar moita información de depuración.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Mostrar o número de versión de make e saír.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Mostrar o directorio actual.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1185,7 +1200,7 @@ msgstr "" " --no-print-directory Desactivar -w, incluso se se activou\n" " implicitamente.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1194,7 +1209,7 @@ msgstr "" "new=FICHEIRO\n" " Tratar o FICHEIRO como infinitamente novo.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1202,32 +1217,32 @@ msgstr "" " --warn-undefined-variables Avisar cando se faga referencia a\n" " unha variábel non definida.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, fuzzy, c-format msgid "write error: stdout" msgstr "erro de escritura: %s" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "a cadea baleira non é válida como nome de ficheiro" -#: src/main.c:834 +#: src/main.c:842 #, fuzzy, c-format msgid "unknown debug level specification '%s'" msgstr "especificación de nivel de depuración descoñecido «%s»" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Uso: %s [opcións] [obxectivo] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1236,7 +1251,7 @@ msgstr "" "\n" "Este programa compilou para %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1245,20 +1260,20 @@ msgstr "" "\n" "Este programa compilou para %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "" "Envíe informes de fallo no programa a .\n" "Envíe informes de fallo na tradución a .\n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" "%s: Atrapouse unha Interrupción/Excepción (código = 0x%lx, enderezo = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1273,31 +1288,31 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Violación de acceso: operación de escritura no enderezo 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Violación de acceso: operación de lectura no enderezo 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() definindo default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "A busca de rutas de find_and_set_shell() define default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (ficheiro temporal)" -#: src/main.c:1833 +#: src/main.c:1849 #, fuzzy, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1305,151 +1320,156 @@ msgstr "" "aviso: o servidor de traballos non está dispoñíbel: usando -j1. Engada «+» á " "regra do make pai." -#: src/main.c:1841 +#: src/main.c:1857 #, fuzzy, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "aviso: -jN forzado no submake: desactivando o modo de servidor de traballos." -#: src/main.c:1930 +#: src/main.c:1946 #, fuzzy, c-format msgid "Makefile from standard input specified twice" msgstr "O ficheiro de make da entrada estándar especificouse dúas veces." -#: src/main.c:1940 +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Non foi posíbel crear un ficheiro temporal\n" + +#: src/main.c:1959 #, fuzzy, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite (ficheiro temporal)" -#: src/main.c:2095 +#: src/main.c:2107 #, fuzzy, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "aviso: -jN forzado no submake: desactivando o modo de servidor de traballos." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Non se admiten os traballos en paralelo (-j) nesta plataforma." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Reiniciando para entrar no modo de traballo único (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "" -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Actualizando os ficheiros de make....\n" -#: src/main.c:2397 +#: src/main.c:2414 #, fuzzy, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "O ficheiro de make «%s» podería causar un bucle; non se refai.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "" -#: src/main.c:2528 +#: src/main.c:2545 #, fuzzy, c-format msgid "Failed to remake makefile '%s'." msgstr "Produciuse un erro ao refacer o ficheiro de make «%s»." -#: src/main.c:2548 +#: src/main.c:2565 #, fuzzy, c-format msgid "Included makefile '%s' was not found." msgstr "Non se atopou o ficheiro de make incluído «%s»." -#: src/main.c:2552 +#: src/main.c:2569 #, fuzzy, c-format msgid "Makefile '%s' was not found" msgstr "Non se atopou o ficheiro de make «%s»" -#: src/main.c:2700 +#: src/main.c:2717 #, fuzzy, c-format msgid "Couldn't change back to original directory" msgstr "Non foi posíbel volver ao directorio orixinal." -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Re-executando[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Non hai obxectivos" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Non se especificaron obxectivos e non se atopou un ficheiro de make" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Actualizando os obxectivos meta....\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "aviso: Detectáronse inconsistencias de reloxo. A operación pode quedar " "incompleta." -#: src/main.c:3186 +#: src/main.c:3222 #, fuzzy, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "a opción «%s%s» require un argumento de cadea non baleira" -#: src/main.c:3267 +#: src/main.c:3315 #, fuzzy, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "a opción «-%c» require un argumento integral positivo" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sCompilado para %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sCompilado para %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, fuzzy, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later \n" "Language-Team: Hebrew \n" @@ -132,7 +132,7 @@ msgstr " (built-in):" msgid " (from '%s', line %lu):\n" msgstr " (from `%s', line %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -140,62 +140,62 @@ msgstr "" "\n" "# Directories\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: could not be stat'd.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (key %s, mtime %d): could not be opened.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (device %ld, inode %ld): could not be opened.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (key %s, mtime %d): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (device %d, inode [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (device %ld, inode %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "No" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " files, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "no" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " impossibilities" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " so far." -#: src/dir.c:1197 +#: src/dir.c:1198 #, fuzzy, c-format msgid " impossibilities in %lu directories.\n" msgstr " impossibilities in %u directories.\n" @@ -215,184 +215,184 @@ msgstr "( msgid "unterminated variable reference" msgstr "äëìäë úîééúñî äðéà äðúùîì äééðôä" -#: src/file.c:272 +#: src/file.c:269 #, fuzzy, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr ",`%s' õáå÷ øåáò úåãå÷ô åðúéð %s õáå÷á %lu äøåùá" -#: src/file.c:277 +#: src/file.c:274 #, fuzzy, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr ",íéùøåôî-éúìá íéììëá ùåôéç é\"ò åàöîð `%s' õáå÷ øåáò úåãå÷ô" -#: src/file.c:281 +#: src/file.c:278 #, fuzzy, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr ".õáå÷ åúåàì äúò íéáùçð `%s' ïäå `%s' ïä íìåàå" -#: src/file.c:284 +#: src/file.c:281 #, fuzzy, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr ".`%s' øåáò åìà ìò úåôéãò `%s' øåáò úåãå÷ô" -#: src/file.c:304 +#: src/file.c:301 #, fuzzy, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "`%s' íéããåá íééúåãå÷ðî `%s' íéìåôë íééúåãå÷ðì êåôäì ïúéð àì" -#: src/file.c:310 +#: src/file.c:307 #, fuzzy, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "`%s' íéìåôë íééúåãå÷ðî `%s' íéããåá íééúåãå÷ðì êåôäì ïúéð àì" -#: src/file.c:407 +#: src/file.c:404 #, fuzzy, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** `%s' íééðéá õáå÷ ÷çåî ***" -#: src/file.c:411 +#: src/file.c:408 #, fuzzy, c-format msgid "Removing intermediate files...\n" msgstr "*** `%s' íééðéá õáå÷ ÷çåî ***" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr "" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "úëøòî ïåòù" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "øúåîä íåçúì õåçî äðéäù ,%s ìù ïîæä úîéúç úà %s-á óéìçî" # See the comment above about translations of text printed under -p. -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Not a target:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Precious file (prerequisite of .PRECIOUS)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Phony target (prerequisite of .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 #, fuzzy msgid "# Command line target." msgstr "# Command-line target." -#: src/file.c:1100 +#: src/file.c:1097 #, fuzzy msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# A default or MAKEFILES makefile." -#: src/file.c:1102 +#: src/file.c:1099 #, fuzzy msgid "# Builtin rule" msgstr "" "\n" "# No implicit rules." -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Implicit rule search has been done." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Implicit rule search has not been done." -#: src/file.c:1107 +#: src/file.c:1104 #, fuzzy, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Implicit/static pattern stem: `%s'\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# File is an intermediate prerequisite." -#: src/file.c:1111 +#: src/file.c:1108 #, fuzzy msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Precious file (prerequisite of .PRECIOUS)." -#: src/file.c:1113 +#: src/file.c:1110 #, fuzzy msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Phony target (prerequisite of .PHONY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Also makes:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Modification time never checked." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# File does not exist." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# File is very old." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Last modified %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# File has been updated." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# File has not been updated." -#: src/file.c:1139 +#: src/file.c:1136 #, fuzzy msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Commands currently running (THIS IS A BUG)." -#: src/file.c:1142 +#: src/file.c:1139 #, fuzzy msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Dependencies commands running (THIS IS A BUG)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Successfully updated." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Needs to be updated (-q is set)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Failed to be updated." -#: src/file.c:1163 +#: src/file.c:1160 #, fuzzy msgid "# Invalid value in 'command_state' member!" msgstr "# Invalid value in `command_state' member!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -400,14 +400,14 @@ msgstr "" "\n" "# Files" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" "# " msgstr "" -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "" @@ -477,132 +477,137 @@ msgstr "windows32_openpipe (): process_init_fd() failed\n" msgid "Cleaning up temporary batch file %s\n" msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "" -#: src/function.c:2409 +#: src/function.c:2434 #, fuzzy, c-format msgid "file: invalid file operation: %s" msgstr "%s úéðëú øåáò éåâù ïééôàî -- %c\n" -#: src/function.c:2527 +#: src/function.c:2552 #, fuzzy, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "÷ôñî åðéàù (%d) íéèðîåâøà øôñî íò äàø÷ð `%s' äéö÷ðåô" -#: src/function.c:2539 +#: src/function.c:2564 #, fuzzy, c-format msgid "unimplemented on this platform: function '%s'" msgstr "åæ úëøòîá úùîåîî äðéà `%s' äéö÷ðåô" -#: src/function.c:2608 +#: src/function.c:2633 #, fuzzy, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "`%s' äéö÷ðåôì äàéø÷á `%c' øñç" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "" -#: src/function.c:2798 +#: src/function.c:2823 #, fuzzy, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "÷ôñî åðéàù (%d) íéèðîåâøà øôñî íò äàø÷ð `%s' äéö÷ðåô" -#: src/function.c:2801 +#: src/function.c:2826 #, fuzzy, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "÷ôñî åðéàù (%d) íéèðîåâøà øôñî íò äàø÷ð `%s' äéö÷ðåô" -#: src/getopt.c:659 +#: src/getopt.c:663 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `%s' ïééôàî\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `--%s' ïééôàî\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `%c%s' ïééôàî\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, fuzzy, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s úéðëú øåáò èðîåâøà áééçî `%s' ïééôàî\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s úéðëú øåáò `--%s' ääåæî-éúìá ïééôàî\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s úéðëú øåáò `%c%s' ääåæî-éúìá ïééôàî\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: é÷åç-éúìá ïééôàî -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s úéðëú øåáò éåâù ïééôàî -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: èðîåâøà áééçî ïééôàî -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `-W %s' ïééôàî\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `-W %s' ïééôàî\n" @@ -652,181 +657,181 @@ msgstr ".`%s' msgid "No archive-member implicit rule found for '%s'.\n" msgstr ".`%s' øåáò ïåéëøà éøáàì ùøåôî-éúìá ììë ùôçî\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, fuzzy, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr ".úùøåôî-éúìá äéñøå÷øî òðîð\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:501 +#: src/implicit.c:503 #, fuzzy, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr ".`%.*s' ùøåù íò úéðáú ììë äñðî\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "" -#: src/implicit.c:768 +#: src/implicit.c:770 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr ".úéøùôà-éúìá äðéäù íåùî `%s' íã÷ úùéøã äçåã\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr ".úéøùôà-éúìá äðéäù íåùî `%s' úùøåôî-éúìá íã÷ úùéøã äçåã\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, fuzzy, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr ".`%s' íã÷ úùéøã ììë äñðî\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, fuzzy, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr ".`%s' úùøåôî-éúìá íã÷ úùéøã äñðî\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, fuzzy, c-format msgid "'%s' ought to exist.\n" msgstr ".íéé÷ åðéà `%s' õáå÷\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "" -#: src/implicit.c:856 +#: src/implicit.c:858 #, fuzzy, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr ".íéé÷ åðéàù `%s' éàðúë úùøåã `%s' äøèî\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, fuzzy, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "`%s' íã÷ úùéøãë VPATH `%s' éúàöî\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, fuzzy, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr ".`%s' éðîæ õáå÷ íò ììë ùôçî\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, fuzzy, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr ".`%s' éðîæ õáå÷ íò ììë ùôçî\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr ".úéøùôà-éúìá äðéäù íåùî `%s' íã÷ úùéøã äçåã\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, fuzzy, c-format msgid "Not found '%s'.\n" msgstr ".`%s' øåáò íéùøåôî-éúìá íéììë åàöîð àì\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, fuzzy, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr ".`%s' øåáò ùøåôî-éúìá ììë éúàöî\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, fuzzy, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr ".`%s' øåáò ùøåôî-éúìá ììë ùôçî\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, fuzzy, c-format msgid "No implicit rule found for '%s'.\n" msgstr ".`%s' øåáò íéùøåôî-éúìá íéììë åàöîð àì\n" -#: src/job.c:380 +#: src/job.c:377 #, fuzzy msgid "Cannot create a temporary file" msgstr "fwrite (temporary file)" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (core õáå÷á íùøð ïåøëæä ïëåú)" -#: src/job.c:557 +#: src/job.c:554 #, fuzzy msgid " (ignored)" msgstr "[%s] %d äì÷úî éúîìòúä" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 #, fuzzy msgid "" msgstr " (built-in):" -#: src/job.c:587 +#: src/job.c:584 #, fuzzy, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "*** [%s] %d äì÷ú" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** ...åîééúñð íøèù úåãåáòì ïéúîî" -#: src/job.c:719 +#: src/job.c:716 #, fuzzy, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "äöø 0x%08lx (%s) PID=%ld %s úá-úéðëú\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr "(ú÷çåøî)" -#: src/job.c:914 +#: src/job.c:911 #, fuzzy, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "äçéìöäù 0x%08lx PID=%ld %s úá-úéðëú óñåà\n" -#: src/job.c:915 +#: src/job.c:912 #, fuzzy, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "äìùëðù 0x%08lx PID=%ld %s úá-úéðëú óñåà\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n" -#: src/job.c:972 +#: src/job.c:969 #, fuzzy, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n" -#: src/job.c:1083 +#: src/job.c:1080 #, fuzzy, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr ".úåãåáò úøùøùî 0x%08lx PID=%ld %s úá-úéðëú ÷éçøî\n" -#: src/job.c:1146 +#: src/job.c:1143 #, fuzzy, c-format msgid "Released token for child %p (%s).\n" msgstr ".øøçåù 0x%08lx (%s) úá-úéðëú øåáò ïåîéñàä\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, fuzzy, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "(e=%d) úéðëú-úú øåâéùá ìùëð process_easy()\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -835,100 +840,110 @@ msgstr "" "\n" "ìùëðù øåâéùá åðîð íéèðîåâøà %d\n" -#: src/job.c:1650 +#: src/job.c:1654 #, fuzzy, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr ".úåãåáò úøùøùì 0x%08lx (%s) PID=%ld %s úá-úéðëú óøöî\n" -#: src/job.c:1883 +#: src/job.c:1887 #, fuzzy, c-format msgid "Obtained token for child %p (%s).\n" msgstr ".0x%08lx (%s) úá-úéðëú øåáò ïåîéñà ìá÷úä\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr ".íéé÷ åðéàù `%s' éàðúë úùøåã `%s' äøèî\n" + +#: src/job.c:1923 src/job.c:1951 #, fuzzy, c-format msgid "%s: update target '%s' due to: %s" msgstr "%säúééðáì íéììë ïéà êà ,`%s' úùøåã `%s'%s äøèî" -#: src/job.c:1910 -#, fuzzy -msgid "target does not exist" -msgstr "# File does not exist." +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "åæ úëøòîá ñîåò úåìáâî úåôëì ïúéð àì" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "cannot enforce load limit: " -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "" -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "" -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "" -#: src/job.c:2530 +#: src/job.c:2573 #, fuzzy, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "äôñàð pid %d úá-úéðëú ,pid %d-ì äëçî ïééãò\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "" -#: src/job.c:2869 +#: src/job.c:2920 #, fuzzy, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "(`%s' äéä íãå÷ ,`%s' åéùëò) äðúùä $SHELL ìù åëøò" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "`%s' éðîæ batch õáå÷ øöåé\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -974,252 +989,252 @@ msgstr "" msgid "The 'load' operation is not supported on this platform" msgstr ".åæ úëøòîá êîúð åðéà (-j) éìéá÷î òåöéá" -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr " :íéðééôàî\n" -#: src/main.c:318 +#: src/main.c:321 #, fuzzy msgid " -b, -m Ignored for compatibility.\n" msgstr "úåîéàú ïòîì èîùåî" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr "" -#: src/main.c:325 +#: src/main.c:328 #, fuzzy msgid " -d Print lots of debugging information.\n" msgstr "úåàéâù éåôéð úáåèì òãéî ìù òôù âöä" -#: src/main.c:327 +#: src/main.c:330 #, fuzzy msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "úåàéâù éåôéð úáåèì òãéî ìù íéðåù íéâåñ âöä" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" msgstr "" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" msgstr "" -#: src/main.c:337 +#: src/main.c:340 #, fuzzy msgid " -h, --help Print this message and exit.\n" msgstr "úéðëúäî àöå äæ äøæò êñî âöä" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" msgstr "" -#: src/main.c:344 +#: src/main.c:347 #, fuzzy msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr "äìáâî ïéà èðîåâøà àìì ;úéðîæ-åá úåãåáò N-î øúåé àì" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" -#: src/main.c:348 +#: src/main.c:351 #, fuzzy msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "äéðáì úåðúéð ïðéà úåøèîäî äîë íà åìéôà êùîä" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " "N.\n" msgstr "" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " "them.\n" msgstr "" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " "it.\n" msgstr "" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:364 +#: src/main.c:367 #, fuzzy msgid " -p, --print-data-base Print make's internal database.\n" msgstr "Make ìù éîéðô íéðåúð ñéñá âöä" -#: src/main.c:366 +#: src/main.c:369 #, fuzzy msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "úðëãåòî äøèî íàá øîåà äàéöé ãå÷ ;úåãå÷ô õéøú ìà" -#: src/main.c:368 +#: src/main.c:371 #, fuzzy msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "íéùøåôî-éúìá íéðáåî íéììë ìøèð" -#: src/main.c:370 +#: src/main.c:373 #, fuzzy msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "íéðúùî ìù úåðáåî úåøãâä ìøèð" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" msgstr "" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr "" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" msgstr "" -#: src/main.c:382 +#: src/main.c:385 #, fuzzy msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "ïúåðáì íå÷îá úåøèî ìù ïîæ úîéúç ïëãò" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr "" -#: src/main.c:386 +#: src/main.c:389 #, fuzzy msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "úéðëúäî àöå Make ìù àñøéâ øôñî âöä" -#: src/main.c:388 +#: src/main.c:391 #, fuzzy msgid " -w, --print-directory Print the current directory.\n" msgstr "úéçëåð äé÷éú íù âöä" -#: src/main.c:390 +#: src/main.c:393 #, fuzzy msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr "ùøåôîá ïéåö àåä íà åìéôà -w ìèá" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" msgstr "" -#: src/main.c:395 +#: src/main.c:398 #, fuzzy msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "øãâåä àìù äðúùîì äééðôä äø÷îá äøäæà âöä" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "õáå÷ íùë úìá÷úî äðéà ä÷éø úæåøçî" -#: src/main.c:834 +#: src/main.c:842 #, fuzzy, c-format msgid "unknown debug level specification '%s'" msgstr "úåàéâù éåôéðì òãéî ìù `%s' øëåî-éúìá ïééôàî" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "%s [íéðééôàî] [äøèî] ... :ùåîéù ïôåà\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" "This program built for %s\n" msgstr "" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" "This program built for %s (%s)\n" msgstr "" -#: src/main.c:909 +#: src/main.c:917 #, fuzzy, c-format msgid "Report bugs to \n" msgstr "" "\n" ".-ì äì÷ú éçååéã çåìùì àð\n" -#: src/main.c:940 +#: src/main.c:948 #, fuzzy, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s úéðëúá (code = 0x%x, addr = 0x%x) äâéøç åà ä÷éñô\n" -#: src/main.c:947 +#: src/main.c:955 #, fuzzy, c-format msgid "" "\n" @@ -1234,178 +1249,183 @@ msgstr "" "ExceptionFlags = %x\n" "ExceptionAddress = %x\n" -#: src/main.c:955 +#: src/main.c:963 #, fuzzy, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "%x úáåúëì äáéúë :ïåøëæì äùéâ úì÷ú\n" -#: src/main.c:956 +#: src/main.c:964 #, fuzzy, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "%x úáåúëî äàéø÷ :ïåøëæì äùéâ úì÷ú\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, fuzzy, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell setting default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, fuzzy, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell path search set default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (temporary file): " -#: src/main.c:1833 +#: src/main.c:1849 #, fuzzy, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "" ".Make ìù áàä ììëì `+' óñåä .-j1-á ùåîéù äùòéé ;ïéîæ åðéà jobserver :äøäæà" -#: src/main.c:1841 +#: src/main.c:1857 #, fuzzy, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "jobserver ïôåà ìèáî ;-jN áééçî Make-úú :äøäæà" -#: src/main.c:1930 +#: src/main.c:1946 #, fuzzy, c-format msgid "Makefile from standard input specified twice" msgstr ".úçà íòôî øúåé ïúéð éð÷ú èì÷ õåøòî Makefile" -#: src/main.c:1940 +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "" + +#: src/main.c:1959 #, fuzzy, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite (temporary file)" -#: src/main.c:2095 +#: src/main.c:2107 #, fuzzy, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "jobserver ïôåà ìèáî ;-jN áééçî Make-úú :äøäæà" -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr ".åæ úëøòîá êîúð åðéà (-j) éìéá÷î òåöéá" -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr ".(-j1) éúøãñ ïôåàá åòöåáé úåãå÷ô" -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "" -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "...makefile éöá÷ ïëãòî\n" -#: src/main.c:2397 +#: src/main.c:2414 #, fuzzy, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr ".ùãçî åøöééìî òðîð ;úéôåñðéà äàìåì øåöéì ìåìò `%s' Makefile\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "" -#: src/main.c:2528 +#: src/main.c:2545 #, fuzzy, c-format msgid "Failed to remake makefile '%s'." msgstr ".`%s' makefile ìù ùãçî-äøéöéá äì÷ú" -#: src/main.c:2548 +#: src/main.c:2565 #, fuzzy, c-format msgid "Included makefile '%s' was not found." msgstr ".àöîð àì `%s' ììëåî makefile" -#: src/main.c:2552 +#: src/main.c:2569 #, fuzzy, c-format msgid "Makefile '%s' was not found" msgstr "àöîð àì `%s' Makefile" -#: src/main.c:2700 +#: src/main.c:2717 #, fuzzy, c-format msgid "Couldn't change back to original directory" msgstr ".úéøå÷îä äé÷éúì øåæçì ïúéð àì" -#: src/main.c:2708 +#: src/main.c:2725 #, fuzzy, c-format msgid "Re-executing[%u]:" msgstr "Re-executing:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "úåøèî ïéà" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "makefile éöá÷ åàöîð àìå úåøèî ïåéö ïéà" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "...ãòé úåøèî ïëãòî\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr ".äîìù àì úåéäì äìåìò äéðáä .ïåòù úùéìâ äúìâúð :úåøéäæ" -#: src/main.c:3186 +#: src/main.c:3222 #, fuzzy, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "éáåéçå íìù èðîåâøà áééçî `-%c' ïééôàî" -#: src/main.c:3267 +#: src/main.c:3315 #, fuzzy, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "éáåéçå íìù èðîåâøà áééçî `-%c' ïééôàî" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later %s) ãéúòá åðéä ïåøçà éåðéù ïîæ :äøäæà ***" -#: src/remake.c:1747 +#: src/remake.c:1751 #, fuzzy, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "úéðáú åðéà .LIBPATTERNS ìù `%s' èðîìà" @@ -2217,47 +2257,52 @@ msgid "" "# " msgstr "" -#: src/variable.c:1786 +#: src/variable.c:1850 +#, fuzzy, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "`%.*s' øãâåî-éúìá äðúùî :úåøéäæ" + +#: src/variable.c:1867 msgid "automatic" msgstr "automatic" # These are printed under -p, so they are left in English. -#: src/variable.c:1789 +#: src/variable.c:1870 msgid "default" msgstr "default" -#: src/variable.c:1792 +#: src/variable.c:1873 msgid "environment" msgstr "environment" -#: src/variable.c:1795 +#: src/variable.c:1876 msgid "makefile" msgstr "makefile" -#: src/variable.c:1798 +#: src/variable.c:1879 msgid "environment under -e" msgstr "environment under -e" -#: src/variable.c:1801 +#: src/variable.c:1882 msgid "command line" msgstr "command line" -#: src/variable.c:1804 +#: src/variable.c:1885 #, fuzzy msgid "'override' directive" msgstr "`override' directive" -#: src/variable.c:1814 +#: src/variable.c:1895 #, fuzzy, c-format msgid " (from '%s', line %lu)" msgstr " (from `%s', line %lu):\n" -#: src/variable.c:1877 +#: src/variable.c:1958 #, fuzzy msgid "# variable set hash-table stats:\n" msgstr "# %u variables in %u hash buckets.\n" -#: src/variable.c:1888 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2265,7 +2310,7 @@ msgstr "" "\n" "# Variables\n" -#: src/variable.c:1892 +#: src/variable.c:1973 #, fuzzy msgid "" "\n" @@ -2274,7 +2319,7 @@ msgstr "" "\n" "# Pattern-specific variable values" -#: src/variable.c:1906 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2282,7 +2327,7 @@ msgstr "" "\n" "# No pattern-specific variable values." -#: src/variable.c:1908 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2291,11 +2336,6 @@ msgstr "" "\n" "# %u pattern-specific variable values" -#: src/variable.h:237 -#, fuzzy, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "`%.*s' øãâåî-éúìá äðúùî :úåøéäæ" - #: src/vmsfunctions.c:91 #, fuzzy, c-format msgid "sys$search() failed with %d\n" @@ -2331,7 +2371,7 @@ msgstr "" msgid "Executing %s instead\n" msgstr "%s õéøî úàæ íå÷îá\n" -#: src/vpath.c:600 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2339,12 +2379,12 @@ msgstr "" "\n" "# VPATH Search Paths\n" -#: src/vpath.c:617 +#: src/vpath.c:599 #, fuzzy msgid "# No 'vpath' search paths." msgstr "# No `vpath' search paths." -#: src/vpath.c:619 +#: src/vpath.c:601 #, fuzzy, c-format msgid "" "\n" @@ -2353,7 +2393,7 @@ msgstr "" "\n" "# %u `vpath' search paths.\n" -#: src/vpath.c:622 +#: src/vpath.c:604 #, fuzzy msgid "" "\n" @@ -2362,7 +2402,7 @@ msgstr "" "\n" "# No general (`VPATH' variable) search path." -#: src/vpath.c:628 +#: src/vpath.c:610 #, fuzzy msgid "" "\n" @@ -2375,7 +2415,7 @@ msgstr "" #: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" +msgid "jobserver slots limited to %d\n" msgstr "" #: src/w32/w32os.c:240 @@ -2385,31 +2425,30 @@ msgstr "" #: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:262 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "" -#: src/w32/w32os.c:310 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:381 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "" -#: src/w32/w32os.c:449 +#: src/w32/w32os.c:451 #, c-format msgid "cannot parse output sync mutex %s: %s" msgstr "" -#: src/w32/w32os.c:452 +#: src/w32/w32os.c:454 #, c-format msgid "invalid output sync mutex: %s" msgstr "" @@ -2424,6 +2463,7 @@ msgstr "" #~ "\n" #~ "# No files." +#, c-format #~ msgid "" #~ "\n" #~ "# %u files in %u hash buckets.\n" @@ -2431,12 +2471,15 @@ msgstr "" #~ "\n" #~ "# %u files in %u hash buckets.\n" +#, c-format #~ msgid "# average %.3f files per bucket, max %u files in one bucket.\n" #~ msgstr "# average %.3f files per bucket, max %u files in one bucket.\n" +#, c-format #~ msgid "*** [%s] Error 0x%x (ignored)" #~ msgstr "*** [%s] 0x%x äì÷úî éúîìòúä ***" +#, c-format #~ msgid "*** [%s] Error 0x%x" #~ msgstr "*** [%s] 0x%x äì÷ú ***" @@ -2446,39 +2489,49 @@ msgstr "" #~ msgid "Syntax error, still inside '\"'\n" #~ msgstr "'\"' êåúá ïééãò ,øéáçú úàéâù\n" +#, c-format #~ msgid "Got a SIGCHLD; %u unreaped children.\n" #~ msgstr ".åôñàð íøèù úá-úåéðëú %u ;SIGCHLD ìá÷úä\n" +#, c-format #~ msgid "internal error: `%s' command_state" #~ msgstr "command_state `%s' :úéîéðô äðëú úì÷ú" #~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" #~ msgstr ".úåìéòô úá-úåéðëú øéàùäì ìåìò CTRL-Y :úåøéäæ\n" +#, c-format #~ msgid "BUILTIN [%s][%s]\n" #~ msgstr "BUILTIN [%s][%s]\n" +#, c-format #~ msgid "BUILTIN RM %s\n" #~ msgstr "BUILTIN RM %s\n" +#, c-format #~ msgid "Unknown builtin command '%s'\n" #~ msgstr "úøëåî äðéà '%s'úéðáåî äãå÷ô\n" #~ msgid "Error, empty command\n" #~ msgstr "ä÷éø äãå÷ô :äì÷ú\n" +#, c-format #~ msgid "Redirected input from %s\n" #~ msgstr "%s-î èì÷ úééðôä\n" +#, c-format #~ msgid "Redirected error to %s\n" #~ msgstr "%s-ì úåàéâù úééðôä\n" +#, c-format #~ msgid "Error spawning, %d\n" #~ msgstr "%d :úá-úéðëú úìòôäá äì÷ú\n" +#, c-format #~ msgid "%s: Command not found" #~ msgstr "äàöîð àì åæ äãå÷ô :%s" +#, c-format #~ msgid "%s: Shell program not found" #~ msgstr "äàöîð àì shell úãå÷ô :%s" @@ -2527,6 +2580,7 @@ msgstr "" #~ msgid "Consider FILE to be infinitely new" #~ msgstr "øùôàù ùãç éëä äéä FILE åìéàë âäð" +#, c-format #~ msgid "%s is suspending for 30 seconds..." #~ msgstr ".úåéðù 30 ìù %s úééäùä" @@ -2547,6 +2601,7 @@ msgstr "" #~ msgid "dup jobserver" #~ msgstr "dup jobserver" +#, c-format #~ msgid "" #~ ", by Richard Stallman and Roland McGrath.\n" #~ "%sBuilt for %s\n" @@ -2576,12 +2631,14 @@ msgstr "" #~ msgid "Leaving" #~ msgstr "Leaving" +#, c-format #~ msgid "Unknown error %d" #~ msgstr "Unknown error %d" #~ msgid "virtual memory exhausted" #~ msgstr "éìàåèøéåä ïåøëæä øîâð" +#, c-format #~ msgid "%s access: user %lu (real %lu), group %lu (real %lu)\n" #~ msgstr "%s access: user %lu (real %lu), group %lu (real %lu)\n" @@ -2597,9 +2654,11 @@ msgstr "" #~ msgid "invalid `override' directive" #~ msgstr "äéåâù `override' úàøåä" +#, c-format #~ msgid "no file name for `%sinclude'" #~ msgstr "õáå÷ íù àìì `%sinclude' úàøåä" +#, c-format #~ msgid "target `%s' leaves prerequisite pattern empty" #~ msgstr "ä÷éø íã÷ä úùéøã úéðáú úà äøéàùî `%s' äøèî" @@ -2609,8 +2668,10 @@ msgstr "" #~ msgid "# No variables." #~ msgstr "# No variables." +#, c-format #~ msgid "# average of %.1f variables per bucket, max %u in one bucket.\n" #~ msgstr "# average of %.1f variables per bucket, max %u in one bucket.\n" +#, c-format #~ msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n" #~ msgstr "# average of %d.%d variables per bucket, max %u in one bucket.\n" diff --git a/po/hr.gmo b/po/hr.gmo index a823d81..0f27dac 100644 Binary files a/po/hr.gmo and b/po/hr.gmo differ diff --git a/po/hr.po b/po/hr.po index 60dcecf..d0671b7 100644 --- a/po/hr.po +++ b/po/hr.po @@ -4,23 +4,23 @@ # # Hrvoje Niksic , 2002. # Tomislav Krznar , 2012. -# Božidar Putanec , 2016, 2018, 2019, 2020, 2022. +# Božidar Putanec , 2016, 2018, 2019, 2020, 2022, 2023. msgid "" msgstr "" -"Project-Id-Version: make 4.3.92\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2022-10-31 02:23-0400\n" -"PO-Revision-Date: 2022-10-28 10:58-0700\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-16 13:04-0800\n" "Last-Translator: Božidar Putanec \n" "Language-Team: Croatian \n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" +"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-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 3.2\n" +"X-Generator: Poedit 3.2.2\n" #: src/ar.c:47 #, c-format @@ -133,7 +133,7 @@ msgstr " (ugrađeno):" msgid " (from '%s', line %lu):\n" msgstr " (iz „%s“, redak %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -141,12 +141,12 @@ msgstr "" "\n" "# Direktoriji\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# nije bilo moguće dobiti status od %s.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "" @@ -154,53 +154,53 @@ msgstr "" "otvoriti.\n" # inode > index in a table of contents or an inode in a Unix-like file system > ičvor -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (uređaj %d, inode [%d,%d,%d]): nije bilo moguće otvoriti.\n" # An inode is a data structure on a filesystem on Linux and other Unix-like operating systems that stores all the information about a file except its name and its actual data. -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (uređaj %ld, inode %ld): nije bilo moguće otvoriti.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (ključ %s, vrijeme zadnje izmjene %s): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (uređaj %d, inode [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (uređaj %ld, inode %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Ne" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " datoteke, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "ne" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " nemogućnosti" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " do sada." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " nemogućnosti u %lu direktorija.\n" @@ -220,176 +220,176 @@ msgstr "Rekurzivna varijabla „%s“ pokazuje na samu sebe (eventualno)" msgid "unterminated variable reference" msgstr "nedovrÅ¡ena referencija na varijablu" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Recept za datoteku „%s“ bio je naveden u %s:%lu," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Recept za datoteku „%s“ je pronađen u implicitnim pravilima," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "ali se „%s“ sada smatra istom datotekom kao i „%s“." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Recept za „%s“ je zanemaren u korist ovog za „%s“." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "ne može se preimenovati „%s“ s jednom dvotočkom u „%s“ s dvije dvotočke" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "ne može se preimenovati „%s“ s dvije dvotočke u „%s“ s jednom dvotočkom" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** BriÅ¡emo privremenu posredničku datoteku „%s“" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Uklanjamo privremene posredničke datoteke...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "%s ne može biti istovremeno .NOTINTERMEDIATE i .INTERMEDIATE" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "%s ne može biti istovremeno .NOTINTERMEDIATE and .SECONDARY" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr ".NOTINTERMEDIATE i .SECONDARY se međusobno isključuju" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Trenutno vrijeme" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Vremenski žig je izvan granica raspona; zamijenjen je s %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Nije cilj (target):" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Dragocjena (precious) datoteka (preduvjet za .PRECIOUS)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Lažni (phony) cilj (preduvjet za .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Cilj naredbenog retka." # Zadan > standardni -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Zadano, MAKEFILES ili -include/sinclude makefile." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Ugrađeno pravilo" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Provedeno je pretraživanje pomoću implicitnih pravila." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Nije provedeno pretraživanje pomoću implicitnih pravila." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Implicitni ili statički korijen uzorka: „%s“\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Datoteka je privremeni preduvjet." -#: src/file.c:1111 +#: src/file.c:1108 msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Datoteka je preduvjet za .NOTINTERMEDIATE." -#: src/file.c:1113 +#: src/file.c:1110 msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Datoteka je sekundarna (preduvjet za .SECONDARY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Također napravi:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Vrijeme zadnje izmjene nije nikada provjereno." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Datoteka ne postoji." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Datoteka je vrlo stara." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Posljednja promjena %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Datoteka je osvježena." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Datoteka nije osvježena." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Recept je joÅ¡ u tijeku (OVO JE PROGRAMSKA GREÅ KA)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Recept za ovisnosti je joÅ¡ u tijeku (OVO JE PROGRAMSKA GREÅ KA)" -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# UspjeÅ¡no osvježena." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Osvježavanje je nužno (dana je opcija -q)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Osvježavanje nije uspjelo." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Nevaljana vrijednost u command_state članu!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -397,7 +397,7 @@ msgstr "" "\n" "# Datoteke" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -407,7 +407,7 @@ msgstr "" "# status datoteka hash-tablice:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Polja „%s“ nema u predmemoriji (nije cached): %s" @@ -472,134 +472,139 @@ msgstr "windows32_openpipe(): process_init_fd() nije uspjeÅ¡na\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Izbrisana je privremena batch datoteka %s.\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "datoteka: nema imena datoteke" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open(): %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write(): %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close(): %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file: previÅ¡e argumenata" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file: nije moguće otvoriti „%s“: %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read(): %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file: nevaljana operacija na datoteci: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "nedovoljan broj argumenata (%u) za funkciju ‘%s’" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "nije realizirana na ovoj platformi: funkcija „%s“" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "nedovrÅ¡eni poziv funkciji „%s“: nedostaje %c" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Prazno ime funkcije" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Nevaljani naziv funkcije: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Predugo ime funkcije: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Nevaljani minimalni broj argumenata (%u) za funkciju %s" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Nevaljani maksimalni broj argumenata (%u) za funkciju %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" -msgstr "%s: opcija „%s“ nije jednoznačna\n" +msgstr "%s: opcija „%s“ dvosmislena\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: opcija „--%s“ ne dopuÅ¡ta argument\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: opcija „%c%s“ ne dopuÅ¡ta argument\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: opcija „%s“ zahtijeva argument\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: neprepoznata opcija „--%s“\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: neprepoznata opcija „%c%s“\n" # * 1003.2 specifies the format of this message. */ # fprintf (stderr, _("%s: illegal option -- %c\n"), -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" -msgstr "%s: nedopuÅ¡tena opcija -- %c\n" +msgstr "%s: nelegalna opcija -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: nevaljana opcija -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: opcija zahtijeva argument -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" -msgstr "%s: opcija „-W %s“ nije jednoznačna\n" +msgstr "%s: opcija „-W %s“ je dvosmislena\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: opcija „-W %s“ ne dopuÅ¡ta argument\n" @@ -650,184 +655,184 @@ msgstr "Tražimo implicitno pravilo za člana arhive za „%s“\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "Nije pronađeno implicitno pravilo arhivske stavke za ‘%s’.\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Izbjegavamo implicitno pravilo rekurzije za ‘%s’.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "Trudimo se joÅ¡ viÅ¡e.\n" -#: src/implicit.c:501 +#: src/implicit.c:503 #, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Pravilo uzorka ‘%s’ s iskuÅ¡ano s osnovom ‘%.*s’.\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Predugi korijen uzorka: „%s%.*s“.\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Odbijamo pravilo ‘%s’ s nemogućim zahtjevom pravila ‘%s’.\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Odbijamo pravilo ‘%s’ s nemogućim implicitnim zahtjevom ‘%s’.\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Isprobavamo pravilo preduvjeta „%s“.\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Isprobavamo implicitni preduvjet „%s“.\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, c-format msgid "'%s' ought to exist.\n" msgstr "‘%s’ bi trebalo postojati.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "Pronađen je ‘%s’.\n" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "Koristimo pravilo kompatibilnosti ‘%s’ zbog ‘%s’.\n" -#: src/implicit.c:856 +#: src/implicit.c:858 #, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "" "Preduvjet ‘%s’ pravila ‘%s’ ne ispunjava ono Å¡to bi trebalo postojati.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Nađeni preduvjet „%s“ kao VPATH „%s“\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Potraga za pravilom s eksplicitnom datotekom „%s“.\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Potraga za pravilom s posredničkom datotekom „%s“.\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Odbijamo pravilo „%s“ s nemogućim implicitnim zahtjevom „%s“.\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, c-format msgid "Not found '%s'.\n" msgstr "Nije pronađeno „%s“.\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Nađeno je implicitno pravilo „%s“ za „%s“.\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Potraga za kompatibilnim pravilom za „%s“.\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Nijedno implicitno pravilo nije nađeno za „%s“.\n" -#: src/job.c:380 +#: src/job.c:377 msgid "Cannot create a temporary file" msgstr "Ne moguće stvoriti privremenu datoteku" # A core dump is a file of a computer's documented memory of when a program or computer crashed. -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" -msgstr " (**krah**: stanje (dump) memorije je zapisano!)" +msgstr " (ispis memorije je spremljen!)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (zanemareno)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:587 +#: src/job.c:584 #, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] GreÅ¡ka %d%s%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Čekamo na nedovrÅ¡ene poslove..." # child > dijete > potomak; pridjev potamački -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Živi potomak (nedovrÅ¡eni dijete-proces) %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (udaljeno)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Čišćenje iza uspjeÅ¡nog potomka (dijete-procesa) %p PID %s %s\n" # reap (in cs) > To terminate a child process that has previously exited, thereby removing it from the process table # Until a child process is reaped, it may be listed in the process table as a zombie or defunct process. -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Čišćenje iza neuspjeÅ¡nog potomka (dijete-procesa) %p PID %s %s\n" # batch file > naredbena datoteka sustava (skript datoteka) -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Čišćenje iza privremene batch datoteke %s\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Čišćenje iza privremene batch datoteke %s nije uspjelo (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Potomak (dijete-proces) %p PID %s%s je uklonjen iz lanca.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Oslobođen je token za potomka (dijete-procesa) %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() nije uspjela pokrenuti proces (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -836,44 +841,55 @@ msgstr "" "\n" "izbrojeno je %d argumenata pri neuspjelom pokretanju\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Umetanje potomka (dijete-procesa) %p (%s) PID %s%s u lanac.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Dobiveni je token za potomka (dijete-procesa) %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: osvježava cilj „%s“ za potrebe: cilj je .PHONY" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: osvježava cilj „%s“ za potrebe: cilj ne postoji" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: osvježava cilj „%s“ za potrebe: %s" -#: src/job.c:1910 -msgid "target does not exist" -msgstr "cilj ne postoji" +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: osvježava cilj „%s“ zbog: nepoznati razlozi" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "nije moguće nametnuti granice opterećenja na ovom operacijskom sustavu" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "ne može nametnuti granice opterećenja: " # In Unix and related computer operating systems, a file descriptor is an abstract indicator (handle) used to access a file # stdin > standardni ulaz -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "" "nema viÅ¡e datotečnih kvačica: nije moguće duplicirati standardni ulaz, stdin" # stdout > standardni izlaz -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "" @@ -881,50 +897,50 @@ msgstr "" "stdout" # stderr > standard error -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "" "nema viÅ¡e datotečnih kvačica: nije bilo duplicirati standardne greÅ¡ke, stderr" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "Nije moguće obnoviti standardni ulaz, stdin" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "Nije moguće obnoviti standardni izlaz, stdout" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "Nije moguće obnoviti standardne greÅ¡ke, stderr" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" "make je počistio potomka (dijete-proces) PID %s, ali joÅ¡ uvijek čeka na PID " "%s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: može biti da u okolini nema dovoljno prostora" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "Varijabla $SHELL se promijenila (prije „%s“, sada „%s“)\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Stvaramo privremenu batch datoteku %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -933,7 +949,7 @@ msgstr "" "Sadržaj batch datoteke:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -942,7 +958,7 @@ msgstr "" "Sadržaj batch datoteke:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (redak %d) LoÅ¡i kontekst ljuske (!unixy && !batch_mode_shell)\n" @@ -987,19 +1003,19 @@ msgstr "Istovar (unloading) dijeljenog (shared) objekta %s\n" msgid "The 'load' operation is not supported on this platform" msgstr "Operacija „load“ nije podržana na ovoj platformi" -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Opcije:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m zanemareno zbog kompatibilnosti\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make bezuvjetno napravi sve ciljeve\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -1007,18 +1023,18 @@ msgstr "" " -C DIREKTORIJ, --directory=DIREKTORIJ\n" " prije početka rada prijeđe u DIREKTORIJ\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d ispisuje puno podataka za debugiranje\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=ZASTAVICE] ispisuje razne vrste informacija za " "debugiranje\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1028,12 +1044,12 @@ msgstr "" "umjesto\n" " tih istih varijabli iz Makefiles\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr " -E STRING, --eval=STRING evaluira STRING kao Makefile direktivu\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1041,15 +1057,15 @@ msgstr "" " -f DATOTEKA, --file=DATOTEKA, --makefile=DATOTEKA\n" " čita i koristi DATOTEKU kao Makefile\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help ova pomoć\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors zanemari sve greÅ¡ke u receptima\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1057,7 +1073,7 @@ msgstr "" " -I DIREKTORIJ, --include-dir=DIREKTORIJ\n" " traži uključene Makefiles u DIREKTORIJU\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1066,18 +1082,18 @@ msgstr "" "izostavi\n" " argument N, nema ograničenja broju poslova\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr " --jobserver-style=STIL izabere STIL koji će koristi jobserver\n" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going nastavlja raditi (iako se neki od ciljeva\n" " ne mogu napraviti).\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1087,7 +1103,7 @@ msgstr "" " ne pokreće viÅ¡e poslova istovremeno ako\n" " je opterećenje veće od N\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1095,7 +1111,7 @@ msgstr "" " -L, --check-symlink-times koristi najkasniji mtime između simboličke " "veze i njena cilja\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1107,7 +1123,7 @@ msgstr "" # remake > make (something) again or differently. # remake > gl. prepraviti, preurediti / im. prepravak, prerada # na nov način, drugačije urediti, izmijeniti da na drugi način služi svrsi; preuređenje, preuređen. -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1116,7 +1132,7 @@ msgstr "" " -o DATOTEKA, --old-file=DATOTEKA, --assume-old=DATOTEKA\n" " ne obnavlja DATOTEKU jer je vrlo stara\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1125,12 +1141,12 @@ msgstr "" " TIP sinkronizacije izlaznih paralelnih " "poslova\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base ispiÅ¡e internu bazu podataka „make“ programa\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1138,16 +1154,16 @@ msgstr "" " -q, --question ne pokreće recepte; izlazni status pokaže\n" " jesu li trenutni\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules onemogući ugrađena implicitna pravila\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables onemogući ugrađene vrijednosti varijabli\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" @@ -1155,16 +1171,16 @@ msgstr "" " --shuffle[={SEED|random|reverse|none}]\n" " mijeÅ¡a zahtjeve i ciljeve\n" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet ne ispisuje recepte\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent odjekuje recepte (poniÅ¡ti --silent način)\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1172,34 +1188,34 @@ msgstr "" " -S, --no-keep-going, --stop\n" " ukida opciju -k\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch „touch“ (osvježi vrijeme) ciljeve umjesto\n" " da ih iznova napravi\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr "" " -d ispisuje informacije praćenja (tracing)\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version informacije o ovoj inačici programa\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory ispiÅ¡e trenutni direktorij\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr "" " --no-print-directory ukida opciju -w (čak i ako je implicirana)\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1208,39 +1224,39 @@ msgstr "" "new=DATOTEKA\n" " smatra da je DATOTEKA zauvijek nova\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" " --warn-undefined-variables upozori na referiranje nedefinirane varijable\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "greÅ¡ka u pisanju: standardni izlaz (stdout)" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "prazni string nije valjano ime datoteke" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "nepoznata specifikacija „%s“ za razinu dijagnostike" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "nepoznati tip sinkronizacije izlaza „%s“" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Uporaba: %s [opcije] [cilj] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1249,7 +1265,7 @@ msgstr "" "\n" "Ovaj program je proizveden za %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1258,19 +1274,19 @@ msgstr "" "\n" "Ovaj program je proizveden za %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "" "GreÅ¡ke (bugs) na engleskom javite na \n" "PogreÅ¡ke u prijevodu i vaÅ¡e prijedloge javite na \n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Prekid/iznimka primljena (kȏd = 0x%lx, adresa = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1285,32 +1301,32 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Povreda prava pristupa: operacija pisanja na adresi 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Povreda prava pristupa: operacija čitanja na adresi 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() postavlja default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell() pretragom staze postavlja default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (privremena datoteka): " # parent > roditelj > predak; pridjev predački -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1318,148 +1334,153 @@ msgstr "" "upozorenje: jobserver nije dostupni: koristi se -j1.\n" "Dodajte „+“ make pravilu pretka (parent)" -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "upozorenje: -j%d je forsiran u submake: resetira mȏd jobservera." -#: src/main.c:1930 +#: src/main.c:1946 #, c-format msgid "Makefile from standard input specified twice" msgstr "Makefile iz standardnog ulaza je dva puta naveden" -#: src/main.c:1940 +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "nije moguće spremiti makefile iz stdin u privremenu datoteku" + +#: src/main.c:1959 #, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite: privremena datoteka %s: %s" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "upozorenje: -j%d je nametnut u makefile: resetira mȏd jobservera." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Paralelni poslovi (-j) nisu podržani na ovoj platformi." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Povratak na način rada s jednim poslom (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "Koristimo %s kontroler jobserver-a\n" -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "Koristimo zaključavanje (mutex) izlazne sinkronizacije „%s“\n" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Simboličke veze nisu podržane: onemogućujemo -L." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "Omogućen je mijeÅ¡anje (način rada): %s\n" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Osvježavamo Makefiles....\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefile „%s“ bi mogao ući u petlju; ne obnavljamo ga.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: učitavanje nije uspjelo" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Nije uspjelo preraditi Makefile „%s“." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "„%s“ uključeni Makefile nije pronađen." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefile „%s“ nije pronađen" -#: src/main.c:2700 +#: src/main.c:2717 #, c-format msgid "Couldn't change back to original directory" msgstr "Nije bilo moguće vratiti se u izvorni direktorij" -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Ponovno izvrÅ¡avanje[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL sadrži viÅ¡e od jednog cilja" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Nema ciljeva" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Nije navedeni nijedan cilj i nije pronađeni nijedan Makefile" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Osvježavamo ciljeve....\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "upozorenje: Otkriveni je problem sa satom. Kompilacija možda nije kompletna." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "opcija %s%s zahtijeva ne-prazni string za argument" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "opcija -%c zahtijeva pozitivni cijeli broj za argument" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sProizvedeno za %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sProizvedeno za %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later briÅ¡ući ukloniti, briÅ¡ući poniÅ¡titi, prebrisati dio teksta, odbaciti -#: src/read.c:2186 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "upozorenje: zanemaren je recept za cilj „%s“" -#: src/read.c:2189 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "upozorenje: zanemarujemo stari recept za cilj „%s“" -#: src/read.c:2308 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "" "*** pomijeÅ¡ana su implicitna i normalna pravila: to je zastarjela sintaksa" # prebrisati> briÅ¡ući ukloniti, briÅ¡ući poniÅ¡titi, prebrisati dio teksta, odbaciti -#: src/read.c:2325 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "upozorenje: zanemareno je članstvo grupe za cilj „%s“" -#: src/read.c:2683 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "upozorenje: pročitan je NUL znak; ostatak retka je zanemaren" @@ -1849,62 +1891,62 @@ msgstr "upozorenje: pročitan je NUL znak; ostatak retka je zanemaren" msgid "warning: pattern recipe did not update peer target '%s'." msgstr "upozorenje: recept uzorka nije ažurirao cilj partnera „%s“." -#: src/remake.c:254 +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "NiÅ¡ta se ne može napraviti za„%s”." -#: src/remake.c:255 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "„%s“ je osvježena." -#: src/remake.c:350 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "Čistimo datoteku „%s“.\n" -#: src/remake.c:416 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%sNema pravila za izradu cilja „%s“ koji je potreban za „%s“%s" -#: src/remake.c:426 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sNema pravila za izradu cilja „%s“%s" -#: src/remake.c:452 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "Razmatramo ciljnu datoteku „%s“.\n" -#: src/remake.c:459 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Nedavni pokuÅ¡aj osvježavanja datoteke „%s“ nije uspio.\n" -#: src/remake.c:471 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Datoteka „%s“ je već bila razmatrana.\n" -#: src/remake.c:481 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Datoteka „%s“ se joÅ¡ uvijek osvježava.\n" -#: src/remake.c:484 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Osvježavanje datoteke „%s“ je zavrÅ¡eno.\n" -#: src/remake.c:513 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Datoteka „%s“ ne postoji.\n" -#: src/remake.c:520 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1912,44 +1954,44 @@ msgstr "" "*** Upozorenje: .LOW_RESOLUTION_TIME datoteka „%s“ ima\n" " vremenski žig visoke rezolucije" -#: src/remake.c:538 +#: src/remake.c:543 #, c-format msgid "Grouped target peer '%s' of file '%s' does not exist.\n" msgstr "Grupni ciljni partner „%s“ iz datoteke „%s“ ne postoji.\\\n" -#: src/remake.c:558 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Rabimo zadani recept za „%s“.\n" -#: src/remake.c:603 src/remake.c:1165 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Kružna ovisnost %s <- %s je odbačena." -#: src/remake.c:737 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Preduvjeti za ciljnu datoteku „%s“ su ispunjeni.\n" - -#: src/remake.c:743 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Preduvjeti za „%s“ se izrađuju.\n" -#: src/remake.c:757 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Preduvjeti za ciljnu datoteku „%s“ su ispunjeni.\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Odustajemo od izrade ciljne datoteke „%s“.\n" -#: src/remake.c:762 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Cilj „%s“ nije bio ponovno izrađen zbog greÅ¡aka." # Nisam siguran da sam ovo ispravno shvatio. # bp: impose a specific ordering on the rules to be invoked without forcing the target to be updated if one of those rules is executed -#: src/remake.c:814 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "" @@ -1958,90 +2000,90 @@ msgstr "" "vremenski žig na order-only cilju (normalno, make uvijek preradi\n" "recepte kad god se izmjeni vremenski žig na bilo kojem objektu).\n" -#: src/remake.c:819 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Preduvjet „%s“ za cilj „%s“ ne postoji.\n" -#: src/remake.c:824 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Preduvjet „%s“ je noviji nego od od njega ovisni cilj „%s“.\n" -#: src/remake.c:827 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Preduvjet „%s“ je stariji nego od od njega ovisni cilj „%s“.\n" -#: src/remake.c:845 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Cilj „%s“ je s dvije dvotočke i nema preduvjeta.\n" -#: src/remake.c:852 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "" "Nema recepta za „%s“ i zapravo nijedan od preduvjeta nije promijenjen.\n" -#: src/remake.c:857 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "„%s“ se zbog zastavice always-make ponovno izrađuje.\n" -#: src/remake.c:865 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Nema potrebe preraditi cilj „%s“" -#: src/remake.c:867 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; rabimo naziv „%s“ za VPATH" -#: src/remake.c:891 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Cilj „%s“ se mora preraditi.\n" -#: src/remake.c:897 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Zanemareni naziv „%s“ za VPATH.\n" -#: src/remake.c:906 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "Recept za „%s“ se upravo izvrÅ¡ava.\n" -#: src/remake.c:913 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Prerada ciljne datoteke „%s“ nije uspjela.\n" -#: src/remake.c:916 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Ciljna datoteka „%s“ je uspjeÅ¡no prerađena.\n" -#: src/remake.c:919 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Ciljnu datoteku „%s“ treba ponovno preraditi s opcijom -q.\n" -#: src/remake.c:1118 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Rabimo zadane naredbe za „%s“.\n" -#: src/remake.c:1499 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "" "Upozorenje: Vremenski žig modifikacije datoteke „%s“ je za\n" " %s sekunda u budućnosti" -#: src/remake.c:1747 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr ".LIBPATTERNS član „%s“ nije uzorak" @@ -2111,7 +2153,7 @@ msgstr "ZavrÅ¡i" #: src/signame.c:101 msgid "Illegal Instruction" -msgstr "Nepropisna instrukcija" +msgstr "Nelegalna instrukcija" # Breakpoint trap just means the processor has hit a breakpoint.Your process is running more than one thread. #: src/signame.c:104 @@ -2148,7 +2190,7 @@ msgstr "Segmentacijska greÅ¡ka (SIGSEGV)" #: src/signame.c:130 msgid "Bad system call" -msgstr "LoÅ¡i sustavski poziv (SIGSYS)" +msgstr "LoÅ¡ sustavni poziv (SIGSYS)" # a condition in programming (also known in POSIX as EPIPE error code and SIGPIPE signal), when a process requests an output to pipe or socket, which was closed by peer #: src/signame.c:133 @@ -2197,7 +2239,7 @@ msgstr "Zaustavljeno (signal) (SIGSTOP)" #: src/signame.c:171 msgid "CPU time limit exceeded" -msgstr "Procesor je premaÅ¡io ograničenje za vrijeme procesora (SIGCPU)" +msgstr "Prekoračeno je vremensko ograničenje procesora (SIGCPU)" #: src/signame.c:174 msgid "File size limit exceeded" @@ -2215,7 +2257,7 @@ msgstr "Isteklo je vrijeme za profiliranje (SIGPROF)" #: src/signame.c:186 msgid "Window changed" -msgstr "Prozor se promijenio (SIGWINCH)" +msgstr "Prozor promijenjen (SIGWINCH)" #: src/signame.c:189 msgid "Continued" @@ -2249,7 +2291,7 @@ msgstr "Signal za opasnost (SIGDANGER)" #: src/signame.c:217 msgid "Information request" -msgstr "Zahtjev za informacijom (SIGINFO)" +msgstr "Zahtjev za informacijama (SIGINFO)" #: src/signame.c:220 msgid "Floating point co-processor not available" @@ -2313,45 +2355,50 @@ msgstr "" "# statistika hash-tablice:\n" "# " -#: src/variable.c:1786 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "upozorenje: nedefinirana varijabla %.*s" + +#: src/variable.c:1867 msgid "automatic" msgstr "automatsko" -#: src/variable.c:1789 +#: src/variable.c:1870 msgid "default" msgstr "zadano" -#: src/variable.c:1792 +#: src/variable.c:1873 msgid "environment" msgstr "okolina" -#: src/variable.c:1795 +#: src/variable.c:1876 msgid "makefile" msgstr "Makefile" -#: src/variable.c:1798 +#: src/variable.c:1879 msgid "environment under -e" msgstr "okolina ispod -e" -#: src/variable.c:1801 +#: src/variable.c:1882 msgid "command line" msgstr "naredbeni redak" -#: src/variable.c:1804 +#: src/variable.c:1885 msgid "'override' directive" msgstr "„override“ direktiva" -#: src/variable.c:1814 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (iz „%s“, redak %lu)" # https://en.wikipedia.org/wiki/Hash_table -#: src/variable.c:1877 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# statistika varijabli u hash-tablici:\n" -#: src/variable.c:1888 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2359,7 +2406,7 @@ msgstr "" "\n" "# Varijable\n" -#: src/variable.c:1892 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2367,7 +2414,7 @@ msgstr "" "\n" "# Vrijednosti varijabli specifične za uzorke" -#: src/variable.c:1906 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2375,7 +2422,7 @@ msgstr "" "\n" "# Nema vrijednosti varijabli specifične za uzorke." -#: src/variable.c:1908 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2384,11 +2431,6 @@ msgstr "" "\n" "# %u vrijednosti varijabli specifične za uzorke" -#: src/variable.h:237 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "upozorenje: nedefinirana varijabla %.*s" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2426,7 +2468,7 @@ msgstr "%.*s pripojiti i počistiti\n" msgid "Executing %s instead\n" msgstr "Umjesto toga izvrÅ¡avamo %s\n" -#: src/vpath.c:600 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2434,11 +2476,11 @@ msgstr "" "\n" "# VPATH staza za pretraživanje\n" -#: src/vpath.c:617 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Nema „vpath“ staze za pretraživanje." -#: src/vpath.c:619 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2447,7 +2489,7 @@ msgstr "" "\n" "# %u „vpath“ staza za pretraživanje.\n" -#: src/vpath.c:622 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2455,7 +2497,7 @@ msgstr "" "\n" "# Nema općenite („VPATH“ varijable) staze za pretraživanje." -#: src/vpath.c:628 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2468,8 +2510,8 @@ msgstr "" # If the ‘-j’ option is followed by an integer, this is the number of recipes to execute at once; this is called the number of job slots. If there is nothing looking like an integer after the ‘-j’ option, there is no limit on the number of job slots. The default number of job slots is one, which means serial execution (one thing at a time). #: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" -msgstr "Jobserver broj mjesta je ograničen na %d\n" +msgid "jobserver slots limited to %d\n" +msgstr "broj slotova jobservera je ograničen na %d\n" #: src/w32/w32os.c:240 #, c-format @@ -2478,38 +2520,38 @@ msgstr "stvaranje semafora jobservera: (GreÅ¡ka %ld: %s)" #: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" -msgstr "" -"interna greÅ¡ka: nije moguće otvoriti semafor jobservera „%s“: (GreÅ¡ka %ld: " -"%s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "nije moguće otvoriti semafor jobservera „%s“: (GreÅ¡ka %ld: %s)" -#: src/w32/w32os.c:262 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Klijent jobservera (semafor %s)\n" -#: src/w32/w32os.c:310 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "oslobađanje semafora jobservera: (GreÅ¡ka %ld: %s)" -#: src/w32/w32os.c:381 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "čekanje na semafor ili na potomka (dijete-procesa): (GreÅ¡ka %ld: %s)" -#: src/w32/w32os.c:449 +#: src/w32/w32os.c:451 #, c-format msgid "cannot parse output sync mutex %s: %s" msgstr "" "nije moguće raščlaniti zaključavanje (mutex) izlazne sinkronizacije %s: %s" -#: src/w32/w32os.c:452 +#: src/w32/w32os.c:454 #, c-format msgid "invalid output sync mutex: %s" msgstr "nevaljano zaključavanje (mutex) sinkronizacije izlaza: %s" +#~ msgid "target does not exist" +#~ msgstr "cilj ne postoji" + # Da prevedem ovo? #~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" #~ msgstr "%s: korisnik %lu (stvarni %lu), grupa %lu (stvarna %lu)\n" diff --git a/po/id.gmo b/po/id.gmo index 5098f79..035475d 100644 Binary files a/po/id.gmo and b/po/id.gmo differ diff --git a/po/id.po b/po/id.po index 68d61ec..3d42870 100644 --- a/po/id.po +++ b/po/id.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU make 4.2.93\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2022-10-31 02:23-0400\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" "PO-Revision-Date: 2021-08-28 09:45+0700\n" "Last-Translator: Arif E. Nugroho \n" "Language-Team: Indonesian \n" @@ -128,7 +128,7 @@ msgstr " (bawaan):" msgid " (from '%s', line %lu):\n" msgstr " (dari '%s', baris %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -136,64 +136,64 @@ msgstr "" "\n" "# Direktori\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: tidak dapat melihat statistik.\n" # -#: src/dir.c:1122 +#: src/dir.c:1123 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (kunci %s, mtime %I64u): tidak dapat dibuka.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (perangkat %d, inode [%d,%d,%d]): tidak dapat dibuka.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (perangkat %ld, inode %ld): tidak dapat dibuka.\n" # -#: src/dir.c:1155 +#: src/dir.c:1156 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (kunci %s, mtime %I64u): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (perangkat %d, inode [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (perangkat %ld, inode %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Tidak" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " berkas, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "tidak" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " tidak mungkin" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " sejauh ini." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " tidak mungkin dalam direktori %lu.\n" @@ -213,176 +213,176 @@ msgstr "Variabel rekursif '%s' menunjuk pada dirinya sendiri" msgid "unterminated variable reference" msgstr "referensi variabel tidak diselesaikan" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Perintah di spesifikasikan untuk berkas '%s' di %s:%lu," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Perintah untuk berkas '%s' ditemukan dalam pencarian aturan implisit," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "" "tetapi '%s' sekarang dipertimbangkan sebagai berkas yang sama dengan '%s'." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Perintah untuk '%s' akan diabaikan untuk menghargai '%s'." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "tidak dapat mengubah nama dari kolon-tunggal '%s' ke kolon-ganda '%s'" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "tidak dapat mengubah nama kolon-ganda '%s' menjadi kolon-tunggal '%s'" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Menghapus berkas sementara '%s'" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Menghapus berkas sementara...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr "" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Waktu saat ini" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Timestamp diluar jangkauan; digantikan dengan %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Bukan sebuah target:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Berkas sebelumnya (dibutuhkan oleh .PRECIOUS)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Phony target (dibutuhkan oleh .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Baris perintah target." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Merupakan baku, MAKEFILES atau -include/sinclude makefile." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Tidak ada aturan implisit." -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Pencarian aturan implisit sudah selesai." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Pencarian aturan implisit belum selesai." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Pola/implisit atau statis stem: '%s'\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Berkas merupakan dibutuhkan untuk sementara." -#: src/file.c:1111 +#: src/file.c:1108 #, fuzzy msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Berkas sebelumnya (dibutuhkan oleh .PRECIOUS)." -#: src/file.c:1113 +#: src/file.c:1110 #, fuzzy msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Phony target (dibutuhkan oleh .PHONY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Juga membuat:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Waktu ubah sudah diperiksa." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Berkas tidak ada." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Berkas sudah sangat tua." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Terakhir dimodifikasi %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Berkas sudah diperbarui." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Berkas belum diperbarui." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Perintah sedang berjalan (INI MERUPAKAN SEBUAH BUG)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Perintah ketergantungan sedang berjalan (INI MERUPAKAN SEBUAH BUG)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Sukses memperbarui." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Perlu untuk diupdate (-q diset)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Gagal untuk mengupdate." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Nilai yang salah dalam anggota 'command_state' !" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -390,7 +390,7 @@ msgstr "" "\n" "# Berksa" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -400,7 +400,7 @@ msgstr "" "# berkas statistik hash-table:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Field '%s' not cached: %s" @@ -470,132 +470,137 @@ msgstr "windows32_openpipe(): process_init_fd() gagal\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Membersihkan berkas batch sementara %s\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "berkas: nama berkas tidak ada" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "menulis: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "berkas: terlalu banyak argument" -#: src/function.c:2397 +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file: invalid file operation: %s" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "baca: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file: invalid file operation: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, fuzzy, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "Jumlah dari argumen (%d) untuk fungsi '%s' tidak mencukupi" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "Tidak terimplementasi dalam platform ini: fungsi '%s'" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "fungsi '%s' tidak diselesaikan: hilang '%c'" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Empty function name" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Invalid function name: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Function name too long: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Jumlah dari minimal argumen tidak valid (%u) untuk fungsi %s" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Jumlah dari maksimal argumen tidak valid (%u) untuk fungsi %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: opsi '%s' merupakan ambigu\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: opsi '--%s' tidak memperbolehkan argumen\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: opsi '%c%s' tidak memperbolehkan argumen\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: opsi '%s' membutuhkan sebuah argumen\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: opsi tidak dikenali '--%s'\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: opsi tidak dikenali '%c%s'\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: opsi tidak legal -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: opsi tidak valid -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: opsi membutuhkan sebuah argumen -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: opsi '-W %s' merupakan opsi ambigu\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: opsi '-W %s' tidak memperbolehkan sebuah argumen\n" @@ -646,180 +651,180 @@ msgstr "Mencari aturan implisit untuk anggota-archive pada '%s'.\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "Mencari aturan implisit untuk anggota-archive pada '%s'.\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, fuzzy, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Menghindari aturan implisit rekursi.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:501 +#: src/implicit.c:503 #, fuzzy, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Mencoba aturan pola dengan stem '%.*s'.\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Stem too long: '%s%.*s'.\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Menolak persyaratan aturan yang tidak mungkin '%s'.\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Menolak persyaratan implisit yang tidak mungkin '%s'.\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Mencoba persyaratan dari aturan '%s'.\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Mencoba persyaratan implisit '%s'.\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, fuzzy, c-format msgid "'%s' ought to exist.\n" msgstr "Berkas '%s' tidak ada.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "" -#: src/implicit.c:842 +#: src/implicit.c:844 #, fuzzy, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "" "%s: tidak terdapat aturan untuk membuat target '%s', dibutuhkan oleh %s" -#: src/implicit.c:856 +#: src/implicit.c:858 #, fuzzy, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "Persyaratan untuk '%s' untuk target '%s' tidak ada.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, fuzzy, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Menemukan persyaratan '%s' sebagai VPATH '%s'\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, fuzzy, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Mencari aturan dengan berkas sementara '%s'.\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Mencari aturan dengan berkas sementara '%s'.\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Menolak persyaratan aturan yang tidak mungkin '%s'.\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, fuzzy, c-format msgid "Not found '%s'.\n" msgstr "Tidak terdapat aturan implisit untuk membuat '%s'.\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, fuzzy, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Ditemukan sebuah aturan implisit untuk '%s'.\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, fuzzy, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Mencari aturan implisit untuk '%s'.\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Tidak terdapat aturan implisit untuk membuat '%s'.\n" -#: src/job.c:380 +#: src/job.c:377 #, fuzzy msgid "Cannot create a temporary file" msgstr "Tidak dapat membuat berkas sementara\n" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (core di-dump)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (diabaikan)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:587 +#: src/job.c:584 #, fuzzy, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Error %d%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Menunggu pekerjaan yang belum selesai...." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Proses anak yang masih berjalan %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (remote)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Reaping winning child %p PID %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Reaping anak hilang %p PID %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Membersihkan berkas batch sementara %s\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Membersihkan berkas batch sementara %s failed (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Menghilangkan proses anak %p PID %s%s dari rantai.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Melepaskan token dari proses anak %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() gagal untuk menjalankan proses (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -828,87 +833,100 @@ msgstr "" "\n" "Terhitung %d argumen gagal untuk dijalankan\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Meletakkan proses anak %p (%s) PID %s%s pada rantai proses.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Memperoleh token untuk proses anak %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "" +"%s: tidak terdapat aturan untuk membuat target '%s', dibutuhkan oleh %s" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "" +"%s: tidak terdapat aturan untuk membuat target '%s', dibutuhkan oleh %s" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "" "%s: tidak terdapat aturan untuk membuat target '%s', dibutuhkan oleh %s" -#: src/job.c:1910 -#, fuzzy -msgid "target does not exist" -msgstr "%s: archive '%s' tidak ada" +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "" +"%s: tidak terdapat aturan untuk membuat target '%s', dibutuhkan oleh %s" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "tidak dapat memaksa mencapai batas beban pada sistem operasi ini" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "tidak dapat memaksa mencapai batas beban: " -#: src/job.c:2195 +#: src/job.c:2238 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdin" msgstr "tidak ada lagi file handles: tidak dapat menggandakan stdin\n" -#: src/job.c:2207 +#: src/job.c:2250 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdout" msgstr "tidak ada lagi file handles: tidak dapat menggandakan stdout\n" -#: src/job.c:2221 +#: src/job.c:2264 #, fuzzy, c-format msgid "no more file handles: could not duplicate stderr" msgstr "tidak ada lagi file handles: tidak dapat menggandakan stderr\n" -#: src/job.c:2236 +#: src/job.c:2279 #, fuzzy, c-format msgid "Could not restore stdin" msgstr "Tidak dapat mengembalikan stdin\n" -#: src/job.c:2244 +#: src/job.c:2287 #, fuzzy, c-format msgid "Could not restore stdout" msgstr "Tidak dapat mengembalikan stdout\n" -#: src/job.c:2252 +#: src/job.c:2295 #, fuzzy, c-format msgid "Could not restore stderr" msgstr "Tidak dapat mengembalikan stderr\n" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make reaped child pid %s, tetap menunggu untuk pid %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: mungkin kehabisan ruang environment" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL berubah (sebelumnya '%s', sekarang '%s')\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Membuat berkas batch sementara %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -917,7 +935,7 @@ msgstr "" "Batch file contents:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -926,7 +944,7 @@ msgstr "" "Batch file contents:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (baris %d) shell context tidak baik (!unixy && !batch_mode_shell)\n" @@ -971,21 +989,21 @@ msgstr "" msgid "The 'load' operation is not supported on this platform" msgstr "Parallel jobs '-j' tidak didukung dalam platform ini." -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Opsi:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Diabaikan untuk kompatibilitas.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" " -B, --always-make Membuat semua target secara tidak " "kondisional.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -993,17 +1011,17 @@ msgstr "" " -C DIRECTORI, --directory=DIREKTORI\n" " Pindah ke DIREKTORI sebelum melakukan apapun.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d Menampilkan banyak informasi debug.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=FLAGS] Menampilkan berbagai tipe informasi debug.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1012,14 +1030,14 @@ msgstr "" " Variabel lingkungan memaksa makefiles.\n" # -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E STRING, --eval=STRING Evaluate STRING as a makefile " "statement.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1027,17 +1045,17 @@ msgstr "" " -f BERKAS, --file=BERKAS, --makefile=BERKAS\n" " Baca BERKAS sebagai sebuah makefile.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Tampilkan pesan ini dan keluar.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" " -i, --ignore-errors Abaikan kesalahan dari perintah yang " "dijalankan.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1046,7 +1064,7 @@ msgstr "" " Cari di DIREKTORI untuk makefile yang " "disertakan.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1054,17 +1072,17 @@ msgstr "" " -j [N], --jobs[=N] Ijinkan N kerja secara bersamaan. Kerja tidak " "terhingga jika tidak diberikan argumen.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Tetap jalan ketika target tidak dapat dibuat.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1074,7 +1092,7 @@ msgstr "" " Jangan menjalankan multiple pekerjaan kecuali " "beban dibawah N.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1082,7 +1100,7 @@ msgstr "" " -L, --check-symlink-times Gunakan waktu mtime terbaru diantara symlinks " "dan target.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1092,7 +1110,7 @@ msgstr "" " Jangan menjalankan perintah apapun; tampilkan " "saja apa yang akan dikerjakan.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1102,7 +1120,7 @@ msgstr "" " Pertimbangkan BERKAS sudah sangat tua dan " "jangan membuatnya lagi.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1110,11 +1128,11 @@ msgstr "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base Tampilkan basis data internal make.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1122,34 +1140,34 @@ msgstr "" " -q, --question Tidak menjalankan perintah. Mengeluarkan " "status saja dan mengatakan up to date.\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Aturan implisit bawaan tidak digunakan.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Non-aktifkan konfigurasi variabel bawaan.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" msgstr "" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Jangan menampilkan perintah.\n" # -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Menampilkan perintah (non-aktifkan --silent " "mode).\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1157,26 +1175,26 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Matikan opsi -k.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Sentuh target dari pada membuat kembali.\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr "" " --trace Menampilkan banyak informasi debug.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version Tampilkan versi dari make dan keluar.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Tampilkan directory saat ini.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1184,7 +1202,7 @@ msgstr "" " --no-print-directory Matikan opsi -w, walaupun opsi ini diaktifkan " "secara implisit.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1193,7 +1211,7 @@ msgstr "" " Pertimbangkan BERKAS sebagai sebuah berkas " "baru.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1201,32 +1219,32 @@ msgstr "" " --warn-undefined-variables Peringatkan akan adanya variabel yang tidak " "terdefinisi yang direferensikan.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "error menulis: stdout" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "`string' kosong tidak valid sebagai nama file" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "spesifikasi tingkat debug tidak diketahui '%s'" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "unknown output-sync type '%s'" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Penggunaan: %s [opsi] [target] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1235,7 +1253,7 @@ msgstr "" "\n" "Program ini dibuat untuk %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1244,17 +1262,17 @@ msgstr "" "\n" "Program ini dibuat untuk %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "Laporkan bugs kepada \n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Interupsi/Exception diterima (kode = 0x%lx, alamat = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1269,31 +1287,31 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Akses dilanggar: operasi tulis pada alamat 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Akses dilanggar: operasi baca pada alamat 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() diset pada default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell() jalur pencarian di set pada default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (berkas sementara): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1301,150 +1319,155 @@ msgstr "" "Peringatan: server pekerja tidak ada: menggunakan -j1. Tambahkan '+' pada " "aturan make paling atas." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "peringatan: -j%d dipaksakan dalam submake: resetting mode server pekerja." -#: src/main.c:1930 +#: src/main.c:1946 #, fuzzy, c-format msgid "Makefile from standard input specified twice" msgstr "Makefile dari standard input dispesifikasikan dua kali." -#: src/main.c:1940 +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Tidak dapat membuat berkas sementara\n" + +#: src/main.c:1959 #, fuzzy, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite (berkas sementara)" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "peringatan: -j%d dipaksakan dalam submake: resetting mode server pekerja." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Parallel jobs (-j) tidak didukung dalam platform ini." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Mereset kembali ke mode satu job (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "" -#: src/main.c:2250 +#: src/main.c:2262 #, fuzzy, c-format msgid "Using output-sync mutex %s\n" msgstr "unknown output-sync type '%s'" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Symbolic links tidak didukung: menonaktifkan opsi -L." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Memperbarui makefiles....\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefile '%s' mungkin berupa loop; tidak membuat lagi.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: failed to load" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Gagal membuat lagi makefile '%s'." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Makefile yang dimasukan '%s' tidak ditemukan." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefile '%s' tidak ditemukan" -#: src/main.c:2700 +#: src/main.c:2717 #, fuzzy, c-format msgid "Couldn't change back to original directory" msgstr "Tidak dapat kembali ke direktori asal." -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Menjalankan kembali[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL berisi lebih dari satu target" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Tidak ada targets" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Target tidak dispesifikasikan dan tidak ditemukan makefile" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Memperbarui tujuan target....\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "Peringatan: Clock skew terdeteksi. Pembuatan anda mungkin tidak sempurna" -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "opsi '%s%s' membutuhkan sebuah argument string yang tidak kosong" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "opsi '-%c' membutuhkan sebuah argument `string' yang tidak kosong" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sAplikasi ini dibuat untuk %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sAplikasi ini dibuat untuk %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, fuzzy, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later \n" "Language-Team: Italian \n" @@ -135,7 +135,7 @@ msgstr " (comando interno):" msgid " (from '%s', line %lu):\n" msgstr " (da «%s» riga %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -143,62 +143,62 @@ msgstr "" "\n" "# Directory\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: impossibile eseguire stat.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (key %s, mtime %I64u) non può essere aperto.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (device %d, inode [%d,%d,%d]) non può essere aperto.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (device %ld, inode %ld) non può essere aperto.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (key %s, mtime %I64u): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (device %d, inode [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (device %ld, inode %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "No" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " file, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "no" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " impossibilità" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " finora." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " impossibilità nelle directory %lu.\n" @@ -218,182 +218,182 @@ msgstr "La variabile ricorsiva «%s» si autoreferenzia (alla fine)" msgid "unterminated variable reference" msgstr "riferimento alla variabile non terminato" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "È stato specificato un set di istruzioni per il file «%s» a %s:%lu," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" "È stato trovato un set di istruzioni per il file «%s» mediante una regola di " "ricerca implicita," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "ma ora «%s» viene considerato lo stesso file di «%s»." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" "Il set di istruzioni per «%s» verrà ignorato in favore di quello per «%s»." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "impossibile rinominare la regola \"due punti\" «%s» con la regola \"doppio " "due punti\" «%s»" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "impossibile rinominare la regola \"doppio due punti\" «%s» con la regola " "\"due punti\" «%s»" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Eliminazione del file intermedio «%s»" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Rimozione dei file intermedi...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr "" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Ora corrente" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: intervallo errato per la marcatura temporale; sostituzione di %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Non è un obiettivo:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# File \"precious\" (prerequisito di .PRECIOUS)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Obiettivo \"phony\" (prerequisito di .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Obiettivo a riga di comando." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Un makefile predefinito, da MAKEFILES, o da -include/sinclude." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Regola incorporata" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Regola di ricerca implicita completata." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Regola di ricerca implicita non completata." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Stem implicito/statico del modello: «%s»\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Il file è un prerequisito intermedio." -#: src/file.c:1111 +#: src/file.c:1108 #, fuzzy msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# File \"precious\" (prerequisito di .PRECIOUS)." -#: src/file.c:1113 +#: src/file.c:1110 #, fuzzy msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Obiettivo \"phony\" (prerequisito di .PHONY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Inoltre, genera:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Ora di modifica mai controllata." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Il file non esiste." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Il file è molto vecchio." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Ultima modifica %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Il file è stato aggiornato." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Il file non è stato aggiornato." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Set di istruzioni attualmente in esecuzione (QUESTO È UN BUG)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Dipendenze del set di istruzioni in esecuzione (QUESTO È UN BUG)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Aggiornato con successo." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Richiede di essere aggiornato (-q è impostato)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Aggiornamento non riuscito." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Valore illecito nel membro \"command_state\"!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -401,7 +401,7 @@ msgstr "" "\n" "# File" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -411,7 +411,7 @@ msgstr "" "# statistiche tabella hash dei file:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Campo «%s» non memorizzato: %s" @@ -481,132 +481,137 @@ msgstr "windows32_openpipe(): process_init_fd() non riuscita\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Pulitura del file batch temporaneo %s\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file: file mancante" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "apertura: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "scrittura: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "chiusura: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file: troppi argomenti" -#: src/function.c:2397 +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file: operazione sui file non valida: %s" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "lettura: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file: operazione sui file non valida: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, fuzzy, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "numero di argomenti non sufficienti (%d) per la funzione «%s»" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "non implementata su questa piattaforma: funzione «%s»" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "chiamata non terminata alla funzione «%s»: «%c» mancante" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Nome della funzione vuoto" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Nome della funzione non valido: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Nome della funzione troppo lungo: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Numero di argomenti non sufficienti (%u) per la funzione %s" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Numero massimo di argomenti non sufficienti (%u) per la funzione %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: l'opzione «%s» è ambigua\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: l'opzione «--%s» non ammette argomenti\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: l'opzione «%c%s» non ammette argomenti\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: l'opzione «%s» richiede un argomento\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: opzione «--%s» sconosciuta\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: opzione «%c%s» sconosciuta\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: opzione illecita -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: opzione illecita -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: l'opzione richiede un argomento -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: l'opzione «-W %s» è ambigua\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: l'opzione «-W %s» non ammette argomenti\n" @@ -656,180 +661,180 @@ msgstr "Ricerca di una regola implicita per il membro di archivio per «%s».\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "Ricerca di una regola implicita per il membro di archivio per «%s».\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, fuzzy, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Evitata la ricorsione della regola implicita.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:501 +#: src/implicit.c:503 #, fuzzy, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Tentativo di usare la regola del modello con stem «%.*s».\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Stem troppo lungo: «%s%.*s».\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Prerequisito impossibile «%s» della regola rifiutato.\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Prerequisito implicito impossibile «%s» rifiutato.\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Tentativo di usare il prerequisito della regola «%s».\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Tentativo di usare il prerequisito implicito «%s».\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, fuzzy, c-format msgid "'%s' ought to exist.\n" msgstr "Il file «%s» non esiste.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "" -#: src/implicit.c:842 +#: src/implicit.c:844 #, fuzzy, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "%s: aggiorna l'obbiettivo «%s» a causa di: %s" -#: src/implicit.c:856 +#: src/implicit.c:858 #, fuzzy, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "Il prerequisito «%s» dell'obiettivo «%s» non esiste.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, fuzzy, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Trovato il prerequisito «%s» come VPATH «%s»\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, fuzzy, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Ricerca di una regola con il file intermedio «%s».\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Ricerca di una regola con il file intermedio «%s».\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Prerequisito impossibile «%s» della regola rifiutato.\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, fuzzy, c-format msgid "Not found '%s'.\n" msgstr "Nessuna regola implicita trovata per «%s».\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, fuzzy, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Trovata una regola implicita per «%s».\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, fuzzy, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Ricerca di una regola implicita per «%s».\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Nessuna regola implicita trovata per «%s».\n" -#: src/job.c:380 +#: src/job.c:377 #, fuzzy msgid "Cannot create a temporary file" msgstr "Impossibile creare un file temporaneo\n" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (creato dump del core)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (ignorato)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:587 +#: src/job.c:584 #, fuzzy, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Errore %d%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Attesa per i processi non terminati...." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Processo figlio vivo %p (%s) con PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (remoto)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Interruzione del processo figlio vincente %p con PID %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Interruzione del processo figlio perdente %p con PID %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Pulitura del file batch temporaneo %s\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Pulitura del file batch temporaneo %s non riuscita (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "" "Rimozione del processo figlio %p con PID %s%s dalla catena di esecuzione.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Token rilasciato per il processo figlio %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() non riuscita all'avvio del processo (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -838,94 +843,104 @@ msgstr "" "\n" "Contati %d argomenti nell'avvio fallito\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "" "Inserimento del processo figlio %p (%s) con PID %s%s nella catena di " "esecuzione.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Token ottenuto per il processo figlio %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: aggiorna l'obbiettivo «%s» a causa di: %s" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: aggiorna l'obbiettivo «%s» a causa di: %s" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: aggiorna l'obbiettivo «%s» a causa di: %s" -#: src/job.c:1910 -#, fuzzy -msgid "target does not exist" -msgstr "%s: l'obbiettivo «%s» non esiste" +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: aggiorna l'obbiettivo «%s» a causa di: %s" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" "impossibile far rispettare i limiti di carico su questo sistema operativo" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "impossibile far rispettare il limite di carico: " -#: src/job.c:2195 +#: src/job.c:2238 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdin" msgstr "" "nessun'altra gestione del file: impossibile duplicare lo standard input\n" -#: src/job.c:2207 +#: src/job.c:2250 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdout" msgstr "" "nessun'altra gestione del file: impossibile duplicare lo standard output\n" -#: src/job.c:2221 +#: src/job.c:2264 #, fuzzy, c-format msgid "no more file handles: could not duplicate stderr" msgstr "" "nessun'altra gestione del file: impossibile duplicare lo standard error\n" -#: src/job.c:2236 +#: src/job.c:2279 #, fuzzy, c-format msgid "Could not restore stdin" msgstr "Impossibile ripristinare lo standard input\n" -#: src/job.c:2244 +#: src/job.c:2287 #, fuzzy, c-format msgid "Could not restore stdout" msgstr "Impossibile ripristinare lo standard output\n" -#: src/job.c:2252 +#: src/job.c:2295 #, fuzzy, c-format msgid "Could not restore stderr" msgstr "Impossibile ripristinare lo standard error\n" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" "make ha interrotto il processo figlio con pid %s, è ancora in attesa del " "processo con pid %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: lo spazio dell'ambiente potrebbe essere esaurito" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL cambiata (era «%s», adesso è «%s»)\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Creazione del file batch temporaneo %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -934,7 +949,7 @@ msgstr "" "Contenuti del file batch:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -943,7 +958,7 @@ msgstr "" "Contenuti del file batch:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -989,21 +1004,21 @@ msgstr "" msgid "The 'load' operation is not supported on this platform" msgstr "L'operazione «load» non è supportata su questa piattaforma." -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Opzioni:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignorato per compatibilità.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" " -B, --always-make Genera tutti gli obiettivi " "incondizionatamente.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -1012,17 +1027,17 @@ msgstr "" " Cambia DIRECTORY prima di fare qualunque " "cosa.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d Mostra molte informazioni di debug.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=FLAGS] Mostra diversi tipi di informazioni di debug.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1031,14 +1046,14 @@ msgstr "" " Le variabili ambiente sovrascrivono i " "makefile.\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E STRINGA, --eval=TESTO Analizza STRINGA come estratta dal " "makefile.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1046,16 +1061,16 @@ msgstr "" " -f FILE, --file=FILE, --makefile=FILE\n" " Legge FILE come un makefile.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Mostra questo messaggio ed esce.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" " -i, --ignore-errors Ignora gli errori dai set di istruzioni.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1063,7 +1078,7 @@ msgstr "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Cerca nella DIRECTORY per i makefile inclusi.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1071,18 +1086,18 @@ msgstr "" " -j [N], --jobs[=N] Permette N processi alla volta; infiniti se " "non viene specificato l'argomento.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Continua l'esecuzione quando non è possibile " "creare alcuni obiettivi.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1092,7 +1107,7 @@ msgstr "" " Non avvia processi multipli a meno che il " "carico di lavoro non sia sotto N.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1100,7 +1115,7 @@ msgstr "" " -L, --check-symlink-times Usa il più recente mtime tra i collegamenti " "simbolici e l'obiettivo.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1110,7 +1125,7 @@ msgstr "" " Non esegue alcun set di istruzioni; lo stampa " "solamente.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1120,7 +1135,7 @@ msgstr "" " Considera il FILE come molto vecchio e non " "riesegue make.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1129,11 +1144,11 @@ msgstr "" " Sincronizza l'output dei processi paralleli " "dal TIPO.\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base Stampa il database interno di make.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1141,34 +1156,34 @@ msgstr "" " -q, --question Non avvia alcun set di istruzioni; lo stato di " "uscita indica se è aggiornato.\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Disabilita le regole implicite interne.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Disabilita le impostazioni delle variabili " "interne.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" msgstr "" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Non visualizza i set di istruzioni.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Visualizza il set di istruzioni (Disabilita la " "modalità --silent).\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1177,27 +1192,27 @@ msgstr "" " Disattiva l'opzione -k.\n" # ## touch = in questo contesto è simile alla funzione del comando 'touch' -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Esegue il touch degli obiettivi invece di " "ricrearli.\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Stampa informazioni di tracciamento.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Stampa il numero di versione di make ed esce.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Stampa la directory corrente.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1205,7 +1220,7 @@ msgstr "" " --no-print-directory Disattiva l'opzione -w, anche se era stata " "attivata implicitamente.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1213,7 +1228,7 @@ msgstr "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Considera il FILE come nuovo di zecca.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1221,32 +1236,32 @@ msgstr "" " --warn-undefined-variables Avvisa quando viene referenziata una variabile " "non definita.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "errore in scrittura: stdout" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "una stringa vuota non è valida come nome di file" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "livello di debug specificato sconosciuto «%s»" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "tipo di output-sync (sincronizzazione dell'output) sconosciuto «%s»" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Uso: %s [opzioni] [obiettivo] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1255,7 +1270,7 @@ msgstr "" "\n" "Questo programma è stato compilato per %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1264,18 +1279,18 @@ msgstr "" "\n" "Questo programma è stato compilato per %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "Segnalare i bug a \n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" "%s: catturata una interruzione/eccezione (codice = 0x%lx, indirizzo = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1290,33 +1305,33 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Violazione accesso: operazione di scrittura all'indirizzo 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Violazione accesso: operazione di lettura all'indirizzo 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() impostazione default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "find_and_set_shell() impostazione del percorso di ricerca default_shell = " "%s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (file temporaneo): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1324,155 +1339,160 @@ msgstr "" "attenzione: jobserver non disponibile, viene usato -j1. Aggiungere «+» alla " "regola make superiore." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "attenzione: -j%d forzata nel submake: disattivazione della modalità " "jobserver." -#: src/main.c:1930 +#: src/main.c:1946 #, fuzzy, c-format msgid "Makefile from standard input specified twice" msgstr "Il Makefile dallo standard input è stato specificato due volte." -#: src/main.c:1940 +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Impossibile creare un file temporaneo\n" + +#: src/main.c:1959 #, fuzzy, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite (file temporaneo)" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "attenzione: -j%d forzata nel submake: disattivazione della modalità " "jobserver." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "I processi paralleli (-j) non sono supportati su questa piattaforma." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Reimpostazione alla modalità a singolo processo (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "" -#: src/main.c:2250 +#: src/main.c:2262 #, fuzzy, c-format msgid "Using output-sync mutex %s\n" msgstr "tipo di output-sync (sincronizzazione dell'output) sconosciuto «%s»" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Collegamenti simbolici non supportati: opzione -L disabilitata." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Aggiornamento dei makefile....\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" "Il makefile «%s» potrebbe entrare in un ciclo all'infinito; make non " "rieseguito.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: caricamento non riuscito" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Riesecuzione del makefile «%s» non riuscita." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Il makefile «%s» incluso non è stato trovato." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Il makefile «%s» non è stato trovato" -#: src/main.c:2700 +#: src/main.c:2717 #, fuzzy, c-format msgid "Couldn't change back to original directory" msgstr "Impossibile ritornare alla directory originale." -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Riesecuzione[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL contiene più di un obiettivo" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Nessun obiettivo" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Nessun obiettivo specificato e nessun makefile trovato" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Aggiornamento degli obiettivi....\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "attenzione: rilevato un tempo alterato. La creazione potrebbe essere " "incompleta." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "l'opzione «%s%s» richiede un argomento stringa non vuoto" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "l'opzione «-%c» richiede un argomento intero positivo" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sCompilato per %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sCompilato per %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, fuzzy, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later , 2001. # Thanks to NISHIJIMA Takanori # GOTO Masanori , 2003-2004. -# Takeshi Hamasaki , 2011, 2014, 2016, 2019, 2020, 2022. +# Takeshi Hamasaki , 2011, 2014, 2016, 2019, 2020, 2022, 2023. # msgid "" msgstr "" -"Project-Id-Version: make 4.3.92\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2022-10-31 02:23-0400\n" -"PO-Revision-Date: 2022-10-25 01:14+0900\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-02-05 12:05+0900\n" "Last-Translator: Takeshi Hamasaki \n" "Language-Team: Japanese \n" "Language: ja\n" @@ -20,7 +20,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: Poedit 2.4.2\n" -"X-Poedit-Basepath: make-4.3.90\n" +"X-Poedit-Basepath: make-4.4.0.90\n" "X-Poedit-SearchPath-0: .\n" #: src/ar.c:47 @@ -134,7 +134,7 @@ msgstr " (ビルトイン):" msgid " (from '%s', line %lu):\n" msgstr " (ファイル '%s', %lu 行目):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -142,62 +142,62 @@ msgstr "" "\n" "# ディレクトリ\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: 状態を調べられませんでした.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (key %s, mtime %s): 開けませんでした.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (device %d, inode [%d,%d,%d]): 開けませんでした.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (device %ld, inode %ld): 開けませんでした.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (key %s, mtime %s): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (device %d, inode [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (device %ld, inode %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "0" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " 個のファイル, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "0" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " 個の適用不能ファイル名" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " (ここまでに)." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " 個の適用不能ファイル名 (%lu 個のディレクトリ内).\n" @@ -217,173 +217,173 @@ msgstr "再帰的変数 '%s' が(最終的に)それ自身を参照していま msgid "unterminated variable reference" msgstr "終端のない変数参照" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "ファイル '%s' のためののレシピが %s:%lu で指定されました," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "ファイル '%s' のためのレシピが暗黙ルールの探索で見つかりました," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "しかし今は '%s' と '%s' は同じファイルと見なされます." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "'%s' のためのレシピは, '%s' のためのものを優先するため無視されます." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "シングルコロン '%s' からダブルコロン '%s' に名前を変えられません" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "ダブルコロン '%s' からシングルコロン '%s' に名前を変えられません" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** 中間ファイル '%s' を削除します" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "中間ファイルを削除しています...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "%s は .NOTINTERMEDIATE と .INTERMEDIATE の両方にはなれません" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "%s は .NOTINTERMEDIATE と .SECONDARY の両方にはなれません" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr ".NOTINTERMEDIATE と .SECONDARY は相互に排他的です" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "現在時刻" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: タイムスタンプが範囲外です -- 代りに %s とします" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# ターゲットではありません:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# 特別扱いのファイル (.PRECIOUS の必要条件)" -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# 疑似ターゲット (.PHONY の必要条件)" -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# コマンドラインターゲット." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# デフォルトまたは MAKEFILES, -include/sinclude Makefile." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# ビルトインルール" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# 暗黙ルールの探索が行われました." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# 暗黙ルールの探索は行われませんでした." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# 暗黙/静的パターン語幹: '%s'\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# ファイルは中間必要条件です." -#: src/file.c:1111 +#: src/file.c:1108 msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# ファイルは .NOTINTERMEDIATE の必要条件です。" -#: src/file.c:1113 +#: src/file.c:1110 msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# ファイルはセカンダリです (.SECONDARYの必要条件)" -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# さらに make:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# 修正時刻がチェックされることはありません." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# ファイルが存在しません." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# ファイルが非常に古いです." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# 最終修正 %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# ファイルは更新されています." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# ファイルは更新されていません." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# レシピを現在実行中です (*これはバグです*)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# 依存関係レシピを実行中です (*これはバグです*)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# 更新に成功しました." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# 更新が必要です (-q がセットされています)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# 更新に失敗しました." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# 'command_state' メンバに無効な値です!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -391,7 +391,7 @@ msgstr "" "\n" "# ファイル" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -401,7 +401,7 @@ msgstr "" "# ファイルハッシュテーブルの状態:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: フィールド '%s' はキャッシュされていません: %s" @@ -466,132 +466,137 @@ msgstr "windows32_openpipe (): process_init_fd() が失敗\n" msgid "Cleaning up temporary batch file %s\n" msgstr "一時的なバッチファイル %s を消去します\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file: ファイル名が指定されていません" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file: 引数が多すぎます" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file: ファイルを開けません '%s': %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file: 無効なファイル操作: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "引数の数(%u)が関数 '%s' にとって不十分です" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "このプラットフォームでは実装されていません: 関数 '%s'" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "終端がない関数呼び出し '%s': '%c' がありません" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "空の関数名" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "無効な関数名: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "関数名が長すぎます: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "引数個数指定(最小値;%u)が無効です: 関数 %s" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "引数個数指定(最大値;%u)が無効です: 関数 %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: オプション '%s' は短すぎて正しく判別できません\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: オプション '--%s' は引数を取ることができません\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: オプション '%c%s' は引数を取ることができません\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: オプション '%s' には引数が1つ必要です\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: オプション '--%s' を認識できません\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: オプション '%c%s' を認識できません\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: 不正なオプション ― %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: 無効なオプション ― %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: オプションには引数が必要です ― %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: オプション '-W %s' は短すぎて正しく判別できません\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: オプション '-W %s' は引数を取ることができません\n" @@ -643,182 +648,182 @@ msgstr "'%s' のための書庫メンバ暗黙ルールを探します.\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "'%s' のための書庫メンバ暗黙ルールが見つかりません.\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "ルール '%s' の暗黙ルールの再帰を回避します.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "前提条件とともにもう一度試しています.\n" -#: src/implicit.c:501 +#: src/implicit.c:503 #, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "語幹 '%3$.*2$s' とのパターンルール '%1$s' を試します.\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "語幹が長すぎます: '%s%.*s'.\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "" "ルール '%s' を却下します.不可能な必要条件 '%s' があるためです.\n" "\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "ルール '%s' を却下します.不可能な暗黙の必要条件 '%s' があるためです.\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "ルールの必要条件 '%s' を試します.\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "暗黙の必要条件 '%s' を試します.\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, c-format msgid "'%s' ought to exist.\n" msgstr "ファイル '%s' が存在する必要があります.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "'%s' を見つけました.\n" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "互換性ルール '%s' を %s のために使用します.\n" -#: src/implicit.c:856 +#: src/implicit.c:858 #, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "ルール '%2$s' の必要条件 '%1$s' は、あるべき条件を満たしていません.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "VPATH '%2$s' で必要条件 '%1$s' を見つけました\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "明示的なファイル '%s' のルールを探します.\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "中間ファイル '%s' のルールを探します.\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "" "ルール '%s' を却下します。不可能な必要条件 '%s' があるためです.\n" "\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, c-format msgid "Not found '%s'.\n" msgstr "'%s' が見つかりません.\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "'%2$s' のための暗黙ルール '%1$s' を見つけました.\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "'%s' のための互換ルールを探します.\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "'%s' のための暗黙ルールがありません.\n" -#: src/job.c:380 +#: src/job.c:377 msgid "Cannot create a temporary file" msgstr "一時ファイルを作成できません" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (コアダンプしました)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (無視されました)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "<ビルトイン>" -#: src/job.c:587 +#: src/job.c:584 #, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] エラー %d%s%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** 未完了のジョブを待っています...." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "生存子プロセス %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (リモート)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "成功した子プロセス %p PID %s %s を回収します\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "失敗した子プロセス %p PID %s %s を回収します\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "一時的なバッチファイル %s を消去します\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "一時的なバッチファイル %s の消去に失敗しました(%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "チェインから子プロセス %p PID %s%s を削除します.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "子プロセス %p (%s) の印を解放しました.\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() が失敗しプロセスが起動できませんでした (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -827,85 +832,96 @@ msgstr "" "\n" "起動の失敗で %d 個の引数がカウントされました\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "チェインに子プロセス %p (%s) PID %s%s を取り込みました.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "子プロセス %p (%s) に印をつけました.\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: ターゲット '%s' を更新: ターゲットは .PHONY" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: ターゲット '%s' を更新: ターゲットが存在しないため" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" -msgstr "%s: ターゲット '%s' を %s のために更新します" +msgstr "%s: ターゲット '%s' を更新: %s" -#: src/job.c:1910 -msgid "target does not exist" -msgstr "ターゲットが存在しません" +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: ターゲット '%s' を更新: 不明な理由のため" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "このオペレーティングシステムではシステム負荷制限を加えられません" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "システム負荷制限を課すことができませんでした: " -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "ファイルハンドルを使い尽くしました: 標準入力を複製できません" -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "ファイルハンドルを使い尽くしました: 標準出力を複製できません" -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "ファイルハンドルを使い尽くしました: 標準エラー出力を複製できません" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "標準入力を復元できませんでした" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "標準出力を復元できませんでした" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "標準エラー出力を復元できませんでした" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make は pid %s の子プロセスを回収し, pid %s を待ち続けます\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe:環境設定のためのメモリを使い尽くすかもしれません" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL が変更されました (前は '%s', 今は '%s')\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "一時的なバッチファイル %s を作成します\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -914,7 +930,7 @@ msgstr "" "バッチファイルの内容:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -923,7 +939,7 @@ msgstr "" "バッチファイルの内容 :%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (%d 行目) 不正なシェルコンテキスト (!unixy && !batch_mode_shell)\n" @@ -968,19 +984,19 @@ msgstr "共有オブジェクト %s を解放しました\n" msgid "The 'load' operation is not supported on this platform" msgstr "'load' 命令はこのプラットフォームでサポートされません" -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "オプション:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m 互換性のためのもので, 無視される.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make 無条件に全ターゲットを make する.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -989,16 +1005,16 @@ msgstr "" " make 開始前にディレクトリ DIRECTORY へ移動す" "る.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d デバッグ情報を大量に表示する.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr " --debug[=FLAGS] 様々なタイプのデバッグ情報を表示する.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1006,12 +1022,12 @@ msgstr "" " -e, --environment-overrides\n" " 環境変数が makefile 中の記述に優先する\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr " -E STRING, --eval=STRING STRING を makefile の文として評価する.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1019,15 +1035,15 @@ msgstr "" " -f FILE, --file=FILE, --makefile=FILE\n" " FILE を makefile として読み込む\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help このメッセージを表示して終了する.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors レシピから返ったエラーを無視する.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1037,7 +1053,7 @@ msgstr "" " インクルードする makefile を探索する " "DIRECTORY.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1045,18 +1061,18 @@ msgstr "" " -j [N], --jobs[=N] 一度に N 個までのジョブを許可; 無引数だとジョブ" "数制限なし.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr " --jobserver-style=STYLE ジョブサーバーを使うスタイルを選ぶ.\n" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going あるターゲットが make できなくても実行を続け" "る.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1066,7 +1082,7 @@ msgstr "" " 負荷 が N 未満でない限り複数のジョブを開始しな" "い.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1074,7 +1090,7 @@ msgstr "" " -L, --check-symlink-times シンボリックリンクとターゲットの中で一番新しい " "mtime を使う.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1083,7 +1099,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " レシピを実際に実行しない; 表示するのみ.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1093,7 +1109,7 @@ msgstr "" " FILE をとても古いものと見なして, 再 make しな" "い.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1101,11 +1117,11 @@ msgstr "" " -O[TYPE], --output-sync[=TYPE]\n" " 並列ジョブの出力を TYPE で揃える.\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base make の内部データベースを表示する.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1113,15 +1129,15 @@ msgstr "" " -q, --question レシピを実行しない; 更新済であるかどうかを終了" "ステータスで通知.\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules ビルトインの暗黙ルールを無効にする.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " -R, --no-builtin-variables ビルトインの変数設定を無効にする.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" @@ -1129,17 +1145,17 @@ msgstr "" " --shuffle[={SEED|random|reverse|none}]\n" " 必要条件とターゲットをシャッフルする。\n" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet レシピを表示しない.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent レシピをエコーする ( --silent mode は無効にな" "る).\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1147,26 +1163,26 @@ msgstr "" " -S, --no-keep-going, --stop\n" " -k オプションをオフにする.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch ターゲットを再 make する代わりにタッチする.\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace トレース情報を表示する.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version make のバージョン番号を表示して終了する.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory カレントディレクトリを表示する.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1174,7 +1190,7 @@ msgstr "" " --no-print-directory -w をオフにする. 暗黙に有効な場合でもオフにす" "る.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1182,39 +1198,39 @@ msgstr "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " FILE をいつでも最新として見なす.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" " --warn-undefined-variables 未定義の変数が参照されたときに警告を発する.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "書き込みエラー: 標準出力" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "空の文字列はファイル名としては無効です" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "不明なデバッグレベル指定 '%s'" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "未知の出力同期型 '%s'" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "使い方: %s [オプション] [ターゲット] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1223,7 +1239,7 @@ msgstr "" "\n" "このプログラムは %s 用にビルドされました\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1232,17 +1248,17 @@ msgstr "" "\n" "このプログラムは %s (%s) 用にビルドされました\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "バグレポートは まで.\n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: 割り込み/例外を捕捉しました (code = 0x%lx, addr = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1257,31 +1273,31 @@ msgstr "" "例外フラグ = %lx\n" "例外アドレス = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "アクセス保護違反: アドレス 0x%p での書き込み操作\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "アクセス保護違反: アドレス 0x%p での読み込み操作\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() は default_shell = %s に設定します\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell() パス探索で default_shell = %s にセットしました\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (一時ファイル): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1289,151 +1305,156 @@ msgstr "" "警告: ジョブサーバーが利用不可: 今回は -j1 を使います. 親 make ルールに `+' " "を追加しましょう." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "警告: 副次 make で -j%d を強制指定しました: ジョブサーバーモードをリセットし" "ます." -#: src/main.c:1930 +#: src/main.c:1946 #, c-format msgid "Makefile from standard input specified twice" msgstr "標準入力からの makefile が二回指定されました" -#: src/main.c:1940 +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "makefile を標準入力から一時ファイルに格納できません" + +#: src/main.c:1959 #, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite: 一時ファイル %s: %s" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "警告: makefile で -j%d を強制指定しました: ジョブサーバーモードをリセットしま" "す." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "並列ジョブ (-j) はこのプラットフォームでサポートされません." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "単一ジョブ (-j1) モードにリセットします." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "ジョブサーバーコントローラー %s を使います\n" -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "出力同期 mutex %s を使います\n" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "シンボリックリンクはサポートされていません: -L は無効です." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "シャッフルモード: %s を有効にしました\n" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "makefile の更新中....\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "makefile '%s' 自己再帰のおそれあり ― 再make しません.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: 読み込みに失敗しました" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "makefile '%s' の再makeに失敗しました." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "インクルードされる makefile '%s' が見つかりませんでした." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "makefile '%s' が見つかりませんでした" -#: src/main.c:2700 +#: src/main.c:2717 #, c-format msgid "Couldn't change back to original directory" msgstr "元のディレクトリに戻れませんでした" -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "再実行します[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL が二つ以上のターゲットを含んでいます" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "ターゲットがありません" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "ターゲットが指定されておらず, makefile も見つかりません" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "最終ターゲットを更新中....\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "警告: 時刻のずれを検出. 不完全なビルド結果になるかもしれません." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "'%s%s' オプションは空でない文字列引数を要求します" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "'-%c' オプションは正の整数引数を要求します" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sこのプログラムは %s 用にビルドされました\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sこのプログラムは %s (%s) 用にビルドされました\n" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later , 1996. -# Changwoo Ryu , 2001, 2006, 2013-2014, 2016, 2019-2020, 2022. +# Changwoo Ryu , 2001, 2006, 2013-2014, 2016, 2019-2020, 2022-2023. # # 용어 # - recipe - 명령 (make의 action으로 실행할 명령어를 말함) @@ -15,10 +15,10 @@ # msgid "" msgstr "" -"Project-Id-Version: GNU make 4.3.92\n" +"Project-Id-Version: GNU make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2022-10-31 02:23-0400\n" -"PO-Revision-Date: 2022-10-25 23:09+0900\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-15 23:57+0900\n" "Last-Translator: Changwoo Ryu \n" "Language-Team: Korean \n" "Language: ko\n" @@ -139,7 +139,7 @@ msgstr " (내장):" msgid " (from '%s', line %lu):\n" msgstr " ('%s'에서, %lu번째 줄):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -147,64 +147,64 @@ msgstr "" "\n" "# 디렉터리\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: stat을 할 수 없었습니다.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (키 %s, 변경시각 %s): 열 수 없습니다.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (장치 %d, 아이노드 [%d,%d,%d]): 열 수 없습니다.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (장치 %ld, 아이노드 %ld): 열 수 없습니다.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (키 %s, 변경시각 %s): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (장치 %d, 아이노드 [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (장치 %ld, 아이노드 %ld): " # 여기서 No는 "No files"라고 쓰인다. 궁극적으로 msgid가 고쳐져야 함 -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "0개" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " 파일, " # 여기서 no는 "no impossibilities"라고 쓰인다. 궁극적으로 msgid가 고쳐져야 함 -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "0개" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " 불가능" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " 지금까지." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " 디렉토리 %lu개에서 불가능.\n" @@ -224,174 +224,174 @@ msgstr "재귀하는 '%s' 변수는 (ê²°êµ­) 자기 자신을 참조하고 있 msgid "unterminated variable reference" msgstr "변수 참조에 끝마침이 없습니다" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "파일 '%s'의 %s:%lu에서 명령을 지정했습니다." -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "파일 '%s'에 대한 명령을 묵시적 규칙 탐색으로 찾았습니다." -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "하지만 '%s' 파일은 이제 '%s'ê³¼(와) 같은 파일로 간주합니다." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "'%s'에 대한 명령은 '%s'에 대한 명령이 우선하므로 무시합니다." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "단일 콜론 '%s'을(를) 이중 콜론 '%s'(으)로 이름을 바꿀 수 없습니다" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "이중 콜론 '%s'을(를) 단일 콜론 '%s'(으)로 이름을 바꿀 수 없습니다" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** 중간 파일 '%s'을(를) 삭제합니다" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "중간 파일을 제거합니다...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "%s은(는) 동시에 .NOTINTERMEDIATE 및 .INTERMEDIATE이 될 수 없습니다" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "%s은(는) 동시에 .NOTINTERMEDIATE 및 .SECONDARY가 될 수 없습니다." -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr ".NOTINTERMEDIATE 및 .SECONDARY는 같이 쓸 수 없습니다." -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "현재 시각" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: 타임스탬프가 범위를 벗어나므로, %s을(를) 대체합니다" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# 타겟이 아님:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# 프레시어스 파일 (.PRECIOUS의 선행조건)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# 포니 타겟 (.PHONY의 선행조건)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# 명령행 타겟." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "" "# 기본 메이크파일, MAKEFILES 메이크파일, 또는 -include/sinclude 메이크파일." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# 내장 규칙" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# 묵시적 규칙 탐색이 완료되었습니다." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# 묵시적 규칙 탐색이 완료되지 않았습니다." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# 묵시적/고정 패턴 스템: '%s'\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# 파일이 중간단계의 선행조건입니다." -#: src/file.c:1111 +#: src/file.c:1108 msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# 파일이 .NOTINTERMEDIATE의 선행조건입니다." -#: src/file.c:1113 +#: src/file.c:1110 msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# 파일이 부수적입니다 (.SECONDARY의 선행조건)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# 다음도 만듭니다:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# 변경 시각이 결코 검사되지 않았음." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# 파일이 없습니다." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# 파일이 매우 오래되었습니다." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# 마지막 변경 %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# 파일을 업데이트했습니다." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# 파일을 업데이트하지 않았습니다." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# 현재 실행중인 명령(이것은 버그입니다)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# 현재 실행중인 의존성(이것은 버그입니다)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# 성공적으로 업데이트." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# 업데이트 필요(-q 설정됨)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# 업데이트 실패." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# 'command_status' 멤버에 값이 잘못되었습니다!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -399,7 +399,7 @@ msgstr "" "\n" "# 파일" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -409,7 +409,7 @@ msgstr "" "# 파일 해시 테이블 통계:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: '%s' 필드가 캐시에 없음: %s" @@ -474,132 +474,137 @@ msgstr "windows32_openpipe(): process_init_fd() 실패\n" msgid "Cleaning up temporary batch file %s\n" msgstr "임시 배치 파일 %s을(를) 지웁니다\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file: 파일 이름이 없습니다" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file: 인자가 너무 많습니다" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file: '%s' 열기 실패: %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file: 올바르지 않은 파일 동작: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "함수 '%2$s'에 인자 갯수(%1$u)가 부족합니다" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "이 플랫폼에서는 구현되지 않았습니다: '%s' 함수" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "함수 '%s'에 대해 종료되지 않은 호출: '%c' 문자가 빠졌음" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "빈 함수 이름" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "잘못된 함수 이름: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "함수 이름이 너무 깁니다: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "함수 `%2$s'에 최소 인자 갯수(%1$u)가 잘못되었습니다" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "함수 `%2$s'에 최대 인자 갯수(%1$u)가 잘못되었습니다" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: '%s' 옵션은 애매한 옵션입니다\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: '--%s' 옵션은 인수를 허용하지 않습니다\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: '%c%s' 옵션은 인수를 허용하지 않습니다\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: '%s' 옵션은 인수가 필요합니다\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: 인식할 수 없는 옵션 '--%s'\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: 인식할 수 없는 옵션 '%c%s'\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: 잘못된 옵션 -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: 부적절한 옵션 -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: 이 옵션은 인수가 필요합니다 -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: '-W %s' 옵션은 애매한 옵션입니다\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: '-W %s' 옵션은 인수를 허용하지 않습니다\n" @@ -649,182 +654,182 @@ msgstr "'%s'에 대한 아카이브멤버 묵시적 규칙을 찾고 있습니 msgid "No archive-member implicit rule found for '%s'.\n" msgstr "'%s'에 대한 아카이브멤버 묵시적 규칙이 없습니다.\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "'%s' 규칙에 대한 묵시적 규칙의 재귀를 피함.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "더 시도하는 중.\n" # 스템(stem)이란 패턴 룰에서 prefix/suffix를 제외한 나머지를 말한다. # 예를 들어 `%.c'라는 패턴에 `hello.c'가 들어 맞았을 경우 stem은 `hello'이다. -#: src/implicit.c:501 +#: src/implicit.c:503 #, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "'%s' 패턴 규칙 시도 ('%.*s' 스템).\n" # 스템(stem)이란 패턴 룰에서 prefix/suffix를 제외한 나머지를 말한다. # 예를 들어 `%.c'라는 패턴에 `hello.c'가 들어 맞았을 경우 stem은 `hello'이다. -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "스템이 너무 깁니다: '%s%.*s'.\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "불가능한 규칙 선행조건 '%2$s' 때문에 '%1$s' 규칙은 거부됩니다.\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "불가능한 묵시적 선행조건 '%2$s' 때문에 '%1$s' 규칙은 거부됩니다.\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "규칙 선행조건 '%s'을(를) 시도합니다.\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "묵시적 선행조건 '%s'을(를) 시도합니다.\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, c-format msgid "'%s' ought to exist.\n" msgstr "'%s'이(가) 있어야 합니다.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "'%s' 발견.\n" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "'%2$s' 때문에 호환성 규칙 '%1$s' 사용.\n" -#: src/implicit.c:856 +#: src/implicit.c:858 #, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "규칙 '%2$s'의 선행조건 %1$s이(가) 있어야 한다고 검증되지 않았습니다.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "VPATH '%2$s'에서 선행조건 '%1$s'을(를) 찾았습니다.\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "명시적 파일 '%s'에 대한 규칙을 찾고 있습니다.\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "중간 파일 '%s'에 대한 규칙을 찾고 있습니다.\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "불가능한 선행조건 '%2$s' 때문에 '%1$s' 규칙은 거부됩니다.\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, c-format msgid "Not found '%s'.\n" msgstr "'%s' 찾을 수 없습니다.\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "'%2$s'에 대한 묵시적 규칙 '%1$s' 찾았습니다.\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "'%s'에 대한 호환 규칙을 찾고 있습니다.\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "'%s'에 대한 묵시적 규칙이 없습니다.\n" -#: src/job.c:380 +#: src/job.c:377 msgid "Cannot create a temporary file" msgstr "임시 파일을 만들 수 없습니다" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (메모리 덤프됨)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (무시됨)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "<내장>" -#: src/job.c:587 +#: src/job.c:584 #, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] 오류 %d%s%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** 끝나지 않은 작업을 기다리고 있습니다...." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "살아있는 하위 프로세스 %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (원격)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "성공한 하위 프로세스 %p PID %s %s을(를) 거둬들입니다\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "실패한 하위 프로세스 %p PID %s %s을(를) 거둬들입니다\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "임시 배치 파일 %s을(를) 지웁니다\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "임시 배치 파일 %s 지우기가 실패했습니다(%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "하위 프로세스 %p PID %s%s을(를) 체인에서 지웁니다.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "하위 프로세스 %p(%s)에 토큰을 내어 줍니다.\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy()가 프로세스를 시작하는 데 실패했습니다(e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -833,86 +838,97 @@ msgstr "" "\n" "실행 실패에서 인수 %d개\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "하위 프로세스 %p(%s) PID %s%s을(를) 체인에 넣습니다.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "하위 프로세스 %p(%s)에서 토큰을 받았습니다.\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: '%s' 타겟 업데이트, 이유: 타겟이 .PHONY입니다" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: '%s' 타겟 업데이트, 이유: 타겟이 없습니다" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: '%s' 타겟 업데이트, 이유: %s" -#: src/job.c:1910 -msgid "target does not exist" -msgstr "타겟이 없습니다" +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: '%s' 타겟 업데이트, 이유: 알 수 없는 이유" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "이 운영 체제에서는 부하 제한을 강제할 수 없습니다" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "부하 제한을 강제할 수 없습니다: " -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "파일 핸들이 없음: 표준 입력을 복사할 수 없습니다" -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "파일 핸들이 없음: 표준 출력을 복사할 수 없습니다" -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "파일 핸들이 없음: 표준 오류를 복사할 수 없습니다" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "표준 입력을 복구할 수 없습니다" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "표준 출력을 복구할 수 없습니다" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "표준 오류를 복구할 수 없습니다" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" "하위 프로세스 PID %s을(를) 거둬들이고, 아직 PID %s을(를) 기다리고 있습니다\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: 환경 변수 공간이 바닥났을 수 있습니다" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL이 바뀌었습니다(과거 '%s', 현재 '%s')\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "임시 배치 파일 %s을(를) 만듭니다\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -921,7 +937,7 @@ msgstr "" "배치 파일 내용:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -931,7 +947,7 @@ msgstr "" "\t%s\n" # ??? 디버깅 메세지 -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (%d번째 줄) 잘못된 쉘 컨텍스트 (!unixy && !batch_mode_shell)\n" @@ -976,19 +992,19 @@ msgstr "공유 오브젝트 %s 읽어들임 해제\n" msgid "The 'load' operation is not supported on this platform" msgstr "'load' 작업은 이 플랫폼에서 지원되지 않습니다" -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "옵션:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m 무시됩니다, 호환을 위해 유지.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make 조건에 관계 없이 모든 타겟을 만듭니다.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -996,17 +1012,17 @@ msgstr "" " -C <디렉터리>, --directory=<디렉터리>\n" " 뭔가 하기 전에 <디렉터리>로 이동합니다.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d 여러 가지 디버깅 정보를 출력합니다.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=플래그] 여러 가지 종류의 디버깅 정보를 출력합니다.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1014,14 +1030,14 @@ msgstr "" " -e, --environment-overrides\n" " 환경변수가 메이크파일 내용에 우선합니다.\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E <문자열>, --eval=<문자열>\n" " <문자열>을 메이크파일 내용으로 해석합니다.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1029,15 +1045,15 @@ msgstr "" " -f <파일>, --file=<파일>, --makefile=<파일>\n" " <파일>을 메이크파일로 읽습니다.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help 이 메시지를 출력하고 끝냅니다.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors 명령에서 발생하는 오류를 무시합니다.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1045,7 +1061,7 @@ msgstr "" " -I <디렉터리>, --include-dir=<디렉터리>\n" " 포함할 메이크파일을 <디렉터리>에서 찾습니다.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1053,17 +1069,18 @@ msgstr "" " -j [N], --jobs[=N] 동시에 N개의 작업 허용, 인자 없으면 무한대로 허" "용.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" -msgstr " --jobserver-style=<스타일> 작업서버가 사용할 스타일을 선택합니다.\n" +msgstr "" +" --jobserver-style=<스타일> 작업 서버가 사용할 스타일을 선택합니다.\n" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going 일부 타겟을 만들 수 없더라도 계속 진행합니다.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1073,7 +1090,7 @@ msgstr "" " 로드가 N 아래로 내려가야 동시 작업 시작합니" "다.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1081,7 +1098,7 @@ msgstr "" " -L, --check-symlink-times 심볼릭 링크와 실제 중 더 최근 수정 시각을\n" " 사용합니다.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1091,7 +1108,7 @@ msgstr "" " 실제로는 아무 명령도 실행하지 않고 표시만 합니" "다.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1102,7 +1119,7 @@ msgstr "" "지\n" " 않습니다.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1110,11 +1127,11 @@ msgstr "" " -O[방식], --output-sync[=방식]\n" " 병렬 작업의 출력을 <방식>에 따라 맞춥니다.\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base make의 내부 데이터베이스를 출력합니다.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1122,15 +1139,15 @@ msgstr "" " -q, --question 명령을 실행하지 않음. 종료 상태로 업데이트\n" " 여부를 알 수 있습니다.\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules 내장 묵시적 규칙을 사용하지 않습니다.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " -R, --no-builtin-variables 내장 변수를 지정하지 못하게 합니다.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" @@ -1138,16 +1155,16 @@ msgstr "" " --shuffle[={<시드>|random|reverse|none}]\n" " 선행조건과 타겟을 무작위로 뒤섞습니다.\n" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet 명령어를 출력하지 않습니다.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent 명령어를 출력합니다. (--silent 모드 끄기)\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1155,31 +1172,31 @@ msgstr "" " -S, --no-keep-going, --stop\n" " -k 옵션을 끕니다.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch 타겟을 다시 만들지 않고 touch만 합니다.\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace 추적 정보를 표시합니다.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version make의 버전 번호를 출력하고 끝냅니다.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory 현재 디렉터리를 출력합니다.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr " --no-print-directory 묵시적으로 켜져 있더라도 -w를 끕니다.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1188,39 +1205,39 @@ msgstr "" " <파일>을 무한히 계속 새로운 것으로 취급합니" "다.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" " --warn-undefined-variables 정의되지 않은 변수를 참조할 때 경고를 냅니다.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "쓰기 오류: 표준 출력" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "빈 문자열은 파일 이름으로 부적절합니다" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "디버깅 단계 지정 '%s'이(가) 잘못되었습니다" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "알 수 없는 output-sync 방식 '%s'" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "사용법: %s [옵션] [타겟] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1229,7 +1246,7 @@ msgstr "" "\n" "이 프로그램은 %s에서 사용하도록 빌드되었습니다\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1238,17 +1255,17 @@ msgstr "" "\n" "이 프로그램은 %s(%s)에서 사용하도록 빌드되었습니다\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "문제점을 로 알려 주십시오.\n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: 인터럽트/예외가 발견되었습니다(코드 = 0x%lx, 주소 = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1263,184 +1280,189 @@ msgstr "" "예외플래그 = %lx\n" "예외주소 = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "접근 권한 위반: 주소 0x%p에 쓰기\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "접근 권한 위반: 주소 0x%p에서 읽기\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() 설정 default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell() 경로 탐색 설정 default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (임시 파일): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "" -"경고: 작업서버를 사용할 수 없습니다: -j1을 사용합니다. 상위 메이크 규칙에 " +"경고: 작업 서버를 사용할 수 없습니다: -j1을 사용합니다. 상위 메이크 규칙에 " "'+'를 추가합니다." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" -"경고: 파생된 메이크에서 -j%d 옵션이 강제되었습니다: 작업서버 모드를 초기화합" +"경고: 파생된 메이크에서 -j%d 옵션이 강제되었습니다: 작업 서버 모드를 초기화합" "니다." -#: src/main.c:1930 +#: src/main.c:1946 #, c-format msgid "Makefile from standard input specified twice" msgstr "표준입력에서 받아들이는 메이크파일이 두 번 이상 지정되었습니다" -#: src/main.c:1940 +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "표준 출력의 메이크파일을 임시 파일에 저장할 수 없습니다" + +#: src/main.c:1959 #, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite: 임시 파일 %s: %s" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" -"경고: 메이크파일에서 -j%d 옵션이 강제되었습니다: 작업서버 모드를 초기화합니" +"경고: 메이크파일에서 -j%d 옵션이 강제되었습니다: 작업 서버 모드를 초기화합니" "다." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "병렬 작업(-j)은 이 플랫폼에서 지원하지 않습니다." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "단일 작업 (-j1) 모드로 돌아갑니다." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "작업 서버 컨트롤러 %s 사용합니다\n" -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "출력 동기화 뮤텍스 %s 사용\n" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "심볼릭 링크를 지원하지 않습니다: -L 옵션을 끕니다." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "뒤섞기 모드 사용: %s\n" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "메이크파일을 업데이트하고 있습니다....\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "메이크파일 '%s'은(는) 반복할 수 있으므로, 다시 만들지 않습니다.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: 읽어들이는데 실패" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "'%s' 메이크파일을 다시 만드는데 실패." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "포함된 메이크파일 '%s'을(를) 찾지 못했습니다." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "메이크파일 '%s'을(를) 찾지 못했습니다" -#: src/main.c:2700 +#: src/main.c:2717 #, c-format msgid "Couldn't change back to original directory" msgstr "원래 디렉터리로 돌아갈 수 없습니다" -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "재실행[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL 안에 타겟이 여러 개 들어 있습니다" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "타겟 없음" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "타겟이 지정되지 않았고 메이크파일이 없습니다" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "최종 타겟을 갱신합니다....\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "경고: 시계가 잘못되었음이 발견되었습니다. 빌드가 불완전할 수 있습니다." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "'%s%s' 옵션은 비어 있지 않은 문자열 인수가 필요합니다" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "'-%c' 옵션은 0보다 큰 정수 인수가 필요합니다" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%s%s 빌드\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%s%s(%s) 빌드\n" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later \n" "Language-Team: Lithuanian \n" @@ -17,8 +17,8 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" "X-Generator: KBabel 1.11.4\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" -"%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"(n%100<10 || n%100>=20) ? 1 : 2);\n" #: src/ar.c:47 #, fuzzy, c-format @@ -132,7 +132,7 @@ msgstr " (integruota)" msgid " (from '%s', line %lu):\n" msgstr " (nuo „%s“, %lu eilutė):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -140,62 +140,62 @@ msgstr "" "\n" "# Aplankai\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: negalėjo bÅ«ti stat'intas.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (key %s, mtime %d): nepavyko atverti.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "" -#: src/dir.c:1155 +#: src/dir.c:1156 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (key %s, mtime %d): nepavyko atverti.\n" -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "" -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "" -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Ne" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " failai, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "ne" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " negalimybės" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " kol kas." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " negalimybės %lu aplankuose.\n" @@ -215,185 +215,185 @@ msgstr "Rekursyvus kintamasis „%s“ nukreipia į save (anksčiau ar vėliau)" msgid "unterminated variable reference" msgstr "neterminuota nuoroda į kintamąjį" -#: src/file.c:272 +#: src/file.c:269 #, fuzzy, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Komandos nurodytos failui „%s“ %s:%lu," -#: src/file.c:277 +#: src/file.c:274 #, fuzzy, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Komandos failui „%s“ rastos pagal neiÅ¡reikÅ¡tinę taisyklių paieÅ¡ką" -#: src/file.c:281 +#: src/file.c:278 #, fuzzy, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "bet „%s“ dabar laikomas tuo pačiu failu kaip „%s“." -#: src/file.c:284 +#: src/file.c:281 #, fuzzy, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Komandos „%s“ bus ignoruojamos „%s“ komandų naudai." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" -#: src/file.c:407 +#: src/file.c:404 #, fuzzy, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Trinamas tarpinis failas „%s“" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Å alinami tarpiniai failai...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr "" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Dabartinis laikas" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Laiko žymė už rėžių; keičiama į %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Ne tikslas:" -#: src/file.c:1094 +#: src/file.c:1091 #, fuzzy msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Brangus failas (reikalingas .PRECIOUS)" -#: src/file.c:1096 +#: src/file.c:1093 #, fuzzy msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Keistas tikslas (reikalingas .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 #, fuzzy msgid "# Command line target." msgstr "# Komandinės eilutės tikslas" -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Numatytoji reikÅ¡mė, MAKEFILES, arba -include/sinclude „make“ failas" -#: src/file.c:1102 +#: src/file.c:1099 #, fuzzy msgid "# Builtin rule" msgstr "" "\n" "# Nėra neiÅ¡reikÅ¡tinių taisyklių." -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# NeiÅ¡reikÅ¡tinių taisyklių paieÅ¡ka atlikta." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# NeiÅ¡reikÅ¡tinių taisyklių paieÅ¡ka neatlikta." -#: src/file.c:1107 +#: src/file.c:1104 #, fuzzy, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# IÅ¡reikÅ¡tinis/statinis Å¡ablono kamienas: „%s“\n" -#: src/file.c:1109 +#: src/file.c:1106 #, fuzzy msgid "# File is an intermediate prerequisite." msgstr "# Failas yra tarpinė sąlyga" -#: src/file.c:1111 +#: src/file.c:1108 #, fuzzy msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Brangus failas (reikalingas .PRECIOUS)" -#: src/file.c:1113 +#: src/file.c:1110 #, fuzzy msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Keistas tikslas (reikalingas .PHONY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Taip pat sukuria:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Modifikacijos laikas niekada netikrintas." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Failas neegzistuoja." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Failas labai senas." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Paskutinį kartą pakeista %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Failas atnaujintas." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Failas nebuvo atnaujintas." -#: src/file.c:1139 +#: src/file.c:1136 #, fuzzy msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Dabar vykdomos komandos (TAI KLAIDA)." -#: src/file.c:1142 +#: src/file.c:1139 #, fuzzy msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Vykdomos priklausomybių komandos (TAI KLAIDA)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Sėkmingai atnaujinta." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Turi bÅ«ti atnaujinta (-q nustatyta)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Nepavyko atnaujinti." -#: src/file.c:1163 +#: src/file.c:1160 #, fuzzy msgid "# Invalid value in 'command_state' member!" msgstr "# Netaisyklinga reikÅ¡mė „command_state“ naryje!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -401,7 +401,7 @@ msgstr "" "\n" "# Failai" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -411,7 +411,7 @@ msgstr "" "# failų maiÅ¡os lentelės statistika:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "" @@ -476,132 +476,137 @@ msgstr "" msgid "Cleaning up temporary batch file %s\n" msgstr "" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, fuzzy, c-format msgid "open: %s: %s" msgstr "%s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, fuzzy, c-format msgid "write: %s: %s" msgstr "raÅ¡ymo klaida: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, fuzzy, c-format msgid "close: %s: %s" msgstr "%s%s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "" + +#: src/function.c:2422 #, fuzzy, c-format msgid "read: %s: %s" msgstr "%s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, fuzzy, c-format msgid "file: invalid file operation: %s" msgstr "%s: netaisyklingas argumentas -- %c\n" -#: src/function.c:2527 +#: src/function.c:2552 #, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "" -#: src/getopt.c:659 +#: src/getopt.c:663 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: parametras `%s' dviprasmis\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: argumentas „--%s“ neleidžia parametro\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: argumentas „%c%s“ neleidžia parametro\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, fuzzy, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: parametrui „%s“ reikia argumento\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: neatpažintas argumentas „--%s“\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: neatpažintas argumentas „%c%s“\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: neleistinas parametras -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: netaisyklingas argumentas -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: parametrui reikia argumento -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: parametras „-W %s“ dviprasmis\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: parametras „-W %s“ neleidžia argumento\n" @@ -651,280 +656,290 @@ msgstr "Rasta neiÅ¡reikÅ¡tinė taisyklė tikslui „%s“.\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "Nerasta neiÅ¡reikÅ¡tinių taisyklių tikslui „%s“.\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, fuzzy, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Nerasta neiÅ¡reikÅ¡tinių taisyklių tikslui „%s“.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:501 +#: src/implicit.c:503 #, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "" -#: src/implicit.c:768 +#: src/implicit.c:770 #, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:770 +#: src/implicit.c:772 #, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:827 +#: src/implicit.c:829 #, fuzzy, c-format msgid "'%s' ought to exist.\n" msgstr "Failas „%s“ neegzistuoja.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "" -#: src/implicit.c:856 +#: src/implicit.c:858 #, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "" -#: src/implicit.c:870 +#: src/implicit.c:872 #, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "" -#: src/implicit.c:885 +#: src/implicit.c:887 #, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "" -#: src/implicit.c:886 +#: src/implicit.c:888 #, fuzzy, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Å alinami tarpiniai failai...\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:931 +#: src/implicit.c:933 #, fuzzy, c-format msgid "Not found '%s'.\n" msgstr "Nerasta neiÅ¡reikÅ¡tinių taisyklių tikslui „%s“.\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, fuzzy, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Rasta neiÅ¡reikÅ¡tinė taisyklė tikslui „%s“.\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, fuzzy, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Rasta neiÅ¡reikÅ¡tinė taisyklė tikslui „%s“.\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, fuzzy, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Nerasta neiÅ¡reikÅ¡tinių taisyklių tikslui „%s“.\n" -#: src/job.c:380 +#: src/job.c:377 msgid "Cannot create a temporary file" msgstr "" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr "" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr "" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 #, fuzzy msgid "" msgstr " (integruota)" -#: src/job.c:587 +#: src/job.c:584 #, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "" -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr "" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "" -#: src/job.c:966 +#: src/job.c:963 #, fuzzy, c-format msgid "Cleaning up temp batch file %s\n" msgstr "%s: nepavyko atverti laikinojo failo: %s" -#: src/job.c:972 +#: src/job.c:969 #, fuzzy, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "%s: nepavyko atverti laikinojo failo: %s" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" "Counted %d args in failed launch\n" msgstr "" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "" + +#: src/job.c:1923 src/job.c:1951 #, fuzzy, c-format msgid "%s: update target '%s' due to: %s" msgstr "%sNėra taisyklės pasiekti tikslui „%s“, kurio reikia „%s“%s" -#: src/job.c:1910 -#, fuzzy -msgid "target does not exist" -msgstr "# Failas neegzistuoja." +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" -#: src/job.c:2106 +#: src/job.c:2149 #, fuzzy msgid "cannot enforce load limit: " msgstr "%s: nepayko pakeisti limito: %s" -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "" -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "" -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "" -#: src/job.c:2869 +#: src/job.c:2920 #, fuzzy, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL pakeistas (buvo „%s“, dabar „%s“)\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -969,211 +984,211 @@ msgstr "" msgid "The 'load' operation is not supported on this platform" msgstr "" -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr "" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr "" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" msgstr "" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" msgstr "" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr "" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" msgstr "" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr "" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " "N.\n" msgstr "" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " "them.\n" msgstr "" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " "it.\n" msgstr "" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" msgstr "" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr "" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" msgstr "" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr "" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr "" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr "" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" msgstr "" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, fuzzy, c-format msgid "write error: stdout" msgstr "raÅ¡ymo klaida: %s" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "negalimas tuščias failo pavadinimas" -#: src/main.c:834 +#: src/main.c:842 #, fuzzy, c-format msgid "unknown debug level specification '%s'" msgstr "nežinomas debug lygio specifikacija „%s“" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Naudojimas: %s [argumentai] [tikslas] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1182,7 +1197,7 @@ msgstr "" "\n" "Å i programa sukompiliuota %s sistemai\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1191,17 +1206,17 @@ msgstr "" "\n" "Å i programa sukompiliuota %s (%s) sistemai\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "PraneÅ¡kite apie klaidas adresu \n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1211,181 +1226,186 @@ msgid "" "ExceptionAddress = 0x%p\n" msgstr "" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "" -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "" -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" -#: src/main.c:1930 +#: src/main.c:1946 #, c-format msgid "Makefile from standard input specified twice" msgstr "" -#: src/main.c:1940 +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "" + +#: src/main.c:1959 #, c-format msgid "fwrite: temporary file %s: %s" msgstr "" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "" -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "" -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "" -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Atnaujinami „make“ failai....\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "" -#: src/main.c:2528 +#: src/main.c:2545 #, fuzzy, c-format msgid "Failed to remake makefile '%s'." msgstr "Nereikia atnaujinti taikinio „%s“" -#: src/main.c:2548 +#: src/main.c:2565 #, fuzzy, c-format msgid "Included makefile '%s' was not found." msgstr "„Make“ failas „%s“ nerastas" -#: src/main.c:2552 +#: src/main.c:2569 #, fuzzy, c-format msgid "Makefile '%s' was not found" msgstr "„Make“ failas „%s“ nerastas" -#: src/main.c:2700 +#: src/main.c:2717 #, fuzzy, c-format msgid "Couldn't change back to original directory" msgstr "Nepavyko grįžti į pirminį aplanką." -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Nėra tikslų" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Nenurodyta tikslų ir nerasta „make“ failų" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Atnaujinami tikslai...\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" -#: src/main.c:3186 +#: src/main.c:3222 #, fuzzy, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "parametrui „-%c“ reikia netuščio argumento" -#: src/main.c:3267 +#: src/main.c:3315 #, fuzzy, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "parametrui „-%c“ reikia teigiamo sveiko argumento" -#: src/main.c:3652 +#: src/main.c:3721 #, fuzzy, c-format msgid "%sBuilt for %s\n" msgstr "" "\n" "%sÅ i programa sukompiliuota %s sistemai\n" -#: src/main.c:3654 +#: src/main.c:3723 #, fuzzy, c-format msgid "%sBuilt for %s (%s)\n" msgstr "" "\n" "%sÅ i programa sukompiliuota %s (%s) sistemai\n" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later \n" "Language-Team: LANGUAGE \n" @@ -128,68 +128,68 @@ msgstr "" msgid " (from '%s', line %lu):\n" msgstr "" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" msgstr "" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "" -#: src/dir.c:1122 +#: src/dir.c:1123 #, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "" -#: src/dir.c:1155 +#: src/dir.c:1156 #, c-format msgid "# %s (key %s, mtime %s): " msgstr "" -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "" -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "" -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr "" -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr "" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr "" -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr "" @@ -209,186 +209,186 @@ msgstr "" msgid "unterminated variable reference" msgstr "" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "" -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "" -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr "" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "" -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "" -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "" -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "" -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "" -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "" -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "" -#: src/file.c:1111 +#: src/file.c:1108 msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "" -#: src/file.c:1113 +#: src/file.c:1110 msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "" -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "" -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "" -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "" -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "" -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "" -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "" -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "" -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "" -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "" -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" msgstr "" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" "# " msgstr "" -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "" @@ -453,132 +453,137 @@ msgstr "" msgid "Cleaning up temporary batch file %s\n" msgstr "" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "" -#: src/function.c:2527 +#: src/function.c:2552 #, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "" @@ -628,277 +633,288 @@ msgstr "" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "" -#: src/implicit.c:326 +#: src/implicit.c:328 #, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:501 +#: src/implicit.c:503 #, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "" -#: src/implicit.c:768 +#: src/implicit.c:770 #, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:770 +#: src/implicit.c:772 #, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:827 +#: src/implicit.c:829 #, c-format msgid "'%s' ought to exist.\n" msgstr "" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "" -#: src/implicit.c:856 +#: src/implicit.c:858 #, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "" -#: src/implicit.c:870 +#: src/implicit.c:872 #, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "" -#: src/implicit.c:885 +#: src/implicit.c:887 #, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "" -#: src/implicit.c:927 +#: src/implicit.c:929 #, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "" -#: src/implicit.c:931 +#: src/implicit.c:933 #, c-format msgid "Not found '%s'.\n" msgstr "" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "" -#: src/job.c:380 +#: src/job.c:377 msgid "Cannot create a temporary file" msgstr "" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr "" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr "" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:587 +#: src/job.c:584 #, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "" -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr "" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" "Counted %d args in failed launch\n" msgstr "" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "" -#: src/job.c:1910 -msgid "target does not exist" +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" msgstr "" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "" -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "" -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "" -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -943,235 +959,235 @@ msgstr "" msgid "The 'load' operation is not supported on this platform" msgstr "" -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr "" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr "" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" msgstr "" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" msgstr "" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr "" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" msgstr "" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr "" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " "N.\n" msgstr "" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " "them.\n" msgstr "" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " "it.\n" msgstr "" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" msgstr "" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr "" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" msgstr "" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr "" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr "" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr "" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" msgstr "" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" "This program built for %s\n" msgstr "" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" "This program built for %s (%s)\n" msgstr "" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1181,177 +1197,182 @@ msgid "" "ExceptionAddress = 0x%p\n" msgstr "" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "" -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "" -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" -#: src/main.c:1930 +#: src/main.c:1946 #, c-format msgid "Makefile from standard input specified twice" msgstr "" -#: src/main.c:1940 +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "" + +#: src/main.c:1959 #, c-format msgid "fwrite: temporary file %s: %s" msgstr "" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "" -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "" -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "" -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "" -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "" -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "" -#: src/main.c:2700 +#: src/main.c:2717 #, c-format msgid "Couldn't change back to original directory" msgstr "" -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later \n" "Language-Team: Dutch \n" @@ -135,7 +135,7 @@ msgstr " (ingebouwd):" msgid " (from '%s', line %lu):\n" msgstr " (uit '%s', regel %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -143,62 +143,62 @@ msgstr "" "\n" "# Mappen\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: kan diens status niet opvragen.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (sleutel %s, wijzigingstijd %s): kan niet worden geopend.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (apparaat %d, inode [%d,%d,%d]): kan niet worden geopend.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (apparaat %ld, inode %ld): kan niet worden geopend.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (sleutel %s, wijzigingstijd %s): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (apparaat %d, inode [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (apparaat %ld, inode %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Geen" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " bestanden, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "geen" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " onmogelijkheden" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " tot nu toe." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " onmogelijkheden in %lu mappen.\n" @@ -219,174 +219,174 @@ msgstr "Recursieve variabele '%s' verwijst naar zichzelf (uiteindelijk)" msgid "unterminated variable reference" msgstr "onafgemaakte verwijzing naar variabele" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Recept voor bestand '%s' is opgegeven in %s:%lu," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Recept voor bestand '%s' werd gevonden via impliciet zoeken," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "maar '%s' wordt nu als hetzelfde bestand beschouwd als '%s'." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Recept voor '%s' zal worden genegeerd ten gunste van die voor '%s'." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "kan enkeldubbelpunts '%s' niet hernoemen tot dubbeldubbelpunts '%s'" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "kan dubbeldubbelpunts '%s' niet hernoemen tot enkeldubbelpunts '%s'" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Verwijderen van tussentijds bestand '%s'" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Verwijderen van tussentijdse bestanden...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "%s kan niet zowel .NOTINTERMEDIATE als .INTERMEDIATE zijn" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "%s kan niet zowel .NOTINTERMEDIATE als .SECONDARY zijn" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr ".NOTINTERMEDIATE en .SECONDARY gaan niet samen" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Huidige tijd" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Tijdsstempel ligt buiten bereik; wordt vervangen door %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Is geen doel:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Waardevol bestand (vereiste van .PRECIOUS)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Nepdoel (vereiste van .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Doel afkomstig van opdrachtregel." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "" "# Een standaard Makefile, of eentje via MAKEFILES of '-include/sinclude'." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Ingebouwde regel" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Impliciete regel-zoekopdracht is uitgevoerd." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Impliciete regel-zoekopdracht is niet uitgevoerd." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Impliciete/statische patroonstam: '%s'\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Bestand is een tussentijds vereiste." -#: src/file.c:1111 +#: src/file.c:1108 msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Bestand is een vereiste van .NOTINTERMEDIATE." -#: src/file.c:1113 +#: src/file.c:1110 msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Bestand is secundair (vereiste van .SECONDARY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Maakt ook:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Wijzigingstijd is nooit gecontroleerd." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Bestand bestaat niet." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Bestand is erg oud." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Laatst gewijzigd %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Bestand is bijgewerkt." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Bestand is niet bijgewerkt." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Nog lopend recept (DIT IS EEN PROGRAMMAFOUT)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Nog lopende receptafhankelijkheden (DIT IS EEN PROGRAMMAFOUT)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Met succes bijgewerkt." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Moet worden bijgewerkt ('-q' is ingesteld)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Bijwerken is mislukt." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Ongeldige waarde in 'command_state'-onderdeel!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -394,7 +394,7 @@ msgstr "" "\n" "# Bestanden" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -404,7 +404,7 @@ msgstr "" "# hashtabel-statistieken van bestanden:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Veld '%s' is niet gecached: %s" @@ -469,132 +469,137 @@ msgstr "windows32_openpipe(): process_init_fd() is mislukt\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Opschonen van tijdelijk batch-bestand %s\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file: ontbrekende bestandsnaam" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open(): %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write(): %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close(): %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file: te veel argumenten" -#: src/function.c:2397 +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file: ongeldige bestandsbewerking: %s" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read(): %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file: ongeldige bestandsbewerking: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "onvoldoende aantal argumenten (%u) voor functie '%s'" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "niet-geïmplementeerd op dit platform: functie '%s'" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "onafgemaakte aanroep van functie '%s': '%c' ontbreekt" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Lege functienaam" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Ongeldige functienaam: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Functienaam is te lang: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Ongeldig minimumaantal argumenten (%u) voor functie %s" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Ongeldig maximumaantal argumenten (%u) voor functie %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: optie '%s' is niet eenduidig\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: optie '--%s' staat geen argument toe\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: optie '%c%s' staat geen argument toe\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: optie '%s' vereist een argument\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: onbekende optie '--%s'\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: onbekende optie '%c%s'\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: ongeldige optie -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: ongeldige optie -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: optie vereist een argument -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: optie '-W %s' is niet eenduidig\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: optie '-W %s' staat geen argument toe\n" @@ -646,178 +651,178 @@ msgstr "Zoeken naar archiefonderdeel-impliciete regel voor '%s'.\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "Geen archiefonderdeel-impliciete regel gevonden voor '%s'.\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Impliciete regelrecursie wordt vermeden voor regel '%s'.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "Verwoedere poging.\n" -#: src/implicit.c:501 +#: src/implicit.c:503 #, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Patroonregel '%s' wordt geprobeerd met stam '%.*s'.\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Stam is te lang: '%s%.*s'.\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Regel '%s' met onmogelijke regelvereiste '%s' wordt verworpen.\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Regel '%s' met onmogelijke impliciete vereiste '%s' wordt verworpen.\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Proberen van regelvereiste '%s'.\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Proberen van impliciete vereiste '%s'.\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, c-format msgid "'%s' ought to exist.\n" msgstr "'%s' zou moeten bestaan.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "'%s' werd gevonden.\n" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "Compatibiliteitsregel '%s' wordt gebruikt vanwege '%s'.\n" -#: src/implicit.c:856 +#: src/implicit.c:858 #, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "Vereiste '%s' van regel '%s' voldoet niet als zou-moeten-bestaan.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Vereiste '%s' gevonden als VPATH '%s'.\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Zoeken naar een regel met expliciet bestand '%s'.\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Zoeken naar een regel met tussentijds bestand '%s'.\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Regel '%s' met onmogelijke vereiste '%s' wordt verworpen.\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, c-format msgid "Not found '%s'.\n" msgstr "'%s' werd niet gevonden.\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Impliciete regel '%s' voor '%s' gevonden.\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Zoeken naar compatibiliteitsregel voor '%s'.\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Geen impliciete regel voor '%s' gevonden.\n" -#: src/job.c:380 +#: src/job.c:377 msgid "Cannot create a temporary file" msgstr "Kan geen tijdelijk bestand aanmaken" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (geheugendump gemaakt)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (genegeerd)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:587 +#: src/job.c:584 #, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Fout %d%s%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Wachten op onvoltooide taken..." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Levend dochterproces %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (ginds)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Beëindigen van winnend dochterproces %p PID %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Beëindigen van verliezend dochterproces %p PID %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Opschonen van tijdelijk batch-bestand %s\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Opschonen van tijdelijk batch-bestand %s is mislukt (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Verwijderen van dochterproces %p PID %s%s uit de ketting.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Token vrijgegeven voor dochterproces %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() kan geen proces starten (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -826,91 +831,102 @@ msgstr "" "\n" "%d argumenten geteld bij mislukte start\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Opname van dochterproces %p (%s) PID %s%s in de ketting.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Token verkregen voor dochterproces %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: bijwerken van doel '%s' vanwege: %s" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: bijwerken van doel '%s' vanwege: %s" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: bijwerken van doel '%s' vanwege: %s" -#: src/job.c:1910 -msgid "target does not exist" -msgstr "doel bestaat niet" +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: bijwerken van doel '%s' vanwege: %s" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "kan belastingsgrenzen niet afdwingen op dit besturingssysteem" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "kan belastingsgrens niet afdwingen: " -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "" "geen bestandshandvatten meer beschikbaar: kan standaardinvoer niet dupliceren" -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "" "geen bestandshandvatten meer beschikbaar: kan standaarduitvoer niet " "dupliceren" -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "" "geen bestandshandvatten meer beschikbaar: kan standaardfoutuitvoer niet " "dupliceren" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "Kan standaardinvoer niet herstellen" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "Kan standaarduitvoer niet herstellen" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "Kan standaardfoutuitvoer niet herstellen" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" "'make' heeft dochterproces met PID %s verwerkt, maar wacht nog op PID %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: mogelijk geen omgevingsruimte meer beschikbaar" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL is gewijzigd (was '%s', is nu '%s')\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Maken van tijdelijk batch-bestand %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -919,7 +935,7 @@ msgstr "" "Inhoud van batch-bestand:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -928,7 +944,7 @@ msgstr "" "Inhoud van batch-bestand:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (regel %d) Onjuiste shell-context (!unixy && !batch_mode_shell)\n" @@ -973,53 +989,53 @@ msgstr "Lossen van gedeeld object %s\n" msgid "The 'load' operation is not supported on this platform" msgstr "De 'load'-operatie wordt op dit platform niet ondersteund." -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Opties:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr "" " -b, -m (genegeerd, maar herkend wegens " "compatibiliteit)\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make onvoorwaardelijk alle doelen maken\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr "" " -C MAP, --directory=MAP naar deze map gaan alvorens iets te doen\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d veel informatie weergeven voor het debuggen\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=VLAGGEN] verschillende soorten debuginformatie " "weergeven\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" msgstr "" " -e, --environment-overrides omgevingsvariabelen gaan boven Makefiles\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E TEKST, --eval=TEKST deze TEKST als Makefile-statement evalueren\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1028,15 +1044,15 @@ msgstr "" " het gegeven bestand als Makefile gebruiken\n" "\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help deze hulptekst tonen en stoppen\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors alle fouten in recepten negeren\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1044,7 +1060,7 @@ msgstr "" " -I MAP, --include-dir=MAP deze map doorzoeken naar ingesloten " "Makefiles\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1052,18 +1068,18 @@ msgstr "" " -j [N], --jobs[=N] het uitvoeren van N taken tegelijk toestaan;\n" " zonder N is het aantal onbeperkt\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr " --jobserver-style=SOORT te gebruiken soort taakserver\n" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going doorgaan als een doel niet gemaakt kan " "worden\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1073,7 +1089,7 @@ msgstr "" " alleen extra taken starten als de\n" " systeembelasting lager is dan N\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1082,7 +1098,7 @@ msgstr "" " de laatste wijzigingstijd gebruiken\n" "\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1091,7 +1107,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " recepten niet uitvoeren, alleen weergeven\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1101,7 +1117,7 @@ msgstr "" " BESTAND als oud beschouwen, niet opnieuw " "maken\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1110,12 +1126,12 @@ msgstr "" " uitvoer van parallelle taken synchroniseren " "op TYPE\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base interne gegevensbank van 'make' weergeven\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1123,60 +1139,60 @@ msgstr "" " -q, --question geen recepten uitvoeren; de afsluitwaarde\n" " geeft aan of alles bijgewerkt is\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules ingebouwde impliciete regels uitzetten\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables ingebouwde instellingen van variabelen " "uitzetten\n" "\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" msgstr "" " --shuffle[={SEED|random|reverse|none}] vereisten en doelen husselen\n" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet recepten niet weergeven\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent recepten weergeven (--silent-modus " "uitschakelen)\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" msgstr " -S, --no-keep-going, --stop optie '-k' uitzetten\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch doelen aanraken in plaats van opnieuw maken\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace tracing-informatie weergeven\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version programmaversie tonen en stoppen\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory de huidige map weergeven\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1184,7 +1200,7 @@ msgstr "" " --no-print-directory optie '-w' uitzetten, ook als deze impliciet\n" " was aangezet\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1192,7 +1208,7 @@ msgstr "" " -W BESTAND, --what-if=BESTAND, --new-file=BESTAND, --assume-new=BESTAND\n" " BESTAND als oneindig nieuw beschouwen\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1200,32 +1216,32 @@ msgstr "" " --warn-undefined-variables waarschuwen als naar een ongedefinieerde\n" " variabele wordt verwezen\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "schrijffout: standaarduitvoer" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "lege tekenreeks is ongeldig als bestandsnaam" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "onbekende aanduiding '%s' voor debug-niveau" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "onbekend uitvoersynchronisatie-type: '%s'" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Gebruik: %s [OPTIES] [DOEL]...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1234,7 +1250,7 @@ msgstr "" "\n" "Dit programma is gecompileerd voor %s.\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1243,19 +1259,19 @@ msgstr "" "\n" "Dit programma is gecompileerd voor %s (%s).\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "" "Rapporteer programmafouten aan ;\n" "meld gebreken in de vertaling aan .\n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Onderbreking/uitzondering gekregen (code = 0x%lx, adres = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1270,32 +1286,32 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Toegangsrechtenovertreding: schrijfopdracht op adres 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Toegangsrechtenovertreding: leesopdracht op adres 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() stelt default_shell = %s in\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "find_and_set_shell() stelt na doorzoeken van pad default_shell = %s in\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "verwijderen (van tijdelijk bestand): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1303,153 +1319,158 @@ msgstr "" "Waarschuwing: taakserver is onbeschikbaar: '-j1' wordt gebruikt. Voeg '+' " "toe aan de ouderregel." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "Waarschuwing: '-j%d' is afgedwongen in een deelproces: taakserver-modus " "uitgezet." -#: src/main.c:1930 +#: src/main.c:1946 #, c-format msgid "Makefile from standard input specified twice" msgstr "Makefile op standaardinvoer is dubbel opgegeven" -#: src/main.c:1940 +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Kan geen tijdelijk bestand aanmaken" + +#: src/main.c:1959 #, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite: tijdelijk bestand %s: %s" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "Waarschuwing: '-j%d' is afgedwongen in makefile: taakserver-modus uitgezet." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Parallelle taken (-j) worden op dit platform niet ondersteund." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Opnieuw instellen op enkele-taakmodus (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "Taakservercontroller %s wordt gebruikt\n" -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "Uitvoersynchronisatievergrendeling %s wordt gebruikt\n" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "" "Symbolische koppelingen worden niet ondersteund: '-L' wordt uitgeschakeld." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "Husselmodus is ingeschakeld: %s\n" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Bijwerken van Makefiles...\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefile '%s' bevat mogelijk een lus; wordt niet opnieuw gemaakt.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: laden is mislukt" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Opnieuw maken van Makefile '%s' is mislukt." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Ingesloten Makefile '%s' is niet gevonden." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefile '%s' is niet gevonden." -#: src/main.c:2700 +#: src/main.c:2717 #, c-format msgid "Couldn't change back to original directory" msgstr "Kan niet terugkeren naar oorspronkelijke map" -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Opnieuw uitvoeren[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL bevat meer dan één doel" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Geen doelen" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Geen doelen opgegeven en geen Makefile gevonden" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Bijwerken van doelen...\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "Waarschuwing: Klokafwijking geconstateerd. Het maken is mogelijk " "onvolledig gebeurd." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "de optie '%s%sc' vereist een niet-lege tekenreeks als argument" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "de optie '-%c' vereist een positief geheel getal als argument" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sDit programma is gecompileerd voor %s.\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sDit programma is gecompileerd voor %s (%s).\n" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later , 1996. -# Jakub Bogusz , 2002-2022. +# Jakub Bogusz , 2002-2023. # msgid "" msgstr "" -"Project-Id-Version: make 4.3.92\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2022-10-31 02:23-0400\n" -"PO-Revision-Date: 2022-10-24 20:41+0200\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-15 20:56+0100\n" "Last-Translator: Jakub Bogusz \n" "Language-Team: Polish \n" "Language: pl\n" @@ -131,7 +131,7 @@ msgstr " (wbudowane):" msgid " (from '%s', line %lu):\n" msgstr " (z '%s', linia %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -139,62 +139,62 @@ msgstr "" "\n" "# Katalogi\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: stat() zwraca błąd.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (klucz %s, czas modyfikacji %s): otwarcie było niemożliwe.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (urządzenie %d, i-węzeł [%d,%d,%d]): otwarcie było niemożliwe.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (urządzenie %ld, i-węzeł %ld): otwarcie było niemożliwe.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (klucz %s, czas modyfikacji %s): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (urządzenie %d, i-węzeł [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (urządzenie %ld, i-węzeł %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Nie" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " pliki, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "nie" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " niemożliwości" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " jak dotąd." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " niemożliwości w %lu katalogach.\n" @@ -215,176 +215,176 @@ msgstr "Rekurencyjna zmienna '%s' wskazuje na samą siebie" msgid "unterminated variable reference" msgstr "niezakończone odwołanie do zmiennej" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Polecenia dla pliku '%s' podano w %s:%lu," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" "Polecenia dla pliku '%s' zostały wyznaczone na podstawie reguł standardowych," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "ale '%s' jest teraz uznawany za ten sam plik co '%s'." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Polecenia dla '%s' zostaną zignorowane na rzecz poleceń dla '%s'." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "nie można przemianować '%s' z pojedynczym dwukropkiem na '%s' z podwójnym" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "nie można przemianować '%s' z podwójnym dwukropkiem na '%s' z pojedynczym" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Kasowanie pliku pośredniego '%s'" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Kasowanie plików pośrednich...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "%s nie może być jednocześnie .NOTINTERMEDIATE i .INTERMEDIATE" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "%s nie może być jednocześnie .NOTINTERMEDIATE i .SECONDARY" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr ".NOTINTERMEDIATE i .SECONDARY wykluczają się wzajemnie" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Aktualny czas" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Oznaczenie czasu spoza zakresu; zastąpiono %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# To nie jest obiekt:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Cenny plik (zależność .PRECIOUS)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Obiekt niejawny (zależność .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Obiekt podany w linii poleceń." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Makefile domyślny, wymieniony w MAKEFILES lub -include/sinclude." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Reguła wbudowana" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Szukanie reguł domyślnych zostało wykonane." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Szukanie reguł domyślnych nie zostało wykonane." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Gałąź wzorców domyślnych/statycznych: '%s'\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Plik jest zależnością przejściową." -#: src/file.c:1111 +#: src/file.c:1108 msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Plik jest zależnością .NOTINTERMEDIATE." -#: src/file.c:1113 +#: src/file.c:1110 msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Plik jest drugorzędny (zależność .SECONDARY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Robi również:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Czas modyfikacji nie był sprawdzany." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Plik nie istnieje." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Plik jest bardzo stary." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Ostatnio modyfikowany %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Plik został uaktualniony." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Plik nie został uaktualniony." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Aktualnie uruchamiane polecenia (TO JEST BŁĄD)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Aktualnie uruchamiane polecenia zależności (TO JEST BŁĄD)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Uaktualnienie powiodło się." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Powinien być uaktualniony (-q jest włączone)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Uaktualnianie nie powiodło się." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Błędna wartość w elemencie 'command_state'!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -392,7 +392,7 @@ msgstr "" "\n" "# Pliki" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -402,7 +402,7 @@ msgstr "" "# statystyki tablic haszujących plików:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Pole '%s' nie zapamiętane w pamięci podręcznej: %s" @@ -467,132 +467,137 @@ msgstr "windows32_openpipe(): process_init_fd() nie powiodło się\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Czyszczę tymczasowy plik wsadowy %s\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "plik: brak nazwy" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "otwarcie: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "zapis: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "zamknięcie: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "plik: zbyt dużo argumentów" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "plik: nie udało się otworzyć '%s': %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "odczyt: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "plik: błędna operacja na pliku: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "niewystarczająca liczba argumentów (%u) dla funkcji '%s'" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "funkcja '%s' nie jest zaimplementowana na tej platformie" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "nie dokończone wywołanie funkcji '%s': brak '%c'" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Pusta nazwa funkcji" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Błędna nazwa funkcji: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Zbyt długa nazwa funkcji: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Błędna minimalna liczba argumentów (%u) dla funkcji %s" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Błędna maksymalna liczba argumentów (%u) dla funkcji %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: opcja '%s' jest niejednoznaczna\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: opcja '--%s' nie przyjmuje argumentów\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: opcja '%c%s' nie może mieć argumentów\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: opcja '%s' musi mieć argument\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: nieznana opcja '--%s'\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: nieznana opcja '%c%s'\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: niedozwolona opcja -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: błędna opcja -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: opcja musi mieć argument -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: opcja '-W %s' jest niejednoznaczna\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: opcja '-W %s' nie może mieć argumentów\n" @@ -643,180 +648,180 @@ msgstr "Szukanie standardowej reguły typu archive-member dla '%s'.\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "Znaleziono standardową regułę typu archive-member dla '%s'.\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "" "Pomijanie rekurencyjnego wywołania reguły standardowej dla reguły '%s'.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "Dalsza próba.\n" -#: src/implicit.c:501 +#: src/implicit.c:503 #, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Próbowanie reguły wzorcowej '%s' z gałęzią '%.*s'.\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Gałąź zbyt długa: '%s%.*s'.\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Odrzucenie reguły '%s' z powodu niemożliwej zależności '%s' reguły.\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "" "Odrzucenie reguły '%s' z powodu niemożliwej zależności domyślnej '%s'.\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Próbowanie zależności reguły '%s'.\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Próbowanie zależności domyślnej '%s'.\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, c-format msgid "'%s' ought to exist.\n" msgstr "'%s' powinien istnieć.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "Znaleziono '%s'.\n" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "Użycie reguły zgodności '%s' z powodu '%s'.\n" -#: src/implicit.c:856 +#: src/implicit.c:858 #, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "Zależność '%s' reguły '%s' nie określa, że powinna istnieć.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Znaleziono zależność '%s' jako VPATH '%s'\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Szukanie reguły zawierającej plik jawny '%s'.\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Szukanie reguły zawierającej plik przejściowy '%s'.\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Odrzucenie reguły '%s' z powodu niemożliwej zależności '%s'.\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, c-format msgid "Not found '%s'.\n" msgstr "Nie znaleziono '%s'.\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Znaleziono standardową regułę '%s' dla '%s'.\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Szukanie reguły zgodności dla '%s'.\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Brak standardowych reguł dla '%s'.\n" -#: src/job.c:380 +#: src/job.c:377 msgid "Cannot create a temporary file" msgstr "Nie można utworzyć pliku tymczasowego" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (zrzut pamięci)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (zignorowano)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:587 +#: src/job.c:584 #, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Błąd %d%s%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Oczekiwanie na niezakończone zadania...." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Å»yjący potomek %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (zdalne)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Zbieranie wygrywającego potomka %p PID %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Zbieranie przegrywającego potomka %p PID %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Czyszczenie tymczasowego pliku wsadowego %s\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Czyszczenie tymczasowego pliku wsadowego %s nie powiodło się (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Usuwanie potomka %p PID %s%s z kolejki.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Zwolniony token dla potomka %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() nie mógł uruchomić procesu (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -825,85 +830,96 @@ msgstr "" "\n" "Naliczono %d parametrów nieudanego uruchomienia\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Wstawianie potomka %p (%s) PID %s%s do kolejki.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Otrzymano token dla potomka %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: uaktualnianie obiektu '%s' ponieważ: obiekt jest .PHONY" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: uaktualnianie obiektu '%s' ponieważ: obiekt nie istnieje" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" -msgstr "%s: uaktualnianie obiektu '%s' z powodu: %s" +msgstr "%s: uaktualnianie obiektu '%s' ponieważ: %s" -#: src/job.c:1910 -msgid "target does not exist" -msgstr "obiekt nie istnieje" +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: uaktualnianie obiektu '%s' ponieważ: przyczyna nieznana" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "niemożliwe wymuszenie limitów obciążenia w tym systemie" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "niemożliwe wymuszenie limitu obciążenia: " -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "nie ma więcej uchwytów plików: nie można powielić stdin" -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "nie ma więcej uchwytów plików: nie można powielić stdout" -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "nie ma więcej uchwytów plików: nie można powielić stderr" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "Nie można odtworzyć stdin" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "Nie można odtworzyć stdout" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "Nie można odtworzyć stderr" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make usunął potomka pid %s, nadal czeka na pid %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: mogło zabraknąć miejsca na środowisko" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL się zmienił (był '%s', jest '%s')\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Tworzenie tymczasowego pliku wsadowego %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -912,7 +928,7 @@ msgstr "" "Zawartość pliku wsadowego:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -921,7 +937,7 @@ msgstr "" "Zawartość pliku wsadowego:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (linia %d) Zły kontekst powłoki (!unixy && !batch_mode_shell)\n" @@ -966,20 +982,20 @@ msgstr "Wyładowywanie obiektu współdzielonego %s\n" msgid "The 'load' operation is not supported on this platform" msgstr "Operacja 'load' nie jest obsługiwana na tej platformie" -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Opcje:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignorowane dla kompatybilności.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" " -B, --always-make Bezwarunkowe utworzenie wszystkich obiektów.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -988,19 +1004,19 @@ msgstr "" " Przejście do KATALOGu przed robieniem\n" " czegokolwiek.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Wyświetla dużo informacji diagnostycznych.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=FLAGI] Wyświetla różne rodzaje informacji\n" " diagnostycznych.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1008,14 +1024,14 @@ msgstr "" " -e, --environment-overrides\n" " Zmienne środowiska przykrywają makefile.\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E ŁAŃCUCH, --eval=ŁAŃCUCH Wyznacza ŁAŃCUCH jako instrukcję pliku " "makefile.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1023,16 +1039,16 @@ msgstr "" " -f PLIK, --file=PLIK, --makefile=PLIK\n" " Czyta PLIK jako makefile.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr "" " -h, --help Wyświetla ten komunikat i kończy działanie.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Ignoruje błędy poleceń.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1040,7 +1056,7 @@ msgstr "" " -I KATALOG, --include-dir=KATALOG\n" " Szuka dołączanych makefile w KATALOGu.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1048,18 +1064,18 @@ msgstr "" " -j [N], --jobs[=N] Dopuszcza N zadań naraz; brak N oznacza brak\n" " ograniczeń.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr " --jobserver-style=STYL Wybór stylu używanego srewera zadań.\n" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Kontynuuj jeśli nie da się zrobić jakichś\n" " obiektów.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1070,7 +1086,7 @@ msgstr "" "jest\n" " poniżej N.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1078,7 +1094,7 @@ msgstr "" " -L, --check-symlink-times Używanie ostatniego mtime między dowiązaniem a " "celem.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1087,7 +1103,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " Nie wykonuje poleceń; jedynie je wyświetla.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1098,7 +1114,7 @@ msgstr "" "go\n" " ponownie.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1107,11 +1123,11 @@ msgstr "" " Sposób synchronizacji wyjścia zadań " "równoległych.\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base Wyświetla wewnętrzną bazę danych make.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1119,16 +1135,16 @@ msgstr "" " -q, --question Nie uruchamia żadnych poleceń; status powrotu\n" " wskazuje aktualność.\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules Wyłącza wbudowane reguły standardowe.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Wyłącza ustawianie wbudowanych zmiennych.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" @@ -1136,16 +1152,16 @@ msgstr "" " --shuffle[={ZARODEK|random|reverse|none}]\n" " Przetasowanie zależności i celów.\n" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Nie wypisuje poleceń.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Wypisuje polecenia (wyłącza tryb --silent).\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1153,25 +1169,25 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Wyłącza -k.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr " -t, --touch Uaktualnia obiekty zamiast je robić.\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Wypisywanie informacji ze śledzenia.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Wyświetla wersję make i kończy działanie.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Wyświetla aktualny katalog.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1179,7 +1195,7 @@ msgstr "" " --no-print-directory Wyłącza -w, nawet jeśli było ono włączone\n" " domyślnie.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1187,7 +1203,7 @@ msgstr "" " -W PLIK, --what-if=PLIK, --new-file=PLIK, --assume-new=PLIK\n" " Uznaje PLIK za nieskończenie nowy.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1196,32 +1212,32 @@ msgstr "" "niezdefiniowanych\n" " zmiennych.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "błąd zapisu: standardowe wyjście" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "pusty łańcuch nie może być nazwą pliku" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "nieznany poziom diagnostyki '%s'" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "nieznany sposób synchronizacji wyjścia '%s'" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Składnia: %s [opcje] [obiekt] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1230,7 +1246,7 @@ msgstr "" "\n" "Ten program został zbudowany dla %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1239,17 +1255,17 @@ msgstr "" "\n" "Ten program został zbudowany dla %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "Błędy proszę zgłaszać na adres \n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: złapano przerwanie/wyjątek (kod = 0x%lx, adres = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1264,31 +1280,31 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Naruszenie praw dostępu: zapis pod adresem 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Naruszenie praw dostępu: odczyt spod adresu 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() ustawia default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell() ustawia ścieżkę wyszukiwania default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (plik tymczasowy): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1296,147 +1312,153 @@ msgstr "" "uwaga: serwer zadań niedostępny: użycie -j1. Należy dodać `+' do nadrzędnej " "reguły make." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "uwaga: -j%d wymuszone w podzadaniu: wyłączanie trybu serwera zadań." -#: src/main.c:1930 +#: src/main.c:1946 #, c-format msgid "Makefile from standard input specified twice" msgstr "Makefile ze standardowego wejścia podano dwukrotnie" -#: src/main.c:1940 +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "" +"nie można zapisać makefile ze standardowego wejścia do pliku tymczasowego" + +#: src/main.c:1959 #, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite: plik tymczasowy %s: %s" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "uwaga: -j%d wymuszone w podzadaniu: wyłączanie trybu serwera zadań." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Równoległe zadania (-j) nie są obsługiwane na tej platformie" -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Przełączanie w tryb jednozadaniowy (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "Użycie kontrolera serwera zadań %s\n" -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "Użycie muteksu synchronizacji wyjścia %s\n" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Dowiązania symboliczne nie są obsługiwane: wyłączono -L." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "Włączony tryb przetasowania: %s\n" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Uaktualnianie plików makefile....\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Plik makefile '%s' może się zapętlić; bez ponownego przetwarzania.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: nie udało się załadować" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Nie udało się ponownie przetworzyć pliku makefile '%s'." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Nie znaleziono włączanego pliku makefile '%s'." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Nie znaleziono pliku makefile '%s'" -#: src/main.c:2700 +#: src/main.c:2717 #, c-format msgid "Couldn't change back to original directory" msgstr "Niemożliwy powrót do katalogu startowego" -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Ponowne uruchamianie[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL zawiera więcej niż jeden cel" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Brak obiektów" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Nie podano obiektów i nie znaleziono makefile" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Uaktualnianie obiektów docelowych....\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "uwaga: Wykryto przestawienie zegara. Budowanie może być niekompletne." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "opcja '%s%s' wymaga niepustego łańcucha jako argumentu" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "opcja '-%c' wymaga argumentu będącego liczbą całkowitą dodatnią" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sTen program został zbudowany dla systemu %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sTen program został zbudowany dla systemu %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later \n" "Language-Team: Portuguese \n" @@ -131,7 +131,7 @@ msgstr " (interno):" msgid " (from '%s', line %lu):\n" msgstr " (de \"%s\", linha %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -139,62 +139,62 @@ msgstr "" "\n" "# Pastas\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: impossível obter estatísticas.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (chave %s, mtime %I64u): impossível abrir.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): impossível abrir.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (dispositivo %ld, inode %ld): impossível abrir.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (chave %s, mtime %I64u): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (dispositivo %ld, inode %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Não" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " ficheiros, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "não" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " impossibilidades" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " até agora." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " impossibilidades em %lu pastas.\n" @@ -214,176 +214,176 @@ msgstr "Variável recursiva \"%s\" referencia-se a si própria (eventualmente)" msgid "unterminated variable reference" msgstr "referencia de variável não terminada" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Receita especificada para ficheiro \"%s\" em %s:%lu," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" "Receita para ficheiro \"%s\" foi encontrada por procura com regra implícita," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "mas \"%s\" é agora considerado o mesmo ficheiro que \"%s\"." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Receita para \"%s\" será ignorada em favor da receita para \"%s\"." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "impossível renomear dois-pontos \"%s\" para dois-pontos duplos \"%s\"" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "impossível renomear dois-pontos duplos \"%s\" para dois-pontos \"%s\"" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** A eliminar ficheiro intermédio \"%s\"" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "A remover ficheiros intermédios...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr "" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Hora actual" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: datação fora do intervalo; a substituir %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Não é um alvo:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Ficheiro precioso (pré-requisito de .PRECIOUS)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Alvo falso (pré-requisito de .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Alvo da linha de comandos." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# A predefinição, MAKEFILES, ou -include/sinclude makefile." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Regra interna" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Foi feita uma procura com regra implícita." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Não foi feita uma procura com regra implícita." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Haste de padrão implícito/estático: \"%s\"\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# O ficheiro é um pré-requisito imediato." -#: src/file.c:1111 +#: src/file.c:1108 #, fuzzy msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Ficheiro precioso (pré-requisito de .PRECIOUS)." -#: src/file.c:1113 +#: src/file.c:1110 #, fuzzy msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Alvo falso (pré-requisito de .PHONY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Também faz:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Hora de modificação nunca verificada." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# O ficheiro não existe." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# O ficheiro é muito antigo." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Última modificação %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# O ficheiro foi actualizado." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# O ficheiro não foi actualizado." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Receita actualmente em execução (ISTO É UM ERRO)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Receita de dependências em execução (ISTO É UM ERRO)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Actualizado com sucesso." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Precisa de actualização (-q está definido)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Falha ao actualizar." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Valor inválido no membro \"command_state\"!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -391,7 +391,7 @@ msgstr "" "\n" "# Ficheiros" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -401,7 +401,7 @@ msgstr "" "# estatísticas da hash-table dos ficheiros:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: campo \"%s\" não armazenado em cache: %s" @@ -471,132 +471,137 @@ msgstr "windows32_openpipe(): process_init_fd() falhou\n" msgid "Cleaning up temporary batch file %s\n" msgstr "A limpar ficheiro batch temporário %s\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "ficheiro: nome em falta" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "abrir: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "escrever: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "fechar: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "ficheiro: demasiados argumentos" -#: src/function.c:2397 +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "ficheiro: operação inválida: %s" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "ler: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "ficheiro: operação inválida: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, fuzzy, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "número insuficiente de argumentos (%d) para a função \"%s\"" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "não implementada nesta plataforma: função \"%s\"" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "chamada não terminada à função \"%s\": \"%c\" em falta" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Nome de função vazio" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Nome de função inválido: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Nome de função muito longo: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Número mínimo de argumentos (%u) inválido para a função %s" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Número máximo de argumentos (%u) inválido para a função %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: a opção \"%s\" é ambígua\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: a opção \"--%s\" não permite um argumento\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: a opção \"%c%s\" não permite um argumento\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: a opção \"%s\" requer um argumento\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: opção não reconhecida \"--%s\"\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: opção não reconhecida \"%c%s\"\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: opção ilegal -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: opção inválida -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: a opção requer um argumento -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: a opção \"-W %s\" é ambígua\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: a opção \"-W %s\" não permite argumentos\n" @@ -646,179 +651,179 @@ msgstr "A procurar regra implícita de membro de arquivo para \"%s\".\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "A procurar regra implícita de membro de arquivo para \"%s\".\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, fuzzy, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "A evitar recursividade de regra implícita.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:501 +#: src/implicit.c:503 #, fuzzy, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "A tentar regra padrão com haste \"%.*s\".\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Haste muito longa: \"%s%.*s\".\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "A rejeitar pré-requisito de regra \"%s\" impossível.\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "A rejeitar pré-requisito implícito \"%s\" impossível.\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "A tentar pré-requisito de regra \"%s\".\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "A tentar pré-requisito implícito \"%s\".\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, fuzzy, c-format msgid "'%s' ought to exist.\n" msgstr "O ficheiro \"%s\" não existe.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "" -#: src/implicit.c:842 +#: src/implicit.c:844 #, fuzzy, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "%s: alvo actualizado \"%s\" devido a: %s" -#: src/implicit.c:856 +#: src/implicit.c:858 #, fuzzy, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "Pré-requisito \"%s\" do alvo \"%s\" não existe.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, fuzzy, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Encontrado pré-requisito \"%s\" como VPATH \"%s\"\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, fuzzy, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "A procurar regra com ficheiro intermédio \"%s\".\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "A procurar regra com ficheiro intermédio \"%s\".\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "A rejeitar pré-requisito de regra \"%s\" impossível.\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, fuzzy, c-format msgid "Not found '%s'.\n" msgstr "Sem regra implícita para \"%s\".\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, fuzzy, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Encontrada uma regra implícita para \"%s\".\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, fuzzy, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "A procurar regra implícita para \"%s\".\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Sem regra implícita para \"%s\".\n" -#: src/job.c:380 +#: src/job.c:377 #, fuzzy msgid "Cannot create a temporary file" msgstr "Impossível criar ficheiro temporário\n" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (núcleo despejado)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (ignorado)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:587 +#: src/job.c:584 #, fuzzy, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Erro %d%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** A aguardar por trabalhos não terminados...." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Filho vivo %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (remoto)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "A recolher filho ganhador %p PID %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "A recolher filho perdedor %p PID %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "A limpar ficheiro batch temporário %s\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "A limpar ficheiro batch temporário %s falhou (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "A remover filho %p PID %s%s da cadeia.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Símbolo lançado para filho %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() falhou ao lançar processo (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -827,86 +832,96 @@ msgstr "" "\n" "Contados %d argumentos no lançamento falhado\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "A pôr filho %p (%s) PID %s%s na cadeia.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Obtido símbolo para filho %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: alvo actualizado \"%s\" devido a: %s" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: alvo actualizado \"%s\" devido a: %s" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: alvo actualizado \"%s\" devido a: %s" -#: src/job.c:1910 -#, fuzzy -msgid "target does not exist" -msgstr "%s: alvo \"%s\" não existe" +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: alvo actualizado \"%s\" devido a: %s" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "Impossível forçar limites de carga neste sistema operativo" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "Impossível forçar limite de carga: " -#: src/job.c:2195 +#: src/job.c:2238 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdin" msgstr "não há mais gestão de ficheiros: impossível duplicar stdin\n" -#: src/job.c:2207 +#: src/job.c:2250 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdout" msgstr "não há mais gestão de ficheiros: impossível duplicar stdout\n" -#: src/job.c:2221 +#: src/job.c:2264 #, fuzzy, c-format msgid "no more file handles: could not duplicate stderr" msgstr "não há mais gestão de ficheiros: impossível duplicar stderr\n" -#: src/job.c:2236 +#: src/job.c:2279 #, fuzzy, c-format msgid "Could not restore stdin" msgstr "impossível restaurar stdin\n" -#: src/job.c:2244 +#: src/job.c:2287 #, fuzzy, c-format msgid "Could not restore stdout" msgstr "impossível restaurar stdout\n" -#: src/job.c:2252 +#: src/job.c:2295 #, fuzzy, c-format msgid "Could not restore stderr" msgstr "impossível restaurar stderr\n" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "fazer pid %s de filho recolhido, ainda à espera por pid %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: o espaço de ambiente pode estar esgotado" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL alterada (era \"%s\", é agora \"%s\")\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "A criar ficheiro batch temporaŕio %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -915,7 +930,7 @@ msgstr "" "Conteúdo do ficheiro batch:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -924,7 +939,7 @@ msgstr "" "Conteúdo do ficheiro batch:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (linha %d) Mau contexto de shell (!unixy && !batch_mode_shell)\n" @@ -969,19 +984,19 @@ msgstr "" msgid "The 'load' operation is not supported on this platform" msgstr "A operação \"load\" não é suportada nesta plataforma." -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Opções:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m ignora para compatibilidade.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make faz todos os alvos incondicionalmente.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -990,18 +1005,18 @@ msgstr "" " muda para PASTA antes de qualquer outra " "coisa.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d imprime muita informação de depuração.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=BANDEIRAS] imprime vários tipos de informação de " "depuração.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1010,13 +1025,13 @@ msgstr "" " substitui as variáveis de ambiente com os " "makefiles.\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E CADEIA, --eval=CADEIA Avalia CADEIA como declaração makefile.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1024,15 +1039,15 @@ msgstr "" " -f FICHEIRO, --file=FICHEIRO, --makefile=FICHEIRO\n" " lê FICHEIRO como makefile.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help mostra esta mensagem e sai.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors ignora erros das receitas.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1040,7 +1055,7 @@ msgstr "" " -I PASTA, --include-dir=PASTA\n" " procura em PASTA por makefiles incluídos.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1048,18 +1063,18 @@ msgstr "" " -j [N], --jobs[=N] permite N tarefas de uma só vez; tarefas " "infinitas sem argumento.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going continua quando alguns alvos não podem ser " "feitos.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1069,7 +1084,7 @@ msgstr "" " não começa múltiplas tarefas a não ser que a " "carga seja menor que N.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1077,7 +1092,7 @@ msgstr "" " -L, --check-symlink-times usa a última mtime entre ligações simbólicas e " "alvo.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1087,7 +1102,7 @@ msgstr "" " não executa realmente nenhuma receita; só as " "imprime.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1097,7 +1112,7 @@ msgstr "" " Considera FICHEIRO muito antigo e não o " "refaz.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1106,12 +1121,12 @@ msgstr "" " sincroniza saída de tarefas paralelas por " "TIPO.\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base imprime a base de dados interna do make.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1119,33 +1134,33 @@ msgstr "" " -q, --question não executa receitas; estado de saída mostra " "actualização.\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules desactiva as regras implícitas internas.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables desactiva as definições de variáveis " "internas.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" msgstr "" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet não fazer eco das receitas.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Ecoa receitas (desactiva o modo --silent).\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1153,24 +1168,24 @@ msgstr "" " -S, --no-keep-going, --stop\n" " desliga -k.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr " -t, --touch tocar nos alvos em vez de os refazer.\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace imprime informação de rastreio.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version mostra informação da versão e sai.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory imprime a pasta actual.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1178,7 +1193,7 @@ msgstr "" " --no-print-directory desliga -w, mesmo que estivesse implicitamente " "ligado.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1187,7 +1202,7 @@ msgstr "" "new=FICHEIRO\n" " considea FICHEIRO infinitamente novo.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1195,32 +1210,32 @@ msgstr "" " --warn-undefined-variables avisa quando uma variável indefinida é " "referenciada.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "erro de escrita: stdout" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "cadeia vazia inválida como nome de ficheiro" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "especificação de nível de depuração \"%s\" desconhecida" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "tipo de output-sync \"%s\" desconhecido" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Uso: %s [OPÇÕES] [ALVO] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1229,7 +1244,7 @@ msgstr "" "\n" "Este programa construído para %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1238,17 +1253,17 @@ msgstr "" "\n" "Este programa construído para %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "Reportar erros em \n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: apanhado Interrupção/Excepção (código = 0x%lx, endereço = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1263,178 +1278,183 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Violação de acesso: operação de escrita no endereço 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Violação de acesso: operação de leitura no endereço 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() a definir default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "caminho de procura find_and_set_shell() define default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "desligar (ficheiro temporário): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "" "aviso: jobserver indisponível: a usar -j1. Adicionar \"+\" à regra-mãe make." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "aviso: -j%d forçado em submake: a repor modo jobserver." -#: src/main.c:1930 +#: src/main.c:1946 #, fuzzy, c-format msgid "Makefile from standard input specified twice" msgstr "Makefile da entrada padrão especificado duas vezes." -#: src/main.c:1940 +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Impossível criar ficheiro temporário\n" + +#: src/main.c:1959 #, fuzzy, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite (ficheiro temporário)" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "aviso: -j%d forçado em makefile: a repor modo jobserver." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Não são suportadas tarefas paralelas (-j) nesta platforma." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "A repor modo de tarefa única (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "" -#: src/main.c:2250 +#: src/main.c:2262 #, fuzzy, c-format msgid "Using output-sync mutex %s\n" msgstr "tipo de output-sync \"%s\" desconhecido" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Não são suportadas ligações simbólicas: a desactivar -L" -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "A actualizar makefiles....\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefile \"%s\" pode entrar em ciclo; não será refeito.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: falha ao carregar" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Falha ao refazer makefile \"%s\"." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "makefile \"%s\" incluído não encontrado." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefile \"%s\" não encontrado" -#: src/main.c:2700 +#: src/main.c:2717 #, fuzzy, c-format msgid "Couldn't change back to original directory" msgstr "Impossível voltar à pasta original." -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "A re-executar[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL contém mais de um alvo" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Sem alvos" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Sem alvos especificados e sem makefile" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "A actualizar alvos objectivo...\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "aviso: detectado desvio do relógio. A build pode estar incompleta." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "a opção \"%s%s\" requer um argumento de cadeia não-vazia" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "a opção \"-%c\" requer um argumento inteiro positivo" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sConstruído para %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sConstruído para %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, fuzzy, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later \n" "Language-Team: Brazilian Portuguese " msgstr "" -#: src/job.c:587 +#: src/job.c:584 #, fuzzy, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Erro %d%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "** Esperando que outros processos terminem." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Filho ativo %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (remoto)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Descarregando processo filho %p PID %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Descarregando processo filho %p PID %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Apagando o arquivo de lote temporário: %s\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Ao apagar o arquivo de lote temporário %s houve uma falha (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Removendo o processo filho %p PID %s%s da cadeia.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Liberado sinalizador para o processo filho %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() falhou ao executar o processo (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -887,88 +892,98 @@ msgstr "" "\n" "Contados %d args na falha de execução\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Colocando o processo filho %p (%s) PID %s%s na cadeia.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Obtido o sinalizador para o processo filho %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: alvo atualizado '%s'devido a: %s" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: alvo atualizado '%s'devido a: %s" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: alvo atualizado '%s'devido a: %s" -#: src/job.c:1910 -#, fuzzy -msgid "target does not exist" -msgstr "%s Alvo '%s' não existe" +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: alvo atualizado '%s'devido a: %s" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "não pôde forçar os limites de carga neste sistema operacional" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "não pôde forçar a carga limite:" -#: src/job.c:2195 +#: src/job.c:2238 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdin" msgstr "sem manipuladores de arquivos: não é possível duplicar stdin\n" -#: src/job.c:2207 +#: src/job.c:2250 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdout" msgstr "sem manipuladores de arquivos: não é possível duplicar stdout\n" -#: src/job.c:2221 +#: src/job.c:2264 #, fuzzy, c-format msgid "no more file handles: could not duplicate stderr" msgstr "sem manipuladores de arquivos: não é possível duplicar stderr\n" -#: src/job.c:2236 +#: src/job.c:2279 #, fuzzy, c-format msgid "Could not restore stdin" msgstr "Não é possível restaurar stdin\n" -#: src/job.c:2244 +#: src/job.c:2287 #, fuzzy, c-format msgid "Could not restore stdout" msgstr "Não é possível restaurar stdout\n" -#: src/job.c:2252 +#: src/job.c:2295 #, fuzzy, c-format msgid "Could not restore stderr" msgstr "Não é possível restaurar stderr\n" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "processo filho descarregado: pid %s, aguardando pelo pid %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: o espaço de ambiente pode estar cheio" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "" "$SHELL alterado (era '%s' e agora é '%s')\n" "\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Criando arquivo de lote temporário %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -977,7 +992,7 @@ msgstr "" "Conteúdo do arquivo de lote:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -986,7 +1001,7 @@ msgstr "" "Conteúdo do arquivo de lote:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (linha %d) contexto inválido (!unixy && !batch_mode_shell)\n" @@ -1031,20 +1046,20 @@ msgstr "" msgid "The 'load' operation is not supported on this platform" msgstr "A operação 'load' não é suportada nesta plataforma." -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Opções:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignorado para compatibilidade.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" " -B, --always-make Processa todos os alvos incondicionalmente.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -1052,18 +1067,18 @@ msgstr "" " -C DIRETÓRIO, --directory=DIRETÓRIO\n" " Muda para o DIRETÓRIO antes de fazer algo.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d Imprime muita informação de depuração.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=OPÇÕES] Imprime vários tipos de informações de " "depuração.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1071,14 +1086,14 @@ msgstr "" " -e, --environment-overrides\n" " Assume os valores das variáveis de ambiente.\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" "-E STRING, --eval=STRING Avalia a STRING como uma declaração para um " "makefile.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1086,15 +1101,15 @@ msgstr "" " -f ARQUIVO, --file=ARQUIVO, --makefile=ARQUIVO\n" " Lê o ARQUIVO como se fosse um arquivo make.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Imprime esta mensagem e sai.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Ignora os erros dos comandos.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1103,7 +1118,7 @@ msgstr "" " Pesquisa o DIRETÒRIO por arquivos make a " "incluir.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1111,18 +1126,18 @@ msgstr "" " -j [N], --jobs[=N] Permite N tarefas de uma vez; tarefas infinitas " "sem argumentos.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Continua mesmo que alguns alvos não possam ser " "processados.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1132,7 +1147,7 @@ msgstr "" " Não inicia múltiplas tarefas a menos que a " "carga seja menor que N.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1140,7 +1155,7 @@ msgstr "" "-L, --check-symlink-times Usa o tempo mais antigo entre o vínculo simbólico " "e o alvo.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1150,7 +1165,7 @@ msgstr "" " Não executa quaisquer comandos; apenas imprime-" "os.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1160,7 +1175,7 @@ msgstr "" " Considera o ARQUIVO como muito antigo e não " "reprocessá-o.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1169,12 +1184,12 @@ msgstr "" " Sincroniza a saída de tarefas paralelas pelo " "TIPO.\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base Imprime o banco de dados interno do make.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1182,33 +1197,33 @@ msgstr "" " -q, --question Não executa os comandos; O código de saida " "indica se está atualizado.\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules Desabilita as regras implícitas.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Desabilita a configuração das variáveis " "embutidas.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" msgstr "" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Não ecoa os comandos.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Ecoa as instruções (desabilita o modo --" "silent).\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1216,27 +1231,27 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Desativa a opção -k.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Executa um `touch' nos alvos ao invés de " "reprocessá-los.\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " -trace Imprime informação de depuração.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Imprime o número de versão do make e sai.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Imprime o diretório atual.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1244,7 +1259,7 @@ msgstr "" " --no-print-directory Desativa a opção -w, mesmo que ela esteja " "implicitamente ativada.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1252,7 +1267,7 @@ msgstr "" " -W ARQUIVO, --what-if=ARQUIVO, --new-file=ARQUIVO, --assume-new=ARQUIVO\n" " Considera o ARQUIVO infinitamente novo.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1260,32 +1275,32 @@ msgstr "" " --warn-undefined-variables Avisa quando um variável não definida for " "referenciada.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "Erro de gravação: stdout" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "Cadeia de caracteres vazia não é válida como nome de arquivo" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "nível de depuração desconhecido: '%s' " -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "tipo output-sync desconhecido '%s'" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Uso: %s [opções] [alvo] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1294,7 +1309,7 @@ msgstr "" "\n" "Este programa foi compilado para %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1303,17 +1318,17 @@ msgstr "" "\n" "Este programa foi compilado para %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "Informe os problemas para .\n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Interrupção/Exceção capturada (código = 0x%lx, endereço = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1328,179 +1343,184 @@ msgstr "" "SinalExceção = %lx\n" "EndereçoExceção = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Violação de acesso: operação de escrita no endereço 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Violação de acesso: operação de leitura no endereço 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() definiu o default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell(), caminho de pesquisa do default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "desvinculado (arquivos temporário): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "aviso: jobserver indisponível: usando -j1. Inclua '+' na regra pai. " -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "aviso: -j%d forçado no submake: reiniciando o modo jobserver." -#: src/main.c:1930 +#: src/main.c:1946 #, fuzzy, c-format msgid "Makefile from standard input specified twice" msgstr "Makefile na entrada padrão especificado duas vezes." -#: src/main.c:1940 +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Não foi possível criar um arquivos temporário\n" + +#: src/main.c:1959 #, fuzzy, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite (arquivo temporário)" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "aviso: -j%d forçado no submake: reiniciando o modo jobserver." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Tarefas paralelas (-j) não são suportadas nesta plataforma." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Reiniciando no modo de tarefa única (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "" -#: src/main.c:2250 +#: src/main.c:2262 #, fuzzy, c-format msgid "Using output-sync mutex %s\n" msgstr "tipo output-sync desconhecido '%s'" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Vínculos simbólicos não são suportados: desabilite -L." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Atualizando os arquivos makefiles ...\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "" "O arquivo '%s' pode estar em loop; não reprocessá-lo.\n" "\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: falhou ao carregar" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Problemas ao reprocessar o arquivo '%s'. " -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Arquivo '%s' incluido não foi encontrado. " -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "O arquivo '%s' não foi encontrado. " -#: src/main.c:2700 +#: src/main.c:2717 #, fuzzy, c-format msgid "Couldn't change back to original directory" msgstr "Não foi possível voltar ao diretório original." -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Re-executando[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ". DEFAULT_GOAL contém mais do que um alvo" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Sem alvo" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Nenhum alvo indicado e nenhum arquivo make encontrado" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Atualizando os objetivos finais...\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "aviso: O relógio está errado. Sua compilação pode ficar incompleta." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "a opção '%s%s' requer um argumento não vazio " -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "a opção '-%c' requer um argumento inteiro positivo " -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sCompilado para %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sCompilado para %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, fuzzy, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later , 2022. +# Remus-Gabriel Chelu , 2022 - 2023. # # Cronologia traducerii fișierului „make”: # Traducerea inițială, făcută de R-GC, pentru versiunea make 4.2.93. -# Actualizare a traducerii pentru versiunea 4.3.90, făcută de R-GC, în 2022. -# Actualizare a traducerii pentru versiunea 4.3.91, făcută de R-GC, în 2022. -# Actualizare a traducerii pentru versiunea 4.3.92, făcută de R-GC, în 2022. +# Actualizare a traducerii pentru versiunea 4.3.90, făcută de R-GC, în sep-2022. +# Actualizare a traducerii pentru versiunea 4.3.91, făcută de R-GC, în oct-2022. +# Actualizare a traducerii pentru versiunea 4.3.92, făcută de R-GC, în oct-2022. +# Actualizare a traducerii pentru versiunea 4.4.0.90, făcută de R-GC, în ian-2023. +# Actualizare a traducerii pentru versiunea Y, făcută de X, Z(luna-anul). +# # msgid "" msgstr "" -"Project-Id-Version: GNU make 4.3.92\n" +"Project-Id-Version: GNU make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2022-10-31 02:23-0400\n" -"PO-Revision-Date: 2022-10-24 12:06+0200\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-15 18:50+0100\n" "Last-Translator: Remus-Gabriel Chelu \n" "Language-Team: Romanian \n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || ((n%100) > 0 && (n" -"%100) < 20)) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || ((n%100) > 0 && " +"(n%100) < 20)) ? 1 : 2);\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 3.1.1\n" +"X-Generator: Poedit 3.2.2\n" # R-GC, scrie: # după revizarea fișierului, DȘ, zice: @@ -178,7 +181,7 @@ msgstr " (comanda internă):" msgid " (from '%s', line %lu):\n" msgstr " (din „%s”, linia %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -186,62 +189,62 @@ msgstr "" "\n" "# Directoare\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: nu a putut fi stabilit.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (cheia %s, mtime %s): nu a putut fi deschis.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (dispozitiv %d, nod-i [%d,%d,%d]): nu a putut fi deschis.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (dispozitiv %ld, nod-i %ld): nu a putut fi deschis.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (cheia %s, mtime %s): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (dispozitiv %d, nod-i [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (dispozitiv %ld, nod-i %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Nu" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " fișiere, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "nu" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " imposibilități" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " până acum." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " imposibilități în %lu directoare.\n" @@ -268,78 +271,78 @@ msgstr "Variabila recursivă „%s” se referă la ea însăși (în cele din u msgid "unterminated variable reference" msgstr "referință la variabilă neterminată" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Rețeta a fost specificată pentru fișierul „%s” la %s:%lu," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" "Rețeta pentru fișierul „%s” a fost găsită prin căutarea regulilor implicite," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "dar „%s” este considerat acum același fișier ca „%s”." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Rețeta pentru „%s” va fi ignorată în favoarea celei pentru „%s”." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "nu se poate redenumi de la două puncte simple „%s” la două puncte duble „%s”" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "nu se poate redenumi de la două puncte duble „%s” la două puncte simple „%s”" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Se șterge fișierul intermediar „%s”" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Se elimină fișierele intermediare...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "%s nu poate să fie atât .NOTINTERMEDIATE, cât și .INTERMEDIATE" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "%s nu poate să fie atât .NOTINTERMEDIATE, cât și .SECONDARY" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr ".NOTINTERMEDIATE și .SECONDARY se exclud reciproc" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Ora actuală" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Marcaj de timp în afara intervalului; se substituie %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Nu este o țintă:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Fișier prețios (cerința prealabilă a .PRECIOUS)." @@ -349,41 +352,41 @@ msgstr "# Fișier prețios (cerința prealabilă a .PRECIOUS)." # „Țintă pretinsă” # *** # Opinii/Idei? -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Țintă falsă (cerința prealabilă a .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Țintă din linia de comandă." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "" "# Un fișier implicit, MAKEFILES sau, unul via -include/sinclude makefile." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Regulă internă" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Căutarea implicită a regulilor a fost efectuată." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Căutarea implicită a regulilor nu a fost efectuată." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Familia modelului implicit/static: „%s”\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Fișierul este o cerință prealabilă intermediară." -#: src/file.c:1111 +#: src/file.c:1108 msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Fișierul este o cerință prealabilă a .NOTINTERNMEDIATE." @@ -393,64 +396,64 @@ msgstr "# Fișierul este o cerință prealabilă a .NOTINTERNMEDIATE." # „Țintă pretinsă” # *** # Opinii/Idei? -#: src/file.c:1113 +#: src/file.c:1110 msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Fișierul este secundar (cerință prealabilă a .SECONDARY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# De asemenea, face:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Ora de modificare nu a fost niciodată verificată." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Fișierul nu există." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Fișierul este foarte vechi." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Ultima modificare %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Fișierul a fost actualizat." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Fișierul nu a fost actualizat." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Rețeta rulează în acest moment (ACESTA ESTE O EROARE)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Rețeta de dependențe rulează (ACESTA ESTE O EROARE)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Actualizat cu succes." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Trebuie să fie actualizat („-q” este activată)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Actualizarea a eșuat." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Valoare nevalidă în membrul „command_state”!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -458,7 +461,7 @@ msgstr "" "\n" "# Fișiere" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -468,7 +471,7 @@ msgstr "" "# statistici din tabelul sumelor de control ale fișierelor:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Câmpul „%s” nu este stocat în memoria tampon: %s" @@ -533,132 +536,137 @@ msgstr "windows32_openpipe(): process_init_fd() a eșuat\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Se curăță fișierul lotului de comenzi temporar %s\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "fișier: lipsește numele fișierului" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "deschide: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "scrie: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "închide: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "fișier: prea multe argumente" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "fișier: Nu s-a putut deschide „%s”: %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "citește: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "fișier: operație de fișier nevalidă: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "număr insuficient de argumente (%u) pentru funcția „%s”" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "neimplementat pe această platformă: funcția „%s”" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "apel neterminat la funcția „%s”: lipsește „%c”" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Numele funcției este gol" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Numele funcției este nevalid: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Numele funcției este prea lung: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Număr minim de argumente (%u) nevalid pentru funcția %s" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Număr maxim de argumente (%u) nevalid pentru funcția %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: opțiunea „%s” este ambiguă\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: opțiunea „--%s” nu permite un argument\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: opțiunea „%c%s” nu permite un argument\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: opțiunea „%s” necesită un argument\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: opțiune nerecunoscută „--%s”\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: opțiune nerecunoscută „%c%s”\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: opțiune ilegală -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: opțiune nevalidă -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: opțiunea necesită un argument -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: opțiunea „-W %s” este ambiguă\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: opțiunea „-W %s” nu permite un argument\n" @@ -711,134 +719,134 @@ msgid "No archive-member implicit rule found for '%s'.\n" msgstr "" "Nu a fost găsită nicio regulă implicită de membru al arhivei pentru „%s”.\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Evitarea recursiunii regulilor implicite pentru regula „%s”.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "Continuă să se încerce.\n" -#: src/implicit.c:501 +#: src/implicit.c:503 #, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Se încearcă regula modelului „%s” cu familia „%.*s”\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Familie prea lungă: „%s%.*s”.\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "" "Se respinge regula „%s” din cauza cerinței prealabile imposibile a regulii " "„%s”.\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "" "Se respinge regula „%s” din cauza cerinței prealabile implicite imposibile " "„%s”.\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Se încearcă cerința prealabilă a regulii „%s”.\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Se încearcă cerința prealabilă implicită „%s”.\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, c-format msgid "'%s' ought to exist.\n" msgstr "„%s” ar trebui să existe.n\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "S-a găsit „%s”.\n" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "Se utilizează regula de compatibilitate „%s” din cauza „%s”.\n" -#: src/implicit.c:856 +#: src/implicit.c:858 #, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "" "Cerința prealabilă „%s” a regulii „%s” nu este așa cum ar trebui să fie.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "S-a găsit cerința prealabilă „%s” ca VPATH „%s”.\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Se caută o regulă cu fișierul explicit „%s”.\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Se caută o regulă cu fișierul intermediar „%s”.\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "" "Se respinge regula „%s” din cauza cerinței preliminare imposibile „%s”.\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, c-format msgid "Not found '%s'.\n" msgstr "Nu s-a găsit „%s”.\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "S-a găsit regula implicită „%s” pentru „%s”.\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Se caută o regulă de compatibilitate pentru „%s”..\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Nu s-a găsit nicio regulă implicită pentru „%s”.\n" -#: src/job.c:380 +#: src/job.c:377 msgid "Cannot create a temporary file" msgstr "Nu se poate crea un fișier temporar" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (conținutul memoriei descărcat)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (ignorat)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:587 +#: src/job.c:584 #, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Eroare %d%s%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Se așteaptă ca alte sarcini să se termine...." @@ -850,52 +858,52 @@ msgstr "*** Se așteaptă ca alte sarcini să se termine...." # „proces-copil activ ...”, ceea ce este inexact. # De exemplu, un proces oprit, nu poate să fie # activ. -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Proces-copil viu %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (la distanță)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Finalizarea procesului-copil câștigător %p PID %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Finalizarea procesului-copil pierdut %p PID %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Se curăță fișierul lotului de comenzi temporar %s\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Curățarea fișierului lotului de comenzi temporar %s a eșuat (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Se elimină procesul-copil %p PID %s%s din lanț.\\\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Se eliberează indicativul pentru procesul-copil %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() nu a reușit să lanseze procesul (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -904,91 +912,102 @@ msgstr "" "\n" "Au fost numărate %d argumente în lansarea eșuată\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Se pune procesul-copil %p (%s) PID %s%s în lanț.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Se obține indicativul pentru procesul-copil %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: se actualizează ținta „%s” datorită faptului că: ținta este .PHONY" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: se actualizează ținta „%s” datorită faptului că: ținta nu există" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" -msgstr "%s: se actualizează ținta „%s” datorită: %s" +msgstr "%s: se actualizează ținta „%s” datorită faptului că: %s" -#: src/job.c:1910 -msgid "target does not exist" -msgstr "ținta nu există" +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: se actualizează ținta „%s” datorită: motive necunoscute" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "nu se pot aplica limitele de încărcare pe acest sistem de operare" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "nu poate aplica limita de încărcare: " -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "" "nu mai există operatori de fișiere disponibili: nu s-a putut duplica " "intrarea standard" -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "" "nu mai există operatori de fișiere disponibili: nu s-a putut duplica ieșirea " "standard" -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "" "nu mai există operatori de fișiere disponibili: nu s-a putut duplica ieșirea " "de eroare standard" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "Nu s-a putut restabili intrarea standard" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "Nu s-a putut restabili ieșirea standard" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "Nu s-a putut restabili ieșirea de eroare standard" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "procesul-copil «make» procesat cu PID %s, dar încă așteaptă PID %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: spațiul de mediu ar putea fi epuizat" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL schimbat (era „%s”, acum „%s”)\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Se creează fișierul lotului de comenzi temporar %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -997,7 +1016,7 @@ msgstr "" "Conținutul fișierului lotului de comenzi:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -1006,7 +1025,7 @@ msgstr "" "Conținutul fișierului lotului de comenzi:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (linia %d) Context shell greșit (!unixy && !batch_mode_shell)\n" @@ -1051,15 +1070,15 @@ msgstr "Se descarcă obiectul partajat %s\n" msgid "The 'load' operation is not supported on this platform" msgstr "Operația „load” nu este acceptată pe această platformă" -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Opțiuni:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignorat din motive de compatibilitate.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Face necondiționat toate țintele.\n" @@ -1070,7 +1089,7 @@ msgstr " -B, --always-make Face necondiționat toate țintele.\n" # Am reformulat traducerea # traducerea inițială: # „... înainte de a face ceva.” -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -1079,19 +1098,19 @@ msgstr "" " Schimbă la DIRECTOR(ul) înainte de a începe " "vreo operație.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Afișează o mulțime de informații de depanare.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=FANIOANE] Afișează diferite tipuri de informații de " "depanare.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1100,14 +1119,14 @@ msgstr "" " Variabilele de mediu primează față de " "fișierele makefile.\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E ȘIR, --eval=ȘIR Evaluează ȘIR(ul) ca o declarație de " "makefile.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1115,15 +1134,15 @@ msgstr "" " -f FIȘIER, --file=FIȘIER, --makefile=FIȘIER\n" " Citește FIȘIER ca pe un fișier makefile.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Afișează acest mesaj și iese.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Ignoră erorile din rețete.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1132,7 +1151,7 @@ msgstr "" " Caută în DIRECTOR pentru fișierele makefile " "incluse.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1140,20 +1159,20 @@ msgstr "" " -j [N], --jobs[=N] Permite N lucrări simultan; fără argument, un " "număr infinit de lucrări.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" " --jobserver-style=STIL Selectează stilul serverului de lucrări de " "utilizat.\n" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Continuă atunci când unele ținte nu pot fi " "făcute.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1163,7 +1182,7 @@ msgstr "" " Nu începe mai multe lucrări decât dacă " "încărcarea este sub N.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1171,7 +1190,7 @@ msgstr "" " -L, --check-symlink-times Utilizează ora ultimei modificări între " "legături simbolice și țintă.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1181,7 +1200,7 @@ msgstr "" " Nu rulează de fapt nicio rețetă; doar o " "afișează.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1191,7 +1210,7 @@ msgstr "" " Consideră FIȘIER(ul) ca fiind foarte vechi și " "nu-l reface.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1200,12 +1219,12 @@ msgstr "" " Sincronizează ieșirea lucrărilor paralele după " "TIP.\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base Afișează baza de date internă a «make».\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1213,18 +1232,18 @@ msgstr "" " -q, --question Nu rulează nicio rețetă; starea de ieșire " "indică dacă este actualizată.\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Dezactivează regulile implicite interne.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Dezactivează configurările variabilelor " "interne.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" @@ -1233,17 +1252,17 @@ msgstr "" " Efectuează amestecarea cerințelor prealabile " "și a obiectivelor.\n" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Nu afișează rețetele.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Afișează rețetele (dezactivează opțiunea „--" "silent”).\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1256,29 +1275,29 @@ msgstr "" # → cred că ar trebui pusă „data” sau „timpul” în loc de „ora” # === # Cum ți-se pare „marcajul de timp”, DȘ? -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Actualizează marcajul de timp al țintelor în " "loc să-le reconstruiască.\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr "" " --trace Afișează informațiile de urmărire a " "execuției.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Afișează numărul versiunii de «make» și iese.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Afișează directorul curent.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1286,7 +1305,7 @@ msgstr "" " --no-print-directory Dezactivează opțiunea „-w”, chiar dacă a fost " "activată implicit.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1294,7 +1313,7 @@ msgstr "" " -W FIȘIER, --what-if=FIȘIER, --new-file=FIȘIER, --assume-new=FIȘIER\n" " Consideră că FIȘIER(ul) este infinit de nou.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1302,32 +1321,32 @@ msgstr "" " --warn-undefined-variables Avertizează atunci când se face referire la o " "variabilă nedefinită.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "eroare de scriere: ieșirea standard" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "un șir gol nu este valid ca nume de fișier" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "specificație necunoscută a nivelului de depanare „%s”" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "tip de sincronizare de ieșire necunoscut „%s”" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Utilizare: %s [opțiuni] [țintă] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1336,7 +1355,7 @@ msgstr "" "\n" "Acest program a fost construit pentru %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1345,17 +1364,17 @@ msgstr "" "\n" "Acest program a fost construit pentru %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "Raportați erorile la \n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Întrerupere/Excepție capturată (cod = 0x%lx, addr = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1370,34 +1389,34 @@ msgstr "" "ExceptionFlags = %lx\n" "ExceptionAddress = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Încălcarea accesului: operație de scriere la adresa 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Încălcarea accesului: operație de citire la adresa 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "" "funcția find_and_set_shell() stabilește valoarea lui default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "funcția find_and_set_shell() stabilește calea de căutare a lui default_shell " "= %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "înlăturare (legătură simbolică la fișier temporar): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1405,42 +1424,49 @@ msgstr "" "avertisment: serverul de lucrări nu este disponibil: se folosește „-j1”. " "Adăugați „+” la regula părinte(parent) de «make»." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "avertisment: „-j%d” forțat în submake: se reconfigurează modul server de " "lucrări." -#: src/main.c:1930 +#: src/main.c:1946 #, c-format msgid "Makefile from standard input specified twice" msgstr "" "Fișierul „Makefile” de la intrarea standard a fost specificat de două ori" -#: src/main.c:1940 +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "" +"nu se poate stoca fișierul „makefile” din intrarea standard, într-un fișier " +"temporar" + +#: src/main.c:1959 #, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite: fișierul temporar %s: %s" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "avertisment: „-j%d” forțat în „makefile”: se reconfigurează modul server de " "lucrări." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Lucrările paralele (-j) nu sunt acceptate pe această platformă." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Se configurează la modul o singură lucrare (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "Se utilizează controlorul serverului de lucrări „%s”\n" @@ -1457,82 +1483,82 @@ msgstr "Se utilizează controlorul serverului de lucrări „%s”\n" # „In computer science, a lock or mutex (from mutual exclusion) is a synchronization primitive: a mechanism that enforces limits on access to a resource when there are many threads of execution. A lock is designed to enforce a mutual exclusion concurrency control policy, and with a variety of possible methods there exists multiple unique implementations for different applications. ” # === # redirecționare de la «Mutex» -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "Se utilizează blocarea de sincronizare a ieșirii %s\n" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Legăturile simbolice nu sunt acceptate: se dezactivează opțiunea „-L”." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "Modul de amestecare activat: %s\n" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Se actualizează fișierele makefile....\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefile „%s” ar putea să fie în buclă; nu se reconstruiește.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: nu s-a putut încărca" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Nu s-a reușit refacerea fișierului makefile „%s”." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Fișierul makefile inclus „%s” nu a fost găsit." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Fișierul makefile „%s” nu a fost găsit" -#: src/main.c:2700 +#: src/main.c:2717 #, c-format msgid "Couldn't change back to original directory" msgstr "Nu s-a putut schimba înapoi la directorul inițial" -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Se execută din nou[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL conține mai mult de o țintă" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Fără ținte" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Nu sunt specificate ținte și nu a fost găsit niciun fișier makefile" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Se actualizează obiectivele vizate....\n" @@ -1548,34 +1574,34 @@ msgstr "Se actualizează obiectivele vizate....\n" # pare corect să folosim: # build = construcție și compile = compilare # mai ales, că «make» face amîndouă operațiile -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "avertisment: A fost detectată o decalare a ceasului. Construcția dvs. " "poate fi incompletă." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "opțiunea „%s%s” necesită un șir care nu este gol ca argument" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "opțiunea „-%c” necesită un întreg pozitiv ca argument" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sConstruit pentru %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sConstruit pentru %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later , 2001. # Denis Perchine , 2001, 2002. # Pavel Maryanov , 2009. -# Yuri Kozlov , 2009, 2010, 2013, 2014, 2016, 2019, 2020. +# Yuri Kozlov , 2009, 2010, 2013, 2014, 2016, 2019, 2020, 2022, 2023. msgid "" msgstr "" -"Project-Id-Version: make 4.2.93\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2022-10-31 02:23-0400\n" -"PO-Revision-Date: 2020-01-03 22:09+0300\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-15 12:15+0300\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" "Language: ru\n" @@ -20,9 +20,9 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Lokalize 2.0\n" -"Plural-Forms: nplurals=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: Lokalize 20.12.0\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" #: src/ar.c:47 #, c-format @@ -75,7 +75,7 @@ msgstr "" #: src/arscan.c:402 src/arscan.c:406 #, c-format msgid "Invalid %s for archive %s member %s" -msgstr "" +msgstr "Некорректное значение %s для архива %s и элемента %s" #: src/arscan.c:995 #, c-format @@ -97,9 +97,9 @@ msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d, gid = %d, mode = 0%o.\n" #: src/commands.c:379 -#, fuzzy, c-format +#, c-format msgid "Recipe has too many lines (limit %hu)" -msgstr "В способе слишком много строк (%ud)" +msgstr "В способе слишком много строк (ограничивается %hu)" #: src/commands.c:501 msgid "*** Break.\n" @@ -138,7 +138,7 @@ msgstr " (встроенные):" msgid " (from '%s', line %lu):\n" msgstr " (из «%s», строка %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -146,62 +146,62 @@ msgstr "" "\n" "# Каталоги\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: невозможно получить сведения вызовом stat.\n" -#: src/dir.c:1122 -#, fuzzy, c-format +#: src/dir.c:1123 +#, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" -msgstr "# %s (ключ %s, mtime %l64u): невозможно открыть.\n" +msgstr "# %s (ключ %s, mtime %s): невозможно открыть.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (устройство %d, inode [%d,%d,%d]): невозможно открыть.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (устройство %ld, inode %ld): невозможно открыть.\n" -#: src/dir.c:1155 -#, fuzzy, c-format +#: src/dir.c:1156 +#, c-format msgid "# %s (key %s, mtime %s): " -msgstr "# %s (ключ %s, mtime %l64u): " +msgstr "# %s (ключ %s, mtime %s): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (устройство %d, inode [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (устройство %ld, inode %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Нет" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " файлов," -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "нет" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " недостижимых целей" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " на текущий момент." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " недостижимых целей в %lu каталогах.\n" @@ -210,6 +210,7 @@ msgstr " недостижимых целей в %lu каталогах.\n" #, c-format msgid "%s:%lu: not recursively expanding %s to export to shell function\n" msgstr "" +"%s:%lu: %s не раскрывается рекурсивно для экспорта в функцию оболочки\n" #: src/expand.c:149 #, c-format @@ -221,179 +222,177 @@ msgstr "Рекурсивная переменная «%s» ссылается с msgid "unterminated variable reference" msgstr "незавершённая ссылка на переменную" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Способ для файла «%s» был задан в %s:%lu," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," -msgstr "Способ для файла «%s» был найден из неявного правила," +msgstr "Способ для файла «%s» был найден из неявного правила поиска," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "но «%s» и «%s» теперь считаются одним и тем же файлом." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" "Способ для «%s» игнорируется, вместо него будет использован способ для «%s»." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "невозможно переименовать «%s» с одним двоеточием в «%s» с двумя двоеточиями" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "невозможно переименовать «%s» с двумя двоеточиями в «%s» с одним двоеточием" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Удаление промежуточного файла «%s»" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Удаление промежуточных файлов...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" -msgstr "" +msgstr "%s не может быть одновременно .NOTINTERMEDIATE и .INTERMEDIATE" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" -msgstr "" +msgstr "%s не может быть одновременно .NOTINTERMEDIATE и .SECONDARY" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" -msgstr "" +msgstr ".NOTINTERMEDIATE и .SECONDARY взаимно исключают друг друга" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Текущее время" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Временной штамп выходит за пределы диапазона; подставляем %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Не является целью:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." -msgstr "# Ценный файл (зависимость .PRECIOUS)." +msgstr "# Важный файл (зависимость для .PRECIOUS)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Псевдоцель (зависимость от .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Цель, вызываемая из командной строки." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# По умолчанию, MAKEFILES, или -include/sinclude makefile." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Встроенное правило" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Производился поиск неявных правил." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Поиск неявных правил не производился." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Основа неявного или статического образца: «%s»\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Файл — промежуточная зависимость." -#: src/file.c:1111 -#, fuzzy +#: src/file.c:1108 msgid "# File is a prerequisite of .NOTINTERMEDIATE." -msgstr "# Ценный файл (зависимость .PRECIOUS)." +msgstr "# Файл является зависимостью для .NOTINTERMEDIATE." -#: src/file.c:1113 -#, fuzzy +#: src/file.c:1110 msgid "# File is secondary (prerequisite of .SECONDARY)." -msgstr "# Псевдоцель (зависимость от .PHONY)." +msgstr "# Вторичный файл (зависимость для .SECONDARY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Собирает также:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Время изменения ни разу не проверялось." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Файл не существует." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Файл очень старый." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Время последнего изменения %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Файл был обновлён." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Файл не был обновлён." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# В данный момент уже применяется некий способ (ЭТО ОШИБКА)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "" "# В данный момент уже применяется некий способ по зависимостям (ЭТО ОШИБКА)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Успешно обновлено." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Должно быть обновлено (задан ключ -q)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Попытка обновления безуспешна." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Неверное значение члена «command_state»!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -401,7 +400,7 @@ msgstr "" "\n" "# Файлы" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -411,7 +410,7 @@ msgstr "" "# состояние файлов хеш-таблицы:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Поле «%s» не кешировано: %s" @@ -419,17 +418,16 @@ msgstr "%s: Поле «%s» не кешировано: %s" #: src/function.c:779 src/function.c:1284 #, c-format msgid "%s: empty value" -msgstr "" +msgstr "%s: пустое значение" #: src/function.c:784 #, c-format msgid "%s: '%s' out of range" -msgstr "" +msgstr "%s: «%s» вне диапазона" #: src/function.c:800 -#, fuzzy msgid "invalid first argument to 'word' function" -msgstr "нечисловой первый аргумент функции «word»" +msgstr "некорректный первый аргумент функции «word»" #: src/function.c:803 #, c-format @@ -437,39 +435,35 @@ msgid "first argument to 'word' function must be greater than 0" msgstr "первый аргумент функции «word» должен быть больше нуля" #: src/function.c:821 -#, fuzzy msgid "invalid first argument to 'wordlist' function" -msgstr "нечисловой первый аргумент функции «wordlist»" +msgstr "некорректный первый аргумент функции «wordlist»" #: src/function.c:822 -#, fuzzy msgid "invalid second argument to 'wordlist' function" -msgstr "нечисловой второй аргумент функции «wordlist»" +msgstr "некорректный второй аргумент функции «wordlist»" #: src/function.c:1328 -#, fuzzy msgid "non-numeric first argument to 'intcmp' function" -msgstr "нечисловой первый аргумент функции «wordlist»" +msgstr "нечисловой первый аргумент функции «intcmp»" #: src/function.c:1329 -#, fuzzy msgid "non-numeric second argument to 'intcmp' function" -msgstr "нечисловой второй аргумент функции «wordlist»" +msgstr "нечисловой второй аргумент функции «intcmp»" #: src/function.c:1684 -#, fuzzy, c-format +#, c-format msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%lu)\n" -msgstr "windows32_openpipe: DuplicateHandle(In) вернула код ошибки (e=%ld)\n" +msgstr "windows32_openpipe: DuplicateHandle(In) вернула код ошибки (e=%lu)\n" #: src/function.c:1708 -#, fuzzy, c-format +#, c-format msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%lu)\n" -msgstr "windows32_openpipe: DuplicateHandle(Err) вернула код ошибки (e=%ld)\n" +msgstr "windows32_openpipe: DuplicateHandle(Err) вернула код ошибки (e=%lu)\n" #: src/function.c:1715 -#, fuzzy, c-format +#, c-format msgid "CreatePipe() failed (e=%lu)\n" -msgstr "CreatePipe() вернула код ошибки (e=%ld)\n" +msgstr "CreatePipe() вернула код ошибки (e=%lu)\n" #: src/function.c:1723 #, c-format @@ -481,134 +475,139 @@ msgstr "windows32_openpipe(): process_init_fd() завершилась неуд msgid "Cleaning up temporary batch file %s\n" msgstr "Очищаю временный пакетный файл %s\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "файл: отсутствует имя файла" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "открытие: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "запись: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "закрытие: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "файл: слишком много аргументов" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "файл: не удалось открыть «%s»: %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "чтение: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "файл: некорректная операция с файлом: %s" -#: src/function.c:2527 -#, fuzzy, c-format +#: src/function.c:2552 +#, c-format msgid "insufficient number of arguments (%u) to function '%s'" -msgstr "недостаточно аргументов (всего %d) функции «%s»" +msgstr "недостаточно аргументов (всего %u) для функции «%s»" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "не реализовано на этой платформе: функция «%s»" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "незавершённый вызов функции «%s»: пропущено «%c»" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Пустое имя функции" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Некорректное имя функции: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Слишком длинное имя функции: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Некорректное минимальное число аргументов (всего %u) функции %s" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Некорректное максимальное число аргументов (всего %u) функции %s" # Сообщения getopt исключены, т.к. они относятся к уже # устаревшей версии этой библиотеки, и исчезнут в следующей версии make -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: ключ «%s» не однозначен\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: ключ «--%s» должен использоваться без аргумента\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: ключ «%c%s» должен использоваться без аргумента\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: ключу «%s» требуется аргумент\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: неизвестный ключ «--%s»\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: неизвестный ключ «%c%s»\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: недопустимый ключ -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: неверный ключ -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: ключ требует аргумент -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: ключ «-W %s» неоднозначен\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: ключ «-W %s» должен использоваться без аргумента\n" @@ -654,183 +653,183 @@ msgid "Looking for archive-member implicit rule for '%s'.\n" msgstr "Поиск неявного правила для элемента архива «%s».\n" #: src/implicit.c:61 -#, fuzzy, c-format +#, c-format msgid "No archive-member implicit rule found for '%s'.\n" -msgstr "Поиск неявного правила для элемента архива «%s».\n" +msgstr "Не найдено неявное правило для элемента архива «%s».\n" -#: src/implicit.c:326 -#, fuzzy, c-format +#: src/implicit.c:328 +#, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" -msgstr "Избежание рекурсивного вызова неявного правила.\n" +msgstr "Избежание рекурсии неявного правила для правила «%s».\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" -msgstr "" +msgstr "Прилагаем больше усилий.\n" -#: src/implicit.c:501 -#, fuzzy, c-format +#: src/implicit.c:503 +#, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" -msgstr "Попытка применения правила с образцом «%.*s».\n" +msgstr "Попытка применения правила «%s» с образцом «%.*s».\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Слишком длинный образец: «%s%.*s».\n" -#: src/implicit.c:768 -#, fuzzy, c-format +#: src/implicit.c:770 +#, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" -msgstr "Отвержение невозможной зависимости правила «%s».\n" +msgstr "Отвержение правила «%s» из-за невозможного правила зависимости «%s».\n" -#: src/implicit.c:770 -#, fuzzy, c-format +#: src/implicit.c:772 +#, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" -msgstr "Отвержение невозможной неявной зависимости «%s».\n" +msgstr "Отвержение правила «%s» из-за невозможной зависимости «%s».\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Попытка применения правила зависимости «%s».\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Попытка применения неявной зависимости «%s».\n" -#: src/implicit.c:827 -#, fuzzy, c-format +#: src/implicit.c:829 +#, c-format msgid "'%s' ought to exist.\n" -msgstr "Файл «%s» не существует.\n" +msgstr "«%s» должно существовать.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" -msgstr "" +msgstr "Найдено «%s».\n" -#: src/implicit.c:842 -#, fuzzy, c-format +#: src/implicit.c:844 +#, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" -msgstr "%s: обновление цели «%s» из-за: %s" +msgstr "Используется совместимое правило «%s» из-за «%s».\n" -#: src/implicit.c:856 -#, fuzzy, c-format +#: src/implicit.c:858 +#, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" -msgstr "Зависимость «%s» цели «%s» не существует.\n" +msgstr "" +"Зависимость «%s» правила «%s» не рассматривается необходимой существовать.\n" -#: src/implicit.c:870 -#, fuzzy, c-format +#: src/implicit.c:872 +#, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" -msgstr "Обнаружена зависимость «%s» в виде VPATH «%s»\n" +msgstr "Обнаружена зависимость «%s» в виде VPATH «%s».\n" -#: src/implicit.c:885 -#, fuzzy, c-format +#: src/implicit.c:887 +#, c-format msgid "Looking for a rule with explicit file '%s'.\n" -msgstr "Поиск правила с промежуточным файлом «%s».\n" +msgstr "Поиск правила с явно заданным файлом «%s».\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Поиск правила с промежуточным файлом «%s».\n" -#: src/implicit.c:927 -#, fuzzy, c-format +#: src/implicit.c:929 +#, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" -msgstr "Отвержение невозможной зависимости правила «%s».\n" +msgstr "Отвержение правила «%s» из-за невозможной зависимости «%s».\n" -#: src/implicit.c:931 -#, fuzzy, c-format +#: src/implicit.c:933 +#, c-format msgid "Not found '%s'.\n" -msgstr "Не найдено неявного правила для «%s».\n" +msgstr "Не найдено «%s».\n" -#: src/implicit.c:1144 -#, fuzzy, c-format +#: src/implicit.c:1148 +#, c-format msgid "Found implicit rule '%s' for '%s'.\n" -msgstr "Найдено неявное правило для «%s».\n" +msgstr "Найдено неявное правило «%s» для «%s».\n" -#: src/implicit.c:1151 -#, fuzzy, c-format +#: src/implicit.c:1155 +#, c-format msgid "Searching for a compatibility rule for '%s'.\n" -msgstr "Поиск неявного правила для «%s».\n" +msgstr "Поиск совместимого правила для «%s».\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Не найдено неявного правила для «%s».\n" -#: src/job.c:380 -#, fuzzy +#: src/job.c:377 msgid "Cannot create a temporary file" -msgstr "Не удалось создать временный файл\n" +msgstr "Невозможно создать временный файл" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (сделан дамп памяти)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (игнорирование)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "<встроенное>" -#: src/job.c:587 -#, fuzzy, c-format +#: src/job.c:584 +#, c-format msgid "%s[%s: %s] Error %d%s%s" -msgstr "%s[%s: %s] Ошибка %d%s" +msgstr "%s[%s: %s] Ошибка %d%s%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Ожидание завершения заданий…" -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Незавершённый потомок %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (удалённый)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Подбирается удачно завершившийся потомок %p PID %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Подбирается неудачно завершившийся потомок %p PID %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Подчищаю временный пакетный файл %s\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Очистка временного пакетного файла %s завершилась с ошибкой (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Удаляется потомок %p PID %s%s из цепочки.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Освобождён токен для потомка %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() не смогла запустить процесс (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -839,86 +838,96 @@ msgstr "" "\n" "При неудачном запуске сосчитано %d аргументов\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Помещение потомка %p (%s) PID %s%s в цепочку потомков.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Получен токен для потомка %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: причина обновления цели «%s»: целью является .PHONY" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: причина обновления цели «%s»: цель не существует" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" -msgstr "%s: обновление цели «%s» из-за: %s" +msgstr "%s: причина обновления цели «%s»: %s" -#: src/job.c:1910 -#, fuzzy -msgid "target does not exist" -msgstr "%s: цель «%s» не существует" +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: причина обновления цели «%s»: по неизвестным причинам" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "эта операционная система не позволяет устанавливать пределы загрузки" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "невозможно установить пределы загрузки: " -#: src/job.c:2195 -#, fuzzy, c-format +#: src/job.c:2238 +#, c-format msgid "no more file handles: could not duplicate stdin" -msgstr "закончились файловые дескрипторы: не удалось сделать копию stdin\n" +msgstr "закончились файловые дескрипторы: не удалось сделать копию stdin" -#: src/job.c:2207 -#, fuzzy, c-format +#: src/job.c:2250 +#, c-format msgid "no more file handles: could not duplicate stdout" -msgstr "закончились файловые дескрипторы: не удалось сделать копию stdout\n" +msgstr "закончились файловые дескрипторы: не удалось сделать копию stdout" -#: src/job.c:2221 -#, fuzzy, c-format +#: src/job.c:2264 +#, c-format msgid "no more file handles: could not duplicate stderr" -msgstr "закончились файловые дескрипторы: не удалось сделать копию stderr\n" +msgstr "закончились файловые дескрипторы: не удалось сделать копию stderr" -#: src/job.c:2236 -#, fuzzy, c-format +#: src/job.c:2279 +#, c-format msgid "Could not restore stdin" -msgstr "Не удалось восстановить stdin\n" +msgstr "Невозможно восстановить stdin" -#: src/job.c:2244 -#, fuzzy, c-format +#: src/job.c:2287 +#, c-format msgid "Could not restore stdout" -msgstr "Не удалось восстановить stdout\n" +msgstr "Невозможно восстановить stdout" -#: src/job.c:2252 -#, fuzzy, c-format +#: src/job.c:2295 +#, c-format msgid "Could not restore stderr" -msgstr "Не удалось восстановить stderr\n" +msgstr "Невозможно восстановить stderr" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make нашла завершившегося потомка pid %s, всё ещё ожидает pid %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: вероятно, закончилось место под окружение" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "Переменная $SHELL изменилась (было «%s», теперь «%s»)\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Создаётся временный пакетный файл %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -927,7 +936,7 @@ msgstr "" "Содержимое файла пакетных заданий:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -936,7 +945,7 @@ msgstr "" "Содержимое файла пакетных заданий:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -951,7 +960,7 @@ msgstr "Не удалось открыть глобальную таблицу #: src/load.c:93 #, c-format msgid "Loaded shared object %s\n" -msgstr "" +msgstr "Загружен общий объект %s\n" #: src/load.c:99 #, c-format @@ -976,26 +985,26 @@ msgstr "Загружается символ %s из %s\n" #: src/load.c:232 #, c-format msgid "Unloading shared object %s\n" -msgstr "" +msgstr "Выгружен общий объект %s\n" #: src/load.c:251 -#, fuzzy, c-format +#, c-format msgid "The 'load' operation is not supported on this platform" -msgstr "Операция «load» не поддерживается на этой платформе." +msgstr "Операция «load» не поддерживается на этой платформе" -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Ключи:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Игнорируется для совместимости.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Без условий отрабатывать все цели.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -1003,18 +1012,18 @@ msgstr "" " -C КАТАЛОГ, --directory=КАТАЛОГ\n" " Перейти в КАТАЛОГ перед выполнением действий.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d Выводить массу отладочных сообщений.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=ФЛАГИ] Выводить различные типы отладочной " "информации.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1023,13 +1032,13 @@ msgstr "" " Переменные окружения заменяют значения " "makefile.\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E СТРОКА, --eval=СТРОКА Вычислить СТРОКУ как предложение makefile.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1037,15 +1046,15 @@ msgstr "" " -f ФАЙЛ, --file=ФАЙЛ, --makefile=ФАЙЛ\n" " Использовать ФАЙЛ в качестве makefile.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Показать эту справку и выйти.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Игнорировать ошибки способов.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1053,27 +1062,28 @@ msgstr "" " -I КАТАЛОГ, --include-dir=КАТАЛОГ\n" " Искать включаемые make-файлы в КАТАЛОГЕ.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr "" " -j [N], --jobs[=N] Запускать одновременно до N заданий; \n" -" если N не указано, число заданий " -"неограничено.\n" +" если N не указано, число заданий не " +"ограничено.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" +" --jobserver-style=СТИЛЬ Задать стиль используемого сервера заданий.\n" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Продолжать работу, даже если некоторые цели\n" " не могут быть достигнуты.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1082,7 +1092,7 @@ msgstr "" " -l [N], --load-average[=N], --max-load[=N] Не запускать\n" " несколько заданий, если загрузка больше N.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1090,7 +1100,7 @@ msgstr "" " -L, --check-symlink-times Использовать последнее mtime при выборе между\n" " символическими ссылками и целью.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1100,7 +1110,7 @@ msgstr "" " Не применять способ на самом деле; просто\n" " напечатать его.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1110,7 +1120,7 @@ msgstr "" " Считать ФАЙЛ очень старым и не переделывать " "его.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1119,12 +1129,12 @@ msgstr "" " Синхронизировать вывод параллельных\n" " заданий с типом ТИП.\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base Напечатать внутреннюю базу данных make.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1133,35 +1143,37 @@ msgstr "" " код завершения показывает, всё ли уже " "сделано.\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Не использовать встроенные неявные правила.\n" # Что такое "variable settings"? -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Выключить установку встроенных\n" " значений переменных.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" msgstr "" +" --shuffle[={SEED|random|reverse|none}]\n" +" Переставить зависимости и цели.\n" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Не показывать сами способы.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Показывать способы (отключает режим --" "silent).\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1169,26 +1181,26 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Отменить ключ -k.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Установить время доступа целей в текущее,\n" " а не пересобирать их.\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Выводить трассировочную информацию.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version Показать информацию о версии и выйти.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Напечатать текущий каталог.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1196,7 +1208,7 @@ msgstr "" " --no-print-directory Отменить ключ -w, даже если он был явно " "указан.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1204,7 +1216,7 @@ msgstr "" " -W ФАЙЛ, --what-if=ФАЙЛ, --new-file=ФАЙЛ, --assume-new=ФАЙЛ\n" " Считать ФАЙЛ всегда новым.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1212,32 +1224,32 @@ msgstr "" " --warn-undefined-variables Выдавать предупреждение при ссылке\n" " на неопределённую переменную.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "ошибка записи: stdout" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "пустая строка недопустима в качестве имени файла" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "задан неизвестный уровень отладки «%s»" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "неизвестный тип output-sync «%s»" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Использование: %s [КЛЮЧ]... [ЦЕЛЬ]...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1246,7 +1258,7 @@ msgstr "" "\n" "Эта программа собрана для %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1255,17 +1267,17 @@ msgstr "" "\n" "Эта программа собрана для %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "Сообщайте об ошибках по адресу \n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: поймано прерывание или исключение (код = 0x%lx, адрес = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1280,31 +1292,31 @@ msgstr "" "Флаги исключения = %lx\n" "Адрес исключения = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Нарушение доступа: операция записи по адресу 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Нарушение доступа: операция чтения адреса 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() устанавливает default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell(): поиск в путях устанавливает default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (временный файл)" -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1312,164 +1324,169 @@ msgstr "" "предупреждение: сервер заданий недоступен: используется -j1. Добавьте «+» к " "правилу в родительском make." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "предупреждение: в суб-Makefile принудительно задан -j%d; сброс режима " "сервера заданий" -#: src/main.c:1930 -#, fuzzy, c-format +#: src/main.c:1946 +#, c-format msgid "Makefile from standard input specified twice" -msgstr "Makefile из стандартного ввода указан дважды." +msgstr "Makefile из стандартного ввода указан дважды" -#: src/main.c:1940 -#, fuzzy, c-format +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "невозможно сохранить makefile из stdin во временный файл" + +#: src/main.c:1959 +#, c-format msgid "fwrite: temporary file %s: %s" -msgstr "fwrite (временный файл)" +msgstr "fwrite: временный файл %s: %s" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "предупреждение: в makefile принудительно задан -j%d; сброс режима сервера " "заданий" -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Параллельные задания (-j) не поддерживаются на этой платформе." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Возвращается режим одиночного задания (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" -msgstr "" +msgstr "Используется контроллер сервера заданий %s\n" -#: src/main.c:2250 -#, fuzzy, c-format +#: src/main.c:2262 +#, c-format msgid "Using output-sync mutex %s\n" -msgstr "неизвестный тип output-sync «%s»" +msgstr "Используется мьютекс output-sync %s\n" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Символические ссылки не поддерживаются: отменяется ключ -L." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" -msgstr "" +msgstr "Включен режим перестановки: %s\n" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Обновление make-файлов....\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Make-файл «%s», возможно, зациклен, он не будет пересобираться.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: не удалось загрузить" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Попытка пересобрать make-файл «%s» завершилась неудачно." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Включаемый make-файл «%s» не найден." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Make-файл «%s» не найден" -#: src/main.c:2700 -#, fuzzy, c-format +#: src/main.c:2717 +#, c-format msgid "Couldn't change back to original directory" -msgstr "Невозможно перейти в первоначальный каталог." +msgstr "Невозможно перейти в первоначальный каталог" -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Повторное выполнение[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL содержит более одной цели" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Нет целей" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Не заданы цели и не найден make-файл" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Обновление целей результата...\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "предупреждение: Неправильный ход часов. Сборка может быть неполной." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "для ключа «%s%s» нужно указать аргументом непустую строку" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "ключ «-%c» должен использоваться с целым положительным аргументом" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sЭта программа собрана для %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sЭта программа собрана для %s (%s)\n" -#: src/main.c:3665 -#, fuzzy, c-format +#: src/main.c:3734 +#, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later \n" "%sThis is free software: you are free to change and redistribute it.\n" "%sThere is NO WARRANTY, to the extent permitted by law.\n" msgstr "" -"%sЛицензия GPLv3+: GNU GPL версии 3 или новее \n" "%sЭто свободное программное обеспечение: вы можете свободно изменять его и\n" "%sраспространять. НЕТ НИКАКИХ ГАРАНТИЙ вне пределов, допустимых законом.\n" -#: src/main.c:3682 +#: src/main.c:3751 #, c-format msgid "" "\n" @@ -1478,7 +1495,7 @@ msgstr "" "\n" "# База данных Make, напечатана %s" -#: src/main.c:3692 +#: src/main.c:3761 #, c-format msgid "" "\n" @@ -1487,40 +1504,50 @@ msgstr "" "\n" "# Печать базы данных Make завершена %s\n" -#: src/misc.c:602 -#, fuzzy, c-format +#: src/misc.c:606 +#, c-format msgid "%s value %s: %s" -msgstr "%s%s: %s" +msgstr "%s значение %s: %s" -#: src/misc.c:605 +#: src/misc.c:609 #, c-format msgid "%s value %s: not a directory" -msgstr "" +msgstr "%s значение %s: не каталог" -#: src/misc.c:613 -#, fuzzy, c-format +#: src/misc.c:617 +#, c-format msgid "using default temporary directory '%s'" -msgstr "Использование способа по умолчанию для «%s».\n" +msgstr "используется временный каталог по умолчанию «%s»" -#: src/misc.c:698 -#, fuzzy, c-format -msgid "create temporary file %s: %s" -msgstr "Создаётся временный пакетный файл %s\n" +#: src/misc.c:659 +#, c-format +msgid "cannot generate temp path from %s: %s" +msgstr "невозможно сгенерировать временный путь из %s: %s" -#: src/misc.c:708 -#, fuzzy, c-format -msgid "unlink temporary file %s: %s" -msgstr "unlink (временный файл)" +#: src/misc.c:667 +#, c-format +msgid "cannot generate temp name: %s" +msgstr "невозможно сгенерировать временное имя: %s" + +#: src/misc.c:717 +#, c-format +msgid "cannot create temporary file %s: %s" +msgstr "невозможно создать временный файл %s: %s" -#: src/misc.c:733 -#, fuzzy, c-format +#: src/misc.c:730 +#, c-format +msgid "cannot unlink temporary file %s: %s" +msgstr "невозможно удалить временный файл %s: %s" + +#: src/misc.c:760 +#, c-format msgid "fdopen: temporary file %s: %s" -msgstr "fopen (временный файл)" +msgstr "fdopen: временный файл %s: %s" -#: src/misc.c:747 -#, fuzzy, c-format +#: src/misc.c:777 +#, c-format msgid "fopen: temporary file %s: %s" -msgstr "fopen (временный файл)" +msgstr "fopen: временный файл %s: %s" #: src/output.c:95 #, c-format @@ -1562,335 +1589,347 @@ msgstr "%s[%u]: вход в каталог «%s»\n" msgid "%s[%u]: Leaving directory '%s'\n" msgstr "%s[%u]: выход из каталога «%s»\n" -#: src/output.c:280 +#: src/output.c:252 +#, c-format +msgid "cannot open output-sync lock file, suppressing output-sync." +msgstr "невозможно открыть файл блокировки output-sync, отключаем output-sync." + +#: src/output.c:283 #, c-format msgid "warning: Cannot acquire output lock, disabling output sync." msgstr "" +"предупреждение: невозможно захватить блокировку вывода, отключаем синхронный " +"вывод." -#: src/output.c:475 +#: src/output.c:479 msgid ". Stop.\n" msgstr ". Останов.\n" -#: src/output.c:510 +#: src/output.c:514 #, c-format msgid "%s%s: %s" msgstr "%s%s: %s" -#: src/posixos.c:170 src/posixos.c:175 src/posixos.c:233 src/posixos.c:238 +#: src/posixos.c:177 src/posixos.c:182 src/posixos.c:241 src/posixos.c:249 #, c-format -msgid "Cannot open jobserver %s: %s" -msgstr "" +msgid "cannot open jobserver %s: %s" +msgstr "невозможно открыть сервер заданий %s: %s" -#: src/posixos.c:186 src/w32/w32os.c:219 -#, fuzzy, c-format -msgid "Unknown jobserver auth style '%s'" -msgstr "неизвестный тип output-sync «%s»" +#: src/posixos.c:193 src/w32/w32os.c:219 +#, c-format +msgid "unknown jobserver auth style '%s'" +msgstr "неизвестный стиль аутентификации сервера заданий «%s»" -#: src/posixos.c:190 +#: src/posixos.c:197 msgid "creating jobs pipe" msgstr "создаётся канал заданий" -#: src/posixos.c:201 src/posixos.c:434 +#: src/posixos.c:208 src/posixos.c:446 msgid "duping jobs pipe" msgstr "делается копия канала заданий" -#: src/posixos.c:207 +#: src/posixos.c:214 msgid "init jobserver pipe" msgstr "инициализация канала сервера заданий" -#: src/posixos.c:261 -#, fuzzy, c-format +#: src/posixos.c:273 +#, c-format msgid "invalid --jobserver-auth string '%s'" -msgstr "внутренняя ошибка: неправильная строка --jobserver-auth «%s»" +msgstr "неправильная строка --jobserver-auth «%s»" -#: src/posixos.c:363 +#: src/posixos.c:375 msgid "write jobserver" msgstr "запись сервера заданий" -#: src/posixos.c:483 +#: src/posixos.c:495 #, c-format msgid "job server shut down" msgstr "сервер заданий выключен" -#: src/posixos.c:486 +#: src/posixos.c:498 msgid "pselect jobs pipe" msgstr "pselect из канала заданий" -#: src/posixos.c:502 src/posixos.c:616 +#: src/posixos.c:514 src/posixos.c:628 msgid "read jobs pipe" msgstr "чтение канала заданий" -#: src/posixos.c:672 -#, fuzzy, c-format +#: src/posixos.c:684 +#, c-format msgid "invalid --sync-mutex string '%s'" -msgstr "внутренняя ошибка: неправильная строка --jobserver-auth «%s»" +msgstr "неправильная строка --sync-mutex «%s»" -#: src/posixos.c:681 -#, fuzzy, c-format +#: src/posixos.c:693 +#, c-format msgid "cannot open output sync mutex %s: %s" -msgstr "неизвестный тип output-sync «%s»" +msgstr "невозможно открыть синхронизирующий мьютекс вывода %s: %s" -#: src/posixos.c:855 +#: src/posixos.c:867 #, c-format msgid "Cannot open '%s' with O_TMPFILE: %s.\n" -msgstr "" +msgstr "Невозможно открыть «%s» с флагом O_TMPFILE: %s.\n" #: src/read.c:184 #, c-format msgid "Reading makefiles...\n" msgstr "Чтение make-файлов...\n" -#: src/read.c:330 +#: src/read.c:322 #, c-format msgid "Reading makefile '%s'" msgstr "Чтение make-файла «%s»" -#: src/read.c:332 +#: src/read.c:324 #, c-format msgid " (no default goal)" msgstr " (нет цели по умолчанию)" -#: src/read.c:334 +#: src/read.c:326 #, c-format msgid " (search path)" msgstr " (путь поиска)" -#: src/read.c:336 +#: src/read.c:328 #, c-format msgid " (don't care)" msgstr " (игнорировать ошибки)" -#: src/read.c:338 +#: src/read.c:330 #, c-format msgid " (no ~ expansion)" msgstr " (не раскрывать символ `~') " -#: src/read.c:663 +#: src/read.c:657 #, c-format msgid "Skipping UTF-8 BOM in makefile '%s'\n" msgstr "Пропуск UTF-8 BOM в make-файле «%s»\n" -#: src/read.c:666 +#: src/read.c:660 #, c-format msgid "Skipping UTF-8 BOM in makefile buffer\n" msgstr "Пропуск UTF-8 BOM в буфере make-файла\n" -#: src/read.c:795 +#: src/read.c:789 #, c-format msgid "invalid syntax in conditional" msgstr "неверный синтаксис в условном выражении" -#: src/read.c:1002 +#: src/read.c:996 #, c-format msgid "recipe commences before first target" msgstr "обнаружен способ до первого определения цели" -#: src/read.c:1053 +#: src/read.c:1047 #, c-format msgid "missing rule before recipe" msgstr "перед способом отсутствует правило" -#: src/read.c:1154 +#: src/read.c:1147 #, c-format msgid "missing separator (did you mean TAB instead of 8 spaces?)" msgstr "пропущен разделитель (возможно нужен TAB вместо восьми пробелов?)" #: src/read.c:1156 #, c-format +msgid "missing separator (ifeq/ifneq must be followed by whitespace)" +msgstr "пропущен разделитель (нужен пробел после ifeq/ifneq)" + +#: src/read.c:1159 +#, c-format msgid "missing separator" msgstr "пропущен разделитель" -#: src/read.c:1300 +#: src/read.c:1303 #, c-format msgid "missing target pattern" msgstr "пропущен образец цели" -#: src/read.c:1302 +#: src/read.c:1305 #, c-format msgid "multiple target patterns" msgstr "несколько образцов цели" -#: src/read.c:1306 +#: src/read.c:1309 #, c-format msgid "target pattern contains no '%%'" msgstr "образец цели не содержит «%%»" -#: src/read.c:1349 +#: src/read.c:1352 #, c-format msgid "missing 'endif'" msgstr "отсутствует «endif»" -#: src/read.c:1388 src/read.c:1433 src/variable.c:1733 +#: src/read.c:1391 src/read.c:1436 src/variable.c:1776 #, c-format msgid "empty variable name" msgstr "пустое имя переменной" -#: src/read.c:1423 +#: src/read.c:1426 #, c-format msgid "extraneous text after 'define' directive" msgstr "излишний текст после директивы «define»" -#: src/read.c:1448 +#: src/read.c:1451 #, c-format msgid "missing 'endef', unterminated 'define'" msgstr "отсутствует «endif», незавершённая «define»" -#: src/read.c:1476 +#: src/read.c:1479 #, c-format msgid "extraneous text after 'endef' directive" msgstr "излишний текст после директивы «endef»" -#: src/read.c:1548 +#: src/read.c:1551 #, c-format msgid "extraneous text after '%s' directive" msgstr "Излишний текст после директивы «%s»" -#: src/read.c:1549 +#: src/read.c:1552 #, c-format msgid "extraneous '%s'" msgstr "излишняя «%s»" -#: src/read.c:1577 +#: src/read.c:1580 #, c-format msgid "only one 'else' per conditional" msgstr "в условном выражении возможна только одна «else»" -#: src/read.c:1853 +#: src/read.c:1856 #, c-format msgid "Malformed target-specific variable definition" msgstr "Неправильный формат задания переменной цели" -#: src/read.c:1995 +#: src/read.c:1998 #, c-format msgid ".WAIT should not have prerequisites" -msgstr "" +msgstr "У .WAIT не должно быть зависимостей" -#: src/read.c:2001 +#: src/read.c:2004 #, c-format msgid ".WAIT should not have commands" -msgstr "" +msgstr "У .WAIT не должно быть команд" -#: src/read.c:2039 +#: src/read.c:2042 #, c-format msgid "prerequisites cannot be defined in recipes" msgstr "в способах не могут задаваться зависимости" -#: src/read.c:2057 +#: src/read.c:2060 #, c-format msgid "grouped targets must provide a recipe" msgstr "для групповых целей должен предоставляться способ" -#: src/read.c:2100 +#: src/read.c:2103 #, c-format msgid "mixed implicit and static pattern rules" msgstr "смешаны неявные правила и правила со статическими образцами" -#: src/read.c:2123 +#: src/read.c:2126 #, c-format msgid "mixed implicit and normal rules" msgstr "смешаны неявные и обычные правила" -#: src/read.c:2155 +#: src/read.c:2158 #, c-format msgid "target '%s' doesn't match the target pattern" msgstr "цель «%s» не соответствует образцу целей" -#: src/read.c:2170 src/read.c:2221 +#: src/read.c:2173 src/read.c:2224 #, c-format msgid "target file '%s' has both : and :: entries" msgstr "целевой файл «%s» имеет вхождения и с :, и с ::" -#: src/read.c:2176 +#: src/read.c:2179 #, c-format msgid "target '%s' given more than once in the same rule" msgstr "цель «%s» указана несколько раз в одном правиле" -#: src/read.c:2186 +#: src/read.c:2189 #, c-format msgid "warning: overriding recipe for target '%s'" msgstr "предупреждение: переопределение способа для цели «%s»" -#: src/read.c:2189 +#: src/read.c:2192 #, c-format msgid "warning: ignoring old recipe for target '%s'" msgstr "предупреждение: старый способ для цели «%s» игнорируются" -#: src/read.c:2308 +#: src/read.c:2311 #, c-format msgid "*** mixed implicit and normal rules: deprecated syntax" msgstr "*** смешаны неявные и обычные правила: устаревший синтаксис" -#: src/read.c:2325 +#: src/read.c:2328 #, c-format msgid "warning: overriding group membership for target '%s'" msgstr "предупреждение: переопределение членства группы для цели «%s»" -#: src/read.c:2683 +#: src/read.c:2686 #, c-format msgid "warning: NUL character seen; rest of line ignored" msgstr "предупреждение: встречен символ NUL; игнорируется до конца строки" #: src/remake.c:97 -#, fuzzy, c-format +#, c-format msgid "warning: pattern recipe did not update peer target '%s'." -msgstr "предупреждение: переопределение способа для цели «%s»" +msgstr "предупреждение: шаблон способа не обновил равнозначную цель «%s»." -#: src/remake.c:254 +#: src/remake.c:258 #, c-format msgid "Nothing to be done for '%s'." msgstr "Цель «%s» не требует выполнения команд." -#: src/remake.c:255 +#: src/remake.c:259 #, c-format msgid "'%s' is up to date." msgstr "«%s» не требует обновления." -#: src/remake.c:350 +#: src/remake.c:354 #, c-format msgid "Pruning file '%s'.\n" msgstr "Обрезается файл «%s».\n" -#: src/remake.c:416 +#: src/remake.c:420 #, c-format msgid "%sNo rule to make target '%s', needed by '%s'%s" msgstr "%sНет правила для сборки цели «%s», требуемой для «%s»%s" -#: src/remake.c:426 +#: src/remake.c:430 #, c-format msgid "%sNo rule to make target '%s'%s" msgstr "%sНет правила для сборки цели «%s»%s" -#: src/remake.c:452 +#: src/remake.c:456 #, c-format msgid "Considering target file '%s'.\n" msgstr "Обработка целевого файла «%s».\n" -#: src/remake.c:459 +#: src/remake.c:463 #, c-format msgid "Recently tried and failed to update file '%s'.\n" msgstr "Предыдущая попытка обновить файл «%s» завершилась неудачно.\n" -#: src/remake.c:471 +#: src/remake.c:475 #, c-format msgid "File '%s' was considered already.\n" msgstr "Файл «%s» уже был обработан.\n" -#: src/remake.c:481 +#: src/remake.c:485 #, c-format msgid "Still updating file '%s'.\n" msgstr "Файл «%s» обновляется в данный момент.\n" -#: src/remake.c:484 +#: src/remake.c:488 #, c-format msgid "Finished updating file '%s'.\n" msgstr "Обновление файла «%s» завершено.\n" -#: src/remake.c:513 +#: src/remake.c:518 #, c-format msgid "File '%s' does not exist.\n" msgstr "Файл «%s» не существует.\n" -#: src/remake.c:520 +#: src/remake.c:525 #, c-format msgid "" "*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp" @@ -1898,127 +1937,127 @@ msgstr "" "*** Предупреждение: у файла «%s» параметр LOW_RESOLUTION_TIME содержит метку " "времени с высокой точностью" -#: src/remake.c:538 -#, fuzzy, c-format +#: src/remake.c:543 +#, c-format msgid "Grouped target peer '%s' of file '%s' does not exist.\n" -msgstr "Зависимость «%s» цели «%s» не существует.\n" +msgstr "Групповая равнозначная цель «%s» файла «%s» не существует.\n" -#: src/remake.c:558 +#: src/remake.c:563 #, c-format msgid "Using default recipe for '%s'.\n" msgstr "Использование способа по умолчанию для «%s».\n" -#: src/remake.c:603 src/remake.c:1165 +#: src/remake.c:608 src/remake.c:1167 #, c-format msgid "Circular %s <- %s dependency dropped." msgstr "Циклическая зависимость %s <- %s пропущена." -#: src/remake.c:737 -#, c-format -msgid "Finished prerequisites of target file '%s'.\n" -msgstr "Обновление целей, от которых зависит целевой файл «%s», завершено.\n" - -#: src/remake.c:743 +#: src/remake.c:748 #, c-format msgid "The prerequisites of '%s' are being made.\n" msgstr "Цели, от которых зависит «%s», в настоящий момент собираются.\n" -#: src/remake.c:757 +#: src/remake.c:752 +#, c-format +msgid "Finished prerequisites of target file '%s'.\n" +msgstr "Обновление целей, от которых зависит целевой файл «%s», завершено.\n" + +#: src/remake.c:762 #, c-format msgid "Giving up on target file '%s'.\n" msgstr "Аварийный останов на целевом файле «%s».\n" -#: src/remake.c:762 +#: src/remake.c:767 #, c-format msgid "Target '%s' not remade because of errors." msgstr "Цель «%s» не была пересобрана из-за ошибок." -#: src/remake.c:814 +#: src/remake.c:819 #, c-format msgid "Prerequisite '%s' is order-only for target '%s'.\n" msgstr "Зависимость «%s» для цели «%s» зависит от порядка.\n" -#: src/remake.c:819 +#: src/remake.c:824 #, c-format msgid "Prerequisite '%s' of target '%s' does not exist.\n" msgstr "Зависимость «%s» цели «%s» не существует.\n" -#: src/remake.c:824 +#: src/remake.c:829 #, c-format msgid "Prerequisite '%s' is newer than target '%s'.\n" msgstr "Зависимость «%s» новее, чем цель «%s».\n" -#: src/remake.c:827 +#: src/remake.c:832 #, c-format msgid "Prerequisite '%s' is older than target '%s'.\n" msgstr "Зависимость «%s» старее, чем цель «%s».\n" -#: src/remake.c:845 +#: src/remake.c:847 #, c-format msgid "Target '%s' is double-colon and has no prerequisites.\n" msgstr "Цель «%s» объявлена с двумя двоеточиями и не имеет зависимостей.\n" -#: src/remake.c:852 +#: src/remake.c:854 #, c-format msgid "No recipe for '%s' and no prerequisites actually changed.\n" msgstr "Способ для «%s» не задан, и начальные условия не изменены.\n" -#: src/remake.c:857 +#: src/remake.c:859 #, c-format msgid "Making '%s' due to always-make flag.\n" msgstr "Пересборка «%s» из-за установленного флага always-make.\n" -#: src/remake.c:865 +#: src/remake.c:867 #, c-format msgid "No need to remake target '%s'" msgstr "Нет необходимости пересобирать цель «%s»" -#: src/remake.c:867 +#: src/remake.c:869 #, c-format msgid "; using VPATH name '%s'" msgstr "; используется VPATH-имя «%s»" -#: src/remake.c:891 +#: src/remake.c:894 #, c-format msgid "Must remake target '%s'.\n" msgstr "Необходимо пересобрать цель «%s».\n" -#: src/remake.c:897 +#: src/remake.c:900 #, c-format msgid " Ignoring VPATH name '%s'.\n" msgstr " Игнорируется VPATH-имя «%s».\n" -#: src/remake.c:906 +#: src/remake.c:909 #, c-format msgid "Recipe of '%s' is being run.\n" msgstr "В настоящее время применяется способ «%s».\n" -#: src/remake.c:913 +#: src/remake.c:916 #, c-format msgid "Failed to remake target file '%s'.\n" msgstr "Не удалось пересоздать файл цели «%s».\n" -#: src/remake.c:916 +#: src/remake.c:919 #, c-format msgid "Successfully remade target file '%s'.\n" msgstr "Целевой файл «%s» успешно пересоздан.\n" -#: src/remake.c:919 +#: src/remake.c:922 #, c-format msgid "Target file '%s' needs to be remade under -q.\n" msgstr "Целевой файл «%s» требует пересоздания с ключом -q.\n" -#: src/remake.c:1118 +#: src/remake.c:1120 #, c-format msgid "Using default commands for '%s'.\n" msgstr "Использование команд по умолчанию для «%s».\n" -#: src/remake.c:1499 +#: src/remake.c:1503 #, c-format msgid "Warning: File '%s' has modification time %s s in the future" msgstr "Предупреждение: время изменения файла «%s» находится в будущем (%s)" -#: src/remake.c:1747 +#: src/remake.c:1751 #, c-format msgid ".LIBPATTERNS element '%s' is not a pattern" msgstr "Элемент .LIBPATTERNS «%s» не является образцом" @@ -2031,6 +2070,7 @@ msgstr "Не экспортируемые настройки: %s\n" #: src/rule.c:357 msgid "warning: ignoring prerequisites on suffix rule definition" msgstr "" +"предупреждение: игнорируются зависимости для определения суффиксного правила" #: src/rule.c:592 msgid "" @@ -2065,7 +2105,7 @@ msgstr "ОШИБКА: неверное значение num_pattern_rules! %u != #: src/shuffle.c:93 #, c-format msgid "invalid shuffle mode: %s: '%s'" -msgstr "" +msgstr "некорректный режим перестановки: %s: «%s»" #: src/signame.c:84 msgid "unknown signal" @@ -2282,44 +2322,49 @@ msgstr "" "# состояние хеш-таблицы:\n" "# " -#: src/variable.c:1786 +#: src/variable.c:1850 +#, c-format +msgid "warning: undefined variable '%.*s'" +msgstr "предупреждение: неопределённая переменная «%.*s»" + +#: src/variable.c:1867 msgid "automatic" msgstr "автоматическая" -#: src/variable.c:1789 +#: src/variable.c:1870 msgid "default" msgstr "по умолчанию" -#: src/variable.c:1792 +#: src/variable.c:1873 msgid "environment" msgstr "определена в среде" -#: src/variable.c:1795 +#: src/variable.c:1876 msgid "makefile" msgstr "make-файл" -#: src/variable.c:1798 +#: src/variable.c:1879 msgid "environment under -e" msgstr "окружение с -e" -#: src/variable.c:1801 +#: src/variable.c:1882 msgid "command line" msgstr "определена в командной строке" -#: src/variable.c:1804 +#: src/variable.c:1885 msgid "'override' directive" msgstr "Директива «override»" -#: src/variable.c:1814 +#: src/variable.c:1895 #, c-format msgid " (from '%s', line %lu)" msgstr " (из «%s», строка %lu)" -#: src/variable.c:1877 +#: src/variable.c:1958 msgid "# variable set hash-table stats:\n" msgstr "# состояние переменных в хеш-таблице:\n" -#: src/variable.c:1888 +#: src/variable.c:1969 msgid "" "\n" "# Variables\n" @@ -2327,7 +2372,7 @@ msgstr "" "\n" "# Переменные\n" -#: src/variable.c:1892 +#: src/variable.c:1973 msgid "" "\n" "# Pattern-specific Variable Values" @@ -2335,7 +2380,7 @@ msgstr "" "\n" "# Значения переменных особенные для маски" -#: src/variable.c:1906 +#: src/variable.c:1987 msgid "" "\n" "# No pattern-specific variable values." @@ -2343,7 +2388,7 @@ msgstr "" "\n" "# Нет значений переменных особенных для маски." -#: src/variable.c:1908 +#: src/variable.c:1989 #, c-format msgid "" "\n" @@ -2352,11 +2397,6 @@ msgstr "" "\n" "# %u значений переменных особенных для маски" -#: src/variable.h:237 -#, c-format -msgid "warning: undefined variable '%.*s'" -msgstr "предупреждение: неопределённая переменная «%.*s»" - #: src/vmsfunctions.c:91 #, c-format msgid "sys$search() failed with %d\n" @@ -2394,7 +2434,7 @@ msgstr "Добавить %.*s и очистить\n" msgid "Executing %s instead\n" msgstr "Вместо заданного выполняется %s\n" -#: src/vpath.c:600 +#: src/vpath.c:582 msgid "" "\n" "# VPATH Search Paths\n" @@ -2402,11 +2442,11 @@ msgstr "" "\n" "# Пути поиска VPATH\n" -#: src/vpath.c:617 +#: src/vpath.c:599 msgid "# No 'vpath' search paths." msgstr "# Не определён путь поиска «vpath»." -#: src/vpath.c:619 +#: src/vpath.c:601 #, c-format msgid "" "\n" @@ -2415,7 +2455,7 @@ msgstr "" "\n" "# %u путей поиска по «vpath»\n" -#: src/vpath.c:622 +#: src/vpath.c:604 msgid "" "\n" "# No general ('VPATH' variable) search path." @@ -2423,7 +2463,7 @@ msgstr "" "\n" "# Не определён общий (переменная «VPATH») путь поиска." -#: src/vpath.c:628 +#: src/vpath.c:610 msgid "" "\n" "# General ('VPATH' variable) search path:\n" @@ -2435,8 +2475,8 @@ msgstr "" #: src/w32/w32os.c:224 #, c-format -msgid "Jobserver slots limited to %d\n" -msgstr "Количество слотов сервера заданий ограничено %d\n" +msgid "jobserver slots limited to %d\n" +msgstr "количество слотов сервера заданий ограничено %d\n" #: src/w32/w32os.c:240 #, c-format @@ -2445,36 +2485,36 @@ msgstr "создание семафора сервера заданий: (оши #: src/w32/w32os.c:259 #, c-format -msgid "" -"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)" -msgstr "" -"внутренняя ошибка: не удалось открыть семафор сервера заданий «%s»: (ошибка " -"%ld: %s)" +msgid "unable to open jobserver semaphore '%s': (Error %ld: %s)" +msgstr "невозможно открыть семафор сервера заданий «%s»: (ошибка %ld: %s)" -#: src/w32/w32os.c:262 +#: src/w32/w32os.c:264 #, c-format msgid "Jobserver client (semaphore %s)\n" msgstr "Клиент сервера заданий (семафор %s)\n" -#: src/w32/w32os.c:310 +#: src/w32/w32os.c:312 #, c-format msgid "release jobserver semaphore: (Error %ld: %s)" msgstr "освобождение семафора сервера заданий: (ошибка %ld: %s)" -#: src/w32/w32os.c:381 +#: src/w32/w32os.c:383 #, c-format msgid "semaphore or child process wait: (Error %ld: %s)" msgstr "ожидание семафора или процесса-потомка: (ошибка %ld: %s)" -#: src/w32/w32os.c:449 -#, fuzzy, c-format +#: src/w32/w32os.c:451 +#, c-format msgid "cannot parse output sync mutex %s: %s" -msgstr "неизвестный тип output-sync «%s»" +msgstr "невозможно разобрать синхронизирующий мьютекс вывода %s: %s" -#: src/w32/w32os.c:452 -#, fuzzy, c-format +#: src/w32/w32os.c:454 +#, c-format msgid "invalid output sync mutex: %s" -msgstr "Некорректное имя функции: %s" +msgstr "некорректный синхронизирующий мьютекс вывода: %s" + +#~ msgid "target does not exist" +#~ msgstr "цель не существует" #~ msgid "%s: user %lu (real %lu), group %lu (real %lu)\n" #~ msgstr "" @@ -2635,6 +2675,3 @@ msgstr "Некорректное имя функции: %s" #~ msgid "invalid `override' directive" #~ msgstr "неправильная директива `override'" - -#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n" -#~ msgstr "-предупреждение, после CTRL-Y останутся суб-процессы.\n" diff --git a/po/sr.gmo b/po/sr.gmo index ed1121d..7beea18 100644 Binary files a/po/sr.gmo and b/po/sr.gmo differ diff --git a/po/sr.po b/po/sr.po index 79ce979..41330e4 100644 --- a/po/sr.po +++ b/po/sr.po @@ -1,22 +1,23 @@ # Serbian translation for make. # Copyright © 2020 Free Software Foundation, Inc. # This file is distributed under the same license as the make package. -# Мирослав Николић , 2016–2022. +# Мирослав Николић , 2016–2023. +# msgid "" msgstr "" -"Project-Id-Version: make-4.3.90\n" +"Project-Id-Version: make-4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2022-10-31 02:23-0400\n" -"PO-Revision-Date: 2022-09-25 10:48+0200\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-02-26 08:50+0100\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" -"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: Poedit 2.3\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: Gtranslator 41.0\n" "X-Bugs: Report translation errors to the Language-Team address.\n" #: src/ar.c:47 @@ -90,9 +91,9 @@ msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " уид = %d, гид = %d, режим = 0%o.\n" #: src/commands.c:379 -#, fuzzy, c-format +#, c-format msgid "Recipe has too many lines (limit %hu)" -msgstr "Рецепт има превише редова (%ud)" +msgstr "Рецепт има превише редова (ограничење %hu)" #: src/commands.c:501 msgid "*** Break.\n" @@ -131,7 +132,7 @@ msgstr " (уграђено):" msgid " (from '%s', line %lu):\n" msgstr " (од „%s“, %lu. ред):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -139,62 +140,62 @@ msgstr "" "\n" "# Директоријуми\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: не могу да добавим податке.\n" -#: src/dir.c:1122 -#, fuzzy, c-format +#: src/dir.c:1123 +#, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" -msgstr "# %s (кључ „%s“, м-време %I64u): не могу да отворим.\n" +msgstr "# %s (кључ „%s“, м-време %s): не могу да отворим.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (уређај %d, и-чвор [%d,%d,%d]): не могу да отворим.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (уређај %ld, и-чвор %ld): не могу да отворим.\n" -#: src/dir.c:1155 -#, fuzzy, c-format +#: src/dir.c:1156 +#, c-format msgid "# %s (key %s, mtime %s): " -msgstr "# %s (кључ „%s“, м-време %I64u): " +msgstr "# %s (кључ „%s“, м-време %s): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (уређај %d, и-чвор [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (уређај %ld, и-чвор %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Не" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " датотеке, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "не" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " немогућности" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " за сада." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " немогућности у %lu директоријума.\n" @@ -214,173 +215,173 @@ msgstr "Дубинска променљива „%s“ упућује на се msgid "unterminated variable reference" msgstr "недовршена упута променљиве" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Рецепт је наведен за датотеку „%s“ у %s:%lu," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Нашао сам рецепт за датотеку „%s“ изричитом претрагом правила," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "али се „%s“ сада сматра истом датотеком као „%s“." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Рецепат за „%s“ биће замењен у корист једног за „%s“." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "не могу да преименујем једну двотачку „%s“ у две двотачке „%s“" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "не могу да преименујем две двотачке „%s“ у једну двотачку „%s“" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Бришем посредничку датотеку „%s“" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Уклањам посредничке датотеке...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "„%s“ не може бити и „.NOTINTERMEDIATE“ и „.INTERMEDIATE“" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "„%s“ не може бити „.NOTINTERMEDIATE“ и „.SECONDARY“" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr "„.NOTINTERMEDIATE“ и „.SECONDARY“ се узајамно искључују" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Тренутно време" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Временска ознака је ван опсега; замењујем „%s“" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Није мета:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Драгоцена датотека (предуслов од „.PRECIOUS“)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Лажна мета (предуслов од „.PHONY“)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Мета линије наредби." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Основно, „MAKEFILES“, или „-include/sinclude makefile“." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Правило изградње" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Претрага по изричитом правилу је обављена." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Претрага по изричитом правилу није обављена." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Изричити/статички корен шаблона: '%s'\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Датотека је прелазни предуслов." -#: src/file.c:1111 +#: src/file.c:1108 msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Датотека је предуслов за „.NOTINTERMEDIATE“." -#: src/file.c:1113 +#: src/file.c:1110 msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Датотека је секундарна (предуслов за „.SECONDARY“)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Такође твори:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Време измене није никада проверено." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Датотека не постоји." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Датотека је превише стара." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Последња измена „%s“\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Датотека је освежена." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Датотека није освежена." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Рецепт тренутно ради (ОВО ЈЕ ГРЕШКА)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Рецепт зависности ради (ОВО ЈЕ ГРЕШКА)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Успешно је освежена." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Треба да се освежи („-q“ је подешено)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Није успела да се освежи." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Неисправна вередност у члану „command_state“!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -388,7 +389,7 @@ msgstr "" "\n" "# Датотеке" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -398,7 +399,7 @@ msgstr "" "# статистика хеш-табеле датотека:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Поље „%s“ није у остави: %s" @@ -463,133 +464,138 @@ msgstr "windows32_openpipe(): „process_init_fd()“ није успело\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Бришем привремену датотеку групе „%s“\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file: недостаје назив датотеке" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file: превише аргумената" +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file: Нисам успео да отворим „%s“: %s\n" + # -#: src/function.c:2397 +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file: неисправна радња датотеке: %s" -#: src/function.c:2527 -#, fuzzy, c-format +#: src/function.c:2552 +#, c-format msgid "insufficient number of arguments (%u) to function '%s'" -msgstr "недовољан број аргумената (%d) за функцију „%s“" +msgstr "недовољан број аргумената (%u) за функцију „%s“" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "није примењено на овој платформи: функција „%s“" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "недовршен позив за функцију „%s“: недостаје „%c“" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Празан назив функције" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Неисправан назив функције: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Назив функције је предуг: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Неисправан најмањи број аргумената (%u) за функцију „%s“" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Неисправан највећи број аргумената (%u) за функцију „%s“" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: опција „%s“ је нејасна\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: опција „--%s“ не дозвољава аргумент\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: опција „%c%s“ не дозвољава аргумент\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: опција „%s“ захтева аргумент\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: непозната опција „--%s“\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: непозната опција „%c%s“\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: неисправна опција -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: неисправна опција -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: опција захтева аргумент -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: опција „-W %s“ је нејасна\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: опција „-W %s“ не дозвољава аргумент\n" @@ -639,178 +645,178 @@ msgstr "Тражим изричито правило члана архиве з msgid "No archive-member implicit rule found for '%s'.\n" msgstr "Нисам нашао изричито правило члана архиве за „%s“.\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Избегавам изричито дубачење правила за правило „%s“.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "Покушавам јаче.\n" -#: src/implicit.c:501 +#: src/implicit.c:503 #, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Покушавам правило шаблона „%s“ са обележјем „%.*s“.\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Корен је предуг: „%s%.*s“.\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Одбацујем правило „%s“ због немогућег предуслова правила „%s“.\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Одбацујем правило „%s“ због немогућег изричитог предуслова „%s“.\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Покушавам са предусловом правила „%s“.\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Покушавам изричити предуслов „%s“.\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, c-format msgid "'%s' ought to exist.\n" msgstr "„%s“ треба да постоји.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "Нађох „%s“.\n" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "Користим правило сагласности „%s“ услед „%s“.\n" -#: src/implicit.c:856 +#: src/implicit.c:858 #, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "Предуслов „%s“ правила „%s“ се не квалификује да треба да постоји.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Нађох предуслов „%s“ као „VPATH“ „%s“\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Тражим правило са експлицитном датотеком „%s“.\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Тражим правило са средњом датотеком „%s“.\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Одбацујем правило „%s“ због немогућег предуслова „%s“.\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, c-format msgid "Not found '%s'.\n" msgstr "Нисам нашао „%s“.\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Нађох изричито правило „%s“ за „%s“.\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Тражим правило сагласности за „%s“.\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Нисам нашао изричито правило за „%s“.\n" -#: src/job.c:380 +#: src/job.c:377 msgid "Cannot create a temporary file" msgstr "Не могу да направим привремену датотеку" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (језгрени избачај)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (занемарено)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "<уграђено>" -#: src/job.c:587 +#: src/job.c:584 #, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] грешка %d%s%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Чекам на недовршене послове...." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Активан подпроцес „%p“ (%s) ПИД %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (удаљено)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Почистио сам успели подпроцес „%p“ ПИД %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Почистио сам неуспели подпроцес „%p“ ПИД %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Бришем привремену датотеку групе „%s“\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Нисам успео да обришем привремену датотеку групе „%s“ (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Уклањам подпроцес „%p“ ПИД %s%s из ланца.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Отпуштен прстен за подпроцес „%p“ (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "Функција „process_easy()“ није успела да покрене процес (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -819,85 +825,96 @@ msgstr "" "\n" "Избројах %d аргумента у неуспелом покретању\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Стављам подпроцес „%p“ (%s) ПИД %s%s у ланац.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Добијен прстен за подпроцес „%p“ (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: освежавам мету „%s“ услед: мета је „.PHONY“" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: освежавам мету „%s“ услед: мета не постоји" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: освежавам мету „%s“ услед: %s" -#: src/job.c:1910 -msgid "target does not exist" -msgstr "мета не постоји" +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: освежавам мету „%s“ услед: непознати разлози" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "не могу да спроведем ограничења оптерећења на овом оперативном систему" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "не могу да спроведем ограничење оптерећења: " -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "нема више ручки датотеке: не могу да удвостручим стандардни улаз" -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "нема више ручки датотеке: не могу да удвостручим стандардни излаз" -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "нема више ручки датотеке: не могу да удвостручим стандардну грешку" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "Не могу да повратим стандардни улаз" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "Не могу да повратим стандардни излаз" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "Не могу да повратим стандардну грешку" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "мејк је почистио подпроцес са пид-ом %s, још увек чекам на пид %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: можда је потрошен простор окружења" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "„$SHELL“ је промењена (беше „%s“, сада је „%s“)\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Правим привремену датотеку групе „%s“\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -906,7 +923,7 @@ msgstr "" "Садржај датотеке групе:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -915,7 +932,7 @@ msgstr "" "Садржај датотеке групе:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (%d. ред) Лош контекст шкољке (!unixy && !batch_mode_shell)\n" @@ -960,19 +977,19 @@ msgstr "Растоварујем дељени објекат „%s“\n" msgid "The 'load' operation is not supported on this platform" msgstr "Радња „load“ није подржана на овој платформи" -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Опције:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Занемарено зарад сагласности.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Безусловно одрађује све мете.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -981,19 +998,19 @@ msgstr "" " Прелази у ДИРЕКТОРИЈУМ пре него што било шта " "уради.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Исписује доста података за уклањање грешака.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=ЗАСТАВИЦЕ] Исписује разне врсте података за уклањање " "грешака.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1002,13 +1019,13 @@ msgstr "" " Променљиве окружења превазилазе " "мејк_датотеке.\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E STRING, --eval=НИСКА Процењује НИСКУ као изјаву мејк_датотеке.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1016,15 +1033,15 @@ msgstr "" " -f ДТТКА, --file=ДТТКА, --makefile=ДТТКА\n" " Чита ДАТОТЕКУ као мејк_датотеку.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Приказује ову помоћ и излази.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Занемарује грешке из рецепата.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1032,7 +1049,7 @@ msgstr "" " -I ДИР, --include-dir=ДИР\n" " Тражи у ДИРЕКТОРИЈУМУ укључене мејк_датотеке.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1040,18 +1057,18 @@ msgstr "" " -j [Бр.], --jobs[=Бр.] Допушта БРОЈ посла одједном; бесконачан број " "послова без аргумената.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr " --jobserver-style=СТИЛ Бира стил сервера посла за коришћење.\n" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Наставља и даље када неке мете не могу бити " "одрађене.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1061,7 +1078,7 @@ msgstr "" " Не започиње више послова осим ако оптерећење " "није испод БРОЈА.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1069,7 +1086,7 @@ msgstr "" " -L, --check-symlink-times Користи последње м-време између симболичких " "веза и мете.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1078,7 +1095,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " Не покреће никакав рецепт; само их исписује.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1088,7 +1105,7 @@ msgstr "" " Сматра да је ДАТОТЕКА врло стара и не одрађује " "је.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1096,12 +1113,12 @@ msgstr "" " -O[ВРСТА], --output-sync[=ВРСТА]\n" " Усаглашава излаз паралелних послова ВРСТОМ.\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr "" " -p, --print-data-base Исписује унутрашњу базу података мејка.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1109,16 +1126,16 @@ msgstr "" " -q, --question Не покреће ниједан рецепт; излазно стање " "говори да ли је освежен.\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules Искључује уграђена изричита правила.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Искључује уграђена подешавања променљиве.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" @@ -1126,17 +1143,17 @@ msgstr "" " --shuffle[={СЕЈЕ|насумично|обрнуто|ништа}]\n" " Обавља мешање предуслова и циљева.\n" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Не приказује рецепте.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Одзвања рецептима (искључује режим „--" "silent“).\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1144,25 +1161,25 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Искључује „-k“.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Додирује мете уместо да их поново одрађује.\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Исписује податке о праћењу.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version Исписује издање програма и излази.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Исписује тренутни директоријум.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1170,7 +1187,7 @@ msgstr "" " --no-print-directory Искључује „-w“, чак и ако је изричито " "укључена.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1178,7 +1195,7 @@ msgstr "" " -W ДТТКА, --what-if=ДТТКА, --new-file=ДТТКА, --assume-new=ДТТКА\n" " Сматра да је ДАТОТЕКА бесконачно нова.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1186,32 +1203,32 @@ msgstr "" " --warn-undefined-variables Упозорава када се упућује на неодређену " "променљиву.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "грешка писања: стандардни излаз" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "празна ниска је неисправна као назив датотеке" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "непозната одредба нивоа прочишћавања „%s“" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "непозната врста усклађивања излаза „%s“" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Употреба: %s [опције] [мета] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1220,7 +1237,7 @@ msgstr "" "\n" "Овај програм је изграђен за „%s“\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1229,17 +1246,17 @@ msgstr "" "\n" "Овај програм је изграђен за „%s“ (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "Грешке пријавите на \n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Добих прекид/изузетак (код = 0x%lx, адреса = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1254,32 +1271,32 @@ msgstr "" "Заставице изузетка = %lx\n" "Адреса изузетка = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Повреда приступа: радња писања на адреси 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Повреда приступа: радња читања на адреси 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "Функција „нађи_и_подеси_шкољку()“ подешава „основну_шкољку“ = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "Претрага путање „нађи_и_подеси_шкољку()“ подешава „основну_шкољку“ = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "поништавам везу (привремена датотека): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1287,153 +1304,159 @@ msgstr "" "упозорење: послужитељ посла није доступан: користим „-j1“. Додајте + да " "родитељ одреди правило." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "упозорење: „-j%d“ је присиљено у субмејку: поново подешава режим послужитеља " "посла." -#: src/main.c:1930 +#: src/main.c:1946 #, c-format msgid "Makefile from standard input specified twice" msgstr "Мејк_датотека са стандардног улаза је наведена два пута" -#: src/main.c:1940 +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "" +"не могу да причувам „makefile“ са стандардног улаза у привремену датотеку" + +#: src/main.c:1959 #, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite: привремена датотека „%s“: %s" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "упозорење: „-j%d“ је присиљено у „makefile“: поново подешава режим " "послужитеља посла." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Паралелни послови (-j) нису подржани на овој платформи." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Враћам на режим једног посла (-j1) mode." -#: src/main.c:2248 -#, fuzzy, c-format +#: src/main.c:2260 +#, c-format msgid "Using jobserver controller %s\n" -msgstr "Непознат стил усклађивања сервера посла „%s“" +msgstr "Користим контролер сервера посла „%s“\n" -#: src/main.c:2250 -#, fuzzy, c-format +#: src/main.c:2262 +#, c-format msgid "Using output-sync mutex %s\n" -msgstr "неисправно узајамно искључивање усклађивања излаза: %s" +msgstr "Користим мутекс усклађивања излаза „%s“\n" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Симболичке везе нису подржане: искључујем „-L“." -#: src/main.c:2327 -#, fuzzy, c-format +#: src/main.c:2344 +#, c-format msgid "Enabled shuffle mode: %s\n" -msgstr "неисправан режим мешања: %s: „%s“" +msgstr "Укључен је режим мешања: %s\n" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Освежавам мејк_датотеке...\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Мејк_датотека „%s“ се можда понавља; неђу је поново одрадити.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: нисам успео да учитам" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Нисам успео поново да одрадим мејк_датотеку „%s“." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Нисам нашао укључену мејк_датотеку „%s“." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Нисам нашао мејк_датотеку „%s“" -#: src/main.c:2700 +#: src/main.c:2717 #, c-format msgid "Couldn't change back to original directory" msgstr "Не могу да се вратим у изворни директоријум" -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Поново-извршавам[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr "„.DEFAULT_GOAL“ садржи више од једне мете" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Нема мета" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Нису наведене мете и нисам нашао мејк_датотеку" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Освежавам циљне мете...\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "упозорење: Откривен је проблем са часовником. Ваша изградња може бити " "недовршена." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "Опција „%s%s“ захтева аргумент не-празне ниске" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "Опција „-%c“ захтева аргумент позитивног целог броја" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sИзградња за „%s“\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sИзградња за „%s“(%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later , 1996-2002. # Christer Andersson , 2007. -# Göran Uddeborg , 2011, 2013, 2014, 2016, 2019, 2020, 2022. +# Göran Uddeborg , 2011, 2013, 2014, 2016, 2019, 2020, 2022, 2023. # -# $Id: make.po,v 1.34 2022-10-25 08:53:05+02 göran Exp $ +# $Id: make.po,v 1.37 2023-01-15 17:13:49+01 göran Exp $ msgid "" msgstr "" -"Project-Id-Version: make 4.3.92\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2022-10-31 02:23-0400\n" -"PO-Revision-Date: 2022-10-25 08:52+0200\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-15 17:13+0100\n" "Last-Translator: Göran Uddeborg \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -133,7 +133,7 @@ msgstr " (inbyggd):" msgid " (from '%s', line %lu):\n" msgstr " (frÃ¥n ”%s”, rad %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -141,62 +141,62 @@ msgstr "" "\n" "# Kataloger\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: kunde inte ta status.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (nyckel %s, mtid %s): kunde inte öppnas.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (enhet %d, inod [%d,%d,%d]): kunde inte öppnas.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (enhet %ld, inod %ld): kunde inte öppnas.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (nyckel %s, mtid %s): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (enhet %d, inod [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (enhet %ld, inod %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Inga" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " filer, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "inga" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " omöjligheter" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " hittills." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " omöjligheter i %lu kataloger.\n" @@ -217,176 +217,176 @@ msgstr "Den rekursiva variabeln ”%s” hänvisar till sig själv (sÃ¥ smÃ¥ning msgid "unterminated variable reference" msgstr "oavslutad variabelreferens" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Recept angavs för filen ”%s” pÃ¥ %s:%lu," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Recept för filen ”%s” hittades genom sökning efter implicit regel," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "men ”%s” anses nu vara samma fil som ”%s”." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" "Kommer att bortse frÃ¥n recept för ”%s” till förmÃ¥n för det som gäller ”%s”." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "kan inte ändra namn frÃ¥n enkelkolon ”%s” till dubbelkolon ”%s”" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "kan inte ändra namn frÃ¥n dubbelkolon ”%s” till enkelkolon ”%s”" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Tar bort mellanfilen ”%s”" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Tar bort mellanfiler …\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "%s kan inte vara bÃ¥de .NOTINTERMEDIATE och .INTERMEDIATE" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "%s kan inte vara bÃ¥de .NOTINTERMEDIATE och .SECONDARY" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr ".NOTINTERMEDIATE och .SECONDARY är ömsesidigt uteslutande" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Nuvarande tid" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Tidsvärde utanför gränser; ersätter med %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Inte ett mÃ¥l:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Värdefull fil (nödvändig för .PRECIOUS)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# LÃ¥tsasmÃ¥l (nödvändig för .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# KommandoradsmÃ¥l." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "" "# En standardmakefil, eller enligt MAKEFILES, eller en -include/sinclude-" "makefil." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Inbyggd regel" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Implicit regelsökning har genomförts." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Implicit regelsökning har inte genomförts." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Implicit/statisk mönsterstam: ”%s”\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Filen är ett övergÃ¥ende beroende." -#: src/file.c:1111 +#: src/file.c:1108 msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Filen är en förutsättning för .NOTINTERMEDIATE." -#: src/file.c:1113 +#: src/file.c:1110 msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Filen är sekundär (förutsättning för .SECONDARY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Skapar ocksÃ¥:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Ändringstiden har inte kontrollerats." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Filen finns inte." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Filen är mycket gammal." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Senast ändrad %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Filen har uppdaterats." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Filen har inte uppdaterats." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Recept körs just nu (DETTA ÄR ETT FEL)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Beroenderecept körs (DETTA ÄR ETT FEL)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Uppdateringen lyckades." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Behöver uppdateras (-q har angivits)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Uppdateringen misslyckades." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Ogiltigt värde i medlemmen ”command_state”!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -394,7 +394,7 @@ msgstr "" "\n" "# Filer" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -404,7 +404,7 @@ msgstr "" "# statistik för filhashtabell:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Fältet ”%s” cachas inte: %s" @@ -469,132 +469,137 @@ msgstr "windows32_openpipe(): process_init_fd() misslyckades\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Städar bort tillfällig satsfil %s\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file: filnamn saknas" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "öppna: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "skriv: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "stäng: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file: för mÃ¥nga argument" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file: Misslyckades att öppna ”%s”: %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "läs: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file: felaktig filÃ¥tgärd: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "otillräckligt antal argument (%u) till funktionen ”%s”" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "ej implementerat pÃ¥ denna plattform: funktionen ”%s”" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "oavslutat funktionsanrop ”%s”: ”%c” saknas" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Tomt funktionsnamn" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Felaktigt funktionsnamn: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Funktionsnamnet är för lÃ¥ngt: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Felaktigt minsta antal argument (%u) till funktionen ”%s”" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Felaktigt största antal argument (%u) till funktionen ”%s”" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: flaggan ”%s” är tvetydig\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: flaggan ”--%s” tar inget argument\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: flaggan ”%c%s” tar inget argument\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: flaggan ”%s” kräver ett argument\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: okänd flagga ”--%s”\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: okänd flagga ”%c%s”\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: otillÃ¥ten flagga -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: ogiltig flagga -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: flaggan kräver ett argument -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: flaggan ”-W %s” är tvetydig\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: flaggan ”-W %s” tar inget argument\n" @@ -644,182 +649,182 @@ msgstr "Letar efter en implicit regel för arkivmedlemmen ”%s”.\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "Ingen implicit regel för arkivmedlem funnen för ”%s”.\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Undviker rekursion orsakad av implicit regel för regeln ”%s”.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "Försöker hÃ¥rdare.\n" -#: src/implicit.c:501 +#: src/implicit.c:503 #, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Prövar mönsterregeln ”%s” med stammen ”%.*s”.\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Stammen är för lÃ¥ng: ”%s%.*s”.\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "" "Avvisar regeln ”%s” pÃ¥ grund av den omöjliga regelförutsättningen ”%s”.\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "" "Avvisar regeln ”%s” pÃ¥ grund av den omöjliga implicita förutsättningen " "”%s”.\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Prövar det regelförutsättningen ”%s”.\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Prövar den implicita förutsättningen ”%s”.\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, c-format msgid "'%s' ought to exist.\n" msgstr "”%s” borde finnas.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "Hittade ”%s”.\n" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "Använder kompatibilitetsregeln ”%s” pÃ¥ grund av ”%s”.\n" -#: src/implicit.c:856 +#: src/implicit.c:858 #, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "" "Förutsättningen ”%s” för regeln ”%s” kvalificerar inte som borde finnas.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Hittade förutsättningen ”%s” som VPATH ”%s”.\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Letar efter en regel med den explicita filen ”%s”.\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Letar efter en regel med mellanfilen ”%s”.\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Avvisar regeln ”%s” pÃ¥ grund av den omöjliga förutsättningen ”%s”.\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, c-format msgid "Not found '%s'.\n" msgstr "”%s” finns inte.\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Hittade en implicit regel ”%s” för ”%s”.\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Söker efter en kompatibilitetsregel för ”%s”.\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Hittade ingen implicit regel för ”%s”.\n" -#: src/job.c:380 +#: src/job.c:377 msgid "Cannot create a temporary file" msgstr "Kan inte skapa en temporärfil" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (minnesdump)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (ignoreras)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:587 +#: src/job.c:584 #, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Fel %d%s%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Inväntar oavslutade jobb..." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Levande barnprocess %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (fjärr)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Inhöstar lyckad barnprocess: %p PID %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Inhöstar misslyckad barnprocess: %p PID %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Städar bort tillfällig satsfil %s\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Bortstädning av tillfällig satsfil %s misslyckades (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Tar bort barnprocessen %p PID %s%s frÃ¥n kedjan.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Frigjorde symbol för barnprocessen %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() misslyckades med processtart (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -828,85 +833,96 @@ msgstr "" "\n" "Räknade till %d argument vid misslyckad start\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "För upp barnprocessen %p (%s) PID %s%s pÃ¥ kedjan.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Erhöll symbol för barnprocessen %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: uppdatera mÃ¥let ”%s” pÃ¥ grund av: mÃ¥let är .PHONY" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: uppdatera mÃ¥let ”%s” pÃ¥ grund av: mÃ¥let finns inte" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: uppdatera mÃ¥let ”%s” pÃ¥ grund av: %s" -#: src/job.c:1910 -msgid "target does not exist" -msgstr "mÃ¥let finns inte" +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: uppdatera mÃ¥let ”%s” pÃ¥ grund av: okända skäl" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "kan inte upprätthÃ¥lla lastbegränsningar i detta operativsystem" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "kan inte upprätthÃ¥lla lastbegränsning: " -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "inga fler filhandtag: kunde inte duplicera standard in" -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "inga fler filhandtag: kunde inte duplicera standard ut" -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "inga fler filhandtag: kunde inte duplicera standard fel" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "Kunde inte Ã¥terställa standard in" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "Kunde inte Ã¥terställa standard ut" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "Kunde inte Ã¥terställa standard fel" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make inhöstade barn-pid %s, inväntar fortfarande pid %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: miljöutrymmet kanske är slut" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL ändrades (var ”%s”, är nu ”%s”)\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Skapar tillfällig satsfil %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -915,7 +931,7 @@ msgstr "" "SatsfilinnehÃ¥ll:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -924,7 +940,7 @@ msgstr "" "SatsfilinnehÃ¥ll:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (rad %d) Felaktigt skalsammanhang (!unixy && !batch_mode_shell)\n" @@ -969,19 +985,19 @@ msgstr "Laddar ur det delade objektet %s\n" msgid "The 'load' operation is not supported on this platform" msgstr "Operationen ”load” stödjs inte pÃ¥ denna plattform" -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Flaggor:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ignoreras av kompatibilitetsskäl.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Bygg ovillkorligen alla mÃ¥l.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -989,19 +1005,19 @@ msgstr "" " -C KATALOG, --directory=KATALOG\n" " Byt katalog till KATALOG innan nÃ¥got görs.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr "" " -d Skriv ut massor av felsökningsinformation.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=FLAGGOR] Skriv ut olika sorters " "felsökningsinformation.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1009,12 +1025,12 @@ msgstr "" " -e, --environment-overrides\n" " Miljövariabler Ã¥sidosätter makefiler.\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr " -E STRÄNG, --eval=STRÄNG Evaluera STRÄNG som en makefile-sats.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1022,15 +1038,15 @@ msgstr "" " -f FIL, --file=FIL, --makefile=FIL\n" " Använd FIL som makefil.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Skriv ut detta meddelande och avsluta.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Ignorera fel frÃ¥n recept.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1038,7 +1054,7 @@ msgstr "" " -I KATALOG, --include-dir=KATALOG\n" " Genomsök KATALOG efter inkluderade makefiler.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1046,17 +1062,17 @@ msgstr "" " -j [N], --jobs[=N] TillÃ¥t N samtidiga jobb; oändligt mÃ¥nga om " "inget antal anges.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr " --jobserver-style=STIL Välj stilen pÃ¥ jobbserver att använda.\n" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Fortsätt även om vissa mÃ¥l inte kan skapas.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1066,7 +1082,7 @@ msgstr "" " PÃ¥börja fler jobb endast om lasten understiger " "N.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1074,7 +1090,7 @@ msgstr "" " -L, --check-symlink-times Använd den senaste av mtiderna för symboliska " "länkar eller mÃ¥l.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1083,7 +1099,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " Kör inte nÃ¥got recept, skriv bara ut dem.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1093,7 +1109,7 @@ msgstr "" " Betrakta FIL som mycket gammal och Ã¥terskapa " "den inte.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1102,11 +1118,11 @@ msgstr "" " Synkronisera utmatningen av parallella jobb\n" " enligt TYP.\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base Skriv ut makes interna databas.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1114,18 +1130,18 @@ msgstr "" " -q, --question Kör inga recept; slutstatus visar om det är " "aktuellt.\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Inaktivera de inbyggda implicita reglerna.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Inaktivera de inbyggda " "variabelinställningarna.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" @@ -1133,16 +1149,16 @@ msgstr "" " --shuffle[={FRÖ|random|reverse|none}]\n" " Blanda förutsättningar och mÃ¥l.\n" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Återge inte recept.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Skriv recept (avaktivera --silent-läge).\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1150,26 +1166,26 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Stäng av -k.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Nydatera mÃ¥l i stället för att Ã¥terskapa dem.\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Skriv spÃ¥rningsinformation.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr "" " -v, --version Skriv ut makes versionsnummer och avsluta.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Skriv ut aktuell katalog.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1177,7 +1193,7 @@ msgstr "" " --no-print-directory Stäng av -w, även om det är implicit " "pÃ¥slaget.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1185,7 +1201,7 @@ msgstr "" " -W FIL, --what-if=FIL, --new-file=FIL, --assume-new=FIL\n" " Betrakta FIL som hur ny som helst.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1193,32 +1209,32 @@ msgstr "" " --warn-undefined-variables Varna vid användning av en odefinierad " "variabel.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "skrivfel: standard ut" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "en tom sträng är ett ogiltigt filnamn" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "okänd felsökningsnivÃ¥ ”%s” angiven" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "okänd typ av utmatningssynkronisering ”%s”" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Användning: %s [flaggor] [mÃ¥l] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1227,7 +1243,7 @@ msgstr "" "\n" "Detta program byggdes för %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1236,19 +1252,19 @@ msgstr "" "\n" "Detta program byggdes för %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "" "Anmäl fel till .\n" "Skicka synpunkter pÃ¥ översättningen till .\n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Avbrott/Undantag fÃ¥ngat (kod = 0x%lx, adress = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1263,31 +1279,31 @@ msgstr "" "Undantagsflaggor = %lx\n" "Undantagsadress = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Åtkomstförseelse: skrivinstruktion pÃ¥ adressen 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Åtkomstförseelse: läsinstruktion pÃ¥ adressen 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() ger default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "sökvägen för find_and_set_shell() gav default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "avlänka (temporärfil): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1295,148 +1311,153 @@ msgstr "" "varning: jobbserver otillgänglig: använder -j1. Lägg till ”+” i " "föräldraregeln." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "varning: -j%d framtvingat i del-make: Ã¥terställer jobbserverläge." -#: src/main.c:1930 +#: src/main.c:1946 #, c-format msgid "Makefile from standard input specified twice" msgstr "Makefil frÃ¥n standard in angavs dubbelt" -#: src/main.c:1940 +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "kan inte lagra makefile frÃ¥n standard in till en temporärfil" + +#: src/main.c:1959 #, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite: temporärfilen %s: %s" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "varning: -j%d framtvingat i makefile: Ã¥terställer jobbserverläge." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Parallella jobb (-j) stöds inte pÃ¥ denna plattform." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Återställer till enkeljobbsläge (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "Okänd styrning för jobbservern %s\n" -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "Använder mutex för utmatningssynkronisering %s\n" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Symboliska länkar stöds inte: inaktiverar -L." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "Aktivera blandningsläge: %s\n" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Uppdaterar makefiler...\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefilen ”%s” kan loopa; Ã¥terskapas inte.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: misslyckades att ladda" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Misslyckades med att Ã¥terskapa makefilen ”%s”." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Den inkluderade makefilen ”%s” fanns inte." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Makefilen ”%s” fanns inte" -#: src/main.c:2700 +#: src/main.c:2717 #, c-format msgid "Couldn't change back to original directory" msgstr "Kunde inte Ã¥tergÃ¥ till ursprungskatalogen" -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Utför pÃ¥ nytt[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL innehÃ¥ller fler än ett mÃ¥l" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Inga mÃ¥l" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Inga mÃ¥l angavs och ingen makefil hittades" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Uppdaterar slutmÃ¥l...\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "varning: Klockförskjutning upptäckt. Bygget kan ha blivit ofullständigt." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "flaggan ”%s%s” kräver ett strängargument som inte är tomt" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "flaggan ”-%c” kräver ett positivt heltal som argument" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sByggt för %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sByggt för %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later \n" "Language-Team: Turkish \n" @@ -130,7 +130,7 @@ msgstr " (paket içinde):" msgid " (from '%s', line %lu):\n" msgstr " (`%s'den, satır %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -138,62 +138,62 @@ msgstr "" "\n" "# Dizin\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: durumlanamadı.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (anahtar (key) %s, değişiklik tarihi (mtime) %d): açılamadı.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (aygıt %d, i-düğüm [%d,%d,%d]): açılamadı.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (aygıt %ld, i-düğüm %ld): açılamadı.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (anahtar (key) %s, değişiklik tarihi (mtime) %d):" -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (aygıt %d, i-düğüm [%d,%d,%d]):" -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (aygıt %ld, i-düğüm %ld):" -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Hayır" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " dosyaları," -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "hayır" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr "olanaksızlıklar" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " çok uzak." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " %lu dizinde olanaksızlıklar.\n" @@ -213,185 +213,185 @@ msgstr "Çevrimsel değişken `%s' tekrar kendine bağıntılı (sonuçta)" msgid "unterminated variable reference" msgstr "sonlandırılmamış değişken bağıntısı" -#: src/file.c:272 +#: src/file.c:269 #, fuzzy, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "`%s' dosyası için komutlar %s:%lu de belirtildi," -#: src/file.c:277 +#: src/file.c:274 #, fuzzy, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "`%s' dosyası için komutlar örtük kural aramasında bulundu," -#: src/file.c:281 +#: src/file.c:278 #, fuzzy, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "fakat `%s' şimdi `%s' dosyası ile aynı dosya olarak düşünülmeli." -#: src/file.c:284 +#: src/file.c:281 #, fuzzy, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "`%s' dosyası için komutlar `%s' lehine yoksayılmış olacak." -#: src/file.c:304 +#: src/file.c:301 #, fuzzy, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "tek-sütun `%s', çift-sütun `%s' olarak yeniden adlandırılamaz" -#: src/file.c:310 +#: src/file.c:307 #, fuzzy, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "çift-sütun `%s', tek-sütun `%s' olarak yeniden adlandırılamaz" -#: src/file.c:407 +#: src/file.c:404 #, fuzzy, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Aracı dosya `%s' siliniyor" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Aracı dosyalar siliniyor...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr "" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Şu an" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Tarih damgası kapsamdışı; yerine %s kullanılıyor" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Bir hedef değil:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Kıymetli dosya (.PRECIOUS önceden gerekliliği)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Sahte hedef (.PHONY önceden gerekliliği)." -#: src/file.c:1098 +#: src/file.c:1095 #, fuzzy msgid "# Command line target." msgstr "# Komut-satırı hedefi." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Bir öntanımlı,MAKEFILES veya -include/sinclude makefile." -#: src/file.c:1102 +#: src/file.c:1099 #, fuzzy msgid "# Builtin rule" msgstr "" "\n" "# Örtük kural yok." -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Örtük kural araştırması yapılmıştı." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Örtük kural araştırması yapılmamıştı." -#: src/file.c:1107 +#: src/file.c:1104 #, fuzzy, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Örtük/değişmeyen kalıp kökü: `%s'\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "" "# Orta seviyede önceden gerekli bir dosya (öncelikle gerekli dosyalara " "aracılık eden dosya)" -#: src/file.c:1111 +#: src/file.c:1108 #, fuzzy msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Kıymetli dosya (.PRECIOUS önceden gerekliliği)." -#: src/file.c:1113 +#: src/file.c:1110 #, fuzzy msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Sahte hedef (.PHONY önceden gerekliliği)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Oluştursa da:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Değişiklik zamanı hiç kontrol edilmedi." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Dosya yok." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Dosya çok eski." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Son değişiklik tarihi %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Dosya güncelleştirilmişti." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Dosya güncelleştirilmemişti." -#: src/file.c:1139 +#: src/file.c:1136 #, fuzzy msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Komutlar şu an işlemlerini sürdürüyor (BU BİR YAZILIM HATASI)." -#: src/file.c:1142 +#: src/file.c:1139 #, fuzzy msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "" "# Bağımlılıkların komutları işlemlerini sürdürüyor (BU BİR YAZILIM HATASI)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Tamamen güncellendi." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Güncellenmiş olması gerekir (-q verildi)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Güncellenmiş olamadı." -#: src/file.c:1163 +#: src/file.c:1160 #, fuzzy msgid "# Invalid value in 'command_state' member!" msgstr "# `command_state' üyesinde geçersiz değer!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -399,7 +399,7 @@ msgstr "" "\n" "# Dosyalar" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -409,7 +409,7 @@ msgstr "" "# dosyaların hash tablosu durumları:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "" @@ -479,132 +479,137 @@ msgstr "windows32_openpipe (): process_init_fd() başarısız\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Geçici komut-listesi (batch) dosyası %s temizleniyor\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, fuzzy, c-format msgid "open: %s: %s" msgstr "%s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, fuzzy, c-format msgid "write: %s: %s" msgstr "yazma hatası: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, fuzzy, c-format msgid "close: %s: %s" msgstr "%s%s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "" + +#: src/function.c:2422 #, fuzzy, c-format msgid "read: %s: %s" msgstr "%s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, fuzzy, c-format msgid "file: invalid file operation: %s" msgstr "%s: geçersiz seçenek -- %c\n" -#: src/function.c:2527 +#: src/function.c:2552 #, fuzzy, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "argüman sayısı (%d) `%s' işlevinde yetersiz" -#: src/function.c:2539 +#: src/function.c:2564 #, fuzzy, c-format msgid "unimplemented on this platform: function '%s'" msgstr "bu platformda gerçekleştirilmemiş: işlev `%s'" -#: src/function.c:2608 +#: src/function.c:2633 #, fuzzy, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "`%s' işlemine çağrı sonlandırılmamış: `%c' kayıp" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "" -#: src/function.c:2798 +#: src/function.c:2823 #, fuzzy, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "argüman sayısı (%d) `%s' işlevinde yetersiz" -#: src/function.c:2801 +#: src/function.c:2826 #, fuzzy, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "argüman sayısı (%d) `%s' işlevinde yetersiz" -#: src/getopt.c:659 +#: src/getopt.c:663 #, fuzzy, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: `%s' seçeneği belirsiz\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, fuzzy, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: `--%s' seçeneği argümansız kullanılır\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, fuzzy, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: seçenek `%c%s' argümansız kullanılır\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, fuzzy, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: `%s' seçeneği bir argümanla kullanılır\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, fuzzy, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: `--%s' seçeneği bilinmiyor\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, fuzzy, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: `%c%s' seçeneği bilinmiyor\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: kuraldışı seçenek -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: geçersiz seçenek -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: seçenek bir argümanla kullanılır -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, fuzzy, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: `-W %s' seçeneği belirsiz\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, fuzzy, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: `-W %s' seçeneği argümansız kullanılır\n" @@ -654,181 +659,181 @@ msgstr "`%s' için arşiv-üyesi örtük kural arıyor.\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "`%s' için arşiv-üyesi örtük kural arıyor.\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, fuzzy, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Örtük kural çevrimi görmezden geliniyor.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:501 +#: src/implicit.c:503 #, fuzzy, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "`%.*s' köküyle kalıp kuralı deneniyor.\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "" -#: src/implicit.c:768 +#: src/implicit.c:770 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Kural önceden gerekliliği `%s' olanaksız olduğundan reddediliyor.\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Örtük önceden gereklilik `%s' olanaksız olduğundan reddediliyor.\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, fuzzy, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Kural önceden gerekliliği `%s' deneniyor.\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, fuzzy, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Örtük önceden gereklilik `%s' deneniyor.\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, fuzzy, c-format msgid "'%s' ought to exist.\n" msgstr "`%s' dosyası yok.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "" -#: src/implicit.c:856 +#: src/implicit.c:858 #, fuzzy, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "Hedef `%s' in önceden gereklisi `%s' mevcut değil.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, fuzzy, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Önceden gereklilik `%s' VPATH `%s' olarak bulundu.\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, fuzzy, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Aracı dosya `%s' ile bir kural arıyor.\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, fuzzy, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Aracı dosya `%s' ile bir kural arıyor.\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Kural önceden gerekliliği `%s' olanaksız olduğundan reddediliyor.\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, fuzzy, c-format msgid "Not found '%s'.\n" msgstr "`%s' için bir örtük kural yok.\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, fuzzy, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "`%s' için bir örtük kural bulundu.\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, fuzzy, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "`%s' için bir örtük kural arıyor.\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, fuzzy, c-format msgid "No implicit rule found for '%s'.\n" msgstr "`%s' için bir örtük kural yok.\n" -#: src/job.c:380 +#: src/job.c:377 #, fuzzy msgid "Cannot create a temporary file" msgstr "Bir geçici dosya oluşturulamıyor\n" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (bellek kopyası - core dosyası - diske yazıldı)" -#: src/job.c:557 +#: src/job.c:554 #, fuzzy msgid " (ignored)" msgstr "[%s] Hata %d (yoksayıldı)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 #, fuzzy msgid "" msgstr " (paket içinde):" -#: src/job.c:587 +#: src/job.c:584 #, fuzzy, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "*** [%s] Hata %d" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Bitmemiş işler için bekliyor...." -#: src/job.c:719 +#: src/job.c:716 #, fuzzy, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Ast dosya işini sürdürüyor: 0x%08lx (%s) PID %ld %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (karşıdan)" -#: src/job.c:914 +#: src/job.c:911 #, fuzzy, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Kazanan ast dosya sağlanıyor: 0x%08lx PID %ld %s\n" -#: src/job.c:915 +#: src/job.c:912 #, fuzzy, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Kaybeden ast dosya sağlanıyor: 0x%08lx PID %ld %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Geçici komut-listesi dosyası %s temizleniyor\n" -#: src/job.c:972 +#: src/job.c:969 #, fuzzy, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Geçici komut-listesi dosyası %s temizleniyor\n" -#: src/job.c:1083 +#: src/job.c:1080 #, fuzzy, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Ast 0x%08lx PID %ld%s zincirden kaldırılıyor\n" -#: src/job.c:1146 +#: src/job.c:1143 #, fuzzy, c-format msgid "Released token for child %p (%s).\n" msgstr "Ast 0x%08lx (%s) için simge (token) kullanıma sunuldu.\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "Süreci başlatacak process_easy() başarısız oldu (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -837,102 +842,112 @@ msgstr "" "\n" "Sayılan %d argüman ile başarısız oldu\n" -#: src/job.c:1650 +#: src/job.c:1654 #, fuzzy, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Ast 0x%08lx (%s) PID %ld%s zincire konuluyor.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, fuzzy, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Ast 0x%08lx (%s) için simge (token) sağlandı.\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "Hedef `%s' in önceden gereklisi `%s' mevcut değil.\n" + +#: src/job.c:1923 src/job.c:1951 #, fuzzy, c-format msgid "%s: update target '%s' due to: %s" msgstr "" "%sHedef `%s' i derlemek için hiçbir kural yok, `%s' tarafından gereksinim " "duyuluyor%s" -#: src/job.c:1910 -#, fuzzy -msgid "target does not exist" -msgstr "# Dosya yok." +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "işletim sisteminde yük sınırlarına ulaşılamadı " -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "ulaşılamayan yük sınırı: " -#: src/job.c:2195 +#: src/job.c:2238 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdin" msgstr "başka dosya tutucu yok: standart girdi kopyalanamadı\n" -#: src/job.c:2207 +#: src/job.c:2250 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdout" msgstr "başka dosya tutucu yok: standart çıktı kopyalanamadı\n" -#: src/job.c:2221 +#: src/job.c:2264 #, fuzzy, c-format msgid "no more file handles: could not duplicate stderr" msgstr "başka dosya tutucu yok: standart girdi kopyalanamadı\n" -#: src/job.c:2236 +#: src/job.c:2279 #, fuzzy, c-format msgid "Could not restore stdin" msgstr "Standart girdi eski haline getirilemedi\n" -#: src/job.c:2244 +#: src/job.c:2287 #, fuzzy, c-format msgid "Could not restore stdout" msgstr "Standart çıktı eski haline getirilemedi\n" -#: src/job.c:2252 +#: src/job.c:2295 #, fuzzy, c-format msgid "Could not restore stderr" msgstr "Standart girdi eski haline getirilemedi\n" -#: src/job.c:2530 +#: src/job.c:2573 #, fuzzy, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make %ld pid'li ast süreci kaldırdı ama hala pid %ld için bekliyor\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: ortam alanı tükenmiş olabilir" -#: src/job.c:2869 +#: src/job.c:2920 #, fuzzy, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL değişti (`%s' idi, şimdi `%s')\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "%s geçici komut-liste dosyasını oluşturuyor\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" "\t@echo off\n" msgstr "" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" "\t%s\n" msgstr "" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (satır %d) kabuk bağlamı hatalı (!unixy && !batch_mode_shell)\n" @@ -977,48 +992,48 @@ msgstr "" msgid "The 'load' operation is not supported on this platform" msgstr "Bu platformda paralel işler (-j) desteklenmiyor." -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Seçenekler:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Uyumluluk için yoksayıldı.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr "" " -B, --always-make Tüm hedefler koşulsuz olarak oluşturulur.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr " -C DİZİN, --directory=DIZIN Birşey yapmadan önce DİZİNe geçilir.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -b, -m Bir sürü hata ayıklama bilgisi basar.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=SEÇENEKLER] Çeşitli türde hata ayıklama bilgileri basar.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" msgstr "" " -e, --environment-overrides Ortam değişkenleri makefile'ları değiştirir.\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1026,16 +1041,16 @@ msgstr "" " -f DOSYA, --file=DOSYA, --makefile=DOSYA\n" " DOSYAyı bir makefile olarak okur.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Bu iletiyi basar ve çıkar.\n" -#: src/main.c:339 +#: src/main.c:342 #, fuzzy msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Komutların ürettiği hataları yoksayar.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1043,7 +1058,7 @@ msgstr "" " -I DİZİN, --include-dir=DİZİN\n" " Eklenecek makefile'ları DİZİNde arar.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1051,17 +1066,17 @@ msgstr "" " -j [N], --jobs[=N] Bir defada N işe izin verir; argumansız iş\n" " sayısı sınırsızdır.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Bazı hedefler yapılmadığında devam eder.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1071,7 +1086,7 @@ msgstr "" " Yük N'den az olmadıkça çoklu işler " "başlatılmaz.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1079,7 +1094,7 @@ msgstr "" " -L, --check-symlink-times sembolik bağlarla hedef arasında en son mtime\n" " kullanılır\n" -#: src/main.c:355 +#: src/main.c:358 #, fuzzy msgid "" " -n, --just-print, --dry-run, --recon\n" @@ -1089,7 +1104,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " Gerçekte komutlar çalıştırılmaz, gösterilir.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1099,17 +1114,17 @@ msgstr "" " DOSYAnın çok eski olduğu varsayılır ve\n" " yeniden işlem yapılmaz.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" msgstr "" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base make'in içsel veritabanını basar.\n" -#: src/main.c:366 +#: src/main.c:369 #, fuzzy msgid "" " -q, --question Run no recipe; exit status says if up to " @@ -1117,59 +1132,59 @@ msgid "" msgstr "" " -q, --question Komut çalıştırmaz; güncelse çıkışta belirtir\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr "" " -r, --no-builtin-rules Oluşumiçi örtük kuralları etkisizleştirir.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr "" " -R, --no-builtin-variables Oluşumiçi değişken ayarlarını etkisizleştirir\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" msgstr "" -#: src/main.c:375 +#: src/main.c:378 #, fuzzy msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Komutlar işlenirken gösterilmez.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" msgstr "" " -S, --no-keep-going, --stop Bazı hedefler yapılmadığında devam etmez.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Yeniden derlemek yerine hedeflere bakıp " "geçer.\n" -#: src/main.c:384 +#: src/main.c:387 #, fuzzy msgid " --trace Print tracing information.\n" msgstr " -b, -m Bir sürü hata ayıklama bilgisi basar.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version make sürüm numarasını basar ve çıkar.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Kullanılan dizini basar.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1177,7 +1192,7 @@ msgstr "" " --no-print-directory Dolaylı olarak açılmış olsa bile -w 'yi " "kapatır\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1185,7 +1200,7 @@ msgstr "" " -W DOSYA, --what-if=DOSYA, --new-file=DOSYA, --assume-new=DOSYA\n" " DOSYA sonsuz yeni varsayılır.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1193,32 +1208,32 @@ msgstr "" " --warn-undefined-variables Atanmamış bir değişkene bağıntı yapıldığında\n" " uyarır.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, fuzzy, c-format msgid "write error: stdout" msgstr "yazma hatası: %s" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "dosyaismi olarak boş dizge geçersiz" -#: src/main.c:834 +#: src/main.c:842 #, fuzzy, c-format msgid "unknown debug level specification '%s'" msgstr "Hata ayıklama düzeyi özelliği `%s' bilinmiyor" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Kullanım: %s [seçenekler] [hedef] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1227,7 +1242,7 @@ msgstr "" "\n" "Bu program %s için kurgulanmış\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1236,19 +1251,19 @@ msgstr "" "\n" "Bu program %s için kurgulanmış (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "" "Yazılım hatalarını adresine,\n" "çeviri hatalarını adresine bildiriniz.\n" -#: src/main.c:940 +#: src/main.c:948 #, fuzzy, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Kesinti/Olağandışı durum saptandı (kod = 0x%lx, adres = 0x%lx)\n" -#: src/main.c:947 +#: src/main.c:955 #, fuzzy, c-format msgid "" "\n" @@ -1263,32 +1278,32 @@ msgstr "" "OlağandışılıkBayrakları = %lx\n" "OlağandışılıkAdresi = %lx\n" -#: src/main.c:955 +#: src/main.c:963 #, fuzzy, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Erişim uyumsuzluğu: %lx adresinde yazma işlemi\n" -#: src/main.c:956 +#: src/main.c:964 #, fuzzy, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Erişim uyumsuzluğu: %lx adresinde okuma işlemi\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, fuzzy, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell default_shell = %s olarak belirliyor\n" -#: src/main.c:1098 +#: src/main.c:1106 #, fuzzy, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "find_and_set_shell yol aramasını default_shell = %s olarak belirliyor\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (geçici dosya): " -#: src/main.c:1833 +#: src/main.c:1849 #, fuzzy, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1296,151 +1311,156 @@ msgstr "" "uyarı: iş sunucusu kullanımdışı: -j1 kullanılıyor. Üst make kuralına `+' " "ekle." -#: src/main.c:1841 +#: src/main.c:1857 #, fuzzy, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "uyarı: alt derlemede -jN zorlandı: iş sunucusu kipi kapatılıyor." -#: src/main.c:1930 +#: src/main.c:1946 #, fuzzy, c-format msgid "Makefile from standard input specified twice" msgstr "Makefile standart girdiden iki kez belirtildi." -#: src/main.c:1940 +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Bir geçici dosya oluşturulamıyor\n" + +#: src/main.c:1959 #, fuzzy, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite (geçici dosya)" -#: src/main.c:2095 +#: src/main.c:2107 #, fuzzy, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "uyarı: alt derlemede -jN zorlandı: iş sunucusu kipi kapatılıyor." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Bu platformda paralel işler (-j) desteklenmiyor." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Tek iş kipi (-j1) için make'i başlatma konumuna alıyor" -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "" -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Sembolik bağlar desteklenmiyor: -L iptal ediliyor" -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "makefile'ları güncelliyor...\n" -#: src/main.c:2397 +#: src/main.c:2414 #, fuzzy, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "`%s' make dosyası çevrime girdi; yeniden derlenemez.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "" -#: src/main.c:2528 +#: src/main.c:2545 #, fuzzy, c-format msgid "Failed to remake makefile '%s'." msgstr "`%s' make dosyası yeniden derlenemiyor." -#: src/main.c:2548 +#: src/main.c:2565 #, fuzzy, c-format msgid "Included makefile '%s' was not found." msgstr "İçerilen make dosyası `%s' bulunamadı." -#: src/main.c:2552 +#: src/main.c:2569 #, fuzzy, c-format msgid "Makefile '%s' was not found" msgstr "`%s' make dosyası bulunamadı" -#: src/main.c:2700 +#: src/main.c:2717 #, fuzzy, c-format msgid "Couldn't change back to original directory" msgstr "Geriye, özgün dizine geçilemiyor." -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Yeniden çalıştırılıyor[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL bir hedeften fazlasını içeriyor" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Hedef yok" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Hedefler belirtilmediğinden make dosyası yok" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Amaçlanan hedefler güncelleniyor...\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "uyarı: Clock skew saptandı. Derleme tamamlanamayabilir." -#: src/main.c:3186 +#: src/main.c:3222 #, fuzzy, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "`-%c' seçeneği bir boş olmayan dizge argüman gerektirir" -#: src/main.c:3267 +#: src/main.c:3315 #, fuzzy, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "`-%c' seçeneği bir pozitif tümleyici bağımsız değişkenle kullanılır" -#: src/main.c:3652 +#: src/main.c:3721 #, fuzzy, c-format msgid "%sBuilt for %s\n" msgstr "" "\n" "%sBu program %s için derlenmiş\n" -#: src/main.c:3654 +#: src/main.c:3723 #, fuzzy, c-format msgid "%sBuilt for %s (%s)\n" msgstr "" "\n" "%sBu program %s için derlenmiş (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later , 2001-2012. -# Yuri Chornoivan , 2012, 2013, 2014, 2016, 2019, 2020, 2022. +# Yuri Chornoivan , 2012, 2013, 2014, 2016, 2019, 2020, 2022, 2023. msgid "" msgstr "" -"Project-Id-Version: make 4.3.91\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2022-10-31 02:23-0400\n" -"PO-Revision-Date: 2022-10-19 20:05+0300\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-15 11:25+0200\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -133,7 +133,7 @@ msgstr " (вбудоване):" msgid " (from '%s', line %lu):\n" msgstr " (з \"%s\", рядок %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -141,62 +141,62 @@ msgstr "" "\n" "# Каталоги\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: неможливо отримати інформацію (stat).\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (ключ %s, час зміни %s): не вдалося відкрити.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (пристрій %d, івузол [%d,%d,%d]): неможливо відкрити.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (пристрій %ld, івузол %ld): не вдалося відкрити.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (ключ %s, час модифікації %s): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (пристрій %d, івузол [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (пристрій %ld, івузол %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Ні" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " файлів, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "ні" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " недосяжних цілей" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " на поточний момент." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " недосяжних цілей у %lu каталогах.\n" @@ -217,178 +217,178 @@ msgstr "Рекурсивна змінна \"%s\" посилається сама msgid "unterminated variable reference" msgstr "незавершена посилання на змінну" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Спосіб для файла «%s» було задано %s:%lu," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "" "Спосіб для файла «%s» було знайдено за допомогою пошуку неявних правил," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "але \"%s\" і \"%s\" тепер вважаються одним і тим же ж файлом. " -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "Спосіб для «%s» буде проігноровано на користь способу для «%s»." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "" "неможливо перейменувати \"%s\" з однією двокрапкою у \"%s\" з двома " "двокрапками" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "" "неможливо перейменувати \"%s\" з двома двокрапками у \"%s\" з однією " "двокрапкою" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Вилучаємо проміжний файл «%s»" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Вилучаємо проміжні файли...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "%s не може бути одночасно .NOTINTERMEDIATE і .INTERMEDIATE" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "%s не може бути одночасно .NOTINTERMEDIATE і .SECONDARY" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr ".NOTINTERMEDIATE і .SECONDARY є взаємно виключними" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Поточний час" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: часова позначка поза допустимим діапазоном; замінюємо на %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Не є метою:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Вартісний файл (залежність .PRECIOUS)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Псевдоціль (залежність .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Мета, що викликається з командного рядка." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Типово, MAKEFILES, або -include/sinclude makefile." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Вбудоване правило" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Пошук неявних правил виконано." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Пошук неявних правил не було виконано." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Основа неявного або статичного шаблону: \"%s\"\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Файл є проміжною залежністю." -#: src/file.c:1111 +#: src/file.c:1108 msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Файл є передумовою .NOTINTERMEDIATE." -#: src/file.c:1113 +#: src/file.c:1110 msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Файл є вторинним (передумова .SECONDARY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# Збирає також:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Час зміни ніколи не перевірявся." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Файл не існує." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Файл дуже старий." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Востаннє оновлено %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Файл був оновлений." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Файл не було оновлено." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Виконується обробка (ЦЕ ПОМИЛКА)" -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Ці залежності вже обробляються (ЦЕ ПОМИЛКА)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Успішно оновлено." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Повинно бути оновлено (встановлений ключ -q)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Спроба оновлення безуспішна." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Некоректне значення члена \"command_state\"!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -396,7 +396,7 @@ msgstr "" "\n" "# Файли" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -406,7 +406,7 @@ msgstr "" "# статистика щодо таблиці хешів файлів:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: поле «%s» не кешовано: %s" @@ -471,132 +471,137 @@ msgstr "windows32_openpipe(): помилка process_init_fd()\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Спорожнюємо тимчасовий пакетний файл %s\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file: не вказано назви файла" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file: надто багато аргументів" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file: не вдалося відкрити «%s»: %s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file: некоректна дія над файлом: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "недостатня кількість аргументів (%u) функції «%s»" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "не реалізовано на цій платформі: функція «%s»" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "незавершений виклик функції \"%s\"; пропущено \"%c\"" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Порожня назва функції" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Некоректна назва функції: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Назва функції є задовгою: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Некоректна мінімальна кількість аргументів (%u) функції %s" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Некоректна максимальна кількість аргументів (%u) функції %s" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: параметр «%s» не є однозначним\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: додавання аргументів до параметра «--%s» не передбачено\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: додавання аргументів до параметра «%c%s» не передбачено\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: до параметра «%s» слід додати аргумент\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: невідомий параметр «--%s»\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: невідомий параметр «%c%s»\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: невірний параметр -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: невірний параметр -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: параметру необхідний аргумент -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: параметр «-W %s» не є однозначним\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: додавання аргументів до параметра «-W %s» не передбачено\n" @@ -646,179 +651,179 @@ msgstr "Пошук неявного правила для члена архів msgid "No archive-member implicit rule found for '%s'.\n" msgstr "Не знайдено неявного правила частини архіву для «%s».\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Запобігання рекурсивного виклику неявного правила для правила «%s».\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "Намагаємося бути ретельнішими.\n" -#: src/implicit.c:501 +#: src/implicit.c:503 #, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Перевіряємо правило взірця «%s» з основою «%.*s».\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Занадто довгий шаблон: «%s%.*s».\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Відкидання правила «%s» через неможливу передумову правила «%s».\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Відкидання правила «%s» через неможливість неявної передумови «%s».\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Перевіряємо передумову правила «%s».\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Перевіряємо неявну передумову «%s».\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, c-format msgid "'%s' ought to exist.\n" msgstr "«%s» має існувати.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "Знайдено «%s».\n" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "Використовуємо правило сумісності «%s» через «%s».\n" -#: src/implicit.c:856 +#: src/implicit.c:858 #, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "Передумова «%s» правила «%s» не пройшла перевірки на існування.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Виявлено залежність «%s» у форматі VPATH «%s».\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Пошук правила з явним файлом «%s».\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Пошук правила з проміжним файлом \"%s\".\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Відкидаємо правило «%s» через неможливість передумови «%s».\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, c-format msgid "Not found '%s'.\n" msgstr "Не знайдено «%s».\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Знайдено неявне правило «%s» для «%s».\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Шукаємо правило сумісності для «%s».\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Не знайдено неявних правил для \"%s\".\n" -#: src/job.c:380 +#: src/job.c:377 msgid "Cannot create a temporary file" msgstr "Не вдалося створити тимчасовий файл" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (зроблений дамп пам'яті)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (ігнорується)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "<вбудований>" -#: src/job.c:587 +#: src/job.c:584 #, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Помилка %d%s%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Очікування завершення завдань..." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Незавершений дочірній процес %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (віддалений)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Підбираємо вдалий дочірній процес з PID %p %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Підбираємо невдалий дочірній процес з PID %p %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Знищення тимчасового командного файла %s\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "" "Спроба витикання тимчасового файла пакетної обробки %s зазнала невдачі (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Вилучаємо PID дочірнього процесу %p %s%s з ланцюжка.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Звільнено символ для дочірнього процесу %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() не вдалося запустити процес (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -827,88 +832,99 @@ msgstr "" "\n" "Під час невдалого запуску кількість аргументів дорівнювала %d\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Додаємо дочірній процес з PID %p (%s) %s%s до ланцюжка.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Отримано символ для дочірнього процесу %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: оновлення мети «%s» з такої причини: ціллю є .PHONY" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: оновлення мети «%s» з такої причини: цілі не існує" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: оновлення мети «%s» з такої причини: %s" -#: src/job.c:1910 -msgid "target does not exist" -msgstr "мети не існує" +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: оновлення мети «%s» з такої причини: причина не відома" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "" "ця операційна система не дозволяє встановлювати обмеження на завантаження" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "неможливо встановити обмеження на завантаження: " -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "не вистачає файлових дескрипторів: не вдалося здублювати stdin" -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "не вистачає файлових дескрипторів: не вдалося здублювати stdout" -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "не вистачає файлових дескрипторів: не вдалося здублювати stderr" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "Не вдалося відновити stdin" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "Не вдалося відновити stdout" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "Не вдалося відновити stderr" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "" "make підібрано дочірній процес з pid %s, який все ще чекає на завершення " "процесу з pid %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: ймовірно, завершилося місце у середовищі" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL змінено (було «%s», тепер «%s»)\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Створюємо тимчасовий пакетний файл %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -917,7 +933,7 @@ msgstr "" "Вміст файла пакетної обробки:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -926,7 +942,7 @@ msgstr "" "Вміст пакетного файла:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "" @@ -972,19 +988,19 @@ msgstr "Вивантажуємо об'єкт спільного використ msgid "The 'load' operation is not supported on this platform" msgstr "На цій платформі виконання дії «load» не передбачено" -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Ключі:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Ігнорується, для сумісності.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make безумовно обробляти всі записи мети.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -993,18 +1009,18 @@ msgstr "" " Перейти до каталогу до виконання будь-яких " "дій.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d Вивести діагностичні повідомлення.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=ПРАПОРЦІ] Вивести діагностичні повідомлення вказаних " "типів.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1013,12 +1029,12 @@ msgstr "" " Змінні середовища мають вищий пріоритет за " "змінні makefile.\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr " -E РЯДОК, --eval=РЯДОК Обробити РЯДОК як інструкцію makefile.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1026,16 +1042,16 @@ msgstr "" " -f ФАЙЛ, --file=ФАЙЛ, --makefile=ФАЙЛ\n" " Використати ФАЙЛ як makefile.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Вивести це повідомлення і вийти.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr "" " -i, --ignore-errors Ігнорувати помилки від способів збирання.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1043,7 +1059,7 @@ msgstr "" " -I КАТАЛОГ, --include-dir=КАТАЛОГ\n" " Виконати пошук включених makefile у каталозі.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1051,20 +1067,20 @@ msgstr "" " -j [N], --jobs[=N] Виконувати одночасно N завдань; якщо не " "вказано — необмежену кількість.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" " --jobserver-style=СТИЛЬ Вибрати стиль, який використовуватиме сервер " "завдань.\n" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr "" " -k, --keep-going Продовжувати роботу, якщо збирання якоїсь мети " "неможливе.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1074,7 +1090,7 @@ msgstr "" " Не запускати декількох завдань, якщо " "навантаження перевищує N.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1082,7 +1098,7 @@ msgstr "" " -L, --check-symlink-times Використовувати новіший час зміни з часів " "зміни посилання і мети.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1092,7 +1108,7 @@ msgstr "" " Не застосовувати способів збирання, просто " "вивести назви способів.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1102,7 +1118,7 @@ msgstr "" " Вважати ФАЙЛ дуже старим і не виконувати його " "повторного збирання.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1111,11 +1127,11 @@ msgstr "" " синхронізувати виведені дані паралельних " "завдань за ТИПом.\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base Вивести внутрішню базу даних make.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" @@ -1124,15 +1140,15 @@ msgstr "" "способів; код завершення показує, чи все вже " "зроблено.\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules Вимкнути вбудовані неявні правила.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " -R, --no-builtin-variables Вимкнути вбудовані параметри змінних.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" @@ -1140,17 +1156,17 @@ msgstr "" " --shuffle[={SEED|random|reverse|none}]\n" " Виконати перемішування передумов і цілей.\n" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Не виводити способи збирання.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr "" " --no-silent Виводити способи збирання (вимкнути режим --" "silent).\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1158,26 +1174,26 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Вимкнути -k.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch Змінювати час доступу до мети замість її " "повторного збирання.\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Вивести дані щодо трасування.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version Вивести дані щодо версії make і вийти.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Виводити дані щодо поточного каталогу.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" @@ -1185,7 +1201,7 @@ msgstr "" " --no-print-directory Вимкнути -w, навіть якщо вмикання було " "виконано неявним чином.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1193,7 +1209,7 @@ msgstr "" " -W ФАЙЛ, --what-if=ФАЙЛ, --new-file=ФАЙЛ, --assume-new=ФАЙЛ\n" " Вважати ФАЙЛ завжди новим.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" @@ -1201,32 +1217,32 @@ msgstr "" " --warn-undefined-variables Попереджати про посилання на невизначену " "змінну.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "помилка запису: stdout" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "порожній рядок не може бути назвою файла" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "невідома специфікація рівня діагностики, «%s»" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "невідомий тип синхронізації виведених даних, «%s»" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Використання: %s [КЛЮЧІ]... [ЦІЛЬ]...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1235,7 +1251,7 @@ msgstr "" "\n" "Цю програму зібрано для %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1244,17 +1260,17 @@ msgstr "" "\n" "Цю програму зібрано для %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "Повідомлюйте про помилки до \n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: сталося переривання або виключення (код = 0x%lx, адреса = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1269,32 +1285,32 @@ msgstr "" "Прапорці виключення = %lx\n" "Адреса виключення = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Порушення правил доступу: дія з запису за адресою 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Порушення правил доступу: дія з читання за адресою 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() встановлює default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "" "Пошуком шляхів find_and_set_shell() встановлено значення default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (тимчасовий файл): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1302,150 +1318,157 @@ msgstr "" "попередження: сервер завдань недоступний: використовуємо -j1. Додайте «+» до " "батьківського правила збирання." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "попередження: у submake вказано -j%d: вимикаємо режим сервера завдань." -#: src/main.c:1930 +#: src/main.c:1946 #, c-format msgid "Makefile from standard input specified twice" msgstr "Makefile зі стандартного джерела вхідних даних вказано двічі" -#: src/main.c:1940 +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "" +"не вдалося зберегти makefile зі стандартного джерела вхідних даних до " +"тимчасового файла" + +#: src/main.c:1959 #, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite: тимчасовий файл %s: %s" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "попередження: у makefile вказано -j%d: вимикаємо режим сервера завдань." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "На цій платформі паралельної обробки завдань (-j) не передбачено." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Повертаємося до режиму єдиного завдання (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "Використовуємо контролер сервера завдань %s\n" -#: src/main.c:2250 +#: src/main.c:2262 #, c-format msgid "Using output-sync mutex %s\n" msgstr "Використовуємо семафор синхронізації виведення %s\n" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Підтримки символічних посилань не передбачено: вимикаємо -L." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "Увімкнено режим перемішування: %s\n" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Оновлення make-файлів...\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Make-файл \"%s\", можливо, зациклений, він не перезбиратиметься.\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: не вдалося завантажити" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Спроба перезібрати make-файл \"%s\" безуспішна." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Make-файл \"%s\", який включається, не було знайдено." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Make-файл \"%s\" не було знайдено" -#: src/main.c:2700 +#: src/main.c:2717 #, c-format msgid "Couldn't change back to original directory" msgstr "Не вдалося перейти у первісний каталог" -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Повторне виконання[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL містить декілька записів мети" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Нема цілей" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Не задані цілі і не знайдений make-файл" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Оновлення цілей мети...\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "попередження: виявлено відхилення показів годинника. Збирання може бути " "неповним." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "разом з «%s%s» мало бути вказано непорожній рядковий аргумент" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "ключ \"-%c\" повинен використовуватися з цілим додатним аргументом" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sЗібрано для %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sЗібрано для %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later \n" "Language-Team: Vietnamese \n" @@ -136,7 +136,7 @@ msgstr " (dá»±ng-sẵn):" msgid " (from '%s', line %lu):\n" msgstr " (từ “%s”, dòng %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -144,62 +144,62 @@ msgstr "" "\n" "# Thư mục\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s: không thể lấy thống kê.\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (khóa %s, mtime %I64u): không thể mở.\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (thiết bị %d, nút thông tin [%d,%d,%d]): không thể mở.\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (thiết bị %ld, nút thông tin %ld): không thể mở.\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (khóa %s, mtime %I64u): " -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (thiết bị %d, inode [%d,%d,%d]): " -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (thiết bị %ld, inode %ld): " -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "Không" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " tập tin, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "không" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " việc không thể làm được" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " cho đến giờ." -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " việc không thể làm được trong %lu thư mục.\n" @@ -219,176 +219,176 @@ msgstr "Biến đệ quy “%s” (cuối cùng) lại tham chiếu đến chín msgid "unterminated variable reference" msgstr "tham chiếu biến chưa chấm dứt" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "Công thức được chỉ định cho tập tin “%s” tại %s:%lu," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "Tìm thấy công thức cho tập tin “%s” nhờ quy tắc tìm kiếm ngầm," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "nhưng “%s” bây giờ được cÅ©ng được xem là cùng tập tin “%s”." -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "" "Công thức cho “%s” sẽ bị bỏ qua trong sá»± chấp thuận cá»§a một cái cho “%s”." -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "không thể đổi tên “%s” hai chấm đơn thành “%s” hai chấm đôi" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "không thể đổi tên “%s” hai chấm đôi thành “%s” hai chấm đơn" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** Đang xóa tập tin trung gian “%s”" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "Xóa các tập tin trung gian…\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr "" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "Giờ hiện tại" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s: Thời gian cá»§a tập tin ở ngoài phạm vi nên thay thế bằng %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# Không phải là đích:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# Tập tin giá trị (điều kiện tiên quyết cá»§a .PRECIOUS)." -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# Đích giả (điều kiện tiên quyết cá»§a .PHONY)." -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# Đích dòng lệnh." -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# Mặc định, MAKEFILES, hoặc makefile kiểu -include/sinclude." -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# Quy tắc dá»±ng sẵn" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# Hoàn tất tìm quy tắc ngầm." -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# Chưa hoàn tất tìm quy tắc ngầm." -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# Cuống mẫu ngầm/tÄ©nh: “%s”\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# Tập tin là một điều kiện tiên quyết trung gian." -#: src/file.c:1111 +#: src/file.c:1108 #, fuzzy msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# Tập tin giá trị (điều kiện tiên quyết cá»§a .PRECIOUS)." -#: src/file.c:1113 +#: src/file.c:1110 #, fuzzy msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# Đích giả (điều kiện tiên quyết cá»§a .PHONY)." -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# CÅ©ng tạo:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# Chưa kiểm tra giờ sá»­a đổi." -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# Tập tin không tồn tại." -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# Tập tin rất cÅ©." -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# Lần sá»­a cuối cùng %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# Tập tin đã được cập nhật." -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# Tập tin chưa được cập nhật." -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# Công thức đang chạy (ĐÂY LÀ MỘT LỖI)." -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# Công thức phụ thuộc đang chạy (ĐÂY LÀ MỘT LỖI)." -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# Cập nhật thành công." -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# Cần được cập nhật (-q được đặt)." -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# Gặp lỗi khi cập nhật." -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# Gặp giá trị sai trong thành viên “command_state”!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -396,7 +396,7 @@ msgstr "" "\n" "# Tập tin" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -406,7 +406,7 @@ msgstr "" "# thống kê bảng băm tập tin:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s: Trường “%s” chưa được nhớ đệm: %s" @@ -476,134 +476,139 @@ msgstr "windows32_openpipe(): process_init_fd() gặp lỗi\n" msgid "Cleaning up temporary batch file %s\n" msgstr "Dọn dẹp tập tin bó tạm %s\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file: thiết tên tập tin" # Variable: do not translate/ biến: đừng dịch -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "mở: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "ghi: %s: %s" # Variable: do not translate/ biến: đừng dịch -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "đóng: %s: %s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file: quá ít đối số" -#: src/function.c:2397 +#: src/function.c:2404 +#, fuzzy, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "tập tin: Thao tác tập tin không hợp lệ: %s" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read: %s: %s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "tập tin: Thao tác tập tin không hợp lệ: %s" -#: src/function.c:2527 +#: src/function.c:2552 #, fuzzy, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "không đủ số đối số (%d) cho hàm “%s”" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "chưa được viết mã thi hành trên hệ thống này: hàm “%s”" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "cuộc gọi chưa được chấm dứt cho hàm “%s”: thiếu “%c”" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "Tên hàm trống rỗng" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "Tên hàm không hợp lệ: %s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "Tên hàm quá dài: %s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "Số lượng đối số tối thiểu (%u) là không hợp lệ cho hàm “%s”" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "Số lượng đối số tối đa (%u) là không hợp lệ cho hàm “%s”" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s: tùy chọn “%s” chưa rõ ràng\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s: tùy chọn “--%s” không nhận đối số\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s: tùy chọn “%c%s” không nhận đối số\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s: tùy chọn “%s” cần một đối số\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s: không nhận ra tùy chọn “--%s”\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s: không nhận ra tùy chọn “%c%s”\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s: tùy chọn không hợp lệ -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s: tùy chọn không hợp lệ -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s: tùy chọn cần một đối số -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s: tùy chọn “-W %s” chưa rõ ràng\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s: tùy chọn “-W %s” không nhận một đối số\n" @@ -653,179 +658,179 @@ msgstr "Tìm quy tắc ngầm về thành phần kho cho “%s”.\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "Tìm quy tắc ngầm về thành phần kho cho “%s”.\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, fuzzy, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "Tránh quy tắc ngầm đệ quy.\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:501 +#: src/implicit.c:503 #, fuzzy, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "Thá»­ quy tắc mẫu với cuống “%.*s”.\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "Stem quá dài: “%s%.*s”.\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "Từ chối điều kiện tiên quyết không thể thỏa “%s”.\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "Từ chối điều kiện tiên quyết ngầm không thể “%s”.\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "Thá»­ điều kiện tiên quyết quy tắc “%s”.\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "Thá»­ điều kiện tiên quyết ngầm “%s”.\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, fuzzy, c-format msgid "'%s' ought to exist.\n" msgstr "Tập tin “%s” không tồn tại.\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "" -#: src/implicit.c:842 +#: src/implicit.c:844 #, fuzzy, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "%s: cập nhật đích “%s”, cần bởi: %s" -#: src/implicit.c:856 +#: src/implicit.c:858 #, fuzzy, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "Điều kiện tiên quyết “%s” cá»§a đích “%s” không tồn tại.\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, fuzzy, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "Tìm thấy điều kiện tiên quyết “%s” làm VPATH “%s”\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, fuzzy, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "Tìm quy tắc có tập tin trung gian “%s”.\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "Tìm quy tắc có tập tin trung gian “%s”.\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "Từ chối điều kiện tiên quyết không thể thỏa “%s”.\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, fuzzy, c-format msgid "Not found '%s'.\n" msgstr "Không tìm thấy quy tắc ngầm cho “%s”.\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, fuzzy, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "Tìm thấy quy tắc ngầm cho “%s”.\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, fuzzy, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "Tìm quy tắc ngầm cho “%s”.\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "Không tìm thấy quy tắc ngầm cho “%s”.\n" -#: src/job.c:380 +#: src/job.c:377 #, fuzzy msgid "Cannot create a temporary file" msgstr "Không thể tạo tập tin tạm\n" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (đổ lõi)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (bỏ qua)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "" -#: src/job.c:587 +#: src/job.c:584 #, fuzzy, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] Lỗi %d%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** Đang đợi những công việc chưa hoàn tất…" -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "Tiến trình con còn sống %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (máy chá»§)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "Đang thắng lại tiến trình con %p PID %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "Đang mất tiến trình con %p PID %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "Dọn dẹp tập tin bó tạm %s\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "Dọn dẹp tập tin bó tạm %s gặp lỗi (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "Bỏ tiến trình con %p PID %s%s khỏi xâu.\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "Đã giải phóng thẻ bài cho tiến trình con %p (%s).\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() gặp lỗi khi chạy tiến trình (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -834,89 +839,99 @@ msgstr "" "\n" "Đếm được %d đối số trong lần khởi chạy bị lỗi\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "Đặt tiến trình con %p (%s) PID %s%s vào xâu.\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "Đã lấy thẻ bài cho điều con %p (%s).\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s: cập nhật đích “%s”, cần bởi: %s" + +#: src/job.c:1916 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s: cập nhật đích “%s”, cần bởi: %s" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s: cập nhật đích “%s”, cần bởi: %s" -#: src/job.c:1910 -#, fuzzy -msgid "target does not exist" -msgstr "%s: đích “%s” không tồn tại" +#: src/job.c:1939 +#, fuzzy, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s: cập nhật đích “%s”, cần bởi: %s" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "không thể buộc giới hạn tải trên hệ điều hành này" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "không thể buộc giới hạn tải: " -#: src/job.c:2195 +#: src/job.c:2238 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdin" msgstr "" "không thể xá»­ lý thêm tập tin nào nữa: không thể nhân đôi đầu vào chuẩn\n" -#: src/job.c:2207 +#: src/job.c:2250 #, fuzzy, c-format msgid "no more file handles: could not duplicate stdout" msgstr "" "không thể xá»­ lý thêm tập tin nào nữa: không thể nhân đôi đầu ra chuẩn\n" -#: src/job.c:2221 +#: src/job.c:2264 #, fuzzy, c-format msgid "no more file handles: could not duplicate stderr" msgstr "" "không thể xá»­ lý thêm tập tin nào nữa: không thể nhân đôi đầu ra lỗi chuẩn\n" -#: src/job.c:2236 +#: src/job.c:2279 #, fuzzy, c-format msgid "Could not restore stdin" msgstr "Không thể phục hồi đầu vào chuẩn\n" -#: src/job.c:2244 +#: src/job.c:2287 #, fuzzy, c-format msgid "Could not restore stdout" msgstr "Không thể phục hồi đầu ra chuẩn\n" -#: src/job.c:2252 +#: src/job.c:2295 #, fuzzy, c-format msgid "Could not restore stderr" msgstr "Không thể phục hồi đầu ra lỗi tiêu chuẩn\n" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "đặt điều con đã bắt là PID %s, vẫn còn đợi PID %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: cạn không gian dành cho biến môi trường" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL thay đổi (trước là “%s”, giờ là “%s”)\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "Tạo tập tin bó lệnh tạm: %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -925,7 +940,7 @@ msgstr "" "Nội dung tập tin bó lệnh:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -934,7 +949,7 @@ msgstr "" "Nội dung tập tin bó lệnh:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (dòng %d) Ngữ cảnh shell sai (!unixy && !batch_mode_shell)\n" @@ -979,19 +994,19 @@ msgstr "" msgid "The 'load' operation is not supported on this platform" msgstr "Không hỗ trợ thao tác “load” trên hệ thống này." -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "Tùy chọn:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m Bỏ qua để tương thích.\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make Tạo mọi đích vô điều kiện.\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" @@ -999,17 +1014,17 @@ msgstr "" " -C THƯ_MỤC, --directory=THƯ_MỤC\n" " Chuyển sang THƯ MỤC này trước khi làm.\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d In rất nhiều thông tin gỡ rối.\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr "" " --debug[=CỜ…] In nhiều loại thông tin gỡ rối khác nhau.\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1017,13 +1032,13 @@ msgstr "" " -e, --environment-overrides\n" " Biến môi trường đè tập tin makefile.\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr "" " -E STRING, --eval=CHUỖI Định lượng CHUỖI như một lệnh makefile.\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1031,15 +1046,15 @@ msgstr "" " -f TẬP-TIN, --file=TẬP-TIN, --makefile=TẬP-TIN\n" " Đọc TẬP-TIN dạng makefile.\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help Hiển thị trợ giúp này và thoát.\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors Bỏ qua lỗi từ công thức.\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" @@ -1047,7 +1062,7 @@ msgstr "" " -I THƯ_MỤC, --include-dir=THƯ_MỤC\n" " Quét THƯ-MỤC này tìm makefile con.\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" @@ -1055,16 +1070,16 @@ msgstr "" " -j [N], --jobs[=N] Cho phép N công việc đồng thời; không có đối " "số thì vô hạn.\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr " -k, --keep-going Cứ tiếp tục khi không thể tạo đích.\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1073,14 +1088,14 @@ msgstr "" " -l [SỐ], --load-average[=N], --max-load[=N]\n" " Chỉ chạy nhiều công việc nếu tải dưới N.\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" " -L, --check-symlink-times Dùng mtime mới nhất giữa liên kết và đích.\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1089,7 +1104,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " Không chạy công thức; chỉ in chúng ra.\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1098,7 +1113,7 @@ msgstr "" " -o TẬP-TIN, --old-file=TẬP-TIN, --assume-old=TẬP-TIN\n" " Coi TẬP-TIN là rất cÅ© và không tạo lại.\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1107,40 +1122,40 @@ msgstr "" " Đồng bộ hóa kết xuất công việc song song theo " "KIỂU.\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base In cÆ¡ sở dữ liệu nội bộ cá»§a make.\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" " -q, --question Không chạy; mã thoát là \"đã cập nhật\".\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules Tắt quy tắc ngầm dá»±ng sẵn.\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " -R, --no-builtin-variables Tắt đặt biến dá»±ng sẵn.\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" msgstr "" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet Không in lại công thức.\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr " --no-silent In ra công thức (tắt chế độ --silent).\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1148,30 +1163,30 @@ msgstr "" " -S, --no-keep-going, --stop\n" " Tắt -k.\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr " -t, --touch Chạm đích thay vì tạo lại.\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace Hiển thị thông tin dấu vết.\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version Hiển thị phiên bản make rồi thoát.\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory Hiển thị thư mục hiện thời.\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr " --no-print-directory Tắt -w, thậm chí nếu được bật ngầm.\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1179,39 +1194,39 @@ msgstr "" " -W TẬP-TIN, --what-if=TẬP-TIN, --new-file=TẬP-TIN, --assume-new=TẬP-TIN\n" " Giả định TẬP-TIN là mới vô hạn.\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr "" " --warn-undefined-variables Cảnh báo tham chiếu đến biến chưa xác định.\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "lỗi ghi: đầu ra tiêu chuẩn" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "chuỗi rỗng không hợp lệ làm tên tập tin" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "không hiểu đặc tả cấp gỡ rối “%s”" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "không hiểu kiểu output-sync “%s”" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "Cách dùng: %s [các_tùy_chọn] [đích] …\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1220,7 +1235,7 @@ msgstr "" "\n" "Chương trình này đã được dịch cho %s\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1229,19 +1244,19 @@ msgstr "" "\n" "Chương trình này đã được dịch cho %s (%s)\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "" "Hãy thông báo lỗi cho \n" "Hãy thông báo lỗi dịch cho .\n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s: Bắt được ngắt/ngoại lệ (mã = 0x%lx, địa chỉ = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1256,31 +1271,31 @@ msgstr "" "ExceptionFlags (các cờ ngoại lệ) = %lx\n" "ExceptionAddress (địa chỉ ngoại lệ) = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "Vi phạm truy cập: thao tác ghi tại địa chỉ 0x%p\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "Vi phạm truy cập: thao tác đọc tại địa chỉ 0x%p\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() đang đặt default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell() đã quét đường dẫn thì đặt default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "unlink (bỏ liên kết tập tin tạm): " -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." @@ -1288,151 +1303,156 @@ msgstr "" "cảnh báo: trình jobserver không sẵn sàng: dùng -j1. Thêm “+” vào quy tắc " "make cha." -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "" "cảnh báo: -j%d bị ép buộc trong make con: đang đặt lại chế độ jobserver." -#: src/main.c:1930 +#: src/main.c:1946 #, fuzzy, c-format msgid "Makefile from standard input specified twice" msgstr "Tập tin makefile từ đầu vào chuẩn được ghi hai lần." -#: src/main.c:1940 +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "Không thể tạo tập tin tạm\n" + +#: src/main.c:1959 #, fuzzy, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite (tập tin tạm)" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "" "cảnh báo: -j%d bị ép buộc trong make con: đang đặt lại chế độ jobserver." -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "Không hỗ trợ công việc song song (-j) trên hệ thống này." -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "Đặt lại thành chế độ công việc đơn (-j1)." -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "" -#: src/main.c:2250 +#: src/main.c:2262 #, fuzzy, c-format msgid "Using output-sync mutex %s\n" msgstr "không hiểu kiểu output-sync “%s”" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "Không hỗ trợ liên kết mềm: tắt -L." -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "Cập nhật makefile…\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefile “%s” bị lặp; không tạo lại nó.\n" # Variable: do not translate/ biến: đừng dịch -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: gặp lỗi khi tải" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "Gặp lỗi khi làm lại makefile “%s”." -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "Không tìm thấy makefile bao gồm “%s”." -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "Không tìm thấy makefile “%s”" -#: src/main.c:2700 +#: src/main.c:2717 #, fuzzy, c-format msgid "Couldn't change back to original directory" msgstr "Không thể chuyển về thư mục gốc." -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "Thá»±c hiện lại[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL chứa nhiều đích" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "Không có đích" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "Chưa chỉ định đích, và không tìm thấy makefile" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "Đang cập nhật đích mong muốn…\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "" "cảnh báo: Phát hiện lệch giờ. Bản dịch cá»§a bạn có thể không hoàn thiện." -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "tùy chọn “%s%s” cần một đối số là chuỗi khác rỗng" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "tùy chọn “-%c” cần một đối số số nguyên dương" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%sĐược biên dịch cho %s\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%sĐược biên dịch cho %s (%s)\n" -#: src/main.c:3665 +#: src/main.c:3734 #, fuzzy, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later , 2002. # LI Daobing , 2008, 2013. # Mingye Wang , 2015, 2016. -# Boyuan Yang <073plan@gmail.com>, 2018, 2019. +# Boyuan Yang <073plan@gmail.com>, 2018, 2019, 2023. # msgid "" msgstr "" -"Project-Id-Version: make 4.2.93\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2022-10-31 02:23-0400\n" -"PO-Revision-Date: 2020-01-05 15:27-0500\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-01-18 15:40-0500\n" "Last-Translator: Boyuan Yang <073plan@gmail.com>\n" "Language-Team: Chinese (simplified) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 2.2.4\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.2.2\n" #: src/ar.c:47 #, c-format @@ -134,7 +134,7 @@ msgstr " (内置):" msgid " (from '%s', line %lu):\n" msgstr " (从“%s”,行 %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -142,62 +142,62 @@ msgstr "" "\n" "# 目录\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s:无法对其进行 stat 操作。\n" -#: src/dir.c:1122 +#: src/dir.c:1123 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" msgstr "# %s (关键字 %s,修改时间 %I64u):无法打开。\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (设备 %d,i-节点 [%d,%d,%d]):无法打开。\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (设备 %ld,i-节点 %ld):无法打开。\n" -#: src/dir.c:1155 +#: src/dir.c:1156 #, fuzzy, c-format msgid "# %s (key %s, mtime %s): " msgstr "# %s (关键字 %s,修改时间 %I64u):" -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (设备 %d,i-节点 [%d,%d,%d]):" -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (设备 %ld,i-节点 %ld):" -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "无" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " 文件, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "无" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " 不可能" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " 迄今为止。" -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " 不可能在 %lu 目录中。\n" @@ -217,175 +217,175 @@ msgstr "递归变量“%s”(最终将会)引用自身" msgid "unterminated variable reference" msgstr "未终止的变量引用" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "关于文件“%s”的命令配方在 %s:%lu 处指定," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "关于文件“%s”的命令配方通过隐含规则搜索而找到," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "但“%s”现在被看做“%s”的同一个文件。" -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "“%s”的命令配方被忽略,转而使用“%s”的。" -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "无法将单冒号“%s”重命名为双冒号“%s”" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "无法将双冒号“%s”重命名为单冒号“%s”" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** 正在删除中间文件“%s”" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "正在删除中间文件...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" -msgstr "" +msgstr ".NOTINTERMEDIATE 和 .SECONDARY 互斥" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "当前时间" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s:时间标记超出范围;正在替换 %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# 不是一个目标:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# 重要文件 (.PRECIOUS的前提)。" -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# 假目标 (.PHONY的前提)。" -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# 命令行目标。" -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# 缺省的、MAKEFILES 指定的、-include/sinclude 包含的 makefile。" -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# 内建规则" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# 对隐含规则的搜索已完成。" -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# 对隐含规则的搜索尚未完成。" -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# 隐含/静态模式主干:“%s”\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# 文件是一个中间前提。" -#: src/file.c:1111 +#: src/file.c:1108 #, fuzzy msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# 重要文件 (.PRECIOUS的前提)。" -#: src/file.c:1113 +#: src/file.c:1110 #, fuzzy msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# 假目标 (.PHONY的前提)。" -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# 还要制作:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# 从不检查修改时间。" -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# 文件不存在。" -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# 文件非常陈旧。" -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# 最近更新 %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# 文件已经被更新。" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# 文件尚未被更新。" -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# 正在运行的配方 (这是 BUG)。" -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# 正在运行的依赖性配方 (这是 BUG)。" -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# 更新成功。" -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# 需要更新 (用 -q 设定)。" -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# 更新失败。" -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# “command_state”成员中存在无效的值!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -393,7 +393,7 @@ msgstr "" "\n" "# 文件" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -403,7 +403,7 @@ msgstr "" "# 文件杂凑表状态:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s:字段“%s”未被缓存:%s" @@ -411,12 +411,12 @@ msgstr "%s:字段“%s”未被缓存:%s" #: src/function.c:779 src/function.c:1284 #, c-format msgid "%s: empty value" -msgstr "" +msgstr "%s:值为空" #: src/function.c:784 #, c-format msgid "%s: '%s' out of range" -msgstr "" +msgstr "%s:“%s”超出范围" #: src/function.c:800 #, fuzzy @@ -474,132 +474,137 @@ msgstr "windows32_openpipe(): process_init_fd() 失败\n" msgid "Cleaning up temporary batch file %s\n" msgstr "正在清除临时批处理文件 %s\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file:缺少文件名" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close:%s:%s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file:太多参数" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file:打开“%s”失败:%s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read:%s:%s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file:无效文件(file)操作:%s" -#: src/function.c:2527 +#: src/function.c:2552 #, fuzzy, c-format msgid "insufficient number of arguments (%u) to function '%s'" msgstr "函数“%2$s”的参数数量 (%1$d) 不够" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "在本平台上未实现:函数“%s”" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "对函数“%s”的未终止的调用:遗漏“%c”" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "空函数名" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "无效的函数名称:%s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "函数名称太长:%s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "函数“%2$s”的最少参数数量 (%1$u) 无效" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "函数“%2$s”的最多参数数量 (%1$u) 无效" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s:选项“%s”含义不清\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s:选项“--%s”不允许参数\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s:选项“%c%s”不允许参数\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s:选项“%s”需要一个参数\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s:无法识别的选项“--%s”\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s:无法识别的选项“%c%s”\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s:非法选项 -- %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s:非法选项 -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s:选项需要一个参数 -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s:选项“-W %s”含义不清\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s:选项“-W %s”不允许给出参数\n" @@ -649,179 +654,178 @@ msgstr "正在为“%s”寻找归档成员隐含规则。\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "正在为“%s”寻找归档成员隐含规则。\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, fuzzy, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "避免隐含规则递归。\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "" -#: src/implicit.c:501 +#: src/implicit.c:503 #, fuzzy, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "用主干“%.*s”尝试匹配模式规则。\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "主干太长:'%s%.*s'.\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "拒绝不可能的规则前提“%s”。\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "拒绝不可能的隐含前提“%s”。\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "尝试规则前提“%s”。\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "尝试隐含前提“%s”。\n" -#: src/implicit.c:827 -#, fuzzy, c-format +#: src/implicit.c:829 +#, c-format msgid "'%s' ought to exist.\n" -msgstr "文件“%s”不存在。\n" +msgstr "“%s”本应存在。\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" -msgstr "" +msgstr "已找到 '%s'.\n" -#: src/implicit.c:842 +#: src/implicit.c:844 #, fuzzy, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "%s:更新“%s”,因为:%s" -#: src/implicit.c:856 +#: src/implicit.c:858 #, fuzzy, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" msgstr "目标“%2$s”的前提“%1$s”不存在。\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, fuzzy, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "前提“%s”在 VPATH“%s”中发现\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, fuzzy, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "正在寻找包含中间文件“%s”的规则。\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "正在寻找包含中间文件“%s”的规则。\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, fuzzy, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "拒绝不可能的规则前提“%s”。\n" -#: src/implicit.c:931 -#, fuzzy, c-format +#: src/implicit.c:933 +#, c-format msgid "Not found '%s'.\n" -msgstr "找不到关于“%s”的隐含规则。\n" +msgstr "找不到 '%s'。\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, fuzzy, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "找到一条关于“%s”的隐含规则。\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, fuzzy, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "正在为“%s”寻找隐含规则。\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "找不到关于“%s”的隐含规则。\n" -#: src/job.c:380 -#, fuzzy +#: src/job.c:377 msgid "Cannot create a temporary file" -msgstr "无法创建临时文件\n" +msgstr "无法创建临时文件" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (核心已转储)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (已忽略)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "<内置>" -#: src/job.c:587 -#, fuzzy, c-format +#: src/job.c:584 +#, c-format msgid "%s[%s: %s] Error %d%s%s" -msgstr "%s[%s:%s] 错误 %d%s" +msgstr "%s[%s:%s] 错误 %d%s%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** 正在等待未完成的任务...." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "活跃子进程 %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (远程)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "正在中止获胜的子进程 %p PID %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "正在中止失败的子进程 %p PID %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "正在清除临时批文件 %s\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "清理临时批处理文件 %s 失败 (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "从链中删除子进程 %p PID %s%s。\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "为子进程 %p (%s) 释放令牌 (token)。\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() 启动进程失败 (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -830,86 +834,96 @@ msgstr "" "\n" "失败执行中共有 %d 个参数。\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "将子进程 %p (%s) PID %s%s 放入链。\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "获得至进程 %p (%s) 的标记。\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s:更新“%s”,因为:目标为 .PHONY" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s:更新“%s”,因为:目标不存在" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" msgstr "%s:更新“%s”,因为:%s" -#: src/job.c:1910 -#, fuzzy -msgid "target does not exist" -msgstr "%s: 目标文件“%s”不存在" +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s:更新“%s”,因为:未知原因" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "无法在本操作系统中实施负载限制" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "无法实施负载限制:" -#: src/job.c:2195 -#, fuzzy, c-format +#: src/job.c:2238 +#, c-format msgid "no more file handles: could not duplicate stdin" -msgstr "没有剩余的文件句柄: 无法复制标准输入\n" +msgstr "没有剩余的文件句柄: 无法复制标准输入" -#: src/job.c:2207 -#, fuzzy, c-format +#: src/job.c:2250 +#, c-format msgid "no more file handles: could not duplicate stdout" -msgstr "没有剩余的文件句柄: 无法复制标准输出\n" +msgstr "没有剩余的文件句柄: 无法复制标准输出" -#: src/job.c:2221 -#, fuzzy, c-format +#: src/job.c:2264 +#, c-format msgid "no more file handles: could not duplicate stderr" -msgstr "没有剩余的文件句柄: 无法复制标准错误\n" +msgstr "没有剩余的文件句柄: 无法复制标准错误" -#: src/job.c:2236 -#, fuzzy, c-format +#: src/job.c:2279 +#, c-format msgid "Could not restore stdin" -msgstr "无法还原标准输入\n" +msgstr "无法还原标准输入" -#: src/job.c:2244 -#, fuzzy, c-format +#: src/job.c:2287 +#, c-format msgid "Could not restore stdout" -msgstr "无法还原标准输出\n" +msgstr "无法还原标准输出" -#: src/job.c:2252 -#, fuzzy, c-format +#: src/job.c:2295 +#, c-format msgid "Could not restore stderr" -msgstr "无法还原标准错误\n" +msgstr "无法还原标准错误" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make 已中止的子进程 pid %s,仍在等待 pid %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: 环境变量空间可能会耗尽" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL 已改变 (原为“%s”,现为“%s”)\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" -msgstr "正在创建临时批文件 %s\n" +msgstr "正在创建临时批处理文件 %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -918,7 +932,7 @@ msgstr "" "批处理文件内容:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -927,7 +941,7 @@ msgstr "" "批处理文件内容:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (行 %d) 错误的 shell 上下文 (!unixy && !batch_mode_shell)\n" @@ -940,7 +954,7 @@ msgstr "打开全局符号表失败:%s" #: src/load.c:93 #, c-format msgid "Loaded shared object %s\n" -msgstr "" +msgstr "已载入共享目标 %s\n" #: src/load.c:99 #, c-format @@ -968,38 +982,38 @@ msgid "Unloading shared object %s\n" msgstr "" #: src/load.c:251 -#, fuzzy, c-format +#, c-format msgid "The 'load' operation is not supported on this platform" -msgstr "本平台不支持“load”操作。" +msgstr "本平台不支持“load”操作" -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "选项:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m 为兼容性而忽略。\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make 无条件制作 (make) 所有目标。\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr " -C 目录, --directory=目录 在执行前先切换到 <目录>。\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d 打印大量调试信息。\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr " --debug[=旗标] 打印各种调试信息。\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1007,12 +1021,12 @@ msgstr "" " -e, --environment-overrides\n" " 环境变量覆盖 makefile 中的变量。\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr " -E 字串, --eval=字串 将 <字串> 作为 makefile 语句估值。\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1020,37 +1034,37 @@ msgstr "" " -f 文件, --file=文件, --makefile=文件\n" " 从 <文件> 中读入 makefile。\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help 打印该消息并退出。\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors 忽略来自命令配方的错误。\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" msgstr " -I 目录, --include-dir=目录 在 <目录> 中搜索被包含的 makefile。\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr "" " -j [N], --jobs[=N] 同时允许 N 个任务;无参数表明允许无限个任务。\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr "" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr " -k, --keep-going 当某些目标无法制作时仍然继续。\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1059,14 +1073,14 @@ msgstr "" " -l [N], --load-average[=N], --max-load[=N]\n" " 在系统负载高于 N 时不启动多任务。\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" msgstr "" " -L, --check-symlink-times 使用软链接及软链接目标中修改时间较晚的一个。\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1075,7 +1089,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " 只打印命令配方,不实际执行。\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1084,7 +1098,7 @@ msgstr "" " -o 文件, --old-file=文件, --assume-old=文件\n" " 将 <文件> 当做很旧,不必重新制作。\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1092,40 +1106,40 @@ msgstr "" " -O[类型], --output-sync[=类型]\n" " 使用 <类型> 方式同步并行任务输出。\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base 打印 make 的内部数据库。\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" " -q, --question 不运行任何配方;退出状态说明是否已全部更新。\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules 禁用内置隐含规则。\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " -R, --no-builtin-variables 禁用内置变量设置。\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" msgstr "" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet 不输出配方命令。\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr " --no-silent 对配方进行回显(禁用 --silent 模式)。\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1133,32 +1147,32 @@ msgstr "" " -S, --no-keep-going, --stop\n" " 关闭 -k。\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch touch 目标(更新修改时间)而不是重新制作它" "们。\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace 打印跟踪信息。\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version 打印 make 的版本号并退出。\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory 打印当前目录。\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr " --no-print-directory 关闭 -w,即使 -w 默认开启。\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1166,38 +1180,38 @@ msgstr "" " -W 文件, --what-if=文件, --new-file=文件, --assume-new=文件\n" " 将 <文件> 当做最新。\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr " --warn-undefined-variables 当引用未定义变量的时候发出警告。\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "写错误: 标准输出" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "空字符串是无效的文件名" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "未知的调试级别定义“%s”" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "不明输出同步类型“%s”" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "用法:%s [选项] [目标] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1206,7 +1220,7 @@ msgstr "" "\n" "该程序为 %s 编译\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1215,17 +1229,17 @@ msgstr "" "\n" "该程序为 %s (%s) 编译\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "报告错误到 \n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s:捕获中断/异常 (代码 = 0x%lx, 地址 = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1240,177 +1254,182 @@ msgstr "" "异常标志 = %lx\n" "异常地址 = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "访问冲突:地址 0x%p 处的写操作\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "访问冲突:地址 0x%p 处的读操作\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() 设置 default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell() 路径搜索结果设置 default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "删除 (临时文件):" -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "警告: jobserver 不可用: 正使用 -j1。添加 “+” 到父 make 的规则。" -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "警告: 子 make 中强制 -j%d: 重置 jobserver 模式。" -#: src/main.c:1930 -#, fuzzy, c-format +#: src/main.c:1946 +#, c-format msgid "Makefile from standard input specified twice" -msgstr "两次指明来自标准输入的 makefile。" +msgstr "两次指明了来自标准输入的 Makefile" -#: src/main.c:1940 +#: src/main.c:1951 +#, fuzzy, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "无法创建临时文件\n" + +#: src/main.c:1959 #, fuzzy, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite (临时文件)" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "警告: 子 make 中强制 -j%d: 重置 jobserver 模式。" -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "本平台不支持并行任务 (-j)。" -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "重置为单任务模式 (-j1)。" -#: src/main.c:2248 +#: src/main.c:2260 #, c-format msgid "Using jobserver controller %s\n" msgstr "" -#: src/main.c:2250 -#, fuzzy, c-format +#: src/main.c:2262 +#, c-format msgid "Using output-sync mutex %s\n" -msgstr "不明输出同步类型“%s”" +msgstr "正在使用输出同步互斥锁 %s\n" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "不支持软链接:禁用 -L。" -#: src/main.c:2327 +#: src/main.c:2344 #, c-format msgid "Enabled shuffle mode: %s\n" msgstr "" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "正在更新 makefile....\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefile “%s”可能循环;不会重新执行它。\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: 加载失败" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "重新执行 makefile“%s”失败。" -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "找不到被引入的 makefile“%s”。" -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "找不到 makefile “%s”" -#: src/main.c:2700 -#, fuzzy, c-format +#: src/main.c:2717 +#, c-format msgid "Couldn't change back to original directory" -msgstr "无法回到原始目录。" +msgstr "无法回到原始目录" -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "重新执行[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL 包含多余一个目标" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "无目标" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "没有指明目标并且找不到 makefile" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "更新目标....\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "警告:检测到时钟错误。您的构建版本可能是不完整的。" -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "“%s%s”选项需要非空字符串参数" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "“-%c”选项需要正整数参数" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%s为 %s 编译\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%s为 %s (%s) 编译\n" -#: src/main.c:3665 +#: src/main.c:3734 #, fuzzy, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later , 2019, 2020, 2022. msgid "" msgstr "" -"Project-Id-Version: make 4.3.90\n" +"Project-Id-Version: make 4.4.0.90\n" "Report-Msgid-Bugs-To: bug-make@gnu.org\n" -"POT-Creation-Date: 2022-10-31 02:23-0400\n" -"PO-Revision-Date: 2022-09-23 07:02+0800\n" +"POT-Creation-Date: 2023-02-26 11:05-0500\n" +"PO-Revision-Date: 2023-02-03 01:11+0800\n" "Last-Translator: Yi-Jyun Pan \n" "Language-Team: Chinese (traditional) \n" "Language: zh_TW\n" @@ -22,7 +22,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 3.1.1\n" +"X-Generator: Poedit 3.2.2\n" "X-ZhConverter: 繁化姬 dict-4ac8d2ed-r906 @ 2019/10/24 21:28:21 | https://" "zhconvert.org\n" @@ -96,9 +96,9 @@ msgid " uid = %d, gid = %d, mode = 0%o.\n" msgstr " uid = %d,gid = %d,mode = 0%o。\n" #: src/commands.c:379 -#, fuzzy, c-format +#, c-format msgid "Recipe has too many lines (limit %hu)" -msgstr "指令方案行數太多 (%ud)" +msgstr "指令方案列數太多 (上限是 %hu)" #: src/commands.c:501 msgid "*** Break.\n" @@ -138,7 +138,7 @@ msgstr " (內建):" msgid " (from '%s', line %lu):\n" msgstr " (從「%s」,行 %lu):\n" -#: src/dir.c:1107 +#: src/dir.c:1108 msgid "" "\n" "# Directories\n" @@ -146,62 +146,62 @@ msgstr "" "\n" "# 目錄\n" -#: src/dir.c:1119 +#: src/dir.c:1120 #, c-format msgid "# %s: could not be stat'd.\n" msgstr "# %s:無法對其進行 stat 動作。\n" -#: src/dir.c:1122 -#, fuzzy, c-format +#: src/dir.c:1123 +#, c-format msgid "# %s (key %s, mtime %s): could not be opened.\n" -msgstr "# %s (關鍵字 %s,修改時間 %I64u):無法打開。\n" +msgstr "# %s (關鍵字 %s,修改時間 %s):無法打開。\n" -#: src/dir.c:1126 +#: src/dir.c:1127 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n" msgstr "# %s (裝置 %d,i-節點 [%d,%d,%d]):無法打開。\n" -#: src/dir.c:1131 +#: src/dir.c:1132 #, c-format msgid "# %s (device %ld, inode %ld): could not be opened.\n" msgstr "# %s (裝置 %ld,i-節點 %ld):無法打開。\n" -#: src/dir.c:1155 -#, fuzzy, c-format +#: src/dir.c:1156 +#, c-format msgid "# %s (key %s, mtime %s): " -msgstr "# %s (關鍵字 %s,修改時間 %I64u):" +msgstr "# %s (關鍵字 %s,修改時間 %s):" -#: src/dir.c:1159 +#: src/dir.c:1160 #, c-format msgid "# %s (device %d, inode [%d,%d,%d]): " msgstr "# %s (裝置 %d,i-節點 [%d,%d,%d]):" -#: src/dir.c:1164 +#: src/dir.c:1165 #, c-format msgid "# %s (device %ld, inode %ld): " msgstr "# %s (裝置 %ld,i-節點 %ld):" -#: src/dir.c:1168 src/dir.c:1189 +#: src/dir.c:1169 src/dir.c:1190 msgid "No" msgstr "無" -#: src/dir.c:1171 src/dir.c:1192 +#: src/dir.c:1172 src/dir.c:1193 msgid " files, " msgstr " 檔案, " -#: src/dir.c:1173 src/dir.c:1194 +#: src/dir.c:1174 src/dir.c:1195 msgid "no" msgstr "無" -#: src/dir.c:1176 +#: src/dir.c:1177 msgid " impossibilities" msgstr " 不可能" -#: src/dir.c:1180 +#: src/dir.c:1181 msgid " so far." msgstr " 迄今為止。" -#: src/dir.c:1197 +#: src/dir.c:1198 #, c-format msgid " impossibilities in %lu directories.\n" msgstr " 不可能在 %lu 目錄中。\n" @@ -221,173 +221,173 @@ msgstr "遞迴變數「%s」(最終將會)引用自身" msgid "unterminated variable reference" msgstr "未終止的變數引用" -#: src/file.c:272 +#: src/file.c:269 #, c-format msgid "Recipe was specified for file '%s' at %s:%lu," msgstr "關於檔案「%s」的指令方案在 %s:%lu 處指定," -#: src/file.c:277 +#: src/file.c:274 #, c-format msgid "Recipe for file '%s' was found by implicit rule search," msgstr "關於檔案「%s」的指令方案透過隱含規則搜尋而找到," -#: src/file.c:281 +#: src/file.c:278 #, c-format msgid "but '%s' is now considered the same file as '%s'." msgstr "但「%s」現在被看做「%s」的同一個檔案。" -#: src/file.c:284 +#: src/file.c:281 #, c-format msgid "Recipe for '%s' will be ignored in favor of the one for '%s'." msgstr "「%s」的指令方案被忽略,轉而使用「%s」的。" -#: src/file.c:304 +#: src/file.c:301 #, c-format msgid "can't rename single-colon '%s' to double-colon '%s'" msgstr "無法將單冒號「%s」重新命名為雙冒號「%s」" -#: src/file.c:310 +#: src/file.c:307 #, c-format msgid "can't rename double-colon '%s' to single-colon '%s'" msgstr "無法將雙冒號「%s」重新命名為單冒號「%s」" -#: src/file.c:407 +#: src/file.c:404 #, c-format msgid "*** Deleting intermediate file '%s'" msgstr "*** 正在刪除中間檔案「%s」" -#: src/file.c:411 +#: src/file.c:408 #, c-format msgid "Removing intermediate files...\n" msgstr "正在刪除中間檔案...\n" -#: src/file.c:825 +#: src/file.c:822 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .INTERMEDIATE" msgstr "%s 不能同時是 .NOTINTERMEDIATE 和 .INTERMEDIATE" -#: src/file.c:840 +#: src/file.c:837 #, c-format msgid "%s cannot be both .NOTINTERMEDIATE and .SECONDARY" msgstr "%s 不能同時是 .NOTINTERMEDIATE 和 .SECONDARY" -#: src/file.c:850 +#: src/file.c:847 #, c-format msgid ".NOTINTERMEDIATE and .SECONDARY are mutually exclusive" msgstr ".NOTINTERMEDIATE 和 .SECONDARY 互斥" -#: src/file.c:942 +#: src/file.c:939 msgid "Current time" msgstr "目前時間" -#: src/file.c:946 +#: src/file.c:943 #, c-format msgid "%s: Timestamp out of range; substituting %s" msgstr "%s:時間標記超出範圍;正在取代 %s" -#: src/file.c:1089 +#: src/file.c:1086 msgid "# Not a target:" msgstr "# 不是一個目標:" -#: src/file.c:1094 +#: src/file.c:1091 msgid "# Precious file (prerequisite of .PRECIOUS)." msgstr "# 重要檔案 (.PRECIOUS 的前提)。" -#: src/file.c:1096 +#: src/file.c:1093 msgid "# Phony target (prerequisite of .PHONY)." msgstr "# 假目標 (.PHONY 的前提)。" -#: src/file.c:1098 +#: src/file.c:1095 msgid "# Command line target." msgstr "# 指令列目標。" -#: src/file.c:1100 +#: src/file.c:1097 msgid "# A default, MAKEFILES, or -include/sinclude makefile." msgstr "# 預設的、MAKEFILES 指定的、-include/sinclude 包含的 makefile。" -#: src/file.c:1102 +#: src/file.c:1099 msgid "# Builtin rule" msgstr "# 內建規則" -#: src/file.c:1104 +#: src/file.c:1101 msgid "# Implicit rule search has been done." msgstr "# 對隱含規則的搜尋已完成。" -#: src/file.c:1105 +#: src/file.c:1102 msgid "# Implicit rule search has not been done." msgstr "# 對隱含規則的搜尋尚未完成。" -#: src/file.c:1107 +#: src/file.c:1104 #, c-format msgid "# Implicit/static pattern stem: '%s'\n" msgstr "# 隱含/靜態模式主幹:「%s」\n" -#: src/file.c:1109 +#: src/file.c:1106 msgid "# File is an intermediate prerequisite." msgstr "# 檔案是一個中間前提。" -#: src/file.c:1111 +#: src/file.c:1108 msgid "# File is a prerequisite of .NOTINTERMEDIATE." msgstr "# 檔案是 .NOTINTERMEDIATE 的前提。" -#: src/file.c:1113 +#: src/file.c:1110 msgid "# File is secondary (prerequisite of .SECONDARY)." msgstr "# 檔案是 secondary 的(.SECONDARY 的前提)。" -#: src/file.c:1117 +#: src/file.c:1114 msgid "# Also makes:" msgstr "# 還要製作:" -#: src/file.c:1123 +#: src/file.c:1120 msgid "# Modification time never checked." msgstr "# 從不檢查修改時間。" -#: src/file.c:1125 +#: src/file.c:1122 msgid "# File does not exist." msgstr "# 檔案不存在。" -#: src/file.c:1127 +#: src/file.c:1124 msgid "# File is very old." msgstr "# 檔案非常陳舊。" -#: src/file.c:1132 +#: src/file.c:1129 #, c-format msgid "# Last modified %s\n" msgstr "# 最近更新 %s\n" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has been updated." msgstr "# 檔案已經被更新。" -#: src/file.c:1135 +#: src/file.c:1132 msgid "# File has not been updated." msgstr "# 檔案尚未被更新。" -#: src/file.c:1139 +#: src/file.c:1136 msgid "# Recipe currently running (THIS IS A BUG)." msgstr "# 正在執行的方案 (這是 BUG)。" -#: src/file.c:1142 +#: src/file.c:1139 msgid "# Dependencies recipe running (THIS IS A BUG)." msgstr "# 正在執行的依賴性方案 (這是 BUG)。" -#: src/file.c:1151 +#: src/file.c:1148 msgid "# Successfully updated." msgstr "# 更新成功。" -#: src/file.c:1155 +#: src/file.c:1152 msgid "# Needs to be updated (-q is set)." msgstr "# 需要更新 (用 -q 設定)。" -#: src/file.c:1158 +#: src/file.c:1155 msgid "# Failed to be updated." msgstr "# 更新失敗。" -#: src/file.c:1163 +#: src/file.c:1160 msgid "# Invalid value in 'command_state' member!" msgstr "# 「command_state」成員中存在無效的值!" -#: src/file.c:1182 +#: src/file.c:1179 msgid "" "\n" "# Files" @@ -395,7 +395,7 @@ msgstr "" "\n" "# 檔案" -#: src/file.c:1186 +#: src/file.c:1183 msgid "" "\n" "# files hash-table stats:\n" @@ -405,7 +405,7 @@ msgstr "" "# 檔案雜湊表狀態:\n" "# " -#: src/file.c:1196 +#: src/file.c:1193 #, c-format msgid "%s: Field '%s' not cached: %s" msgstr "%s:欄位「%s」未被快取:%s" @@ -427,7 +427,7 @@ msgstr "傳入 “word” 函式的第一個引數無效" #: src/function.c:803 #, c-format msgid "first argument to 'word' function must be greater than 0" -msgstr "「word」函數的第一個參數必須大於 0" +msgstr "“word” 函數的第一個參數必須大於 0" #: src/function.c:821 msgid "invalid first argument to 'wordlist' function" @@ -471,132 +471,137 @@ msgstr "windows32_openpipe(): process_init_fd() 失敗\n" msgid "Cleaning up temporary batch file %s\n" msgstr "正在清除暫時批次檔 %s\n" -#: src/function.c:2343 src/function.c:2373 +#: src/function.c:2348 src/function.c:2388 #, c-format msgid "file: missing filename" msgstr "file:缺少檔案名" -#: src/function.c:2347 src/function.c:2383 +#: src/function.c:2358 src/function.c:2408 #, c-format msgid "open: %s: %s" msgstr "open: %s: %s" -#: src/function.c:2360 +#: src/function.c:2371 #, c-format msgid "write: %s: %s" msgstr "write: %s: %s" -#: src/function.c:2363 src/function.c:2402 +#: src/function.c:2374 src/function.c:2427 #, c-format msgid "close: %s: %s" msgstr "close:%s:%s" -#: src/function.c:2376 +#: src/function.c:2391 #, c-format msgid "file: too many arguments" msgstr "file:太多參數" -#: src/function.c:2397 +#: src/function.c:2404 +#, c-format +msgid "file: Failed to open '%s': %s\n" +msgstr "file:無法開啟 '%s':%s\n" + +#: src/function.c:2422 #, c-format msgid "read: %s: %s" msgstr "read:%s:%s" -#: src/function.c:2409 +#: src/function.c:2434 #, c-format msgid "file: invalid file operation: %s" msgstr "file:無效檔案(file)動作:%s" -#: src/function.c:2527 -#, fuzzy, c-format +#: src/function.c:2552 +#, c-format msgid "insufficient number of arguments (%u) to function '%s'" -msgstr "函數「%2$s」的參數數量 (%1$d) 不夠" +msgstr "傳入 '%2$s' 函式的引數數量 (%1$u) 不足" -#: src/function.c:2539 +#: src/function.c:2564 #, c-format msgid "unimplemented on this platform: function '%s'" msgstr "在本平台上未實現:函數「%s」" -#: src/function.c:2608 +#: src/function.c:2633 #, c-format msgid "unterminated call to function '%s': missing '%c'" msgstr "對函數「%s」的未終止的呼叫:遺漏「%c」" -#: src/function.c:2791 +#: src/function.c:2816 #, c-format msgid "Empty function name" msgstr "空函數名" -#: src/function.c:2793 +#: src/function.c:2818 #, c-format msgid "Invalid function name: %s" msgstr "無效的函數名稱:%s" -#: src/function.c:2795 +#: src/function.c:2820 #, c-format msgid "Function name too long: %s" msgstr "函數名稱太長:%s" -#: src/function.c:2798 +#: src/function.c:2823 #, c-format msgid "Invalid minimum argument count (%u) for function %s" msgstr "函數「%2$s」的最少參數數量 (%1$u) 無效" -#: src/function.c:2801 +#: src/function.c:2826 #, c-format msgid "Invalid maximum argument count (%u) for function %s" msgstr "函數「%2$s」的最多參數數量 (%1$u) 無效" -#: src/getopt.c:659 +#: src/getopt.c:663 #, c-format msgid "%s: option '%s' is ambiguous\n" msgstr "%s:選項「%s」含義不清\n" -#: src/getopt.c:683 +#: src/getopt.c:688 #, c-format msgid "%s: option '--%s' doesn't allow an argument\n" msgstr "%s:選項「--%s」不允許參數\n" -#: src/getopt.c:688 +#: src/getopt.c:693 #, c-format msgid "%s: option '%c%s' doesn't allow an argument\n" msgstr "%s:選項「%c%s」不允許參數\n" -#: src/getopt.c:705 src/getopt.c:878 +#: src/getopt.c:710 src/getopt.c:883 #, c-format msgid "%s: option '%s' requires an argument\n" msgstr "%s:選項「%s」需要一個參數\n" -#: src/getopt.c:734 +#: src/getopt.c:739 #, c-format msgid "%s: unrecognized option '--%s'\n" msgstr "%s:無法識別的選項「--%s」\n" -#: src/getopt.c:738 +#: src/getopt.c:743 #, c-format msgid "%s: unrecognized option '%c%s'\n" msgstr "%s:無法識別的選項「%c%s」\n" -#: src/getopt.c:764 +#: src/getopt.c:769 #, c-format msgid "%s: illegal option -- %c\n" msgstr "%s:選項無效 ─ %c\n" -#: src/getopt.c:767 +#: src/getopt.c:772 #, c-format msgid "%s: invalid option -- %c\n" msgstr "%s:無效選項 -- %c\n" -#: src/getopt.c:797 src/getopt.c:927 +#: src/getopt.c:802 src/getopt.c:932 #, c-format msgid "%s: option requires an argument -- %c\n" msgstr "%s:選項需要一個參數 -- %c\n" -#: src/getopt.c:844 +#: src/getopt.c:849 #, c-format msgid "%s: option '-W %s' is ambiguous\n" msgstr "%s:選項「-W %s」含義不清\n" -#: src/getopt.c:862 +#: src/getopt.c:867 #, c-format msgid "%s: option '-W %s' doesn't allow an argument\n" msgstr "%s:選項「-W %s」不允許給出參數\n" @@ -646,178 +651,178 @@ msgstr "正在為「%s」尋找封存成員隱含規則。\n" msgid "No archive-member implicit rule found for '%s'.\n" msgstr "沒找到「%s」的封存成員隱含規則。\n" -#: src/implicit.c:326 +#: src/implicit.c:328 #, c-format msgid "Avoiding implicit rule recursion for rule '%s'.\n" msgstr "防止「%s」規則發生隱含規則遞迴。\n" -#: src/implicit.c:451 +#: src/implicit.c:453 #, c-format msgid "Trying harder.\n" msgstr "更努力嘗試。\n" -#: src/implicit.c:501 +#: src/implicit.c:503 #, c-format msgid "Trying pattern rule '%s' with stem '%.*s'.\n" msgstr "嘗試將「%s」模式規則與「%.*s」主幹配對。\n" -#: src/implicit.c:506 +#: src/implicit.c:508 #, c-format msgid "Stem too long: '%s%.*s'.\n" msgstr "主幹太長:「%s%.*s」。\n" -#: src/implicit.c:768 +#: src/implicit.c:770 #, c-format msgid "Rejecting rule '%s' due to impossible rule prerequisite '%s'.\n" msgstr "拒絕「%s」規則,因為「%s」規則前提不可能發生。\n" -#: src/implicit.c:770 +#: src/implicit.c:772 #, c-format msgid "Rejecting rule '%s' due to impossible implicit prerequisite '%s'.\n" msgstr "拒絕「%s」規則,因為「%s」隱含前提不可能發生。\n" -#: src/implicit.c:787 +#: src/implicit.c:789 #, c-format msgid "Trying rule prerequisite '%s'.\n" msgstr "嘗試規則前提「%s」。\n" -#: src/implicit.c:788 +#: src/implicit.c:790 #, c-format msgid "Trying implicit prerequisite '%s'.\n" msgstr "嘗試隱含前提「%s」。\n" -#: src/implicit.c:827 +#: src/implicit.c:829 #, c-format msgid "'%s' ought to exist.\n" msgstr "「%s」應存在。\n" -#: src/implicit.c:834 +#: src/implicit.c:836 #, c-format msgid "Found '%s'.\n" msgstr "找到「%s」。\n" -#: src/implicit.c:842 +#: src/implicit.c:844 #, c-format msgid "Using compatibility rule '%s' due to '%s'.\n" msgstr "使用「%s」相容性規則,因為「%s」。\n" -#: src/implicit.c:856 -#, fuzzy, c-format +#: src/implicit.c:858 +#, c-format msgid "Prerequisite '%s' of rule '%s' does not qualify as ought to exist.\n" -msgstr "「%2$s」規則的「%1$s」前提沒法成立「應當存在」的條件。\n" +msgstr "「%2$s」規則的「%1$s」前提不符合應該存在的條件。\n" -#: src/implicit.c:870 +#: src/implicit.c:872 #, c-format msgid "Found prerequisite '%s' as VPATH '%s'.\n" msgstr "在「%s」VPATH 找到「%s」前提。\n" -#: src/implicit.c:885 +#: src/implicit.c:887 #, c-format msgid "Looking for a rule with explicit file '%s'.\n" msgstr "正在尋找有明確檔案「%s」的規則。\n" -#: src/implicit.c:886 +#: src/implicit.c:888 #, c-format msgid "Looking for a rule with intermediate file '%s'.\n" msgstr "正在尋找包含中間檔案「%s」的規則。\n" -#: src/implicit.c:927 +#: src/implicit.c:929 #, c-format msgid "Rejecting rule '%s' due to impossible prerequisite '%s'.\n" msgstr "拒絕「%s」規則,因為「%s」前提不可能發生。\n" -#: src/implicit.c:931 +#: src/implicit.c:933 #, c-format msgid "Not found '%s'.\n" msgstr "找不到「%s」。\n" -#: src/implicit.c:1144 +#: src/implicit.c:1148 #, c-format msgid "Found implicit rule '%s' for '%s'.\n" msgstr "找到「%2$s」的「%1$s」隱含規則。\n" -#: src/implicit.c:1151 +#: src/implicit.c:1155 #, c-format msgid "Searching for a compatibility rule for '%s'.\n" msgstr "正在搜尋「%s」的相容性規則。\n" -#: src/implicit.c:1157 +#: src/implicit.c:1161 #, c-format msgid "No implicit rule found for '%s'.\n" msgstr "找不到關於「%s」的隱含規則。\n" -#: src/job.c:380 +#: src/job.c:377 msgid "Cannot create a temporary file" msgstr "無法建立暫存檔案" -#: src/job.c:552 +#: src/job.c:549 msgid " (core dumped)" msgstr " (已傾印核心)" -#: src/job.c:557 +#: src/job.c:554 msgid " (ignored)" msgstr " (已忽略)" -#: src/job.c:561 src/job.c:1900 +#: src/job.c:558 src/job.c:1903 msgid "" msgstr "<內建>" -#: src/job.c:587 +#: src/job.c:584 #, c-format msgid "%s[%s: %s] Error %d%s%s" msgstr "%s[%s: %s] 錯誤 %d%s%s" -#: src/job.c:677 +#: src/job.c:674 #, c-format msgid "*** Waiting for unfinished jobs...." msgstr "*** 正在等待未完成的作業...." -#: src/job.c:719 +#: src/job.c:716 #, c-format msgid "Live child %p (%s) PID %s %s\n" msgstr "使用中子程序 %p (%s) PID %s %s\n" -#: src/job.c:721 src/job.c:916 src/job.c:1084 src/job.c:1652 +#: src/job.c:718 src/job.c:913 src/job.c:1081 src/job.c:1656 #, c-format msgid " (remote)" msgstr " (遠端)" -#: src/job.c:914 +#: src/job.c:911 #, c-format msgid "Reaping winning child %p PID %s %s\n" msgstr "正在中止獲勝的子程序 %p PID %s %s\n" -#: src/job.c:915 +#: src/job.c:912 #, c-format msgid "Reaping losing child %p PID %s %s\n" msgstr "正在中止失敗的子程序 %p PID %s %s\n" -#: src/job.c:966 +#: src/job.c:963 #, c-format msgid "Cleaning up temp batch file %s\n" msgstr "正在清除暫時批次檔 %s\n" -#: src/job.c:972 +#: src/job.c:969 #, c-format msgid "Cleaning up temp batch file %s failed (%d)\n" msgstr "清理暫時批次檔 %s 失敗 (%d)\n" -#: src/job.c:1083 +#: src/job.c:1080 #, c-format msgid "Removing child %p PID %s%s from chain.\n" msgstr "從鏈中刪除子程序 %p PID %s%s。\n" -#: src/job.c:1146 +#: src/job.c:1143 #, c-format msgid "Released token for child %p (%s).\n" msgstr "為子程序 %p (%s) 釋放憑證 (token)。\n" -#: src/job.c:1583 src/job.c:2497 +#: src/job.c:1587 src/job.c:2540 #, c-format msgid "process_easy() failed to launch process (e=%ld)\n" msgstr "process_easy() 啟動處理程序失敗 (e=%ld)\n" -#: src/job.c:1587 src/job.c:2501 +#: src/job.c:1591 src/job.c:2544 #, c-format msgid "" "\n" @@ -826,85 +831,96 @@ msgstr "" "\n" "失敗執行中共有 %d 個參數。\n" -#: src/job.c:1650 +#: src/job.c:1654 #, c-format msgid "Putting child %p (%s) PID %s%s on the chain.\n" msgstr "將子程序 %p (%s) PID %s%s 放入鏈。\n" -#: src/job.c:1883 +#: src/job.c:1887 #, c-format msgid "Obtained token for child %p (%s).\n" msgstr "取得至處理程序 %p (%s) 的標記。\n" -#: src/job.c:1909 +#: src/job.c:1912 +#, c-format +msgid "%s: update target '%s' due to: target is .PHONY" +msgstr "%s:更新「%s」目標,因為:目標是 .PHONY" + +#: src/job.c:1916 +#, c-format +msgid "%s: update target '%s' due to: target does not exist" +msgstr "%s:更新「%s」目標,因為:目標不存在" + +#: src/job.c:1923 src/job.c:1951 #, c-format msgid "%s: update target '%s' due to: %s" -msgstr "%s:更新「%s」,因為:%s" +msgstr "%s:更新「%s」目標,因為:%s" -#: src/job.c:1910 -msgid "target does not exist" -msgstr "目標不存在" +#: src/job.c:1939 +#, c-format +msgid "%s: update target '%s' due to: unknown reasons" +msgstr "%s:更新「%s」目標,因為:未知原因" -#: src/job.c:2104 +#: src/job.c:2147 #, c-format msgid "cannot enforce load limits on this operating system" msgstr "無法在本作業系統中實施負載限制" -#: src/job.c:2106 +#: src/job.c:2149 msgid "cannot enforce load limit: " msgstr "無法實施負載限制:" -#: src/job.c:2195 +#: src/job.c:2238 #, c-format msgid "no more file handles: could not duplicate stdin" msgstr "檔案控制代碼已用盡:無法複製 stdin" -#: src/job.c:2207 +#: src/job.c:2250 #, c-format msgid "no more file handles: could not duplicate stdout" msgstr "檔案控制代碼已用盡:無法複製 stdout" -#: src/job.c:2221 +#: src/job.c:2264 #, c-format msgid "no more file handles: could not duplicate stderr" msgstr "檔案控制代碼已用盡:無法複製 stderr" -#: src/job.c:2236 +#: src/job.c:2279 #, c-format msgid "Could not restore stdin" msgstr "無法還原 stdin" -#: src/job.c:2244 +#: src/job.c:2287 #, c-format msgid "Could not restore stdout" msgstr "無法還原 stdout" -#: src/job.c:2252 +#: src/job.c:2295 #, c-format msgid "Could not restore stderr" msgstr "無法還原 stderr" -#: src/job.c:2530 +#: src/job.c:2573 #, c-format msgid "make reaped child pid %s, still waiting for pid %s\n" msgstr "make 已中止的子程序 pid %s,仍在等待 pid %s\n" -#: src/job.c:2630 +#: src/job.c:2681 #, c-format msgid "spawnvpe: environment space might be exhausted" msgstr "spawnvpe: 環境變數空間可能會耗盡" -#: src/job.c:2869 +#: src/job.c:2920 #, c-format msgid "$SHELL changed (was '%s', now '%s')\n" msgstr "$SHELL 已改變 (原為「%s」,現為「%s」)\n" -#: src/job.c:3306 src/job.c:3510 +#: src/job.c:3363 src/job.c:3567 #, c-format msgid "Creating temporary batch file %s\n" msgstr "正在建立暫時批檔案 %s\n" -#: src/job.c:3314 +#: src/job.c:3371 #, c-format msgid "" "Batch file contents:\n" @@ -913,7 +929,7 @@ msgstr "" "批次檔內容:\n" "\t@echo off\n" -#: src/job.c:3522 +#: src/job.c:3579 #, c-format msgid "" "Batch file contents:%s\n" @@ -922,7 +938,7 @@ msgstr "" "批次檔內容:%s\n" "\t%s\n" -#: src/job.c:3630 +#: src/job.c:3687 #, c-format msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n" msgstr "%s (行 %d) 錯誤的 shell 上下文 (!unixy && !batch_mode_shell)\n" @@ -967,34 +983,34 @@ msgstr "正在卸載 %s 共用物件\n" msgid "The 'load' operation is not supported on this platform" msgstr "本平台不支援 “load” 操作" -#: src/main.c:317 +#: src/main.c:320 msgid "Options:\n" msgstr "選項:\n" -#: src/main.c:318 +#: src/main.c:321 msgid " -b, -m Ignored for compatibility.\n" msgstr " -b, -m 為相容性而忽略。\n" -#: src/main.c:320 +#: src/main.c:323 msgid " -B, --always-make Unconditionally make all targets.\n" msgstr " -B, --always-make 無條件製作 (make) 所有目標。\n" -#: src/main.c:322 +#: src/main.c:325 msgid "" " -C DIRECTORY, --directory=DIRECTORY\n" " Change to DIRECTORY before doing anything.\n" msgstr " -C 目錄, --directory=目錄 在執行前先切換到 <目錄>。\n" -#: src/main.c:325 +#: src/main.c:328 msgid " -d Print lots of debugging information.\n" msgstr " -d 輸出大量除錯訊息。\n" -#: src/main.c:327 +#: src/main.c:330 msgid "" " --debug[=FLAGS] Print various types of debugging information.\n" msgstr " --debug[=旗標] 輸出各種除錯訊息。\n" -#: src/main.c:329 +#: src/main.c:332 msgid "" " -e, --environment-overrides\n" " Environment variables override makefiles.\n" @@ -1002,12 +1018,12 @@ msgstr "" " -e, --environment-overrides\n" " 環境變數覆蓋 makefile 中的變數。\n" -#: src/main.c:332 +#: src/main.c:335 msgid "" " -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n" msgstr " -E 字串, --eval=字串 將 <字串> 作為 makefile 語句估值。\n" -#: src/main.c:334 +#: src/main.c:337 msgid "" " -f FILE, --file=FILE, --makefile=FILE\n" " Read FILE as a makefile.\n" @@ -1015,37 +1031,37 @@ msgstr "" " -f 檔案, --file=檔案, --makefile=檔案\n" " 從 <檔案> 中讀入 makefile。\n" -#: src/main.c:337 +#: src/main.c:340 msgid " -h, --help Print this message and exit.\n" msgstr " -h, --help 輸出該訊息並離開。\n" -#: src/main.c:339 +#: src/main.c:342 msgid " -i, --ignore-errors Ignore errors from recipes.\n" msgstr " -i, --ignore-errors 忽略來自指令方案的錯誤。\n" -#: src/main.c:341 +#: src/main.c:344 msgid "" " -I DIRECTORY, --include-dir=DIRECTORY\n" " Search DIRECTORY for included makefiles.\n" msgstr " -I 目錄, --include-dir=目錄 在 <目錄> 中搜尋被包含的 makefile。\n" -#: src/main.c:344 +#: src/main.c:347 msgid "" " -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no " "arg.\n" msgstr "" " -j [N], --jobs[=N] 同時允許 N 個作業;無參數表明允許無限個作業。\n" -#: src/main.c:346 +#: src/main.c:349 msgid " --jobserver-style=STYLE Select the style of jobserver to use.\n" msgstr " --jobserver-style=STYLE 選擇 jobserver 要使用的風格。\n" -#: src/main.c:348 +#: src/main.c:351 msgid "" " -k, --keep-going Keep going when some targets can't be made.\n" msgstr " -k, --keep-going 當某些目標無法製作時仍然繼續。\n" -#: src/main.c:350 +#: src/main.c:353 msgid "" " -l [N], --load-average[=N], --max-load[=N]\n" " Don't start multiple jobs unless load is below " @@ -1054,7 +1070,7 @@ msgstr "" " -l [N], --load-average[=N], --max-load[=N]\n" " 在系統負載高於 N 時不啟動多作業。\n" -#: src/main.c:353 +#: src/main.c:356 msgid "" " -L, --check-symlink-times Use the latest mtime between symlinks and " "target.\n" @@ -1062,7 +1078,7 @@ msgstr "" " -L, --check-symlink-times 使用符號連結及符號連結目標中修改時間較晚的一" "個。\n" -#: src/main.c:355 +#: src/main.c:358 msgid "" " -n, --just-print, --dry-run, --recon\n" " Don't actually run any recipe; just print " @@ -1071,7 +1087,7 @@ msgstr "" " -n, --just-print, --dry-run, --recon\n" " 只輸出指令方案,不實際執行。\n" -#: src/main.c:358 +#: src/main.c:361 msgid "" " -o FILE, --old-file=FILE, --assume-old=FILE\n" " Consider FILE to be very old and don't remake " @@ -1080,7 +1096,7 @@ msgstr "" " -o 檔案, --old-file=檔案, --assume-old=檔案\n" " 將 <檔案> 當做很舊,不必重新製作。\n" -#: src/main.c:361 +#: src/main.c:364 msgid "" " -O[TYPE], --output-sync[=TYPE]\n" " Synchronize output of parallel jobs by TYPE.\n" @@ -1088,26 +1104,26 @@ msgstr "" " -O[類型], --output-sync[=類型]\n" " 使用 <類型> 方式同步並行作業輸出。\n" -#: src/main.c:364 +#: src/main.c:367 msgid " -p, --print-data-base Print make's internal database.\n" msgstr " -p, --print-data-base 輸出 make 的內部資料庫。\n" -#: src/main.c:366 +#: src/main.c:369 msgid "" " -q, --question Run no recipe; exit status says if up to " "date.\n" msgstr "" " -q, --question 不執行任何方案;離開狀態說明是否已全部更新。\n" -#: src/main.c:368 +#: src/main.c:371 msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n" msgstr " -r, --no-builtin-rules 停用內建隱含規則。\n" -#: src/main.c:370 +#: src/main.c:373 msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n" msgstr " -R, --no-builtin-variables 停用內建變數設定。\n" -#: src/main.c:372 +#: src/main.c:375 msgid "" " --shuffle[={SEED|random|reverse|none}]\n" " Perform shuffle of prerequisites and goals.\n" @@ -1118,15 +1134,15 @@ msgstr "" " none 不重新排列。\n" "\n" -#: src/main.c:375 +#: src/main.c:378 msgid " -s, --silent, --quiet Don't echo recipes.\n" msgstr " -s, --silent, --quiet 不輸出方案指令。\n" -#: src/main.c:377 +#: src/main.c:380 msgid " --no-silent Echo recipes (disable --silent mode).\n" msgstr " --no-silent 對方案進行回顯(停用 --silent 模式)。\n" -#: src/main.c:379 +#: src/main.c:382 msgid "" " -S, --no-keep-going, --stop\n" " Turns off -k.\n" @@ -1134,32 +1150,32 @@ msgstr "" " -S, --no-keep-going, --stop\n" " 關閉 -k。\n" -#: src/main.c:382 +#: src/main.c:385 msgid " -t, --touch Touch targets instead of remaking them.\n" msgstr "" " -t, --touch touch 目標(更新修改時間)而不是重新製作它" "們。\n" -#: src/main.c:384 +#: src/main.c:387 msgid " --trace Print tracing information.\n" msgstr " --trace 輸出跟蹤訊息。\n" -#: src/main.c:386 +#: src/main.c:389 msgid "" " -v, --version Print the version number of make and exit.\n" msgstr " -v, --version 輸出 make 的版本號並離開。\n" -#: src/main.c:388 +#: src/main.c:391 msgid " -w, --print-directory Print the current directory.\n" msgstr " -w, --print-directory 輸出目前目錄。\n" -#: src/main.c:390 +#: src/main.c:393 msgid "" " --no-print-directory Turn off -w, even if it was turned on " "implicitly.\n" msgstr " --no-print-directory 關閉 -w,即使 -w 預設開啟。\n" -#: src/main.c:392 +#: src/main.c:395 msgid "" " -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n" " Consider FILE to be infinitely new.\n" @@ -1167,38 +1183,38 @@ msgstr "" " -W 檔案, --what-if=檔案, --new-file=檔案, --assume-new=檔案\n" " 將 <檔案> 當做最新。\n" -#: src/main.c:395 +#: src/main.c:398 msgid "" " --warn-undefined-variables Warn when an undefined variable is " "referenced.\n" msgstr " --warn-undefined-variables 當引用未定義變數的時候發出警告。\n" -#: src/main.c:728 src/main.c:730 +#: src/main.c:736 src/main.c:738 #, c-format msgid "write error: stdout" msgstr "寫錯誤: 標準輸出" -#: src/main.c:742 +#: src/main.c:750 #, c-format msgid "empty string invalid as file name" msgstr "空字串是無效的檔案名" -#: src/main.c:834 +#: src/main.c:842 #, c-format msgid "unknown debug level specification '%s'" msgstr "未知的除錯級別定義「%s」" -#: src/main.c:874 +#: src/main.c:882 #, c-format msgid "unknown output-sync type '%s'" msgstr "不明輸出同步類型「%s」" -#: src/main.c:898 +#: src/main.c:906 #, c-format msgid "Usage: %s [options] [target] ...\n" msgstr "用法:%s [選項] [目標] ...\n" -#: src/main.c:904 +#: src/main.c:912 #, c-format msgid "" "\n" @@ -1207,7 +1223,7 @@ msgstr "" "\n" "該程式為 %s 編譯\n" -#: src/main.c:906 +#: src/main.c:914 #, c-format msgid "" "\n" @@ -1216,17 +1232,17 @@ msgstr "" "\n" "該程式為 %s (%s) 編譯\n" -#: src/main.c:909 +#: src/main.c:917 #, c-format msgid "Report bugs to \n" msgstr "報告錯誤到 \n" -#: src/main.c:940 +#: src/main.c:948 #, c-format msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n" msgstr "%s:捕獲中斷/異常 (程式碼 = 0x%lx, 位址 = 0x%p)\n" -#: src/main.c:947 +#: src/main.c:955 #, c-format msgid "" "\n" @@ -1241,177 +1257,182 @@ msgstr "" "異常標誌 = %lx\n" "異常位址 = 0x%p\n" -#: src/main.c:955 +#: src/main.c:963 #, c-format msgid "Access violation: write operation at address 0x%p\n" msgstr "存取衝突:位址 0x%p 處的寫入動作\n" -#: src/main.c:956 +#: src/main.c:964 #, c-format msgid "Access violation: read operation at address 0x%p\n" msgstr "存取衝突:位址 0x%p 處的讀取動作\n" -#: src/main.c:1028 src/main.c:1042 +#: src/main.c:1036 src/main.c:1050 #, c-format msgid "find_and_set_shell() setting default_shell = %s\n" msgstr "find_and_set_shell() 設定 default_shell = %s\n" -#: src/main.c:1098 +#: src/main.c:1106 #, c-format msgid "find_and_set_shell() path search set default_shell = %s\n" msgstr "find_and_set_shell() 路徑搜尋結果設定 default_shell = %s\n" -#: src/main.c:1151 +#: src/main.c:1159 msgid "unlink (temporary file): " msgstr "刪除 (暫存檔):" -#: src/main.c:1833 +#: src/main.c:1849 #, c-format msgid "" "warning: jobserver unavailable: using -j1. Add '+' to parent make rule." msgstr "警告: jobserver 不可用: 正使用 -j1。添加「+」到父 make 的規則。" -#: src/main.c:1841 +#: src/main.c:1857 #, c-format msgid "warning: -j%d forced in submake: resetting jobserver mode." msgstr "警告: 子 make 中強制 -j%d: 重設 jobserver 模式。" -#: src/main.c:1930 +#: src/main.c:1946 #, c-format msgid "Makefile from standard input specified twice" msgstr "指定了兩次源自標準輸入的 Makefile" -#: src/main.c:1940 +#: src/main.c:1951 +#, c-format +msgid "cannot store makefile from stdin to a temporary file" +msgstr "無法將來自標準輸入的 Makefile 儲存為暫存檔案" + +#: src/main.c:1959 #, c-format msgid "fwrite: temporary file %s: %s" msgstr "fwrite:暫存檔 %s:%s" -#: src/main.c:2095 +#: src/main.c:2107 #, c-format msgid "warning: -j%d forced in makefile: resetting jobserver mode." msgstr "警告: 子 make 中強制 -j%d: 重設 jobserver 模式。" -#: src/main.c:2191 +#: src/main.c:2203 #, c-format msgid "Parallel jobs (-j) are not supported on this platform." msgstr "本平台不支援並行作業 (-j)。" -#: src/main.c:2192 +#: src/main.c:2204 #, c-format msgid "Resetting to single job (-j1) mode." msgstr "重設為單作業模式 (-j1)。" -#: src/main.c:2248 -#, fuzzy, c-format +#: src/main.c:2260 +#, c-format msgid "Using jobserver controller %s\n" -msgstr "jobserver 認證風格 “%s” 未知" +msgstr "使用 jobserver 控制器 %s\n" -#: src/main.c:2250 -#, fuzzy, c-format +#: src/main.c:2262 +#, c-format msgid "Using output-sync mutex %s\n" -msgstr "無效的輸出同步鎖 (mutex):%s" +msgstr "使用輸出同步鎖 (mutex) %s\n" -#: src/main.c:2255 +#: src/main.c:2267 #, c-format msgid "Symbolic links not supported: disabling -L." msgstr "不支援符號連結:停用 -L。" -#: src/main.c:2327 -#, fuzzy, c-format +#: src/main.c:2344 +#, c-format msgid "Enabled shuffle mode: %s\n" -msgstr "無效的重新排序模式:%s:「%s」" +msgstr "已啟用重新排列模式:%s\n" -#: src/main.c:2339 +#: src/main.c:2356 #, c-format msgid "Updating makefiles....\n" msgstr "正在更新 makefile....\n" -#: src/main.c:2397 +#: src/main.c:2414 #, c-format msgid "Makefile '%s' might loop; not remaking it.\n" msgstr "Makefile「%s」可能循環;不會重新執行它。\n" -#: src/main.c:2443 src/main.c:2499 src/output.c:519 +#: src/main.c:2460 src/main.c:2516 src/output.c:523 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: src/main.c:2476 src/read.c:970 +#: src/main.c:2493 src/read.c:964 #, c-format msgid "%s: failed to load" msgstr "%s: 載入失敗" -#: src/main.c:2528 +#: src/main.c:2545 #, c-format msgid "Failed to remake makefile '%s'." msgstr "重新執行 makefile「%s」失敗。" -#: src/main.c:2548 +#: src/main.c:2565 #, c-format msgid "Included makefile '%s' was not found." msgstr "找不到被引入的 makefile「%s」。" -#: src/main.c:2552 +#: src/main.c:2569 #, c-format msgid "Makefile '%s' was not found" msgstr "找不到 makefile「%s」" -#: src/main.c:2700 +#: src/main.c:2717 #, c-format msgid "Couldn't change back to original directory" msgstr "無法切回原始目錄" -#: src/main.c:2708 +#: src/main.c:2725 #, c-format msgid "Re-executing[%u]:" msgstr "重新執行[%u]:" -#: src/main.c:2863 +#: src/main.c:2880 #, c-format msgid ".DEFAULT_GOAL contains more than one target" msgstr ".DEFAULT_GOAL 包含多餘一個目標" -#: src/main.c:2887 +#: src/main.c:2904 #, c-format msgid "No targets" msgstr "無目標" -#: src/main.c:2889 +#: src/main.c:2906 #, c-format msgid "No targets specified and no makefile found" msgstr "沒有指明目標並且找不到 makefile" -#: src/main.c:2898 +#: src/main.c:2915 #, c-format msgid "Updating goal targets....\n" msgstr "更新目標....\n" -#: src/main.c:2922 +#: src/main.c:2939 #, c-format msgid "warning: Clock skew detected. Your build may be incomplete." msgstr "警告:檢測到時鐘錯誤。您的構建版本可能是不完整的。" -#: src/main.c:3186 +#: src/main.c:3222 #, c-format msgid "the '%s%s' option requires a non-empty string argument" msgstr "「%s%s」選項需要非空字串參數" -#: src/main.c:3267 +#: src/main.c:3315 #, c-format msgid "the '-%c' option requires a positive integer argument" msgstr "「-%c」選項需要正整數參數" -#: src/main.c:3652 +#: src/main.c:3721 #, c-format msgid "%sBuilt for %s\n" msgstr "%s為 %s 編譯\n" -#: src/main.c:3654 +#: src/main.c:3723 #, c-format msgid "%sBuilt for %s (%s)\n" msgstr "%s為 %s (%s) 編譯\n" -#: src/main.c:3665 +#: src/main.c:3734 #, c-format msgid "" "%sLicense GPLv3+: GNU GPL version 3 or later # else /* These platforms don't have but have archives in the same format diff --git a/src/commands.c b/src/commands.c index 9bb4eb6..3ff45ed 100644 --- a/src/commands.c +++ b/src/commands.c @@ -1,5 +1,5 @@ /* Command processing for GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/commands.h b/src/commands.h index 1a71751..97d1c15 100644 --- a/src/commands.h +++ b/src/commands.h @@ -1,5 +1,5 @@ /* Definition of data structures describing shell commands for GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/config.ami b/src/config.ami index 775a4d7..4b70419 100644 --- a/src/config.ami +++ b/src/config.ami @@ -1,5 +1,5 @@ /* config.h -- hand-massaged for Amiga -*-C-*- -Copyright (C) 1995-2022 Free Software Foundation, Inc. +Copyright (C) 1995-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -176,7 +176,7 @@ this program. If not, see . */ /* Define this if the SCCS 'get' command understands the '-G' option. */ /* #undef SCCS_GET_MINUS_G */ -/* Define this to enable job server support in GNU make. */ +/* Define this to enable job server support in GNU Make. */ /* #undef MAKE_JOBSERVER */ /* Define to be the nanoseconds member of struct stat's st_mtim, @@ -329,3 +329,6 @@ this program. If not, see . */ /* Define to `int' if does not define. */ #define ssize_t int + +/* Include customized declarations. */ +#include "../src/mkcustom.h" diff --git a/src/config.h-vms b/src/config.h-vms index 53e6b90..0aeffd6 100644 --- a/src/config.h-vms +++ b/src/config.h-vms @@ -1,6 +1,6 @@ /* config.h-vms. Generated by hand by Klaus Kämpf -*-C-*- -Copyright (C) 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -213,7 +213,7 @@ this program. If not, see . */ /* Define this if the SCCS 'get' command understands the '-G' option. */ /* #undef SCCS_GET_MINUS_G */ -/* Define this to enable job server support in GNU make. */ +/* Define this to enable job server support in GNU Make. */ /* #undef MAKE_JOBSERVER */ /* Define to be the nanoseconds member of struct stat's st_mtim, @@ -428,3 +428,6 @@ this program. If not, see . */ /* Build host information. */ #define MAKE_HOST "VMS" + +/* Include customized declarations. */ +#include "../src/mkcustom.h" diff --git a/src/config.h.W32 b/src/config.h.W32 index 1a03a04..bf23d8d 100644 --- a/src/config.h.W32 +++ b/src/config.h.W32 @@ -1,6 +1,6 @@ /* config.h.W32 -- hand-massaged config.h file for Windows builds -*-C-*- -Copyright (C) 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -344,6 +344,14 @@ this program. If not, see . */ /* Define to 1 if you have the `strtoll' function. */ #define HAVE_STRTOLL 1 +#ifdef __TINYC__ +# ifndef strtoll +# define strtoll _strtoi64 +# endif +# ifndef strtoull +# define strtoull _strtoui64 +# endif +#endif /* Define to 1 if `d_type' is a member of `struct dirent'. */ /* SV 57152: MinGW64 version of dirent doesn't support d_type. */ @@ -449,10 +457,10 @@ char *ttyname (int); /* Build host information. */ #define MAKE_HOST "Windows32" -/* Define to 1 to enable job server support in GNU make. */ +/* Define to 1 to enable job server support in GNU Make. */ #define MAKE_JOBSERVER 1 -/* Define to 1 to enable 'load' support in GNU make. */ +/* Define to 1 to enable 'load' support in GNU Make. */ #define MAKE_LOAD 1 /* Define to 1 to enable symbolic link timestamp checking. */ @@ -621,3 +629,6 @@ char *ttyname (int); #ifdef HAVE_CYGWIN_SHELL #undef BATCH_MODE_ONLY_SHELL #endif + +/* Include customized declarations. */ +#include "../src/mkcustom.h" diff --git a/src/config.h.in b/src/config.h.in index 7085a40..722c01e 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -157,6 +157,9 @@ /* Define to 1 if you have the clock_gettime function. */ #undef HAVE_CLOCK_GETTIME +/* Define to 1 if bool, true and false work as per C2023. */ +#undef HAVE_C_BOOL + /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT @@ -361,6 +364,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SPAWN_H +/* Define to 1 if you have the header file. */ +#undef HAVE_STDBOOL_H + /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H @@ -499,16 +505,16 @@ /* Define to 1 if `vfork' works. */ #undef HAVE_WORKING_VFORK -/* Define to 1 if the system has the type `_Bool'. */ -#undef HAVE__BOOL +/* Default C++ compiler. */ +#undef MAKE_CXX /* Build host information. */ #undef MAKE_HOST -/* Define to 1 to enable job server support in GNU make. */ +/* Define to 1 to enable job server support in GNU Make. */ #undef MAKE_JOBSERVER -/* Define to 1 to enable 'load' support in GNU make. */ +/* Define to 1 to enable 'load' support in GNU Make. */ #undef MAKE_LOAD /* Define to 1 to enable symbolic link timestamp checking. */ @@ -643,11 +649,15 @@ #ifndef __STDC_WANT_IEC_60559_DFP_EXT__ # undef __STDC_WANT_IEC_60559_DFP_EXT__ #endif +/* Enable extensions specified by C23 Annex F. */ +#ifndef __STDC_WANT_IEC_60559_EXT__ +# undef __STDC_WANT_IEC_60559_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. */ +/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ #ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ # undef __STDC_WANT_IEC_60559_TYPES_EXT__ #endif @@ -706,7 +716,7 @@ /* Define to enable the declarations of ISO C 11 types and functions. */ #undef _ISOC11_SOURCE -/* Define for large files, on AIX-style hosts. */ +/* Define to 1 on platforms where this makes off_t a 64-bit type. */ #undef _LARGE_FILES /* The _Noreturn keyword of C11. */ @@ -722,6 +732,11 @@ AIX system header files and several gnulib header files use precisely this syntax with 'extern'. */ # define _Noreturn [[noreturn]] +# elif (defined __clang__ && __clang_major__ < 16 \ + && defined _GL_WORK_AROUND_LLVM_BUG_59792) + /* Compile with -D_GL_WORK_AROUND_LLVM_BUG_59792 to work around + that rare LLVM bug, though you may get many false-alarm warnings. */ +# define _Noreturn # elif ((!defined __cplusplus || defined __clang__) \ && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ || (!defined __STRICT_ANSI__ \ @@ -740,10 +755,10 @@ #endif -/* Number of bits in a timestamp, on hosts where this is settable. */ +/* Number of bits in time_t, on hosts where this is settable. */ #undef _TIME_BITS -/* For 64-bit time_t on 32-bit mingw. */ +/* Define to 1 on platforms where this makes time_t a 64-bit type. */ #undef __MINGW_USE_VC2005_COMPAT /* The _GL_ASYNC_SAFE marker should be attached to functions that are @@ -812,14 +827,10 @@ # define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4) #endif -#ifdef __has_c_attribute -# if ((defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710 \ - && _GL_GNUC_PREREQ (4, 6)) -# pragma GCC diagnostic ignored "-Wpedantic" -# endif -# define _GL_HAS_C_ATTRIBUTE(attr) __has_c_attribute (__##attr##__) -#else -# define _GL_HAS_C_ATTRIBUTE(attr) 0 +/* Disable GCC -Wpedantic if using __has_c_attribute and this is not C23+. */ +#if (defined __has_c_attribute && _GL_GNUC_PREREQ (4, 6) \ + && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710) +# pragma GCC diagnostic ignored "-Wpedantic" #endif @@ -829,29 +840,35 @@ by the Nth argument of the function is the size of the returned memory block. */ /* Applies to: function, pointer to function, function types. */ -#if _GL_HAS_ATTRIBUTE (alloc_size) -# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) -#else -# define _GL_ATTRIBUTE_ALLOC_SIZE(args) +#ifndef _GL_ATTRIBUTE_ALLOC_SIZE +# if _GL_HAS_ATTRIBUTE (alloc_size) +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) +# else +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) +# endif #endif /* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the function and report an error if it cannot do so. */ /* Applies to: function. */ -#if _GL_HAS_ATTRIBUTE (always_inline) -# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) -#else -# define _GL_ATTRIBUTE_ALWAYS_INLINE +#ifndef _GL_ATTRIBUTE_ALWAYS_INLINE +# if _GL_HAS_ATTRIBUTE (always_inline) +# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) +# else +# define _GL_ATTRIBUTE_ALWAYS_INLINE +# endif #endif /* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show in stack traces when debugging. The compiler should omit the function from stack traces. */ /* Applies to: function. */ -#if _GL_HAS_ATTRIBUTE (artificial) -# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) -#else -# define _GL_ATTRIBUTE_ARTIFICIAL +#ifndef _GL_ATTRIBUTE_ARTIFICIAL +# if _GL_HAS_ATTRIBUTE (artificial) +# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) +# else +# define _GL_ATTRIBUTE_ARTIFICIAL +# endif #endif /* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ @@ -859,14 +876,16 @@ /* Avoid __attribute__ ((cold)) on MinGW; see thread starting at . Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */ -#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ -# ifndef __SUNPRO_C -# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +#ifndef _GL_ATTRIBUTE_COLD +# if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif # else -# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# define _GL_ATTRIBUTE_COLD # endif -#else -# define _GL_ATTRIBUTE_COLD #endif /* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate @@ -876,10 +895,12 @@ forever, and does not call longjmp. (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (const) -# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) -#else -# define _GL_ATTRIBUTE_CONST +#ifndef _GL_ATTRIBUTE_CONST +# if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +# else +# define _GL_ATTRIBUTE_CONST +# endif #endif /* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers @@ -888,16 +909,25 @@ _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that can be freed via 'free'; it can be used only after declaring 'free'. */ /* Applies to: functions. Cannot be used on inline functions. */ -#if _GL_GNUC_PREREQ (11, 0) -# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) -#else -# define _GL_ATTRIBUTE_DEALLOC(f, i) +#ifndef _GL_ATTRIBUTE_DEALLOC +# if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +# else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +# endif #endif /* If gnulib's or has already defined this macro, continue to use this earlier definition, since may not have been included yet. */ #ifndef _GL_ATTRIBUTE_DEALLOC_FREE -# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +# if defined __cplusplus && defined __GNUC__ && !defined __clang__ +/* Work around GCC bug */ +# define _GL_ATTRIBUTE_DEALLOC_FREE \ + _GL_ATTRIBUTE_DEALLOC ((void (*) (void *)) free, 1) +# else +# define _GL_ATTRIBUTE_DEALLOC_FREE \ + _GL_ATTRIBUTE_DEALLOC (free, 1) +# endif #endif /* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. @@ -908,12 +938,18 @@ - enumeration, enumeration item, - typedef, in C++ also: namespace, class, template specialization. */ -#if _GL_HAS_C_ATTRIBUTE (deprecated) -# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] -#elif _GL_HAS_ATTRIBUTE (deprecated) -# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GL_ATTRIBUTE_DEPRECATED +#ifndef _GL_ATTRIBUTE_DEPRECATED +# ifdef __has_c_attribute +# if __has_c_attribute (__deprecated__) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +# endif +# endif +# if !defined _GL_ATTRIBUTE_DEPRECATED && _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +# endif +# ifndef _GL_ATTRIBUTE_DEPRECATED +# define _GL_ATTRIBUTE_DEPRECATED +# endif #endif /* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and @@ -921,24 +957,28 @@ _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and the function call is not optimized away. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (error) -# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) -# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) -#elif _GL_HAS_ATTRIBUTE (diagnose_if) -# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) -# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) -#else -# define _GL_ATTRIBUTE_ERROR(msg) -# define _GL_ATTRIBUTE_WARNING(msg) +#if !(defined _GL_ATTRIBUTE_ERROR && defined _GL_ATTRIBUTE_WARNING) +# if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +# elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +# else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +# endif #endif /* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain visible to debuggers etc., even with '-fwhole-program'. */ /* Applies to: functions, variables. */ -#if _GL_HAS_ATTRIBUTE (externally_visible) -# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) -#else -# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#ifndef _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +# if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +# else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +# endif #endif /* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if @@ -946,12 +986,18 @@ 'default' label. The compiler should not warn in this case. */ /* Applies to: Empty statement (;), inside a 'switch' statement. */ /* Always expands to something. */ -#if _GL_HAS_C_ATTRIBUTE (fallthrough) -# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] -#elif _GL_HAS_ATTRIBUTE (fallthrough) -# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) -#else -# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#ifndef _GL_ATTRIBUTE_FALLTHROUGH +# ifdef __has_c_attribute +# if __has_c_attribute (__fallthrough__) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +# endif +# endif +# if !defined _GL_ATTRIBUTE_FALLTHROUGH && _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +# endif +# ifndef _GL_ATTRIBUTE_FALLTHROUGH +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +# endif #endif /* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) @@ -965,10 +1011,12 @@ If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK are suitable for the format string. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (format) -# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) -#else -# define _GL_ATTRIBUTE_FORMAT(spec) +#ifndef _GL_ATTRIBUTE_FORMAT +# if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +# else +# define _GL_ATTRIBUTE_FORMAT(spec) +# endif #endif /* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other @@ -976,19 +1024,23 @@ exception handling. This declaration lets the compiler optimize that unit more aggressively. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (leaf) -# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) -#else -# define _GL_ATTRIBUTE_LEAF +#ifndef _GL_ATTRIBUTE_LEAF +# if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +# else +# define _GL_ATTRIBUTE_LEAF +# endif #endif /* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly allocated memory. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (malloc) -# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) -#else -# define _GL_ATTRIBUTE_MALLOC +#ifndef _GL_ATTRIBUTE_MALLOC +# if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +# else +# define _GL_ATTRIBUTE_MALLOC +# endif #endif /* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the @@ -996,10 +1048,12 @@ strict aliasing optimization. */ /* Applies to: types. */ /* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ -#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C -# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) -#else -# define _GL_ATTRIBUTE_MAY_ALIAS +#ifndef _GL_ATTRIBUTE_MAY_ALIAS +# if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +# else +# define _GL_ATTRIBUTE_MAY_ALIAS +# endif #endif /* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if @@ -1011,13 +1065,24 @@ - enumeration, enumeration item, - typedef, in C++ also: class. */ -/* In C++ and C2x, this is spelled [[__maybe_unused__]]. +/* In C++ and C23, this is spelled [[__maybe_unused__]]. GCC's syntax is __attribute__ ((__unused__)). - clang supports both syntaxes. */ -#if _GL_HAS_C_ATTRIBUTE (maybe_unused) -# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] -#else -# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED + clang supports both syntaxes. Except that with clang ≥ 6, < 10, in C++ mode, + __has_c_attribute (__maybe_unused__) yields true but the use of + [[__maybe_unused__]] nevertheless produces a warning. */ +#ifndef _GL_ATTRIBUTE_MAYBE_UNUSED +# if defined __clang__ && defined __cplusplus +# if !defined __apple_build_version__ && __clang_major__ >= 10 +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +# endif +# elif defined __has_c_attribute +# if __has_c_attribute (__maybe_unused__) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +# endif +# endif +# ifndef _GL_ATTRIBUTE_MAYBE_UNUSED +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +# endif #endif /* Alternative spelling of this macro, for convenience and for compatibility with glibc/include/libc-symbols.h. */ @@ -1029,21 +1094,38 @@ discard the return value. The compiler may warn if the caller does not use the return value, unless the caller uses something like ignore_value. */ /* Applies to: function, enumeration, class. */ -#if _GL_HAS_C_ATTRIBUTE (nodiscard) -# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] -#elif _GL_HAS_ATTRIBUTE (warn_unused_result) -# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) -#else -# define _GL_ATTRIBUTE_NODISCARD +#ifndef _GL_ATTRIBUTE_NODISCARD +# if defined __clang__ && defined __cplusplus + /* With clang up to 15.0.6 (at least), in C++ mode, [[__nodiscard__]] produces + a warning. + The 1000 below means a yet unknown threshold. When clang++ version X + starts supporting [[__nodiscard__]] without warning about it, you can + replace the 1000 with X. */ +# if __clang_major__ >= 1000 +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +# endif +# elif defined __has_c_attribute +# if __has_c_attribute (__nodiscard__) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +# endif +# endif +# if !defined _GL_ATTRIBUTE_NODISCARD && _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +# endif +# ifndef _GL_ATTRIBUTE_NODISCARD +# define _GL_ATTRIBUTE_NODISCARD +# endif #endif /* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the function. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (noinline) -# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) -#else -# define _GL_ATTRIBUTE_NOINLINE +#ifndef _GL_ATTRIBUTE_NOINLINE +# if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +# else +# define _GL_ATTRIBUTE_NOINLINE +# endif #endif /* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... @@ -1051,20 +1133,24 @@ _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be null. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (nonnull) -# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) -#else -# define _GL_ATTRIBUTE_NONNULL(args) +#ifndef _GL_ATTRIBUTE_NONNULL +# if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +# else +# define _GL_ATTRIBUTE_NONNULL(args) +# endif #endif /* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is not meant to be NUL-terminated. */ /* Applies to: struct/union members and variables that are arrays of element type '[[un]signed] char'. */ -#if _GL_HAS_ATTRIBUTE (nonstring) -# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) -#else -# define _GL_ATTRIBUTE_NONSTRING +#ifndef _GL_ATTRIBUTE_NONSTRING +# if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +# else +# define _GL_ATTRIBUTE_NONSTRING +# endif #endif /* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ @@ -1072,10 +1158,12 @@ /* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus -# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) -#else -# define _GL_ATTRIBUTE_NOTHROW +#ifndef _GL_ATTRIBUTE_NOTHROW +# if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +# else +# define _GL_ATTRIBUTE_NOTHROW +# endif #endif /* _GL_ATTRIBUTE_PACKED declares: @@ -1084,10 +1172,12 @@ minimizing the memory required. */ /* Applies to: struct members, struct, union, in C++ also: class. */ -#if _GL_HAS_ATTRIBUTE (packed) -# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) -#else -# define _GL_ATTRIBUTE_PACKED +#ifndef _GL_ATTRIBUTE_PACKED +# if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +# else +# define _GL_ATTRIBUTE_PACKED +# endif #endif /* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate @@ -1097,19 +1187,23 @@ observable state, and always returns exactly once. (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (pure) -# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) -#else -# define _GL_ATTRIBUTE_PURE +#ifndef _GL_ATTRIBUTE_PURE +# if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define _GL_ATTRIBUTE_PURE +# endif #endif /* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is a non-NULL pointer. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (returns_nonnull) -# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) -#else -# define _GL_ATTRIBUTE_RETURNS_NONNULL +#ifndef _GL_ATTRIBUTE_RETURNS_NONNULL +# if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +# else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +# endif #endif /* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a @@ -1117,17 +1211,21 @@ _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (sentinel) -# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) -#else -# define _GL_ATTRIBUTE_SENTINEL(pos) +#ifndef _GL_ATTRIBUTE_SENTINEL +# if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +# else +# define _GL_ATTRIBUTE_SENTINEL(pos) +# endif #endif /* A helper macro. Don't use it directly. */ -#if _GL_HAS_ATTRIBUTE (unused) -# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) -#else -# define _GL_ATTRIBUTE_UNUSED +#ifndef _GL_ATTRIBUTE_UNUSED +# if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define _GL_ATTRIBUTE_UNUSED +# endif #endif @@ -1137,10 +1235,12 @@ /* Applies to: label (both in C and C++). */ /* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;' syntax. But clang does. */ -#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ -# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED -#else -# define _GL_UNUSED_LABEL +#ifndef _GL_UNUSED_LABEL +# if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +# else +# define _GL_UNUSED_LABEL +# endif #endif @@ -1208,3 +1308,23 @@ /* Define as `fork' if `vfork' does not work. */ #undef vfork + +#ifndef HAVE_C_BOOL +# if !defined __cplusplus && !defined __bool_true_false_are_defined +# if HAVE_STDBOOL_H +# include +# else +# if defined __SUNPRO_C +# error " is not usable with this configuration. To make it usable, add -D_STDC_C99= to $CC." +# else +# error " does not exist on this platform. Use gnulib module 'stdbool-c99' instead of gnulib module 'stdbool'." +# endif +# endif +# endif +# if !true +# define true (!false) +# endif +#endif + +/* Include customized declarations. */ +#include "../src/mkcustom.h" diff --git a/src/configh.dos b/src/configh.dos index 5e20616..f49462a 100644 --- a/src/configh.dos +++ b/src/configh.dos @@ -1,6 +1,6 @@ /* configh.dos -- hand-massaged config.h file for MS-DOS builds -*-C-*- -Copyright (C) 1994-2022 Free Software Foundation, Inc. +Copyright (C) 1994-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -109,3 +109,6 @@ this program. If not, see . */ /* Define to 'unsigned long' or 'unsigned long long' if doesn't define. */ #define uintmax_t unsigned long long + +/* Include customized declarations. */ +#include "../src/mkcustom.h" diff --git a/src/debug.h b/src/debug.h index 63cc4b5..2106891 100644 --- a/src/debug.h +++ b/src/debug.h @@ -1,5 +1,5 @@ /* Debugging macros and interface. -Copyright (C) 1999-2022 Free Software Foundation, Inc. +Copyright (C) 1999-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/default.c b/src/default.c index b4cfdf7..e396269 100644 --- a/src/default.c +++ b/src/default.c @@ -1,5 +1,5 @@ /* Data base of default implicit rules for GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -527,18 +527,24 @@ static const char *default_variables[] = "AS", "as", #ifdef GCC_IS_NATIVE "CC", "gcc", -# ifdef __MSDOS__ - "CXX", "gpp", /* g++ is an invalid name on MSDOS */ -# else - "CXX", "gcc", -# endif /* __MSDOS__ */ "OBJC", "gcc", #else "CC", "cc", - "CXX", "g++", "OBJC", "cc", #endif - +#ifdef MAKE_CXX + "CXX", MAKE_CXX, +#else +# ifdef GCC_IS_NATIVE +# ifdef __MSDOS__ + "CXX", "gpp", /* g++ is an invalid name on MSDOS */ +# else + "CXX", "gcc", +# endif /* __MSDOS__ */ +# else + "CXX", "g++", +# endif +#endif /* This expands to $(CO) $(COFLAGS) $< $@ if $@ does not exist, and to the empty string if $@ does exist. */ "CHECKOUT,v", "+$(if $(wildcard $@),,$(CO) $(COFLAGS) $< $@)", @@ -701,7 +707,7 @@ set_default_suffixes (void) installed after. */ void -install_default_suffix_rules (void) +install_default_suffix_rules () { const char **s; @@ -711,14 +717,16 @@ install_default_suffix_rules (void) for (s = default_suffix_rules; *s != 0; s += 2) { struct file *f = enter_file (strcache_add (s[0])); - /* This function should run before any makefile is parsed. */ - assert (f->cmds == 0); - f->cmds = xmalloc (sizeof (struct commands)); - f->cmds->fileinfo.filenm = 0; - f->cmds->commands = xstrdup (s[1]); - f->cmds->command_lines = 0; - f->cmds->recipe_prefix = RECIPEPREFIX_DEFAULT; - f->builtin = 1; + /* Install the default rule only if there is no user defined rule. */ + if (!f->cmds) + { + f->cmds = xmalloc (sizeof (struct commands)); + f->cmds->fileinfo.filenm = NULL; + f->cmds->commands = xstrdup (s[1]); + f->cmds->command_lines = NULL; + f->cmds->recipe_prefix = RECIPEPREFIX_DEFAULT; + f->builtin = 1; + } } } diff --git a/src/dep.h b/src/dep.h index 89c8639..7157d45 100644 --- a/src/dep.h +++ b/src/dep.h @@ -1,5 +1,5 @@ /* Definitions of dependency data structures for GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/dir.c b/src/dir.c index b47e94f..3e94b98 100644 --- a/src/dir.c +++ b/src/dir.c @@ -1,5 +1,5 @@ /* Directory hashing for GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -76,12 +76,12 @@ dosify (const char *filename) char *df; int i; - if (filename == 0 || _USE_LFN) + if (filename == NULL || _USE_LFN) return filename; /* FIXME: what about filenames which violate 8+3 constraints, like "config.h.in", or ".emacs"? */ - if (strpbrk (filename, "\"*+,;<=>?[\\]|") != 0) + if (strpbrk (filename, "\"*+,;<=>?[\\]|") != NULL) return filename; df = dos_filename; @@ -105,7 +105,7 @@ dosify (const char *filename) ++filename; if (*filename == '.') return filename; - *df = 0; + *df = '\0'; return dos_filename; } #endif /* __MSDOS__ */ @@ -125,8 +125,8 @@ downcase (const char *filename) static PATH_VAR (new_filename); char *df; - if (filename == 0) - return 0; + if (filename == NULL) + return NULL; df = new_filename; while (*filename != '\0') @@ -135,7 +135,7 @@ downcase (const char *filename) ++filename; } - *df = 0; + *df = '\0'; return new_filename; } @@ -203,14 +203,14 @@ vmsstat_dir (const char *name, struct stat *st) DIR *dir; dir = opendir (name); - if (dir == 0) + if (dir == NULL) return -1; closedir (dir); s = strchr (name, ':'); /* find device */ if (s) { /* to keep the compiler happy we said "const char *name", now we cheat */ - *s++ = 0; + *s++ = '\0'; st->st_dev = (char *)vms_hash (name); h = vms_hash (s); *(s-1) = ':'; @@ -281,9 +281,10 @@ clear_directory_contents (struct directory_contents *dc) { --open_directories; closedir (dc->dirstream); - dc->dirstream = 0; + dc->dirstream = NULL; } - hash_free (&dc->dirfiles, 1); + if (dc->dirfiles.ht_vec != NULL) + hash_free (&dc->dirfiles, 1); return NULL; } @@ -456,7 +457,7 @@ dirfile_hash_cmp (const void *xv, const void *yv) #define DIRFILE_BUCKETS 107 #endif -static int dir_contents_file_exists_p (struct directory_contents *dir, +static int dir_contents_file_exists_p (struct directory *dir, const char *filename); static struct directory *find_directory (const char *name); @@ -610,10 +611,9 @@ find_directory (const char *name) dc->counter = command_count; ENULLLOOP (dc->dirstream, opendir (name)); - if (dc->dirstream == 0) - /* Couldn't open the directory. Mark this by setting the - 'files' member to a nil pointer. */ - dc->dirfiles.ht_vec = 0; + if (dc->dirstream == NULL) + /* Couldn't open the directory: mark this by setting files to NULL. */ + dc->dirfiles.ht_vec = NULL; else { hash_init (&dc->dirfiles, DIRFILE_BUCKETS, @@ -623,7 +623,7 @@ find_directory (const char *name) if (open_directories == MAX_OPEN_DIRECTORIES) /* We have too many directories open already. Read the entire directory and then close it. */ - dir_contents_file_exists_p (dc, 0); + dir_contents_file_exists_p (dir, NULL); } } @@ -634,17 +634,18 @@ find_directory (const char *name) FILENAME must contain no slashes. */ static int -dir_contents_file_exists_p (struct directory_contents *dir, +dir_contents_file_exists_p (struct directory *dir, const char *filename) { struct dirfile *df; struct dirent *d; + struct directory_contents *dc = dir->contents; #ifdef WINDOWS32 struct stat st; int rehash = 0; #endif - if (dir == 0 || dir->dirfiles.ht_vec == 0) + if (dc == NULL || dc->dirfiles.ht_vec == NULL) /* The directory could not be stat'd or opened. */ return 0; @@ -657,10 +658,16 @@ dir_contents_file_exists_p (struct directory_contents *dir, #endif #ifdef __EMX__ - if (filename != 0) - _fnlwr (filename); /* lower case for FAT drives */ + if (filename != NULL) + { + size_t len = strlen (filename); + char *fname = alloca (len + 1); + memcpy (fname, filename, len + 1); + _fnlwr (fname); /* lower case for FAT drives */ + filename = fname; + } #endif - if (filename != 0) + if (filename != NULL) { struct dirfile dirfile_key; @@ -671,7 +678,7 @@ dir_contents_file_exists_p (struct directory_contents *dir, } dirfile_key.name = filename; dirfile_key.length = strlen (filename); - df = hash_find_item (&dir->dirfiles, &dirfile_key); + df = hash_find_item (&dc->dirfiles, &dirfile_key); if (df) return !df->impossible; } @@ -679,7 +686,7 @@ dir_contents_file_exists_p (struct directory_contents *dir, /* The file was not found in the hashed list. Try to read the directory further. */ - if (dir->dirstream == 0) + if (dc->dirstream == NULL) { #ifdef WINDOWS32 /* @@ -687,17 +694,17 @@ dir_contents_file_exists_p (struct directory_contents *dir, * filesystems force a rehash always as mtime does not change * on directories (ugh!). */ - if (dir->path_key) + if (dc->path_key) { - if ((dir->fs_flags & FS_FAT) != 0) + if ((dc->fs_flags & FS_FAT) != 0) { - dir->mtime = time ((time_t *) 0); + dc->mtime = time (NULL); rehash = 1; } - else if (stat (dir->path_key, &st) == 0 && st.st_mtime > dir->mtime) + else if (stat (dc->path_key, &st) == 0 && st.st_mtime > dc->mtime) { /* reset date stamp to show most recent re-process. */ - dir->mtime = st.st_mtime; + dc->mtime = st.st_mtime; rehash = 1; } @@ -706,8 +713,8 @@ dir_contents_file_exists_p (struct directory_contents *dir, return 0; /* make sure directory can still be opened; if not return. */ - dir->dirstream = opendir (dir->path_key); - if (!dir->dirstream) + dc->dirstream = opendir (dc->path_key); + if (!dc->dirstream) return 0; } else @@ -723,11 +730,11 @@ dir_contents_file_exists_p (struct directory_contents *dir, struct dirfile dirfile_key; struct dirfile **dirfile_slot; - ENULLLOOP (d, readdir (dir->dirstream)); - if (d == 0) + ENULLLOOP (d, readdir (dc->dirstream)); + if (d == NULL) { if (errno) - pfatal_with_name ("INTERNAL: readdir"); + OSS (fatal, NILF, "readdir %s: %s", dir->name, strerror (errno)); break; } @@ -747,7 +754,7 @@ dir_contents_file_exists_p (struct directory_contents *dir, len = NAMLEN (d); dirfile_key.name = d->d_name; dirfile_key.length = len; - dirfile_slot = (struct dirfile **) hash_find_slot (&dir->dirfiles, &dirfile_key); + dirfile_slot = (struct dirfile **) hash_find_slot (&dc->dirfiles, &dirfile_key); #ifdef WINDOWS32 /* * If re-reading a directory, don't cache files that have @@ -768,21 +775,22 @@ dir_contents_file_exists_p (struct directory_contents *dir, #endif df->length = len; df->impossible = 0; - hash_insert_at (&dir->dirfiles, df, dirfile_slot); + hash_insert_at (&dc->dirfiles, df, dirfile_slot); } /* Check if the name matches the one we're searching for. */ - if (filename != 0 && patheq (d->d_name, filename)) + if (filename != NULL && patheq (d->d_name, filename)) return 1; } /* If the directory has been completely read in, close the stream and reset the pointer to nil. */ - if (d == 0) + if (d == NULL) { --open_directories; - closedir (dir->dirstream); - dir->dirstream = 0; + closedir (dc->dirstream); + dc->dirstream = NULL; } + return 0; } @@ -794,15 +802,10 @@ int dir_file_exists_p (const char *dirname, const char *filename) { #ifdef VMS - if ((filename != NULL) && (dirname != NULL)) - { - int want_vmsify; - want_vmsify = (strpbrk (dirname, ":<[") != NULL); - if (want_vmsify) - filename = vmsify (filename, 0); - } + if (filename && dirname && strpbrk (dirname, ":<[") != NULL) + filename = vmsify (filename, 0); #endif - return dir_contents_file_exists_p (find_directory (dirname)->contents, + return dir_contents_file_exists_p (find_directory (dirname), filename); } @@ -822,17 +825,17 @@ file_exists_p (const char *name) dirend = strrchr (name, '/'); #ifdef VMS - if (dirend == 0) + if (dirend == NULL) { dirend = strrchr (name, ']'); dirend == NULL ? dirend : dirend++; } - if (dirend == 0) + if (dirend == NULL) { dirend = strrchr (name, '>'); dirend == NULL ? dirend : dirend++; } - if (dirend == 0) + if (dirend == NULL) { dirend = strrchr (name, ':'); dirend == NULL ? dirend : dirend++; @@ -849,7 +852,7 @@ file_exists_p (const char *name) dirend = name + 1; } #endif /* HAVE_DOS_PATHS */ - if (dirend == 0) + if (dirend == NULL) #ifndef _AMIGA return dir_file_exists_p (".", name); #else /* !AMIGA */ @@ -923,7 +926,7 @@ file_impossible (const char *filename) dirend = p + 1; } #endif /* HAVE_DOS_PATHS */ - if (dirend == 0) + if (dirend == NULL) #ifdef _AMIGA dir = find_directory (""); #else /* !AMIGA */ @@ -960,16 +963,14 @@ file_impossible (const char *filename) #endif } - if (dir->contents == 0) + if (dir->contents == NULL) /* The directory could not be stat'd. We allocate a contents structure for it, but leave it out of the contents hash table. */ dir->contents = xcalloc (sizeof (struct directory_contents)); - if (dir->contents->dirfiles.ht_vec == 0) - { - hash_init (&dir->contents->dirfiles, DIRFILE_BUCKETS, - dirfile_hash_1, dirfile_hash_2, dirfile_hash_cmp); - } + if (dir->contents->dirfiles.ht_vec == NULL) + hash_init (&dir->contents->dirfiles, DIRFILE_BUCKETS, + dirfile_hash_1, dirfile_hash_2, dirfile_hash_cmp); /* Make a new entry and put it in the table. */ @@ -1021,7 +1022,7 @@ file_impossible_p (const char *filename) dirend = filename + 1; } #endif /* HAVE_DOS_PATHS */ - if (dirend == 0) + if (dirend == NULL) #ifdef _AMIGA dir = find_directory ("")->contents; #else /* !AMIGA */ @@ -1058,7 +1059,7 @@ file_impossible_p (const char *filename) #endif } - if (dir == 0 || dir->dirfiles.ht_vec == 0) + if (dir == NULL || dir->dirfiles.ht_vec == NULL) /* There are no files entered for this directory. */ return 0; @@ -1115,9 +1116,9 @@ print_dir_data_base (void) struct directory *dir = *dir_slot; if (! HASH_VACANT (dir)) { - if (dir->contents == 0) + if (dir->contents == NULL) printf (_("# %s: could not be stat'd.\n"), dir->name); - else if (dir->contents->dirfiles.ht_vec == 0) + else if (dir->contents->dirfiles.ht_vec == NULL) #ifdef WINDOWS32 printf (_("# %s (key %s, mtime %s): could not be opened.\n"), dir->name, dir->contents->path_key, @@ -1174,7 +1175,7 @@ print_dir_data_base (void) else printf ("%u", im); fputs (_(" impossibilities"), stdout); - if (dir->contents->dirstream == 0) + if (dir->contents->dirstream == NULL) puts ("."); else puts (_(" so far.")); @@ -1208,34 +1209,34 @@ struct dirstream }; /* Forward declarations. */ -static __ptr_t open_dirstream (const char *); -static struct dirent *read_dirstream (__ptr_t); +static void *open_dirstream (const char *); +static struct dirent *read_dirstream (void *); -static __ptr_t +static void * open_dirstream (const char *directory) { struct dirstream *new; struct directory *dir = find_directory (directory); - if (dir->contents == 0 || dir->contents->dirfiles.ht_vec == 0) + if (dir->contents == NULL || dir->contents->dirfiles.ht_vec == NULL) /* DIR->contents is nil if the directory could not be stat'd. DIR->contents->dirfiles is nil if it could not be opened. */ - return 0; + return NULL; /* Read all the contents of the directory now. There is no benefit in being lazy, since glob will want to see every file anyway. */ - dir_contents_file_exists_p (dir->contents, 0); + dir_contents_file_exists_p (dir, NULL); new = xmalloc (sizeof (struct dirstream)); new->contents = dir->contents; new->dirfile_slot = (struct dirfile **) new->contents->dirfiles.ht_vec; - return (__ptr_t) new; + return new; } static struct dirent * -read_dirstream (__ptr_t stream) +read_dirstream (void *stream) { static char *buf; static size_t bufsz; @@ -1279,7 +1280,7 @@ read_dirstream (__ptr_t stream) } } - return 0; + return NULL; } /* On 64 bit ReliantUNIX (5.44 and above) in LFS mode, stat() is actually a diff --git a/src/expand.c b/src/expand.c index 2509009..c7233e8 100644 --- a/src/expand.c +++ b/src/expand.c @@ -1,5 +1,5 @@ /* Variable expansion functions for GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/file.c b/src/file.c index 226af61..d07af4e 100644 --- a/src/file.c +++ b/src/file.c @@ -1,5 +1,5 @@ /* Target file management for GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -63,9 +63,6 @@ static struct hash_table files; /* Whether or not .SECONDARY with no prerequisites was given. */ static int all_secondary = 0; -/* Whether or not .NOTINTERMEDIATE with no prerequisites was given. */ -static int no_intermediates = 0; - /* Access the hash table of all file records. lookup_file given a name, return the struct file * for that name, or nil if there is none. @@ -368,7 +365,7 @@ remove_intermediates (int sig) int doneany = 0; /* If there's no way we will ever remove anything anyway, punt early. */ - if (question_flag || touch_flag || all_secondary) + if (question_flag || touch_flag || all_secondary || no_intermediates) return; if (sig && just_print_flag) @@ -731,7 +728,7 @@ snap_file (const void *item, void *arg) /* If .NOTINTERMEDIATE is set with no deps, mark all targets as notintermediate, unless the target is a prereq of .INTERMEDIATE. */ if (no_intermediates && !f->intermediate && !f->secondary) - f->notintermediate = 1; + f->notintermediate = 1; /* If .EXTRA_PREREQS is set, add them as ignored by automatic variables. */ if (f->variables) @@ -810,7 +807,7 @@ snap_deps (void) else no_intermediates = 1; - /* The same file connot be both .INTERMEDIATE and .NOTINTERMEDIATE. + /* The same file cannot be both .INTERMEDIATE and .NOTINTERMEDIATE. However, it is possible for a file to be .INTERMEDIATE and also match a .NOTINTERMEDIATE pattern. In that case, the intermediate file has priority over the notintermediate pattern. This priority is enforced by diff --git a/src/filedef.h b/src/filedef.h index ae2f26d..94abcff 100644 --- a/src/filedef.h +++ b/src/filedef.h @@ -1,5 +1,5 @@ /* Definition of target file data structures for GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/function.c b/src/function.c index f0ef343..40b82e3 100644 --- a/src/function.c +++ b/src/function.c @@ -1,5 +1,5 @@ /* Builtin function expansion for GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -2327,6 +2327,10 @@ func_file (char *o, char **argv, const char *funcname UNUSED) if (fn[0] == '>') { + size_t len; + const char *end; + const char *start; + char *nm; FILE *fp; const char *mode = "w"; @@ -2337,14 +2341,21 @@ func_file (char *o, char **argv, const char *funcname UNUSED) mode = "a"; ++fn; } - NEXT_TOKEN (fn); - if (fn[0] == '\0') + start = next_token (fn); + + if (start[0] == '\0') O (fatal, *expanding_var, _("file: missing filename")); - ENULLLOOP (fp, fopen (fn, mode)); + end = end_of_token (start); + len = end - start; + nm = alloca (len + 1); + memcpy (nm, start, len); + nm[len] = '\0'; + + ENULLLOOP (fp, fopen (nm, mode)); if (fp == NULL) - OSS (fatal, reading_file, _("open: %s: %s"), fn, strerror (errno)); + OSS (fatal, reading_file, _("open: %s: %s"), nm, strerror (errno)); /* We've changed the contents of a directory, possibly. Another option would be to look up the directory we changed and reset @@ -2357,30 +2368,44 @@ func_file (char *o, char **argv, const char *funcname UNUSED) int nl = l == 0 || argv[1][l-1] != '\n'; if (fputs (argv[1], fp) == EOF || (nl && fputc ('\n', fp) == EOF)) - OSS (fatal, reading_file, _("write: %s: %s"), fn, strerror (errno)); + OSS (fatal, reading_file, _("write: %s: %s"), nm, strerror (errno)); } if (fclose (fp)) - OSS (fatal, reading_file, _("close: %s: %s"), fn, strerror (errno)); + OSS (fatal, reading_file, _("close: %s: %s"), nm, strerror (errno)); } else if (fn[0] == '<') { size_t n = 0; + size_t len; + const char *end; + const char *start; + char *nm; FILE *fp; - ++fn; - NEXT_TOKEN (fn); - if (fn[0] == '\0') + start = next_token (fn + 1); + + if (start[0] == '\0') O (fatal, *expanding_var, _("file: missing filename")); if (argv[1]) O (fatal, *expanding_var, _("file: too many arguments")); - ENULLLOOP (fp, fopen (fn, "r")); + end = end_of_token (start); + len = end - start; + nm = alloca (len + 1); + memcpy (nm, start, len); + nm[len] = '\0'; + + ENULLLOOP (fp, fopen (nm, "r")); if (fp == NULL) { if (errno == ENOENT) - return o; - OSS (fatal, reading_file, _("open: %s: %s"), fn, strerror (errno)); + { + DB (DB_VERBOSE, (_("file: Failed to open '%s': %s\n"), + nm, strerror (errno))); + return o; + } + OSS (fatal, reading_file, _("open: %s: %s"), nm, strerror (errno)); } while (1) @@ -2394,12 +2419,12 @@ func_file (char *o, char **argv, const char *funcname UNUSED) } if (ferror (fp)) if (errno != EINTR) - OSS (fatal, reading_file, _("read: %s: %s"), fn, strerror (errno)); + OSS (fatal, reading_file, _("read: %s: %s"), nm, strerror (errno)); if (feof (fp)) break; } if (fclose (fp)) - OSS (fatal, reading_file, _("close: %s: %s"), fn, strerror (errno)); + OSS (fatal, reading_file, _("close: %s: %s"), nm, strerror (errno)); /* Remove trailing newline. */ if (n && o[-1] == '\n') @@ -2801,7 +2826,7 @@ define_new_function (const floc *flocp, const char *name, _("Invalid maximum argument count (%u) for function %s"), max, name); ent = xmalloc (sizeof (struct function_table_entry)); - ent->name = name; + ent->name = strcache_add (name); ent->len = (unsigned char) len; ent->minimum_args = (unsigned char) min; ent->maximum_args = (unsigned char) max; diff --git a/src/getopt.c b/src/getopt.c index 9f31a70..7a792de 100644 --- a/src/getopt.c +++ b/src/getopt.c @@ -3,7 +3,7 @@ NOTE: getopt is now part of the C library, so if you don't know what "Keep this file name-space clean" means, talk to drepper@gnu.org before changing it! -Copyright (C) 1987-2022 Free Software Foundation, Inc. +Copyright (C) 1987-2023 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@gnu.org. @@ -436,6 +436,10 @@ _getopt_initialize (int argc, char *const *argv, const char *optstring) nonoption_flags_len = 0; #endif + /* Make the compiler happy. */ + (void)argc; + (void)argv; + return optstring; } @@ -677,17 +681,18 @@ _getopt_internal (int argc, char *const *argv, const char *optstring, else { if (opterr) - if (argv[optind - 1][1] == '-') - /* --option */ - fprintf (stderr, - _("%s: option '--%s' doesn't allow an argument\n"), - argv[0], pfound->name); - else - /* +option or -option */ - fprintf (stderr, - _("%s: option '%c%s' doesn't allow an argument\n"), - argv[0], argv[optind - 1][0], pfound->name); - + { + if (argv[optind - 1][1] == '-') + /* --option */ + fprintf (stderr, + _("%s: option '--%s' doesn't allow an argument\n"), + argv[0], pfound->name); + else + /* +option or -option */ + fprintf (stderr, + _("%s: option '%c%s' doesn't allow an argument\n"), + argv[0], argv[optind - 1][0], pfound->name); + } nextchar += strlen (nextchar); optopt = pfound->val; diff --git a/src/getopt.h b/src/getopt.h index f96172d..df18cee 100644 --- a/src/getopt.h +++ b/src/getopt.h @@ -1,5 +1,5 @@ /* Declarations for getopt. -Copyright (C) 1989-2022 Free Software Foundation, Inc. +Copyright (C) 1989-2023 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@gnu.org. diff --git a/src/getopt1.c b/src/getopt1.c index 481a358..86e4d6a 100644 --- a/src/getopt1.c +++ b/src/getopt1.c @@ -1,5 +1,5 @@ /* getopt_long and getopt_long_only entry points for GNU getopt. -Copyright (C) 1987-1994, 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1987-1994, 1996-2023 Free Software Foundation, Inc. NOTE: The canonical source of this file is maintained with the GNU C Library. Bugs can be reported to bug-glibc@gnu.org. diff --git a/src/gettext.h b/src/gettext.h index 9498fad..949d0a1 100644 --- a/src/gettext.h +++ b/src/gettext.h @@ -1,5 +1,5 @@ /* Convenience header for conditional use of GNU . -Copyright (C) 1995-2022 Free Software Foundation, Inc. +Copyright (C) 1995-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/gmk-default.scm b/src/gmk-default.scm index 033a32e..9088511 100644 --- a/src/gmk-default.scm +++ b/src/gmk-default.scm @@ -1,5 +1,5 @@ -;; Contents of the (gnu make) Guile module -;; Copyright (C) 2011-2022 Free Software Foundation, Inc. +;; Contents of the (GNU Make) Guile module +;; Copyright (C) 2011-2023 Free Software Foundation, Inc. ;; This file is part of GNU Make. ;; ;; GNU Make is free software; you can redistribute it and/or modify it under @@ -17,7 +17,7 @@ (define (to-string-maybe x) (cond - ;; In GNU make, "false" is the empty string + ;; In GNU Make, "false" is the empty string ((or (not x) (unspecified? x) (variable? x) @@ -45,7 +45,7 @@ (walk x) (string-join (reverse! acc)))) -;; Return the value of the GNU make variable V +;; Return the value of the GNU Make variable V (define (gmk-var v) (gmk-expand (format #f "$(~a)" (obj-to-str v)))) diff --git a/src/gnumake.h b/src/gnumake.h index 4e796e5..b437db7 100644 --- a/src/gnumake.h +++ b/src/gnumake.h @@ -1,7 +1,7 @@ /* External interfaces usable by dynamic objects loaded into GNU Make. --THIS API IS A "TECHNOLOGY PREVIEW" ONLY. IT IS NOT A STABLE INTERFACE-- -Copyright (C) 2013-2022 Free Software Foundation, Inc. +Copyright (C) 2013-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -41,23 +41,23 @@ typedef char *(*gmk_func_ptr)(const char *nm, unsigned int argc, char **argv); /* Free memory returned by the gmk_expand() function. */ GMK_EXPORT void gmk_free (char *str); -/* Allocate memory in GNU make's context. */ +/* Allocate memory in GNU Make's context. */ GMK_EXPORT char *gmk_alloc (unsigned int len); /* Run $(eval ...) on the provided string BUFFER. */ GMK_EXPORT void gmk_eval (const char *buffer, const gmk_floc *floc); -/* Run GNU make expansion on the provided string STR. +/* Run GNU Make expansion on the provided string STR. Returns an allocated buffer that the caller must free with gmk_free(). */ GMK_EXPORT char *gmk_expand (const char *str); -/* Register a new GNU make function NAME (maximum of 255 chars long). +/* Register a new GNU Make function NAME (maximum of 255 chars long). When the function is expanded in the makefile, FUNC will be invoked with the appropriate arguments. The return value of FUNC must be either NULL, in which case it expands to the empty string, or a pointer to the result of the expansion in a string - created by gmk_alloc(). GNU make will free the memory when it's done. + created by gmk_alloc(). GNU Make will free the memory when it's done. MIN_ARGS is the minimum number of arguments the function requires. MAX_ARGS is the maximum number of arguments (or 0 if there's no maximum). diff --git a/src/guile.c b/src/guile.c index 32f6317..c352193 100644 --- a/src/guile.c +++ b/src/guile.c @@ -1,5 +1,5 @@ /* GNU Guile interface for GNU Make. -Copyright (C) 2011-2022 Free Software Foundation, Inc. +Copyright (C) 2011-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -47,7 +47,7 @@ cvt_scm_to_str (SCM obj) return scm_to_locale_string (scm_call_1 (obj_to_str, obj)); } -/* Perform the GNU make expansion function. */ +/* Perform the GNU Make expansion function. */ static SCM guile_expand_wrapper (SCM obj) { @@ -65,7 +65,7 @@ guile_expand_wrapper (SCM obj) return ret; } -/* Perform the GNU make eval function. */ +/* Perform the GNU Make eval function. */ static SCM guile_eval_wrapper (SCM obj) { @@ -77,24 +77,24 @@ guile_eval_wrapper (SCM obj) return SCM_BOOL_F; } -/* Invoked by scm_c_define_module(), in the context of the GNU make module. */ +/* Invoked by scm_c_define_module(), in the context of the GNU Make module. */ static void guile_define_module (void *data UNUSED) { -/* Ingest the predefined Guile module for GNU make. */ +/* Ingest the predefined Guile module for GNU Make. */ #include "gmk-default.h" - /* Register a subr for GNU make's eval capability. */ + /* Register a subr for GNU Make's eval capability. */ scm_c_define_gsubr ("gmk-expand", 1, 0, 0, (GSUBR_TYPE) guile_expand_wrapper); - /* Register a subr for GNU make's eval capability. */ + /* Register a subr for GNU Make's eval capability. */ scm_c_define_gsubr ("gmk-eval", 1, 0, 0, (GSUBR_TYPE) guile_eval_wrapper); /* Define the rest of the module. */ scm_c_eval_string (GUILE_module_defn); } -/* Initialize the GNU make Guile module. */ +/* Initialize the GNU Make Guile module. */ static void * guile_init (void *arg UNUSED) { @@ -104,7 +104,7 @@ guile_init (void *arg UNUSED) /* Get a reference to the object-to-string translator, for later. */ obj_to_str = scm_variable_ref (scm_c_module_lookup (make_mod, "obj-to-str")); - /* Import the GNU make module exports into the generic space. */ + /* Import the GNU Make module exports into the generic space. */ scm_c_eval_string ("(use-modules (gnu make))"); return NULL; diff --git a/src/hash.c b/src/hash.c index 5d7ea81..d1652f8 100644 --- a/src/hash.c +++ b/src/hash.c @@ -361,7 +361,7 @@ round_up_2 (unsigned long n) #define sum_get_unaligned_32(r, p) \ do { \ unsigned int val; \ - memcpy(&val, (p), 4); \ + memcpy (&val, (p), 4); \ r += val; \ } while(0); @@ -413,13 +413,16 @@ jhash(unsigned const char *k, int length) #define UINTSZ sizeof (unsigned int) #ifdef WORDS_BIGENDIAN -/* The ifs are ordered from the first byte in memory to the last. */ +/* The ifs are ordered from the first byte in memory to the last. + Help the compiler optimize by using static memcpy length. */ #define sum_up_to_nul(r, p, plen, flag) \ do { \ unsigned int val = 0; \ size_t pn = (plen); \ - size_t n = pn < UINTSZ ? pn : UINTSZ; \ - memcpy (&val, (p), n); \ + if (pn >= UINTSZ) \ + memcpy (&val, (p), UINTSZ); \ + else \ + memcpy (&val, (p), pn); \ if ((val & 0xFF000000) == 0) \ flag = 1; \ else if ((val & 0xFF0000) == 0) \ @@ -432,13 +435,16 @@ jhash(unsigned const char *k, int length) #else /* First detect the presence of zeroes. If there is none, we can sum the 4 bytes directly. Otherwise, the ifs are ordered as in the - big endian case, from the first byte in memory to the last. */ + big endian case, from the first byte in memory to the last. + Help the compiler optimize by using static memcpy length. */ #define sum_up_to_nul(r, p, plen, flag) \ do { \ unsigned int val = 0; \ size_t pn = (plen); \ - size_t n = pn < UINTSZ ? pn : UINTSZ; \ - memcpy (&val, (p), n); \ + if (pn >= UINTSZ) \ + memcpy (&val, (p), UINTSZ); \ + else \ + memcpy (&val, (p), pn); \ flag = ((val - 0x01010101) & ~val) & 0x80808080; \ if (!flag) \ r += val; \ diff --git a/src/implicit.c b/src/implicit.c index a3bd318..5fa3094 100644 --- a/src/implicit.c +++ b/src/implicit.c @@ -1,5 +1,5 @@ /* Implicit rule searching for GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -272,6 +272,8 @@ pattern_search (struct file *file, int archive, PATH_VAR (stem_str); /* @@ Need to get rid of stem, stemlen, etc. */ + ++depth; + #ifndef NO_ARCHIVES if (archive || ar_name (filename)) lastslash = 0; @@ -893,7 +895,7 @@ pattern_search (struct file *file, int archive, if (pattern_search (int_file, 0, - depth + 1, + depth, recursions + 1, allow_compat_rules)) { @@ -1008,7 +1010,7 @@ pattern_search (struct file *file, int archive, f->also_make = imf->also_make; f->is_target = 1; f->is_explicit |= imf->is_explicit || pat->is_explicit; - f->notintermediate |= imf->notintermediate; + f->notintermediate |= imf->notintermediate || no_intermediates; f->intermediate |= !f->is_explicit && !f->notintermediate; f->tried_implicit = 1; @@ -1090,7 +1092,7 @@ pattern_search (struct file *file, int archive, { if (f->precious) file->precious = 1; - if (f->notintermediate) + if (f->notintermediate || no_intermediates) file->notintermediate = 1; } } @@ -1123,7 +1125,7 @@ pattern_search (struct file *file, int archive, { if (f->precious) new->file->precious = 1; - if (f->notintermediate) + if (f->notintermediate || no_intermediates) new->file->notintermediate = 1; } @@ -1139,6 +1141,8 @@ pattern_search (struct file *file, int archive, free (tryrules); free (deplist); + --depth; + if (rule) { DBS (DB_IMPLICIT, (_("Found implicit rule '%s' for '%s'.\n"), diff --git a/src/job.c b/src/job.c index b78f279..ea88561 100644 --- a/src/job.c +++ b/src/job.c @@ -1,5 +1,5 @@ /* Job execution and handling for GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -30,9 +30,6 @@ this program. If not, see . */ /* Default shell to use. */ #ifdef WINDOWS32 -# ifdef HAVE_STRINGS_H -# include /* for strcasecmp, strncasecmp */ -# endif # include const char *default_shell = "sh.exe"; @@ -861,7 +858,7 @@ reap_children (int block, int err) map_windows32_error_to_string from calling 'fatal', which will then call reap_children again */ if (werr && exit_code > 0 && exit_code < WSABASEERR) - fprintf (stderr, "make (e=%d): %s", exit_code, + fprintf (stderr, "make (e=%d): %s\n", exit_code, map_windows32_error_to_string (exit_code)); /* signal */ @@ -1196,7 +1193,7 @@ start_job_command (struct child *child) | child->file->cmds->lines_flags[child->command_line - 1]); p = child->command_ptr; - child->noerror = ((flags & COMMANDS_NOERROR) != 0); + child->noerror = ANY_SET (flags, COMMANDS_NOERROR); while (*p != '\0') { @@ -1212,7 +1209,7 @@ start_job_command (struct child *child) ++p; } - child->recursive = ((flags & COMMANDS_RECURSE) != 0); + child->recursive = ANY_SET (flags, COMMANDS_RECURSE); /* Update the file's command flags with any new ones we found. We only keep the COMMANDS_RECURSE setting. Even this isn't 100% correct; we are @@ -1297,7 +1294,7 @@ start_job_command (struct child *child) command line, or 'succeeded' otherwise. The exit status of 1 tells the user that -q is saying 'something to do'; the exit status for a random error is 2. */ - if (argv != 0 && question_flag && !(flags & COMMANDS_RECURSE)) + if (argv != 0 && question_flag && NONE_SET (flags, COMMANDS_RECURSE)) { FREE_ARGV (argv); #ifdef VMS @@ -1313,7 +1310,7 @@ start_job_command (struct child *child) #endif } - if (touch_flag && !(flags & COMMANDS_RECURSE)) + if (touch_flag && NONE_SET (flags, COMMANDS_RECURSE)) { /* Go on to the next command. It might be the recursive one. We construct ARGV only to find the end of the command line. */ @@ -1347,7 +1344,7 @@ start_job_command (struct child *child) in SYNC_RECURSE mode or this command is not recursive. We'll also check output_sync separately below in case it changes due to error. */ child->output.syncout = output_sync && (output_sync == OUTPUT_SYNC_RECURSE - || !(flags & COMMANDS_RECURSE)); + || NONE_SET (flags, COMMANDS_RECURSE)); OUTPUT_SET (&child->output); @@ -1358,7 +1355,7 @@ start_job_command (struct child *child) /* Print the command if appropriate. */ if (just_print_flag || ISDB (DB_PRINT) - || (!(flags & COMMANDS_SILENT) && !run_silent)) + || (NONE_SET (flags, COMMANDS_SILENT) && !run_silent)) OS (message, 0, "%s", p); /* Tell update_goal_chain that a command has been started on behalf of @@ -1398,7 +1395,7 @@ start_job_command (struct child *child) /* If -n was given, recurse to get the next line in the sequence. */ - if (just_print_flag && !(flags & COMMANDS_RECURSE)) + if (just_print_flag && NONE_SET (flags, COMMANDS_RECURSE)) { FREE_ARGV (argv); goto next_command; @@ -1423,9 +1420,16 @@ start_job_command (struct child *child) child->deleted = 0; #ifndef _AMIGA - /* Set up the environment for the child. */ + /* Set up the environment for the child. + It's a slight inaccuracy to set the environment for recursive make even + for command lines that aren't recursive, but I don't want to have to + recompute the target environment for each command. Better would be to + keep a separate entry for MAKEFLAGS in the environment so it could be + replaced on its own. For now just set it for all lines. + */ if (child->environment == 0) - child->environment = target_environment (child->file, child->recursive); + child->environment = target_environment (child->file, + child->file->cmds->any_recurse); #endif #if !defined(__MSDOS__) && !defined(_AMIGA) && !defined(WINDOWS32) @@ -1467,12 +1471,12 @@ start_job_command (struct child *child) #else - jobserver_pre_child (flags & COMMANDS_RECURSE); + jobserver_pre_child (ANY_SET (flags, COMMANDS_RECURSE)); child->pid = child_execute_job ((struct childbase *)child, child->good_stdin, argv); - jobserver_post_child (flags & COMMANDS_RECURSE); + jobserver_post_child (ANY_SET (flags, COMMANDS_RECURSE)); #endif /* !VMS */ } @@ -1893,7 +1897,6 @@ new_job (struct file *file) Use message here so that changes to working directories are logged. */ if (ISDB (DB_WHY)) { - char *newer = allocated_variable_expand_for_file ("$?", c->file); const char *nm; if (! cmds->fileinfo.filenm) @@ -1905,11 +1908,51 @@ new_job (struct file *file) nm = n; } - OSSS (message, 0, - _("%s: update target '%s' due to: %s"), nm, c->file->name, - newer[0] == '\0' ? _("target does not exist") : newer); - - free (newer); + if (c->file->phony) + OSS (message, 0, _("%s: update target '%s' due to: target is .PHONY"), + nm, c->file->name); + else if (c->file->last_mtime == NONEXISTENT_MTIME) + OSS (message, 0, + _("%s: update target '%s' due to: target does not exist"), + nm, c->file->name); + else + { + char *newer = allocated_variable_expand_for_file ("$?", c->file); + if (newer[0] != '\0') + { + OSSS (message, 0, _("%s: update target '%s' due to: %s"), + nm, c->file->name, newer); + free (newer); + } + else + { + /* One or more files didn't exist, and didn't get created. */ + size_t len = 0; + struct dep *d; + + for (d = c->file->deps; d != NULL; d = d->next) + if (d->file->last_mtime == NONEXISTENT_MTIME) + len += strlen (d->file->name) + 1; + + if (!len) + OSS (message, 0, + _("%s: update target '%s' due to: unknown reasons"), + nm, c->file->name); + else + { + char *cp = newer = alloca (len); + for (d = c->file->deps; d != NULL; d = d->next) + if (d->file->last_mtime == NONEXISTENT_MTIME) + { + if (cp > newer) + *(cp++) = ' '; + cp = stpcpy (cp, d->file->name); + } + OSSS (message, 0, _("%s: update target '%s' due to: %s"), + nm, c->file->name, newer); + } + } + } } /* The job is now primed. Start it running. @@ -2513,7 +2556,7 @@ exec_command (char **argv, char **envp) exit_code = process_exit_code (hWaitPID); if (err) - fprintf (stderr, "make (e=%d, rc=%d): %s", + fprintf (stderr, "make (e=%d, rc=%d): %s\n", err, exit_code, map_windows32_error_to_string (err)); /* cleanup process */ @@ -2550,6 +2593,11 @@ exec_command (char **argv, char **envp) if (errno == ENOENT) errno = ENOEXEC; +# elif MK_OS_ZOS + /* In z/OS we can't set environ in ASCII mode. */ + environ = envp; + execvpe(argv[0], argv, envp); + # else /* Run the program. Don't use execvpe() as we want the search for argv[0] @@ -2600,7 +2648,7 @@ exec_command (char **argv, char **envp) # ifdef __EMX__ if (!unixy_shell) { - new_argv[1] = "/c"; + new_argv[1] = (char *)"/c"; ++i; --argc; } @@ -2617,6 +2665,9 @@ exec_command (char **argv, char **envp) pid = spawnvpe (P_NOWAIT, shell, new_argv, envp); if (pid >= 0) break; +# elif MK_OS_ZOS + /* In z/OS we can't set environ in ASCII mode. */ + execvpe(shell, new_argv, envp); # else execvp (shell, new_argv); # endif @@ -2842,7 +2893,7 @@ construct_command_argv_internal (char *line, char **restp, const char *shell, return 0; if (shellflags == 0) - shellflags = posix_pedantic ? "-ec" : "-c"; + shellflags = posix_pedantic && NONE_SET (flags, COMMANDS_NOERROR) ? "-ec" : "-c"; /* See if it is safe to parse commands internally. */ if (shell == 0) @@ -3226,7 +3277,13 @@ construct_command_argv_internal (char *line, char **restp, const char *shell, # ifdef __EMX__ /* is this necessary? */ if (!unixy_shell && shellflags) - shellflags[0] = '/'; /* "/c" */ + { + size_t len = strlen (shellflags); + char *shflags = alloca (len + 1); + memcpy (shflags, shellflags, len + 1); + shflags[0] = '/'; /* "/c" */ + shellflags = shflags; + } # endif /* In .ONESHELL mode we are allowed to throw the entire current @@ -3488,7 +3545,7 @@ construct_command_argv_internal (char *line, char **restp, const char *shell, /* Some shells do not work well when invoked as 'sh -c xxx' to run a command line (e.g. Cygnus GNUWIN32 sh.exe on W32 systems). In these cases, run commands via a script file. */ - if (just_print_flag && !(flags & COMMANDS_RECURSE)) + if (just_print_flag && NONE_SET (flags, COMMANDS_RECURSE)) { /* Need to allocate new_argv, although it's unused, because start_job_command will want to free it and its 0'th element. */ @@ -3549,9 +3606,9 @@ construct_command_argv_internal (char *line, char **restp, const char *shell, /* new_line is local, must not be freed therefore We use line here instead of new_line because we run the shell manually. */ - size_t line_len = strlen (line); - char *p = new_line; char *q = new_line; + line_len = strlen (line); + p = new_line; memcpy (new_line, line, line_len + 1); /* Replace all backslash-newline combination and also following tabs. Important: stop at the first '\n' because that's what the loop above @@ -3660,6 +3717,7 @@ construct_command_argv (char *line, char **restp, struct file *file, char **argv; { + struct variable *var; /* Turn off --warn-undefined-variables while we expand SHELL and IFS. */ int save = warn_undefined_variables_flag; warn_undefined_variables_flag = 0; @@ -3720,7 +3778,15 @@ construct_command_argv (char *line, char **restp, struct file *file, } #endif /* __EMX__ */ - shellflags = allocated_variable_expand_for_file ("$(.SHELLFLAGS)", file); + var = lookup_variable_for_file (STRING_SIZE_TUPLE (".SHELLFLAGS"), file); + if (!var) + shellflags = xstrdup (""); + else if (posix_pedantic && var->origin == o_default) + /* In POSIX mode we default to -ec, unless we're ignoring errors. */ + shellflags = xstrdup (ANY_SET (cmd_flags, COMMANDS_NOERROR) ? "-c" : "-ec"); + else + shellflags = allocated_variable_expand_for_file (var->value, file); + ifs = allocated_variable_expand_for_file ("$(IFS)", file); warn_undefined_variables_flag = save; diff --git a/src/job.h b/src/job.h index 14a9984..00fac99 100644 --- a/src/job.h +++ b/src/job.h @@ -1,5 +1,5 @@ /* Definitions for managing subprocesses in GNU Make. -Copyright (C) 1992-2022 Free Software Foundation, Inc. +Copyright (C) 1992-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/load.c b/src/load.c index e343a2e..0f8d186 100644 --- a/src/load.c +++ b/src/load.c @@ -1,5 +1,5 @@ /* Loading dynamic objects for GNU Make. -Copyright (C) 2012-2022 Free Software Foundation, Inc. +Copyright (C) 2012-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/loadapi.c b/src/loadapi.c index 3c1fdb0..0627766 100644 --- a/src/loadapi.c +++ b/src/loadapi.c @@ -1,5 +1,5 @@ /* API for GNU Make dynamic objects. -Copyright (C) 2013-2022 Free Software Foundation, Inc. +Copyright (C) 2013-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/main.c b/src/main.c index eec9365..a9d3a64 100644 --- a/src/main.c +++ b/src/main.c @@ -1,5 +1,5 @@ /* Argument parsing and main program of GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -34,9 +34,6 @@ this program. If not, see . */ #ifdef WINDOWS32 # include # include -#ifdef HAVE_STRINGS_H -# include /* for strcasecmp */ -#endif # include "pathstuff.h" # include "sub_proc.h" # include "w32err.h" @@ -105,8 +102,10 @@ double atof (); static void clean_jobserver (int status); static void print_data_base (void); static void print_version (void); -static void decode_switches (int argc, const char **argv, int env); -static struct variable *define_makeflags (int all, int makefile); +static void decode_switches (int argc, const char **argv, + enum variable_origin origin); +static void decode_env_switches (const char *envar, size_t len, + enum variable_origin origin); static char *quote_for_env (char *out, const char *in); static void initialize_global_hash_tables (void); @@ -136,6 +135,7 @@ int verify_flag; static int silent_flag; static const int default_silent_flag = 0; +static enum variable_origin silent_origin = o_default; /* Nonzero means either -s was given, or .SILENT-with-no-deps was seen. */ @@ -190,16 +190,15 @@ int no_builtin_variables_flag = 0; int keep_going_flag; static const int default_keep_going_flag = 0; +static enum variable_origin keep_going_origin = o_default; /* Nonzero means check symlink mtimes. */ int check_symlink_flag = 0; -/* Nonzero means print directory before starting and when done (-w). */ - -int print_directory; static int print_directory_flag = -1; static const int default_print_directory_flag = -1; +static enum variable_origin print_directory_origin = o_default; /* Nonzero means print version information. */ @@ -235,6 +234,7 @@ static const int inf_jobs = 0; char *jobserver_auth = NULL; /* Style for the jobserver. */ + static char *jobserver_style = NULL; /* Shuffle mode for goals and prerequisites. */ @@ -298,6 +298,9 @@ struct variable shell_var; char cmd_prefix = '\t'; +/* Whether or not .NOTINTERMEDIATE with no prerequisites was given. */ +unsigned int no_intermediates; + /* Count the number of commands we've invoked, that might change something in the filesystem. Start with 1 so calloc'd memory never matches. */ @@ -405,30 +408,34 @@ static int trace_flag = 0; struct command_switch { - int c; /* The switch character. */ + int c; /* The switch character. */ - enum /* Type of the value. */ + enum /* Type of the value. */ { - flag, /* Turn int flag on. */ - flag_off, /* Turn int flag off. */ - string, /* One string per invocation. */ - strlist, /* One string per switch. */ - filename, /* A string containing a file name. */ - positive_int, /* A positive integer. */ - floating, /* A floating-point number (double). */ - ignore /* Ignored. */ + flag, /* Turn int flag on. */ + flag_off, /* Turn int flag off. */ + string, /* One string per invocation. */ + strlist, /* One string per switch. */ + filename, /* A string containing a file name. */ + positive_int, /* A positive integer. */ + floating, /* A floating-point number (double). */ + ignore /* Ignored. */ } type; - void *value_ptr; /* Pointer to the value-holding variable. */ + void *value_ptr; /* Pointer to the value-holding variable. */ - unsigned int env:1; /* Can come from MAKEFLAGS. */ - unsigned int toenv:1; /* Should be put in MAKEFLAGS. */ - unsigned int no_makefile:1; /* Don't propagate when remaking makefiles. */ + unsigned int env:1; /* Can come from MAKEFLAGS. */ + unsigned int toenv:1; /* Should be put in MAKEFLAGS. */ + unsigned int no_makefile:1; /* Don't propagate when remaking makefiles. */ + unsigned int specified:1; /* Set if the switch was specified somewhere. + Allows switches that are ON by default to + appear in MAKEFLAGS when set explicitly. */ - const void *noarg_value; /* Pointer to value used if no arg given. */ - const void *default_value; /* Pointer to default value. */ + const void *noarg_value; /* Pointer to value used if no arg given. */ + const void *default_value; /* Pointer to default value. */ - const char *long_name; /* Long option name. */ + const char *long_name; /* Long option name. */ + enum variable_origin *origin; /* Origin of the value. */ }; /* The table of command switches. @@ -437,63 +444,64 @@ struct command_switch #define TEMP_STDIN_OPT (CHAR_MAX+10) -static const struct command_switch switches[] = +static struct command_switch switches[] = { - { 'b', ignore, 0, 0, 0, 0, 0, 0, 0 }, - { 'B', flag, &always_make_set, 1, 1, 0, 0, 0, "always-make" }, - { 'd', flag, &debug_flag, 1, 1, 0, 0, 0, 0 }, - { 'e', flag, &env_overrides, 1, 1, 0, 0, 0, "environment-overrides", }, - { 'E', strlist, &eval_strings, 1, 0, 0, 0, 0, "eval" }, - { 'h', flag, &print_usage_flag, 0, 0, 0, 0, 0, "help" }, - { 'i', flag, &ignore_errors_flag, 1, 1, 0, 0, 0, "ignore-errors" }, - { 'k', flag, &keep_going_flag, 1, 1, 0, 0, &default_keep_going_flag, - "keep-going" }, - { 'L', flag, &check_symlink_flag, 1, 1, 0, 0, 0, "check-symlink-times" }, - { 'm', ignore, 0, 0, 0, 0, 0, 0, 0 }, - { 'n', flag, &just_print_flag, 1, 1, 1, 0, 0, "just-print" }, - { 'p', flag, &print_data_base_flag, 1, 1, 0, 0, 0, "print-data-base" }, - { 'q', flag, &question_flag, 1, 1, 1, 0, 0, "question" }, - { 'r', flag, &no_builtin_rules_flag, 1, 1, 0, 0, 0, "no-builtin-rules" }, - { 'R', flag, &no_builtin_variables_flag, 1, 1, 0, 0, 0, - "no-builtin-variables" }, - { 's', flag, &silent_flag, 1, 1, 0, 0, &default_silent_flag, "silent" }, - { 'S', flag_off, &keep_going_flag, 1, 1, 0, 0, &default_keep_going_flag, - "no-keep-going" }, - { 't', flag, &touch_flag, 1, 1, 1, 0, 0, "touch" }, - { 'v', flag, &print_version_flag, 1, 0, 0, 0, 0, "version" }, - { 'w', flag, &print_directory_flag, 1, 1, 0, 0, - &default_print_directory_flag, "print-directory" }, + { 'b', ignore, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 'B', flag, &always_make_set, 1, 1, 0, 0, 0, 0, "always-make", 0 }, + { 'd', flag, &debug_flag, 1, 1, 0, 0, 0, 0, 0, 0 }, + { 'e', flag, &env_overrides, 1, 1, 0, 0, 0, 0, "environment-overrides", 0 }, + { 'E', strlist, &eval_strings, 1, 0, 0, 0, 0, 0, "eval", 0 }, + { 'h', flag, &print_usage_flag, 0, 0, 0, 0, 0, 0, "help", 0 }, + { 'i', flag, &ignore_errors_flag, 1, 1, 0, 0, 0, 0, "ignore-errors", 0 }, + { 'k', flag, &keep_going_flag, 1, 1, 0, 0, 0, &default_keep_going_flag, + "keep-going", &keep_going_origin }, + { 'L', flag, &check_symlink_flag, 1, 1, 0, 0, 0, 0, "check-symlink-times", 0 }, + { 'm', ignore, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 'n', flag, &just_print_flag, 1, 1, 1, 0, 0, 0, "just-print", 0 }, + { 'p', flag, &print_data_base_flag, 1, 1, 0, 0, 0, 0, "print-data-base", 0 }, + { 'q', flag, &question_flag, 1, 1, 1, 0, 0, 0, "question", 0 }, + { 'r', flag, &no_builtin_rules_flag, 1, 1, 0, 0, 0, 0, "no-builtin-rules", 0 }, + { 'R', flag, &no_builtin_variables_flag, 1, 1, 0, 0, 0, 0, + "no-builtin-variables", 0 }, + { 's', flag, &silent_flag, 1, 1, 0, 0, 0, &default_silent_flag, "silent", + &silent_origin }, + { 'S', flag_off, &keep_going_flag, 1, 1, 0, 0, 0, &default_keep_going_flag, + "no-keep-going", &keep_going_origin }, + { 't', flag, &touch_flag, 1, 1, 1, 0, 0, 0, "touch", 0 }, + { 'v', flag, &print_version_flag, 1, 0, 0, 0, 0, 0, "version", 0 }, + { 'w', flag, &print_directory_flag, 1, 1, 0, 0, 0, + &default_print_directory_flag, "print-directory", &print_directory_origin }, /* These options take arguments. */ - { 'C', filename, &directories, 0, 0, 0, 0, 0, "directory" }, - { 'f', filename, &makefiles, 0, 0, 0, 0, 0, "file" }, - { 'I', filename, &include_dirs, 1, 1, 0, 0, 0, - "include-dir" }, - { 'j', positive_int, &arg_job_slots, 1, 1, 0, &inf_jobs, &default_job_slots, - "jobs" }, - { 'l', floating, &max_load_average, 1, 1, 0, &default_load_average, - &default_load_average, "load-average" }, - { 'o', filename, &old_files, 0, 0, 0, 0, 0, "old-file" }, - { 'O', string, &output_sync_option, 1, 1, 0, "target", 0, "output-sync" }, - { 'W', filename, &new_files, 0, 0, 0, 0, 0, "what-if" }, + { 'C', filename, &directories, 0, 0, 0, 0, 0, 0, "directory", 0 }, + { 'f', filename, &makefiles, 0, 0, 0, 0, 0, 0, "file", 0 }, + { 'I', filename, &include_dirs, 1, 1, 0, 0, 0, 0, + "include-dir", 0 }, + { 'j', positive_int, &arg_job_slots, 1, 1, 0, 0, &inf_jobs, &default_job_slots, + "jobs", 0 }, + { 'l', floating, &max_load_average, 1, 1, 0, 0, &default_load_average, + &default_load_average, "load-average", 0 }, + { 'o', filename, &old_files, 0, 0, 0, 0, 0, 0, "old-file", 0 }, + { 'O', string, &output_sync_option, 1, 1, 0, 0, "target", 0, "output-sync", 0 }, + { 'W', filename, &new_files, 0, 0, 0, 0, 0, 0, "what-if", 0 }, /* These are long-style options. */ - { CHAR_MAX+1, strlist, &db_flags, 1, 1, 0, "basic", 0, "debug" }, - { CHAR_MAX+2, string, &jobserver_auth, 1, 1, 0, 0, 0, JOBSERVER_AUTH_OPT }, - { CHAR_MAX+3, flag, &trace_flag, 1, 1, 0, 0, 0, "trace" }, - { CHAR_MAX+4, flag_off, &print_directory_flag, 1, 1, 0, 0, - &default_print_directory_flag, "no-print-directory" }, - { CHAR_MAX+5, flag, &warn_undefined_variables_flag, 1, 1, 0, 0, 0, - "warn-undefined-variables" }, - { CHAR_MAX+7, string, &sync_mutex, 1, 1, 0, 0, 0, "sync-mutex" }, - { CHAR_MAX+8, flag_off, &silent_flag, 1, 1, 0, 0, &default_silent_flag, - "no-silent" }, - { CHAR_MAX+9, string, &jobserver_auth, 1, 0, 0, 0, 0, "jobserver-fds" }, + { CHAR_MAX+1, strlist, &db_flags, 1, 1, 0, 0, "basic", 0, "debug", 0 }, + { CHAR_MAX+2, string, &jobserver_auth, 1, 1, 0, 0, 0, 0, JOBSERVER_AUTH_OPT, 0 }, + { CHAR_MAX+3, flag, &trace_flag, 1, 1, 0, 0, 0, 0, "trace", 0 }, + { CHAR_MAX+4, flag_off, &print_directory_flag, 1, 1, 0, 0, 0, + &default_print_directory_flag, "no-print-directory", &print_directory_origin }, + { CHAR_MAX+5, flag, &warn_undefined_variables_flag, 1, 1, 0, 0, 0, 0, + "warn-undefined-variables", 0 }, + { CHAR_MAX+7, string, &sync_mutex, 1, 1, 0, 0, 0, 0, "sync-mutex", 0 }, + { CHAR_MAX+8, flag_off, &silent_flag, 1, 1, 0, 0, 0, &default_silent_flag, + "no-silent", &silent_origin }, + { CHAR_MAX+9, string, &jobserver_auth, 1, 0, 0, 0, 0, 0, "jobserver-fds", 0 }, /* There is special-case handling for this in decode_switches() as well. */ - { TEMP_STDIN_OPT, filename, &makefiles, 0, 0, 0, 0, 0, "temp-stdin" }, - { CHAR_MAX+11, string, &shuffle_mode, 1, 1, 0, "random", 0, "shuffle" }, - { CHAR_MAX+12, string, &jobserver_style, 1, 0, 0, 0, 0, "jobserver-style" }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0 } + { TEMP_STDIN_OPT, filename, &makefiles, 0, 0, 0, 0, 0, 0, "temp-stdin", 0 }, + { CHAR_MAX+11, string, &shuffle_mode, 1, 1, 0, 0, "random", 0, "shuffle", 0 }, + { CHAR_MAX+12, string, &jobserver_style, 1, 0, 0, 0, 0, 0, "jobserver-style", 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* Secondary long names for options. */ @@ -688,7 +696,7 @@ initialize_stopchar_map (void) /* This code is stolen from gnulib. If/when we abandon the requirement to work with K&R compilers, we can - remove this (and perhaps other parts of GNU make!) and migrate to using + remove this (and perhaps other parts of GNU Make!) and migrate to using gnulib directly. This is called only through atexit(), which means die() has already been @@ -1152,7 +1160,11 @@ temp_stdin_unlink () } } -#ifdef _AMIGA +#ifdef MK_OS_ZOS +extern char **environ; +#endif + +#if defined(_AMIGA) || defined(MK_OS_ZOS) int main (int argc, char **argv) #else @@ -1182,11 +1194,6 @@ main (int argc, char **argv, char **envp) /* Useful for attaching debuggers, etc. */ SPIN ("main-entry"); - /* Don't die if our stdout sends us SIGPIPE. */ -#ifdef SIGPIPE - bsd_signal (SIGPIPE, SIG_IGN); -#endif - #ifdef HAVE_ATEXIT if (ANY_SET (check_io_state (), IO_STDOUT_OK)) atexit (close_stdout); @@ -1264,6 +1271,9 @@ main (int argc, char **argv, char **envp) #endif #ifdef SIGQUIT FATAL_SIG (SIGQUIT); +#endif +#ifdef SIGPIPE + FATAL_SIG (SIGPIPE); #endif FATAL_SIG (SIGINT); FATAL_SIG (SIGTERM); @@ -1438,7 +1448,7 @@ main (int argc, char **argv, char **envp) #endif #ifdef MAKE_JOBSERVER " jobserver" -# ifdef HAVE_MKFIFO +# if JOBSERVER_USE_FIFO " jobserver-fifo" # endif #endif @@ -1454,6 +1464,9 @@ main (int argc, char **argv, char **envp) #ifdef MAKE_LOAD " load" #endif +#ifdef HAVE_DOS_PATHS + " dospaths" +#endif #ifdef MAKE_MAINTAINER_MODE " maintainer" #endif @@ -1469,6 +1482,10 @@ main (int argc, char **argv, char **envp) done before $(MAKE) is figured out so its definitions will not be from the environment. */ +#ifdef MK_OS_ZOS + char **envp = environ; +#endif + #ifndef _AMIGA { unsigned int i; @@ -1505,7 +1522,7 @@ main (int argc, char **argv, char **envp) /* If this is MAKE_RESTARTS, check to see if the "already printed the enter statement" flag is set. */ - if (len == 13 && memcmp (envp[i], STRING_SIZE_TUPLE ("MAKE_RESTARTS")) == 0) + if (len == 13 && memcmp (envp[i], "MAKE_RESTARTS", CSTRLEN ("MAKE_RESTARTS")) == 0) { if (*ep == '-') { @@ -1574,13 +1591,16 @@ main (int argc, char **argv, char **envp) /* Decode the switches. */ if (lookup_variable (STRING_SIZE_TUPLE (GNUMAKEFLAGS_NAME))) { - decode_env_switches (STRING_SIZE_TUPLE (GNUMAKEFLAGS_NAME)); + decode_env_switches (STRING_SIZE_TUPLE (GNUMAKEFLAGS_NAME), o_command); /* Clear GNUMAKEFLAGS to avoid duplication. */ define_variable_cname (GNUMAKEFLAGS_NAME, "", o_env, 0); } - decode_env_switches (STRING_SIZE_TUPLE (MAKEFLAGS_NAME)); + /* Set MAKEFLAGS's origin to command line: in submakes MAKEFLAGS will carry + command line switches. This causes env variable MAKEFLAGS to beat + makefile modifications to MAKEFLAGS. */ + decode_env_switches (STRING_SIZE_TUPLE (MAKEFLAGS_NAME), o_command); #if 0 /* People write things like: @@ -1601,7 +1621,7 @@ main (int argc, char **argv, char **envp) int env_slots = arg_job_slots; arg_job_slots = INVALID_JOB_SLOTS; - decode_switches (argc, (const char **)argv, 0); + decode_switches (argc, (const char **)argv, o_command); argv_slots = arg_job_slots; if (arg_job_slots == INVALID_JOB_SLOTS) @@ -1681,14 +1701,6 @@ main (int argc, char **argv, char **envp) /* Set always_make_flag if -B was given and we've not restarted already. */ always_make_flag = always_make_set && (restarts == 0); - /* If the user didn't specify any print-directory options, compute the - default setting: disable under -s / print in sub-makes and under -C. */ - - if (print_directory_flag == -1) - print_directory = !silent_flag && (directories != 0 || makelevel > 0); - else - print_directory = print_directory_flag; - /* If -R was given, set -r too (doesn't make sense otherwise!) */ if (no_builtin_variables_flag) no_builtin_rules_flag = 1; @@ -1814,6 +1826,10 @@ main (int argc, char **argv, char **envp) define_variable_cname ("CURDIR", current_directory, o_file, 0); + /* Construct the list of include directories to search. + This will check for existence so it must be done after chdir. */ + construct_include_path (include_dirs ? include_dirs->list : NULL); + /* Validate the arg_job_slots configuration before we define MAKEFLAGS so users get an accurate value in their makefiles. At this point arg_job_slots is the argv setting, if there is one, else @@ -1905,7 +1921,7 @@ main (int argc, char **argv, char **envp) allow the user's setting of MAKEOVERRIDES to affect MAKEFLAGS, so a reference to this hidden variable is written instead. */ define_variable_cname ("MAKEOVERRIDES", "${-*-command-variables-*-}", - o_env, 1); + o_default, 1); #ifdef VMS vms_export_dcl_symbol ("MAKEOVERRIDES", "${-*-command-variables-*-}"); #endif @@ -1930,6 +1946,9 @@ main (int argc, char **argv, char **envp) _("Makefile from standard input specified twice")); outfile = get_tmpfile (&newnm); + if (!outfile) + O (fatal, NILF, + _("cannot store makefile from stdin to a temporary file")); while (!feof (stdin) && ! ferror (stdin)) { @@ -1987,7 +2006,7 @@ main (int argc, char **argv, char **envp) # endif } -#ifdef HAVE_PSELECT +#if defined(HAVE_PSELECT) && !defined(MK_OS_ZOS) /* If we have pselect() then we need to block SIGCHLD so it's deferred. */ { sigset_t block; @@ -2009,19 +2028,12 @@ main (int argc, char **argv, char **envp) /* Define the initial list of suffixes for old-style rules. */ set_default_suffixes (); - /* Define the file rules for the built-in suffix rules. These will later - be converted into pattern rules. We used to do this in - install_default_implicit_rules, but since that happens after reading - makefiles, it results in the built-in pattern rules taking precedence - over makefile-specified suffix rules, which is wrong. */ - install_default_suffix_rules (); - /* Define some internal and special variables. */ define_automatic_variables (); /* Set up the MAKEFLAGS and MFLAGS variables for makefiles to see. Initialize it to be exported but allow the makefile to reset it. */ - define_makeflags (0, 0)->export = v_export; + define_makeflags (0)->export = v_export; /* Define the default variables. */ define_default_variables (); @@ -2071,12 +2083,12 @@ main (int argc, char **argv, char **envp) arg_job_slots = INVALID_JOB_SLOTS; /* Decode switches again, for variables set by the makefile. */ - decode_env_switches (STRING_SIZE_TUPLE (GNUMAKEFLAGS_NAME)); + decode_env_switches (STRING_SIZE_TUPLE (GNUMAKEFLAGS_NAME), o_env); /* Clear GNUMAKEFLAGS to avoid duplication. */ define_variable_cname (GNUMAKEFLAGS_NAME, "", o_override, 0); - decode_env_switches (STRING_SIZE_TUPLE (MAKEFLAGS_NAME)); + decode_env_switches (STRING_SIZE_TUPLE (MAKEFLAGS_NAME), o_env); #if 0 decode_env_switches (STRING_SIZE_TUPLE ("MFLAGS")); #endif @@ -2259,13 +2271,18 @@ main (int argc, char **argv, char **envp) /* Set up MAKEFLAGS and MFLAGS again, so they will be right. */ - define_makeflags (1, 0); + define_makeflags (0); /* Make each 'struct goaldep' point at the 'struct file' for the file depended on. Also do magic for special targets. */ snap_deps (); + /* Define the file rules for the built-in suffix rules. These will later + be converted into pattern rules. */ + + install_default_suffix_rules (); + /* Convert old-style suffix rules to pattern rules. It is important to do this before installing the built-in pattern rules below, so that makefile-specified suffix rules take precedence over built-in pattern @@ -2419,7 +2436,7 @@ main (int argc, char **argv, char **envp) } /* Set up 'MAKEFLAGS' specially while remaking makefiles. */ - define_makeflags (1, 1); + define_makeflags (1); { int orig_db_level = db_level; @@ -2782,7 +2799,7 @@ main (int argc, char **argv, char **envp) child.output.syncout = 0; child.environment = environ; - pid = child_execute_job (&child, 1, nargv); + pid = child_execute_job (&child, 1, (char **)nargv); /* is this loop really necessary? */ do { @@ -2811,7 +2828,7 @@ main (int argc, char **argv, char **envp) } /* Set up 'MAKEFLAGS' again for the normal targets. */ - define_makeflags (1, 0); + define_makeflags (0); /* Set always_make_flag if -B was given. */ always_make_flag = always_make_set; @@ -2999,7 +3016,7 @@ init_switches (void) /* Non-option argument. It might be a variable definition. */ static void -handle_non_switch_argument (const char *arg, int env) +handle_non_switch_argument (const char *arg, enum variable_origin origin) { struct variable *v; @@ -3032,7 +3049,7 @@ handle_non_switch_argument (const char *arg, int env) } } #endif - v = try_variable_definition (0, arg, o_command, 0); + v = try_variable_definition (0, arg, origin, 0); if (v != 0) { /* It is indeed a variable definition. If we don't already have this @@ -3052,11 +3069,12 @@ handle_non_switch_argument (const char *arg, int env) command_variables = cv; } } - else if (! env) + else if (arg[0] != '\0' && origin == o_command) { - /* Not an option or variable definition; it must be a goal - target! Enter it as a file and add it to the dep chain of - goals. */ + /* Not an option or variable definition; it must be a goal target. + Enter it as a file and add it to the dep chain of goals. + Check ARG[0] because if the top makefile resets MAKEOVERRIDES + then ARG points to an empty string in the submake. */ struct file *f = enter_file (strcache_add (expand_command_line_file (arg))); f->cmd_target = 1; @@ -3100,14 +3118,23 @@ handle_non_switch_argument (const char *arg, int env) } } +/* Called if the makefile resets the MAKEFLAGS variable. */ +void +reset_makeflags (enum variable_origin origin) +{ + decode_env_switches (STRING_SIZE_TUPLE(MAKEFLAGS_NAME), origin); + construct_include_path (include_dirs ? include_dirs->list : NULL); + define_makeflags (rebuilding_makefiles); +} + /* Decode switches from ARGC and ARGV. - They came from the environment if ENV is nonzero. */ + They came from the environment if ORIGIN is o_env. */ static void -decode_switches (int argc, const char **argv, int env) +decode_switches (int argc, const char **argv, enum variable_origin origin) { int bad = 0; - const struct command_switch *cs; + struct command_switch *cs; struct stringlist *sl; int c; @@ -3118,7 +3145,7 @@ decode_switches (int argc, const char **argv, int env) /* Let getopt produce error messages for the command line, but not for options from the environment. */ - opterr = !env; + opterr = origin == o_command; /* Reset getopt's state. */ optind = 0; @@ -3134,7 +3161,7 @@ decode_switches (int argc, const char **argv, int env) break; else if (c == 1) /* An argument not starting with a dash. */ - handle_non_switch_argument (coptarg, env); + handle_non_switch_argument (coptarg, origin); else if (c == '?') /* Bad option. We will print a usage message and die later. But continue to parse the other options so the user can @@ -3148,7 +3175,12 @@ decode_switches (int argc, const char **argv, int env) this switch. We test this individually inside the switch below rather than just once outside it, so that options which are to be ignored still consume args. */ - int doit = !env || cs->env; + int doit = (origin == o_command + || (cs->env && + (cs->origin == NULL || origin >= *cs->origin))); + + if (doit) + cs->specified = 1; switch (cs->type) { @@ -3161,7 +3193,11 @@ decode_switches (int argc, const char **argv, int env) case flag: case flag_off: if (doit) - *(int *) cs->value_ptr = cs->type == flag; + { + *(int *) cs->value_ptr = cs->type == flag; + if (cs->origin) + *cs->origin = origin; + } break; case string: @@ -3194,6 +3230,8 @@ decode_switches (int argc, const char **argv, int env) char **val = (char **)cs->value_ptr; free (*val); *val = xstrdup (coptarg); + if (cs->origin) + *cs->origin = origin; break; } @@ -3227,7 +3265,11 @@ decode_switches (int argc, const char **argv, int env) } if (cs->type == strlist) - sl->list[sl->idx++] = xstrdup (coptarg); + { + sl->list[sl->idx++] = xstrdup (coptarg); + if (cs->origin) + *cs->origin = origin; + } else if (cs->c == TEMP_STDIN_OPT) { if (stdin_offset > 0) @@ -3235,9 +3277,15 @@ decode_switches (int argc, const char **argv, int env) /* We don't need to expand the temp file. */ stdin_offset = sl->idx; sl->list[sl->idx++] = strcache_add (coptarg); + if (cs->origin) + *cs->origin = origin; } else - sl->list[sl->idx++] = expand_command_line_file (coptarg); + { + sl->list[sl->idx++] = expand_command_line_file (coptarg); + if (cs->origin) + *cs->origin = origin; + } sl->list[sl->idx] = 0; break; @@ -3269,11 +3317,19 @@ decode_switches (int argc, const char **argv, int env) bad = 1; } else - *(unsigned int *) cs->value_ptr = i; + { + *(unsigned int *) cs->value_ptr = i; + if (cs->origin) + *cs->origin = origin; + } } else - *(unsigned int *) cs->value_ptr - = *(unsigned int *) cs->noarg_value; + { + *(unsigned int *) cs->value_ptr + = *(unsigned int *) cs->noarg_value; + if (cs->origin) + *cs->origin = origin; + } break; case floating: @@ -3282,8 +3338,12 @@ decode_switches (int argc, const char **argv, int env) coptarg = argv[optind++]; if (doit) - *(double *) cs->value_ptr = (coptarg != 0 ? atof (coptarg) - : *(double *) cs->noarg_value); + { + *(double *) cs->value_ptr = (coptarg != 0 ? atof (coptarg) + : *(double *) cs->noarg_value); + if (cs->origin) + *cs->origin = origin; + } break; } @@ -3298,9 +3358,9 @@ decode_switches (int argc, const char **argv, int env) to be returned in order, this only happens when there is a "--" argument to prevent later arguments from being options. */ while (optind < argc) - handle_non_switch_argument (argv[optind++], env); + handle_non_switch_argument (argv[optind++], origin); - if (bad && !env) + if (bad && origin == o_command) print_usage (bad); /* If there are any options that need to be decoded do it now. */ @@ -3309,9 +3369,6 @@ decode_switches (int argc, const char **argv, int env) /* Perform any special switch handling. */ run_silent = silent_flag; - - /* Construct the list of include directories to search. */ - construct_include_path (include_dirs ? include_dirs->list : NULL); } /* Decode switches from environment variable ENVAR (which is LEN chars long). @@ -3319,8 +3376,8 @@ decode_switches (int argc, const char **argv, int env) dash to the first word if it lacks one, and passing the vector to decode_switches. */ -void -decode_env_switches (const char *envar, size_t len) +static void +decode_env_switches (const char *envar, size_t len, enum variable_origin origin) { char *varref = alloca (2 + len + 2); char *value, *p, *buf; @@ -3382,7 +3439,7 @@ decode_env_switches (const char *envar, size_t len) argv[1] = buf; /* Parse those words. */ - decode_switches (argc, argv, 1); + decode_switches (argc, argv, origin); } /* Quote the string IN so that it will be interpreted as a single word with @@ -3407,11 +3464,11 @@ quote_for_env (char *out, const char *in) } /* Define the MAKEFLAGS and MFLAGS variables to reflect the settings of the - command switches. Include options with args if ALL is nonzero. + command switches. Always include options with args. Don't include options with the 'no_makefile' flag set if MAKEFILE. */ -static struct variable * -define_makeflags (int all, int makefile) +struct variable * +define_makeflags (int makefile) { const char ref[] = "MAKEOVERRIDES"; const char posixref[] = "-*-command-variables-*-"; @@ -3467,7 +3524,7 @@ define_makeflags (int all, int makefile) case flag: case flag_off: if ((!*(int *) cs->value_ptr) == (cs->type == flag_off) - && (cs->default_value == 0 + && (cs->default_value == NULL || cs->specified || *(int *) cs->value_ptr != *(int *) cs->default_value)) ADD_FLAG (0, 0); break; @@ -3596,25 +3653,24 @@ define_makeflags (int all, int makefile) p = mempcpy (p, evalref, CSTRLEN (evalref)); } - if (all) - { - /* If there are any overrides to add, write a reference to - $(MAKEOVERRIDES), which contains command-line variable definitions. - Separate the variables from the switches with a "--" arg. */ + { + /* If there are any overrides to add, write a reference to + $(MAKEOVERRIDES), which contains command-line variable definitions. + Separate the variables from the switches with a "--" arg. */ - const char *r = posix_pedantic ? posixref : ref; - size_t l = strlen (r); - v = lookup_variable (r, l); + const char *r = posix_pedantic ? posixref : ref; + size_t l = strlen (r); + v = lookup_variable (r, l); - if (v && v->value && v->value[0] != '\0') - { - p = stpcpy (p, " -- "); - *(p++) = '$'; - *(p++) = '('; - p = mempcpy (p, r, l); - *(p++) = ')'; - } - } + if (v && v->value && v->value[0] != '\0') + { + p = stpcpy (p, " -- "); + *(p++) = '$'; + *(p++) = '('; + p = mempcpy (p, r, l); + *(p++) = ')'; + } + } /* If there is a leading dash, omit it. */ if (flagstring[0] == '-') @@ -3632,6 +3688,19 @@ define_makeflags (int all, int makefile) return v; } + +/* Return 1 if the working directory change message should be printed. + Otherwise, return 0. */ +int +should_print_dir (void) +{ + if (print_directory_flag >= 0) + return print_directory_flag; + + /* If the user didn't specify any print-directory options, compute the + default setting: disable under -s / print in sub-makes and under -C. */ + return !silent_flag && (makelevel > 0 || directories != NULL); +} /* Print version information. */ @@ -3659,7 +3728,7 @@ print_version (void) year, and none of the rest of it should be translated (including the word "Copyright"), so it hardly seems worth it. */ - printf ("%sCopyright (C) 1988-2022 Free Software Foundation, Inc.\n", + printf ("%sCopyright (C) 1988-2023 Free Software Foundation, Inc.\n", precede); printf (_("%sLicense GPLv3+: GNU GPL version 3 or later \n\ diff --git a/src/makeint.h b/src/makeint.h index c726abe..db89631 100644 --- a/src/makeint.h +++ b/src/makeint.h @@ -1,5 +1,5 @@ /* Miscellaneous global declarations and portability cruft for GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -18,28 +18,6 @@ this program. If not, see . */ using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h (which it would do because makeint.h was found in $srcdir). */ #include -#undef HAVE_CONFIG_H -#define HAVE_CONFIG_H 1 - -/* Specify we want GNU source code. This must be defined before any - system headers are included. */ - -#define _GNU_SOURCE 1 - -/* AIX requires this to be the first thing in the file. */ -#if HAVE_ALLOCA_H -# include -#else -# ifdef _AIX - #pragma alloca -# else -# if !defined(__GNUC__) && !defined(WINDOWS32) -# ifndef alloca /* predefined by HP cc +Olibcalls */ -char *alloca (); -# endif -# endif -# endif -#endif /* Some versions of GCC (e.g., 10.x) set the warn_unused_result attribute on __builtin_alloca. This causes alloca(0) to fail and is not easily worked @@ -82,7 +60,6 @@ char *alloca (); # define __NO_STRING_INLINES #endif -#include #include #include #include @@ -105,6 +82,17 @@ char *alloca (); extern int errno; #endif +/* Define macros specifying which OS we are building for. */ +#if __gnu_hurd__ +# define MK_OS_HURD 1 +#endif +#if __CYGWIN__ +# define MK_OS_CYGWIN 1 +#endif +#if defined(__MVS__) +# define MK_OS_ZOS 1 +#endif + #ifdef __VMS /* In strict ANSI mode, VMS compilers should not be defining the VMS macro. Define it here instead of a bulk edit for the correct code. @@ -251,8 +239,6 @@ extern int vms_unix_simulation; # ifdef HAVE_STRING_H # include # define ANSI_STRING 1 -# else -# include # endif # ifdef HAVE_MEMORY_H # include @@ -296,6 +282,10 @@ char *strerror (int errnum); # include #endif +#if HAVE_STRINGS_H +# include /* Needed for strcasecmp / strncasecmp. */ +#endif + #if defined _MSC_VER || defined __MINGW32__ # define MK_PRI64_PREFIX "I64" #else @@ -406,7 +396,9 @@ extern int unixy_shell; # endif /* Include only the minimal stuff from windows.h. */ -# define WIN32_LEAN_AND_MEAN +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# endif #endif /* WINDOWS32 */ /* ALL_SET() evaluates the second argument twice. */ @@ -414,6 +406,7 @@ extern int unixy_shell; #define NONE_SET(_v,_m) (! ANY_SET ((_v),(_m))) #define ALL_SET(_v,_m) (((_v)&(_m)) == (_m)) +/* Bitmasks for the STOPCHAR array. */ #define MAP_NUL 0x0001 #define MAP_BLANK 0x0002 /* space, TAB */ #define MAP_NEWLINE 0x0004 @@ -463,14 +456,13 @@ extern int unixy_shell; # define MAP_PATHSEP MAP_SEMI #elif PATH_SEPARATOR_CHAR == ',' # define MAP_PATHSEP MAP_COMMA + #else # error "Unknown PATH_SEPARATOR_CHAR" #endif #define STOP_SET(_v,_m) ANY_SET(stopchar_map[(unsigned char)(_v)],(_m)) -/* True if C is a directory separator on the current system. */ -#define ISDIRSEP(c) STOP_SET((c),MAP_DIRSEP) /* True if C is whitespace but not newline. */ #define ISBLANK(c) STOP_SET((c),MAP_BLANK) /* True if C is whitespace including newlines. */ @@ -480,6 +472,18 @@ extern int unixy_shell; /* Move S past all whitespace (including newlines). */ #define NEXT_TOKEN(s) while (ISSPACE (*(s))) ++(s) +/* True if C is a directory separator on the current system. */ +#define ISDIRSEP(c) STOP_SET((c),MAP_DIRSEP) + +/* True if S starts with a drive specifier. */ +#if defined(HAVE_DOS_PATHS) +# define HAS_DRIVESPEC(_s) ((((_s)[0] >= 'a' && (_s)[0] <= 'z') \ + || ((_s)[0] >= 'A' && (_s)[0] <= 'Z')) \ + && (_s)[1] == ':') +#else +# define HAS_DRIVESPEC(_s) 0 +#endif + /* We can't run setrlimit when using posix_spawn. */ #if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT) && !defined(USE_POSIX_SPAWN) # define SET_STACK_SIZE @@ -558,7 +562,12 @@ void out_of_memory (void) NORETURN; #define ONS(_t,_a,_f,_n,_s) _t((_a), INTSTR_LENGTH + strlen (_s), \ (_f), (_n), (_s)) -void decode_env_switches (const char*, size_t line); +enum variable_origin; +struct variable; + +void reset_makeflags (enum variable_origin origin); +struct variable *define_makeflags (int makefile); +int should_print_dir (void); void temp_stdin_unlink (void); void die (int) NORETURN; void pfatal_with_name (const char *) NORETURN; @@ -693,9 +702,6 @@ char *getwd (void); # define strcasecmp stricmp # elif HAVE_STRCMPI # define strcasecmp strcmpi -# else -/* Create our own, in misc.c */ -int strcasecmp (const char *s1, const char *s2); # endif #endif @@ -704,22 +710,9 @@ int strcasecmp (const char *s1, const char *s2); # define strncasecmp strnicmp # elif HAVE_STRNCMPI # define strncasecmp strncmpi -# else -/* Create our own, in misc.c */ -int strncasecmp (const char *s1, const char *s2, size_t n); # endif #endif -#if !HAVE_MEMPCPY -/* Create our own, in misc.c */ -void *mempcpy (void *dest, const void *src, size_t n); -#endif - -#if !HAVE_STPCPY -/* Create our own, in misc.c */ -char *stpcpy (char *dest, const char *src); -#endif - #define OUTPUT_SYNC_NONE 0 #define OUTPUT_SYNC_LINE 1 #define OUTPUT_SYNC_TARGET 2 @@ -736,7 +729,7 @@ extern unsigned short stopchar_map[]; extern int just_print_flag, run_silent, ignore_errors_flag, keep_going_flag; extern int print_data_base_flag, question_flag, touch_flag, always_make_flag; extern int env_overrides, no_builtin_rules_flag, no_builtin_variables_flag; -extern int print_version_flag, print_directory, check_symlink_flag; +extern int print_version_flag, check_symlink_flag; extern int warn_undefined_variables_flag, posix_pedantic; extern int not_parallel, second_expansion, clock_skew_detected; extern int rebuilding_makefiles, one_shell, output_sync, verify_flag; @@ -755,6 +748,16 @@ extern int batch_mode_shell; #define RECIPEPREFIX_DEFAULT '\t' extern char cmd_prefix; +extern unsigned int no_intermediates; + +#if HAVE_MKFIFO +/* It seems that mkfifo() is not working correctly, or at least not the way + GNU make wants it to work, on GNU/Hurd and Cygwin so don't use it there. */ +# if !defined(JOBSERVER_USE_FIFO) && !MK_OS_HURD && !MK_OS_CYGWIN +# define JOBSERVER_USE_FIFO 1 +# endif +#endif + #define JOBSERVER_AUTH_OPT "jobserver-auth" extern char *jobserver_auth; diff --git a/src/misc.c b/src/misc.c index 8264fe9..eb14f40 100644 --- a/src/misc.c +++ b/src/misc.c @@ -1,5 +1,5 @@ /* Miscellaneous generic support functions for GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -20,8 +20,7 @@ this program. If not, see . */ #include "os.h" #include "debug.h" -/* GNU make no longer supports pre-ANSI89 environments. */ - +#include #include #ifdef WINDOWS32 @@ -29,6 +28,11 @@ this program. If not, see . */ # include #endif +#ifdef __EMX__ +# define INCL_DOS +# include +#endif + #ifdef HAVE_FCNTL_H # include #else @@ -159,7 +163,7 @@ collapse_continuations (char *line) if (i & 1) { /* Backslash/newline handling: - In traditional GNU make all trailing whitespace, consecutive + In traditional GNU Make all trailing whitespace, consecutive backslash/newlines, and any leading non-newline whitespace on the next line is reduced to a single space. In POSIX, each backslash/newline and is replaced by a space. */ @@ -650,11 +654,19 @@ get_tmppath () # ifdef HAVE_MKTEMP path = get_tmptemplate (); if (*mktemp (path) == '\0') - pfatal_with_name ("mktemp"); + { + OSS (error, NILF, + _("cannot generate temp path from %s: %s"), path, strerror (errno)); + return NULL; + } # else path = xmalloc (L_tmpnam + 1); if (tmpnam (path) == NULL) - pfatal_with_name ("tmpnam"); + { + OS (error, NILF, + _("cannot generate temp name: %s"), strerror (errno)); + return NULL; + } # endif return path; @@ -662,7 +674,9 @@ get_tmppath () #endif /* Generate a temporary file and return an fd for it. If name is NULL then - the temp file is anonymous and will be deleted when the process exits. */ + the temp file is anonymous and will be deleted when the process exits. If + name is not null then *name will point to an allocated buffer, or set to + NULL on failure. */ int get_tmpfd (char **name) { @@ -670,9 +684,11 @@ get_tmpfd (char **name) char *tmpnm; mode_t mask; - /* If there's an os-specific way to get an anoymous temp file use it. */ - if (!name) + if (name) + *name = NULL; + else { + /* If there's an os-specific way to get an anonymous temp file use it. */ fd = os_anontmp (); if (fd >= 0) return fd; @@ -689,13 +705,19 @@ get_tmpfd (char **name) EINTRLOOP (fd, mkstemp (tmpnm)); #else tmpnm = get_tmppath (); + if (!tmpnm) + return -1; /* Can't use mkstemp(), but try to guard against a race condition. */ EINTRLOOP (fd, open (tmpnm, O_CREAT|O_EXCL|O_RDWR, 0600)); #endif if (fd < 0) - OSS (fatal, NILF, - _("create temporary file %s: %s"), tmpnm, strerror (errno)); + { + OSS (error, NILF, + _("cannot create temporary file %s: %s"), tmpnm, strerror (errno)); + free (tmpnm); + return -1; + } if (name) *name = tmpnm; @@ -704,8 +726,8 @@ get_tmpfd (char **name) int r; EINTRLOOP (r, unlink (tmpnm)); if (r < 0) - OSS (fatal, NILF, - _("unlink temporary file %s: %s"), tmpnm, strerror (errno)); + OSS (error, NILF, + _("cannot unlink temporary file %s: %s"), tmpnm, strerror (errno)); free (tmpnm); } @@ -715,8 +737,8 @@ get_tmpfd (char **name) } /* Return a FILE* for a temporary file, opened in the safest way possible. - Set name to point to an allocated buffer containing the name of the file. - Note, this cannot be NULL! */ + Set name to point to an allocated buffer containing the name of the file, + or NULL on failure. Note, name cannot be NULL! */ FILE * get_tmpfile (char **name) { @@ -725,26 +747,37 @@ get_tmpfile (char **name) FILE *file; #if defined(HAVE_FDOPEN) - int fd = get_tmpfd (name); + int fd; + assert (name); + fd = get_tmpfd (name); + if (fd < 0) + return NULL; + assert (*name); ENULLLOOP (file, fdopen (fd, tmpfile_mode)); if (file == NULL) - OSS (fatal, NILF, + OSS (error, NILF, _("fdopen: temporary file %s: %s"), *name, strerror (errno)); #else /* Preserve the current umask, and set a restrictive one for temp files. */ mode_t mask = umask (0077); - int err; + assert (name); *name = get_tmppath (); + if (!*name) + return NULL; /* Although this fopen is insecure, it is executed only on non-fdopen platforms, which should be a rarity nowadays. */ ENULLLOOP (file, fopen (*name, tmpfile_mode)); if (file == NULL) - OSS (fatal, NILF, - _("fopen: temporary file %s: %s"), *name, strerror (errno)); + { + OSS (error, NILF, + _("fopen: temporary file %s: %s"), *name, strerror (errno)); + free (*name); + *name = NULL; + } umask (mask); #endif @@ -753,6 +786,40 @@ get_tmpfile (char **name) } +#if HAVE_TTYNAME && defined(__EMX__) +/* OS/2 kLIBC has a declaration for ttyname(), so configure finds it. + But, it is not implemented! Roll our own. */ +char *ttyname (int fd) +{ + ULONG type; + ULONG attr; + ULONG rc; + + rc = DosQueryHType (fd, &type, &attr); + if (rc) + { + errno = EBADF; + return NULL; + } + + if (type == HANDTYPE_DEVICE) + { + if (attr & 3) /* 1 = KBD$, 2 = SCREEN$ */ + return (char *) "/dev/con"; + + if (attr & 4) /* 4 = NUL */ + return (char *) "/dev/nul"; + + if (attr & 8) /* 8 = CLOCK$ */ + return (char *) "/dev/clock$"; + } + + errno = ENOTTY; + return NULL; +} +#endif + + #if !HAVE_STRCASECMP && !HAVE_STRICMP && !HAVE_STRCMPI /* If we don't have strcasecmp() (from POSIX), or anything that can substitute for it, define our own version. */ diff --git a/src/mkconfig.h b/src/mkconfig.h index ac3a7bf..02207d0 100644 --- a/src/mkconfig.h +++ b/src/mkconfig.h @@ -1,6 +1,6 @@ /* src/mkconfig.h. Generated from mkconfig.h.in by configure. */ /* Autoconf values for use on non-POSIX systems. -Copyright (C) 2022 Free Software Foundation, Inc. +Copyright (C) 2022-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -25,7 +25,7 @@ this program. If not, see . */ #define PACKAGE_NAME "GNU Make" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "GNU Make 4.4" +#define PACKAGE_STRING "GNU Make 4.4.1" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "make" @@ -34,4 +34,4 @@ this program. If not, see . */ #define PACKAGE_URL "https://www.gnu.org/software/make/" /* Define to the version of this package. */ -#define PACKAGE_VERSION "4.4" +#define PACKAGE_VERSION "4.4.1" diff --git a/src/mkcustom.h b/src/mkcustom.h new file mode 100644 index 0000000..035c50b --- /dev/null +++ b/src/mkcustom.h @@ -0,0 +1,65 @@ +/* Miscellaneous global declarations and portability cruft for GNU Make. +Copyright (C) 2023 Free Software Foundation, Inc. +This file is part of GNU Make. + +GNU Make 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. + +GNU Make 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 . */ + +/* + This file is included at the end of config.h + + That means it's included _everywhere_ as the first thing, + INCLUDING content imported from gnulib. BE AWARE!! +*/ + +#undef HAVE_CONFIG_H +#define HAVE_CONFIG_H 1 + +/* Specify we want GNU source code. This must be defined before any + system headers are included. */ + +#define _GNU_SOURCE 1 + +/* AIX requires this to be the first thing in the file. */ +#if HAVE_ALLOCA_H +# include +#else +# ifdef _AIX + #pragma alloca +# else +# if !defined(__GNUC__) && !defined(WINDOWS32) +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +#endif + +/* Declare function prototypes for src/misc.c functions if needed. */ + +#include + +#if !HAVE_STRCASECMP && !HAVE_STRICMP && !HAVE_STRCMPI +int strcasecmp (const char *s1, const char *s2); +#endif + +#if !HAVE_STRNCASECMP && !HAVE_STRNICMP && !HAVE_STRNCMPI +int strncasecmp (const char *s1, const char *s2, size_t n); +#endif + +#if !HAVE_MEMPCPY +void *mempcpy (void *dest, const void *src, size_t n); +#endif + +#if !HAVE_STPCPY +char *stpcpy (char *dest, const char *src); +#endif diff --git a/src/os.h b/src/os.h index fe0a997..05777a6 100644 --- a/src/os.h +++ b/src/os.h @@ -1,5 +1,5 @@ /* Declarations for operating system interfaces for GNU Make. -Copyright (C) 2016-2022 Free Software Foundation, Inc. +Copyright (C) 2016-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/output.c b/src/output.c index 43eb2f0..1ef3e60 100644 --- a/src/output.c +++ b/src/output.c @@ -1,5 +1,5 @@ -/* Output to stdout / stderr for GNU make -Copyright (C) 2013-2022 Free Software Foundation, Inc. +/* Output to stdout / stderr for GNU Make +Copyright (C) 2013-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -18,7 +18,7 @@ this program. If not, see . */ #include "os.h" #include "output.h" -/* GNU make no longer supports pre-ANSI89 environments. */ +/* GNU Make no longer supports pre-ANSI89 environments. */ #include #include @@ -248,6 +248,9 @@ setup_tmpfile (struct output *out) /* If we failed to create a temp file, disable output sync going forward. */ error: + O (error, NILF, + _("cannot open output-sync lock file, suppressing output-sync.")); + output_close (out); output_sync = OUTPUT_SYNC_NONE; osync_clear (); @@ -282,7 +285,8 @@ output_dump (struct output *out) } /* Log the working directory for this dump. */ - if (print_directory && output_sync != OUTPUT_SYNC_RECURSE) + + if (output_sync != OUTPUT_SYNC_RECURSE && should_print_dir ()) traced = log_working_directory (1); if (outfd_not_empty) @@ -366,7 +370,7 @@ output_start (void) /* If we're not syncing this output per-line or per-target, make sure we emit the "Entering..." message where appropriate. */ if (output_sync == OUTPUT_SYNC_NONE || output_sync == OUTPUT_SYNC_RECURSE) - if (! stdio_traced && print_directory) + if (! stdio_traced && should_print_dir ()) stdio_traced = log_working_directory (1); } diff --git a/src/output.h b/src/output.h index 5957605..50e3259 100644 --- a/src/output.h +++ b/src/output.h @@ -1,5 +1,5 @@ -/* Output to stdout / stderr for GNU make -Copyright (C) 2013-2022 Free Software Foundation, Inc. +/* Output to stdout / stderr for GNU Make +Copyright (C) 2013-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/posixos.c b/src/posixos.c index 44aeb34..0cc0a58 100644 --- a/src/posixos.c +++ b/src/posixos.c @@ -1,5 +1,5 @@ /* POSIX-based operating system interface for GNU Make. -Copyright (C) 2016-2022 Free Software Foundation, Inc. +Copyright (C) 2016-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -24,6 +24,10 @@ this program. If not, see . */ #elif defined(HAVE_SYS_FILE_H) # include #endif +#if MK_OS_ZOS +/* FIXME: HAVE_PSELECT path hangs on z/OS */ +#undef HAVE_PSELECT +#endif #if !defined(FD_OK) # define FD_OK(_f) 1 @@ -132,6 +136,9 @@ set_blocking (int fd, int blocking) if (r < 0) pfatal_with_name ("fcntl(O_NONBLOCK)"); } +#else + (void) fd; + (void) blocking; #endif } @@ -140,8 +147,8 @@ jobserver_setup (int slots, const char *style) { int r; -#if HAVE_MKFIFO - if (style == NULL || strcmp (style, "fifo") == 0) +#if JOBSERVER_USE_FIFO + if (!style || strcmp (style, "fifo") == 0) { /* Unfortunately glibc warns about uses of mktemp even though we aren't using it in dangerous way here. So avoid this by generating our own @@ -167,12 +174,12 @@ jobserver_setup (int slots, const char *style) hang until the write side is open. */ EINTRLOOP (job_fds[0], open (fifo_name, O_RDONLY|O_NONBLOCK)); if (job_fds[0] < 0) - OSS (fatal, NILF, _("Cannot open jobserver %s: %s"), + OSS (fatal, NILF, _("cannot open jobserver %s: %s"), fifo_name, strerror (errno)); EINTRLOOP (job_fds[1], open (fifo_name, O_WRONLY)); if (job_fds[0] < 0) - OSS (fatal, NILF, _("Cannot open jobserver %s: %s"), + OSS (fatal, NILF, _("cannot open jobserver %s: %s"), fifo_name, strerror (errno)); js_type = js_fifo; @@ -183,7 +190,7 @@ jobserver_setup (int slots, const char *style) if (js_type == js_none) { if (style && strcmp (style, "pipe") != 0) - OS (fatal, NILF, _("Unknown jobserver auth style '%s'"), style); + OS (fatal, NILF, _("unknown jobserver auth style '%s'"), style); EINTRLOOP (r, pipe (job_fds)); if (r < 0) @@ -229,14 +236,19 @@ jobserver_parse_auth (const char *auth) EINTRLOOP (job_fds[0], open (fifo_name, O_RDONLY)); if (job_fds[0] < 0) - OSS (fatal, NILF, - _("Cannot open jobserver %s: %s"), fifo_name, strerror (errno)); + { + OSS (error, NILF, + _("cannot open jobserver %s: %s"), fifo_name, strerror (errno)); + return 0; + } EINTRLOOP (job_fds[1], open (fifo_name, O_WRONLY)); - if (job_fds[0] < 0) - OSS (fatal, NILF, - _("Cannot open jobserver %s: %s"), fifo_name, strerror (errno)); - + if (job_fds[1] < 0) + { + OSS (error, NILF, + _("cannot open jobserver %s: %s"), fifo_name, strerror (errno)); + return 0; + } js_type = js_fifo; } /* If not, it must be a simple pipe. */ @@ -612,7 +624,7 @@ jobserver_acquire (int timeout) go back and reap_children(), and try again. */ errno = saved_errno; - if (errno != EINTR && errno != EBADF) + if (errno != EINTR && errno != EBADF && errno != EAGAIN) pfatal_with_name (_("read jobs pipe")); if (errno == EBADF) @@ -867,12 +879,15 @@ os_anontmp () FILE *tfile; ENULLLOOP (tfile, tmpfile ()); if (!tfile) - pfatal_with_name ("tmpfile"); + { + OS (error, NILF, "tmpfile: %s", strerror (errno)); + return -1; + } umask (mask); EINTRLOOP (fd, dup (fileno (tfile))); if (fd < 0) - pfatal_with_name ("dup"); + OS (error, NILF, "dup: %s", strerror (errno)); fclose (tfile); } #endif diff --git a/src/read.c b/src/read.c index 0743124..b0fc1e1 100644 --- a/src/read.c +++ b/src/read.c @@ -1,5 +1,5 @@ /* Reading and parsing of makefiles for GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -192,15 +192,7 @@ read_all_makefiles (const char **makefiles) char *name, *p; size_t length; - { - /* Turn off --warn-undefined-variables while we expand MAKEFILES. */ - int save = warn_undefined_variables_flag; - warn_undefined_variables_flag = 0; - - value = allocated_variable_expand ("$(MAKEFILES)"); - - warn_undefined_variables_flag = save; - } + value = allocated_variable_expand ("$(MAKEFILES)"); /* Set NAME to the start of next token and LENGTH to its length. MAKEFILES is updated for finding remaining tokens. */ @@ -373,8 +365,9 @@ eval_makefile (const char *filename, unsigned short flags) /* If the makefile wasn't found and it's either a makefile from the 'MAKEFILES' variable or an included makefile, search the included makefile search path for this makefile. */ - if (ebuf.fp == NULL && deps->error == ENOENT && (flags & RM_INCLUDED) - && *filename != '/' && include_directories) + if (ebuf.fp == NULL && deps->error == ENOENT && include_directories + && ANY_SET (flags, RM_INCLUDED) + && !HAS_DRIVESPEC (filename) && !ISDIRSEP (*filename)) { const char **dir; for (dir = include_directories; *dir != NULL; ++dir) @@ -403,6 +396,7 @@ eval_makefile (const char *filename, unsigned short flags) deps->file = enter_file (filename); filename = deps->file->name; deps->flags = flags; + deps->file->is_explicit = 1; free (expanded); @@ -1140,20 +1134,29 @@ eval (struct ebuffer *ebuf, int set_default) p2 = next_token (variable_buffer); - /* If the word we're looking at is EOL, see if there's _anything_ - on the line. If not, a variable expanded to nothing, so ignore - it. If so, we can't parse this line so punt. */ + /* If we're at EOL we didn't find a separator so we don't know what + kind of line this is. */ if (wtype == w_eol) { + /* Ignore an empty line. */ if (*p2 == '\0') continue; - /* There's no need to be ivory-tower about this: check for - one of the most common bugs found in makefiles... */ + /* Check for spaces instead of TAB. */ if (cmd_prefix == '\t' && strneq (line, " ", 8)) O (fatal, fstart, _("missing separator (did you mean TAB instead of 8 spaces?)")); - else - O (fatal, fstart, _("missing separator")); + + /* Check for conditionals without whitespace afterward. + We don't check ifdef/ifndef because there's no real way to miss + whitespace there. */ + p2 = next_token (line); + if (strneq (p2, "if", 2) && + ((strneq (&p2[2], "neq", 3) && !STOP_SET (p2[5], MAP_BLANK)) + || (strneq (&p2[2], "eq", 2) && !STOP_SET (p2[4], MAP_BLANK)))) + O (fatal, fstart, _("missing separator (ifeq/ifneq must be followed by whitespace)")); + + /* No idea... */ + O (fatal, fstart, _("missing separator")); } { diff --git a/src/remake.c b/src/remake.c index 4ce3d2a..fe67ab2 100644 --- a/src/remake.c +++ b/src/remake.c @@ -1,5 +1,5 @@ /* Basic dependency engine for GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -38,7 +38,7 @@ this program. If not, see . */ #include #include #if defined(_MSC_VER) && _MSC_VER > 1200 -/* VC7 or later supprots _stat64 to access 64-bit file size. */ +/* VC7 or later supports _stat64 to access 64-bit file size. */ #define STAT _stat64 #else #define STAT stat @@ -109,6 +109,7 @@ check_also_make (const struct file *file) enum update_status update_goal_chain (struct goaldep *goaldeps) { + unsigned long last_cmd_count = 0; int t = touch_flag, q = question_flag, n = just_print_flag; enum update_status status = us_none; @@ -134,9 +135,12 @@ update_goal_chain (struct goaldep *goaldeps) start_waiting_jobs (); - /* Wait for a child to die. */ + /* Check for exited children. If no children have finished since the + last time we looked, then block until one exits. If some have + exited don't block, so we can possibly do more work. */ - reap_children (1, 0); + reap_children (last_cmd_count == command_count, 0); + last_cmd_count = command_count; lastgoal = 0; gu = goals; @@ -491,8 +495,6 @@ update_file_1 (struct file *file, unsigned int depth) fail. */ file->no_diag = file->dontcare; - ++depth; - /* Notice recursive update of the same file. */ start_updating (file); @@ -500,6 +502,9 @@ update_file_1 (struct file *file, unsigned int depth) remember this one to turn off updating. */ ofile = file; + /* Increase the depth for reporting how we build the file. */ + ++depth; + /* Looking at the file's modtime beforehand allows the possibility that its name may be changed by a VPATH search, and thus it may not need an implicit rule. If this were not done, the file @@ -734,16 +739,18 @@ update_file_1 (struct file *file, unsigned int depth) finish_updating (file); finish_updating (ofile); - DBF (DB_VERBOSE, _("Finished prerequisites of target file '%s'.\n")); + /* We've decided what we need to do to build the file. */ + --depth; if (running) { set_command_state (file, cs_deps_running); - --depth; DBF (DB_VERBOSE, _("The prerequisites of '%s' are being made.\n")); return us_success; } + DBF (DB_VERBOSE, _("Finished prerequisites of target file '%s'.\n")); + /* If any dependency failed, give up now. */ if (dep_status) @@ -752,8 +759,6 @@ update_file_1 (struct file *file, unsigned int depth) file->update_status = dep_status == us_none ? us_failed : dep_status; notice_finished_file (file); - --depth; - DBF (DB_VERBOSE, _("Giving up on target file '%s'.\n")); if (depth == 0 && keep_going_flag @@ -828,16 +833,13 @@ update_file_1 (struct file *file, unsigned int depth) if (fmt) { - print_spaces (depth); + print_spaces (depth+1); printf (fmt, dep_name (d), file->name); fflush (stdout); } } } - /* Here depth returns to the value it had when we were called. */ - depth--; - if (file->double_colon && file->deps == 0) { must_make = 1; @@ -871,7 +873,8 @@ update_file_1 (struct file *file, unsigned int depth) /* Since make has not created this file, make should not remove it, even if the file is intermediate. */ - file->secondary = 1; + if (!file->notintermediate && no_intermediates == 0) + file->secondary = 1; notice_finished_file (file); @@ -957,7 +960,7 @@ notice_finished_file (struct file *file) we don't want to do the touching. */ unsigned int i; for (i = 0; i < file->cmds->ncommand_lines; ++i) - if (!(file->cmds->lines_flags[i] & COMMANDS_RECURSE)) + if (NONE_SET (file->cmds->lines_flags[i], COMMANDS_RECURSE)) goto have_nonrecursing; } else @@ -998,7 +1001,7 @@ notice_finished_file (struct file *file) if ((question_flag || just_print_flag || touch_flag) && file->cmds) { for (i = file->cmds->ncommand_lines; i > 0; --i) - if (! (file->cmds->lines_flags[i-1] & COMMANDS_RECURSE)) + if (NONE_SET (file->cmds->lines_flags[i-1], COMMANDS_RECURSE)) break; } @@ -1083,7 +1086,6 @@ check_dep (struct file *file, unsigned int depth, struct dep *d; enum update_status dep_status = us_success; - ++depth; start_updating (file); /* We might change file if we find a different one via vpath; @@ -1181,7 +1183,7 @@ check_dep (struct file *file, unsigned int depth, d->file->parent = file; maybe_make = *must_make_ptr; - new = check_dep (d->file, depth, this_mtime, &maybe_make); + new = check_dep (d->file, depth+1, this_mtime, &maybe_make); if (new > dep_status) dep_status = new; @@ -1340,7 +1342,7 @@ f_mtime (struct file *file, int search) if (ar_name (file->name)) { /* This file is an archive-member reference. */ - + FILE_TIMESTAMP memmtime; char *arname, *memname; struct file *arfile; time_t member_date; @@ -1348,6 +1350,9 @@ f_mtime (struct file *file, int search) /* Find the archive's name. */ ar_parse_name (file->name, &arname, &memname); + /* Find the mtime of the member file (it might not exist). */ + memmtime = name_mtime (memname); + /* Find the modification time of the archive itself. Also allow for its name to be changed via VPATH search. */ arfile = lookup_file (arname); @@ -1391,9 +1396,16 @@ f_mtime (struct file *file, int search) return NONEXISTENT_MTIME; member_date = ar_member_date (file->hname); - mtime = (member_date == (time_t) -1 - ? NONEXISTENT_MTIME - : file_timestamp_cons (file->hname, member_date, 0)); + + if (member_date == (time_t) -1 + || (memmtime != NONEXISTENT_MTIME + && (time_t) FILE_TIMESTAMP_S (memmtime) > member_date)) + /* If the member file exists and is newer than the member in the + archive, pretend it's nonexistent. This means the member file was + updated but not added to the archive yet. */ + mtime = NONEXISTENT_MTIME; + else + mtime = file_timestamp_cons (file->hname, member_date, 0); } else #endif @@ -1466,14 +1478,6 @@ f_mtime (struct file *file, int search) FILE_TIMESTAMP adjustment = FAT_ADJ_OFFSET << FILE_TIMESTAMP_LO_BITS; if (ORDINARY_MTIME_MIN + adjustment <= adjusted_mtime) adjusted_mtime -= adjustment; -#elif defined(__EMX__) - /* FAT filesystems round time to the nearest even second! - Allow for any file (NTFS or FAT) to perhaps suffer from this - brain damage. */ - FILE_TIMESTAMP adjustment = (((FILE_TIMESTAMP_S (adjusted_mtime) & 1) == 0 - && FILE_TIMESTAMP_NS (adjusted_mtime) == 0) - ? (FILE_TIMESTAMP) 1 << FILE_TIMESTAMP_LO_BITS - : 0); #endif /* If the file's time appears to be in the future, update our diff --git a/src/remote-cstms.c b/src/remote-cstms.c index c8543f9..bc98a23 100644 --- a/src/remote-cstms.c +++ b/src/remote-cstms.c @@ -3,7 +3,7 @@ Please do not send bug reports or questions about it to the Make maintainers. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/remote-stub.c b/src/remote-stub.c index d7cc260..7815f73 100644 --- a/src/remote-stub.c +++ b/src/remote-stub.c @@ -1,5 +1,5 @@ /* Template for the remote job exportation interface to GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/rule.c b/src/rule.c index 0fc64bc..d0901f4 100644 --- a/src/rule.c +++ b/src/rule.c @@ -1,5 +1,5 @@ /* Pattern and suffix rule internals for GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -346,7 +346,7 @@ convert_to_pattern (void) /* POSIX says that suffix rules can't have prerequisites. In POSIX mode, don't make this a suffix rule. Previous versions - of GNU make did treat this as a suffix rule and ignored the + of GNU Make did treat this as a suffix rule and ignored the prerequisites, which is bad. In the future we'll do the same as POSIX, but for now preserve the old behavior and warn about it. */ if (f->deps != 0) diff --git a/src/rule.h b/src/rule.h index cadac3f..03e2e3f 100644 --- a/src/rule.h +++ b/src/rule.h @@ -1,5 +1,5 @@ /* Definitions for using pattern rules in GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/shuffle.c b/src/shuffle.c index d1a52a0..d57acef 100644 --- a/src/shuffle.c +++ b/src/shuffle.c @@ -1,5 +1,5 @@ /* Provide prerequisite shuffle support. -Copyright (C) 2022 Free Software Foundation, Inc. +Copyright (C) 2022-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/signame.c b/src/signame.c index d4374a3..50134c4 100644 --- a/src/signame.c +++ b/src/signame.c @@ -1,5 +1,5 @@ /* Convert between signal names and numbers. -Copyright (C) 1990-2022 Free Software Foundation, Inc. +Copyright (C) 1990-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/strcache.c b/src/strcache.c index f081ea7..baa3a9f 100644 --- a/src/strcache.c +++ b/src/strcache.c @@ -1,5 +1,5 @@ /* Constant string caching for GNU Make. -Copyright (C) 2006-2022 Free Software Foundation, Inc. +Copyright (C) 2006-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -53,7 +53,7 @@ static unsigned long total_size = 0; /* Add a new buffer to the cache. Add it at the front to reduce search time. This can also increase the overhead, since it's less likely that older - buffers will be filled in. However, GNU make has so many smaller strings + buffers will be filled in. However, GNU Make has so many smaller strings that this doesn't seem to be much of an issue in practice. */ static struct strcache * diff --git a/src/variable.c b/src/variable.c index 0bd9963..ec87ce9 100644 --- a/src/variable.c +++ b/src/variable.c @@ -1,5 +1,5 @@ /* Internals of variables for GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -472,7 +472,7 @@ lookup_variable (const char *name, size_t length) const struct variable_set *set = setlist->set; struct variable *v; - v = (struct variable *) hash_find_item ((struct hash_table *) &set->table, &var_key); + v = hash_find_item ((struct hash_table *) &set->table, &var_key); if (v && (!is_parent || !v->private_var)) return v->special ? lookup_special_var (v) : v; @@ -538,6 +538,29 @@ lookup_variable (const char *name, size_t length) return 0; } +/* Lookup a variable whose name is a string starting at NAME + and with LENGTH chars. NAME need not be null-terminated. + Returns address of the 'struct variable' containing all info + on the variable, or nil if no such variable is defined. */ + +struct variable * +lookup_variable_for_file (const char *name, size_t length, struct file *file) +{ + struct variable *var; + struct variable_set_list *savev; + + if (file == NULL) + return lookup_variable (name, length); + + savev = current_variable_set_list; + current_variable_set_list = file->variables; + + var = lookup_variable (name, length); + + current_variable_set_list = savev; + + return var; +} /* Lookup a variable whose name is a string starting at NAME and with LENGTH chars in set SET. NAME need not be null-terminated. @@ -553,7 +576,7 @@ lookup_variable_in_set (const char *name, size_t length, var_key.name = (char *) name; var_key.length = (unsigned int) length; - return (struct variable *) hash_find_item ((struct hash_table *) &set->table, &var_key); + return hash_find_item ((struct hash_table *) &set->table, &var_key); } /* Initialize FILE's variable set list. If FILE already has a variable set @@ -905,7 +928,7 @@ define_automatic_variables (void) if (!replace || !*replace->value) replace = lookup_variable ("OS2_SHELL", 9); # else -# warning NO_CMD_DEFAULT: GNU make will not use CMD.EXE as default shell +# warning NO_CMD_DEFAULT: GNU Make will not use CMD.EXE as default shell # endif if (replace && *replace->value) @@ -1065,7 +1088,8 @@ target_environment (struct file *file, int recursive) for (s = set_list; s != 0; s = s->next) { struct variable_set *set = s->set; - int isglobal = set == &global_variable_set; + const int islocal = s == set_list; + const int isglobal = set == &global_variable_set; v_slot = (struct variable **) set->table.ht_vec; v_end = v_slot + set->table.ht_size; @@ -1075,11 +1099,17 @@ target_environment (struct file *file, int recursive) struct variable **evslot; struct variable *v = *v_slot; + if (!islocal && v->private_var) + continue; + evslot = (struct variable **) hash_find_slot (&table, v); if (HASH_VACANT (*evslot)) { - /* If we're not global, or we are and should export, add it. */ + /* We'll always add target-specific variables, since we may + discover that they should be exported later: we'll check + again below. For global variables only add them if they're + exportable. */ if (!isglobal || should_export (v)) hash_insert_at (&table, v, evslot); } @@ -1107,8 +1137,9 @@ target_environment (struct file *file, int recursive) /* If V is recursively expanded and didn't come from the environment, expand its value. If it came from the environment, it should - go back into the environment unchanged. */ - if (v->recursive && v->origin != o_env && v->origin != o_env_override) + go back into the environment unchanged... except MAKEFLAGS. */ + if (v->recursive && ((v->origin != o_env && v->origin != o_env_override) + || streq (v->name, MAKEFLAGS_NAME))) value = cp = recursively_expand_for_file (v, file); /* If this is the SHELL variable remember we already added it. */ @@ -1215,17 +1246,18 @@ target_environment (struct file *file, int recursive) } static struct variable * -set_special_var (struct variable *var) +set_special_var (struct variable *var, enum variable_origin origin) { - if (streq (var->name, RECIPEPREFIX_NAME)) + if (streq (var->name, MAKEFLAGS_NAME)) + reset_makeflags (origin); + + else if (streq (var->name, RECIPEPREFIX_NAME)) { /* The user is resetting the command introduction prefix. This has to happen immediately, so that subsequent rules are interpreted properly. */ cmd_prefix = var->value[0]=='\0' ? RECIPEPREFIX_DEFAULT : var->value[0]; } - else if (streq (var->name, MAKEFLAGS_NAME)) - decode_env_switches (STRING_SIZE_TUPLE(MAKEFLAGS_NAME)); return var; } @@ -1261,7 +1293,7 @@ do_variable_definition (const floc *flocp, const char *varname, const char *value, enum variable_origin origin, enum variable_flavor flavor, int target_var) { - const char *p; + const char *newval; char *alloc_value = NULL; struct variable *v; int append = 0; @@ -1276,7 +1308,7 @@ do_variable_definition (const floc *flocp, const char *varname, We have to allocate memory since otherwise it'll clobber the variable buffer, and we may still need that if we're looking at a target-specific variable. */ - p = alloc_value = allocated_variable_expand (value); + newval = alloc_value = allocated_variable_expand (value); break; case f_expand: { @@ -1285,16 +1317,16 @@ do_variable_definition (const floc *flocp, const char *varname, tokens to '$$' to resolve to '$' when recursively expanded. */ char *t = allocated_variable_expand (value); char *np = alloc_value = xmalloc (strlen (t) * 2 + 1); - p = t; - while (p[0] != '\0') + char *op = t; + while (op[0] != '\0') { - if (p[0] == '$') + if (op[0] == '$') *(np++) = '$'; - *(np++) = *(p++); + *(np++) = *(op++); } *np = '\0'; - p = alloc_value; free (t); + newval = alloc_value; break; } case f_shell: @@ -1302,9 +1334,10 @@ do_variable_definition (const floc *flocp, const char *varname, /* A shell definition "var != value". Expand value, pass it to the shell, and store the result in recursively-expanded var. */ char *q = allocated_variable_expand (value); - p = alloc_value = shell_result (q); + alloc_value = shell_result (q); free (q); flavor = f_recursive; + newval = alloc_value; break; } case f_conditional: @@ -1320,7 +1353,7 @@ do_variable_definition (const floc *flocp, const char *varname, case f_recursive: /* A recursive variable definition "var = value". The value is used verbatim. */ - p = value; + newval = value; break; case f_append: case f_append_value: @@ -1345,15 +1378,16 @@ do_variable_definition (const floc *flocp, const char *varname, { /* There was no old value. This becomes a normal recursive definition. */ - p = value; + newval = value; flavor = f_recursive; } else { /* Paste the old and new values together in VALUE. */ - size_t oldlen, vallen; + size_t oldlen, vallen, alloclen; const char *val; + char *cp; char *tp = NULL; val = value; @@ -1378,18 +1412,25 @@ do_variable_definition (const floc *flocp, const char *varname, } oldlen = strlen (v->value); - p = alloc_value = xmalloc (oldlen + 1 + vallen + 1); + alloclen = oldlen + 1 + vallen + 1; + cp = alloc_value = xmalloc (alloclen); if (oldlen) { - memcpy (alloc_value, v->value, oldlen); - alloc_value[oldlen] = ' '; - ++oldlen; + char *s; + if (streq (varname, MAKEFLAGS_NAME) + && (s = strstr (v->value, " -- "))) + /* We found a separator in MAKEFLAGS. Ignore variable + assignments: set_special_var() will reconstruct things. */ + cp = mempcpy (cp, v->value, s - v->value); + else + cp = mempcpy (cp, v->value, oldlen); + *(cp++) = ' '; } - memcpy (&alloc_value[oldlen], val, vallen + 1); - + memcpy (cp, val, vallen + 1); free (tp); + newval = alloc_value; } } break; @@ -1399,6 +1440,8 @@ do_variable_definition (const floc *flocp, const char *varname, abort (); } + assert (newval); + #ifdef __MSDOS__ /* Many Unix Makefiles include a line saying "SHELL=/bin/sh", but non-Unix systems don't conform to this default configuration (in @@ -1440,16 +1483,16 @@ do_variable_definition (const floc *flocp, const char *varname, char *fake_env[2]; size_t pathlen = 0; - shellbase = strrchr (p, '/'); - bslash = strrchr (p, '\\'); + shellbase = strrchr (newval, '/'); + bslash = strrchr (newval, '\\'); if (!shellbase || bslash > shellbase) shellbase = bslash; - if (!shellbase && p[1] == ':') - shellbase = p + 1; + if (!shellbase && newval[1] == ':') + shellbase = newval + 1; if (shellbase) shellbase++; else - shellbase = p; + shellbase = newval; /* Search for the basename of the shell (with standard executable extensions) along the $PATH. */ @@ -1490,7 +1533,7 @@ do_variable_definition (const floc *flocp, const char *varname, set no_default_sh_exe to indicate sh was found and set new value for SHELL variable. */ - if (find_and_set_default_shell (p)) + if (find_and_set_default_shell (newval)) { v = define_variable_in_set (varname, strlen (varname), default_shell, origin, flavor == f_recursive, @@ -1504,11 +1547,11 @@ do_variable_definition (const floc *flocp, const char *varname, { char *tp = alloc_value; - alloc_value = allocated_variable_expand (p); + alloc_value = allocated_variable_expand (newval); if (find_and_set_default_shell (alloc_value)) { - v = define_variable_in_set (varname, strlen (varname), p, + v = define_variable_in_set (varname, strlen (varname), newval, origin, flavor == f_recursive, (target_var ? current_variable_set_list->set @@ -1536,7 +1579,7 @@ do_variable_definition (const floc *flocp, const char *varname, invoked in places where we want to define globally visible variables, make sure we define this variable in the global set. */ - v = define_variable_in_set (varname, strlen (varname), p, origin, + v = define_variable_in_set (varname, strlen (varname), newval, origin, flavor == f_recursive || flavor == f_expand, (target_var ? current_variable_set_list->set : NULL), @@ -1546,7 +1589,7 @@ do_variable_definition (const floc *flocp, const char *varname, done: free (alloc_value); - return v->special ? set_special_var (v) : v; + return v->special ? set_special_var (v, origin) : v; } /* Parse P (a null-terminated string) as a variable definition. @@ -1770,6 +1813,44 @@ try_variable_definition (const floc *flocp, const char *line, return vp; } + +/* These variables are internal to make, and so considered "defined" for the + purposes of warn_undefined even if they are not really defined. */ + +struct defined_vars + { + const char *name; + size_t len; + }; + +static const struct defined_vars defined_vars[] = { + { STRING_SIZE_TUPLE ("MAKECMDGOALS") }, + { STRING_SIZE_TUPLE ("MAKE_RESTARTS") }, + { STRING_SIZE_TUPLE ("MAKE_TERMOUT") }, + { STRING_SIZE_TUPLE ("MAKE_TERMERR") }, + { STRING_SIZE_TUPLE ("MAKEOVERRIDES") }, + { STRING_SIZE_TUPLE (".DEFAULT") }, + { STRING_SIZE_TUPLE ("-*-command-variables-*-") }, + { STRING_SIZE_TUPLE ("-*-eval-flags-*-") }, + { STRING_SIZE_TUPLE ("VPATH") }, + { STRING_SIZE_TUPLE ("GPATH") }, + { NULL, 0 } +}; + +void +warn_undefined (const char *name, size_t len) +{ + if (warn_undefined_variables_flag) + { + const struct defined_vars *dp; + for (dp = defined_vars; dp->name != NULL; ++dp) + if (dp->len == len && memcmp (dp->name, name, len) == 0) + return; + + error (reading_file, len, _("warning: undefined variable '%.*s'"), + (int)len, name); + } +} /* Print information for variable V, prefixing it with PREFIX. */ @@ -1947,8 +2028,10 @@ sync_Path_environment () if (!path) return; - /* Convert PATH into something WINDOWS32 world can grok. */ - convert_Path_to_windows32 (path, ';'); + /* Convert the value of PATH into something WINDOWS32 world can grok. + Note: convert_Path_to_windows32 must see only the value of PATH, + and see it from its first character, to do its tricky job. */ + convert_Path_to_windows32 (path + CSTRLEN ("PATH="), ';'); environ_path = path; putenv (environ_path); diff --git a/src/variable.h b/src/variable.h index d377a47..244da4f 100644 --- a/src/variable.h +++ b/src/variable.h @@ -1,5 +1,5 @@ /* Definitions for using variables in GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -182,6 +182,8 @@ void define_new_function(const floc *flocp, const char *name, unsigned int min, unsigned int max, unsigned int flags, gmk_func_ptr func); struct variable *lookup_variable (const char *name, size_t length); +struct variable *lookup_variable_for_file (const char *name, size_t length, + struct file *file); struct variable *lookup_variable_in_set (const char *name, size_t length, const struct variable_set *set); @@ -191,6 +193,7 @@ struct variable *define_variable_in_set (const char *name, size_t length, int recursive, struct variable_set *set, const floc *flocp); +void warn_undefined (const char* name, size_t length); /* Define a variable in the current variable set. */ @@ -229,15 +232,6 @@ void undefine_variable_in_set (const char *name, size_t length, #define undefine_variable_global(n,l,o) \ undefine_variable_in_set((n),(l),(o),NULL) -/* Warn that NAME is an undefined variable. */ - -#define warn_undefined(n,l) do{\ - if (warn_undefined_variables_flag) \ - error (reading_file, (l), \ - _("warning: undefined variable '%.*s'"), \ - (int)(l), (n)); \ - }while(0) - char **target_environment (struct file *file, int recursive); struct pattern_var *create_pattern_var (const char *target, diff --git a/src/version.c b/src/version.c index b96e030..61faea7 100644 --- a/src/version.c +++ b/src/version.c @@ -1,5 +1,5 @@ -/* Record version and build host architecture for GNU make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +/* Record version and build host architecture for GNU Make. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/vms_exit.c b/src/vms_exit.c index ebcebcd..2aba14c 100644 --- a/src/vms_exit.c +++ b/src/vms_exit.c @@ -7,7 +7,7 @@ * Author: John E. Malmberg */ -/* Copyright (C) 2014-2022 Free Software Foundation, Inc. +/* Copyright (C) 2014-2023 Free Software Foundation, Inc. GNU Make 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 @@ -36,7 +36,7 @@ decc$exit (int status); #endif /* Lowest legal non-success VMS exit code is 8 */ -/* GNU make only defines codes 0, 1, 2 */ +/* GNU Make only defines codes 0, 1, 2 */ /* So assume any exit code > 8 is a VMS exit code */ #ifndef MAX_EXPECTED_EXIT_CODE diff --git a/src/vms_export_symbol.c b/src/vms_export_symbol.c index a1a7c16..6344205 100644 --- a/src/vms_export_symbol.c +++ b/src/vms_export_symbol.c @@ -4,7 +4,7 @@ * DCL symbols. */ -/* Copyright (C) 2014-2022 Free Software Foundation, Inc. +/* Copyright (C) 2014-2023 Free Software Foundation, Inc. GNU Make 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 diff --git a/src/vms_progname.c b/src/vms_progname.c index 1d6edbd..0cc5930 100644 --- a/src/vms_progname.c +++ b/src/vms_progname.c @@ -36,7 +36,7 @@ * */ -/* Copyright (C) 2014-2022 Free Software Foundation, Inc. +/* Copyright (C) 2014-2023 Free Software Foundation, Inc. GNU Make 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 diff --git a/src/vmsdir.h b/src/vmsdir.h index 0f8fe3a..4e1ac1b 100644 --- a/src/vmsdir.h +++ b/src/vmsdir.h @@ -1,5 +1,5 @@ /* dirent.h for vms -Copyright (C) 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/vmsfunctions.c b/src/vmsfunctions.c index 499f339..355f989 100644 --- a/src/vmsfunctions.c +++ b/src/vmsfunctions.c @@ -1,5 +1,5 @@ /* VMS functions -Copyright (C) 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/vmsify.c b/src/vmsify.c index 7c3426e..d539f94 100644 --- a/src/vmsify.c +++ b/src/vmsify.c @@ -1,5 +1,5 @@ /* vmsify.c -- Module for vms <-> unix file name conversion -Copyright (C) 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/vmsjobs.c b/src/vmsjobs.c index 66381b8..6402245 100644 --- a/src/vmsjobs.c +++ b/src/vmsjobs.c @@ -1,7 +1,7 @@ /* --------------- Moved here from job.c --------------- This file must be #included in job.c, as it accesses static functions. -Copyright (C) 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -28,7 +28,7 @@ void decc$exit (int status); /* Lowest legal non-success VMS exit code is 8 */ -/* GNU make only defines codes 0, 1, 2 */ +/* GNU Make only defines codes 0, 1, 2 */ /* So assume any exit code > 8 is a VMS exit code */ #ifndef MAX_EXPECTED_EXIT_CODE @@ -1233,7 +1233,7 @@ child_execute_job (struct childbase *child, int good_stdin UNUSED, char *argv) Create a *.com file if either the command is too long for lib$spawn, or if a redirect appending to a file is desired, or - symbol substitition. + symbol substitution. */ if (vms_always_use_cmd_file || token.use_cmd_file) diff --git a/src/vpath.c b/src/vpath.c index 9c95441..9c303bf 100644 --- a/src/vpath.c +++ b/src/vpath.c @@ -1,5 +1,5 @@ /* Implementation of pattern-matching file search paths for GNU Make. -Copyright (C) 1988-2022 Free Software Foundation, Inc. +Copyright (C) 1988-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -68,19 +68,10 @@ build_vpath_lists (void) vpaths = new; - /* If there is a VPATH variable with a nonnull value, construct the - general VPATH list from it. We use variable_expand rather than just - calling lookup_variable so that it will be recursively expanded. */ + /* If there is a VPATH variable with a nonnull expanded value, construct the + general VPATH list from it. */ - { - /* Turn off --warn-undefined-variables while we expand SHELL and IFS. */ - int save = warn_undefined_variables_flag; - warn_undefined_variables_flag = 0; - - p = variable_expand ("$(strip $(VPATH))"); - - warn_undefined_variables_flag = save; - } + p = variable_expand ("$(strip $(VPATH))"); if (*p != '\0') { @@ -101,19 +92,10 @@ build_vpath_lists (void) vpaths = save_vpaths; } - /* If there is a GPATH variable with a nonnull value, construct the - GPATH list from it. We use variable_expand rather than just - calling lookup_variable so that it will be recursively expanded. */ + /* If there is a GPATH variable with a nonnull expanded value, construct the + GPATH list from it. */ - { - /* Turn off --warn-undefined-variables while we expand SHELL and IFS. */ - int save = warn_undefined_variables_flag; - warn_undefined_variables_flag = 0; - - p = variable_expand ("$(strip $(GPATH))"); - - warn_undefined_variables_flag = save; - } + p = variable_expand ("$(strip $(GPATH))"); if (*p != '\0') { diff --git a/src/w32/compat/dirent.c b/src/w32/compat/dirent.c index e9cb1d2..7e32e33 100644 --- a/src/w32/compat/dirent.c +++ b/src/w32/compat/dirent.c @@ -1,5 +1,5 @@ /* Directory entry code for Window platforms. -Copyright (C) 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/w32/compat/posixfcn.c b/src/w32/compat/posixfcn.c index f1013ae..a89c065 100644 --- a/src/w32/compat/posixfcn.c +++ b/src/w32/compat/posixfcn.c @@ -1,6 +1,6 @@ /* Replacements for Posix functions and Posix functionality for MS-Windows. -Copyright (C) 2013-2022 Free Software Foundation, Inc. +Copyright (C) 2013-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/w32/include/dirent.h b/src/w32/include/dirent.h index 2712e51..32e352c 100644 --- a/src/w32/include/dirent.h +++ b/src/w32/include/dirent.h @@ -1,5 +1,5 @@ /* Windows version of dirent.h -Copyright (C) 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/w32/include/dlfcn.h b/src/w32/include/dlfcn.h index dc1d529..4fa059a 100644 --- a/src/w32/include/dlfcn.h +++ b/src/w32/include/dlfcn.h @@ -1,5 +1,5 @@ /* dlfcn.h replacement for MS-Windows build. -Copyright (C) 2013-2022 Free Software Foundation, Inc. +Copyright (C) 2013-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/w32/include/pathstuff.h b/src/w32/include/pathstuff.h index 374d805..02a4ae6 100644 --- a/src/w32/include/pathstuff.h +++ b/src/w32/include/pathstuff.h @@ -1,5 +1,5 @@ /* Definitions for Windows path manipulation. -Copyright (C) 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/w32/include/sub_proc.h b/src/w32/include/sub_proc.h index 83f71f6..c00c43c 100644 --- a/src/w32/include/sub_proc.h +++ b/src/w32/include/sub_proc.h @@ -1,5 +1,5 @@ /* Definitions for Windows process invocation. -Copyright (C) 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/w32/include/w32err.h b/src/w32/include/w32err.h index d67e84b..a28d565 100644 --- a/src/w32/include/w32err.h +++ b/src/w32/include/w32err.h @@ -1,5 +1,5 @@ /* Definitions for Windows error handling. -Copyright (C) 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/w32/pathstuff.c b/src/w32/pathstuff.c index 38dbc2a..efde454 100644 --- a/src/w32/pathstuff.c +++ b/src/w32/pathstuff.c @@ -1,5 +1,5 @@ /* Path conversion for Windows pathnames. -Copyright (C) 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -220,7 +220,7 @@ convert_path_to_nutc(char *path) #endif pathp += strlen(pathp); - *pathp++ = ':'; /* use Unix style path separtor for new path */ + *pathp++ = ':'; /* use Unix style path separator for new path */ *pathp = '\0'; /* make sure we are null terminaed */ /* restore path separator */ diff --git a/src/w32/subproc/misc.c b/src/w32/subproc/misc.c index c611e09..87031da 100644 --- a/src/w32/subproc/misc.c +++ b/src/w32/subproc/misc.c @@ -1,5 +1,5 @@ /* Process handling for Windows -Copyright (C) 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/w32/subproc/proc.h b/src/w32/subproc/proc.h index 4133813..90c55dd 100644 --- a/src/w32/subproc/proc.h +++ b/src/w32/subproc/proc.h @@ -1,5 +1,5 @@ /* Definitions for Windows -Copyright (C) 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/src/w32/subproc/sub_proc.c b/src/w32/subproc/sub_proc.c index 501afc3..4331973 100644 --- a/src/w32/subproc/sub_proc.c +++ b/src/w32/subproc/sub_proc.c @@ -1,5 +1,5 @@ /* Process handling for Windows. -Copyright (C) 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -887,7 +887,7 @@ proc_stderr_thread(sub_process *pproc) for (;;) { if (ReadFile( (HANDLE)pproc->sv_stderr[0], &c, 1, &nread, NULL) == FALSE) { - map_windows32_error_to_string(GetLastError()); +/* map_windows32_error_to_string(GetLastError());*/ _endthreadex(0); } if (nread == 0) diff --git a/src/w32/subproc/w32err.c b/src/w32/subproc/w32err.c index eb20103..e947a5b 100644 --- a/src/w32/subproc/w32err.c +++ b/src/w32/subproc/w32err.c @@ -1,5 +1,5 @@ /* Error handling for Windows -Copyright (C) 1996-2022 Free Software Foundation, Inc. +Copyright (C) 1996-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -44,42 +44,42 @@ map_windows32_error_to_string (DWORD ercode) { * static. (If and when we do need it to be in thread-local storage, * the corresponding GCC qualifier is '__thread'.) */ - static char szMessageBuffer[128]; - /* Fill message buffer with a default message in - * case FormatMessage fails - */ - wsprintf (szMessageBuffer, "Error %ld\n", ercode); + static char szMessageBuffer[128]; + DWORD ret; - /* - * Special code for winsock error handling. - */ - if (ercode > WSABASEERR) { -#if 0 - HMODULE hModule = GetModuleHandle("wsock32"); - if (hModule != NULL) { - FormatMessage(FORMAT_MESSAGE_FROM_HMODULE, - hModule, - ercode, - LANG_NEUTRAL, - szMessageBuffer, - sizeof(szMessageBuffer), - NULL); - FreeLibrary(hModule); - } -#else - O (fatal, NILF, szMessageBuffer); -#endif - } else { - /* - * Default system message handling - */ - FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, - NULL, - ercode, - LANG_NEUTRAL, - szMessageBuffer, - sizeof(szMessageBuffer), - NULL); + /* Fill message buffer with a default message in + * case FormatMessage fails + */ + wsprintf (szMessageBuffer, "Error %ld", ercode); + + /* + * Special code for winsock error handling. + */ + if (ercode > WSABASEERR) { + O (fatal, NILF, szMessageBuffer); + } + + /* + * Default system message handling + */ + ret = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + ercode, + LANG_NEUTRAL, + szMessageBuffer, + sizeof(szMessageBuffer), + NULL); + + if (ret) + { + char *cp; + for (cp = szMessageBuffer + ret - 1; cp >= szMessageBuffer; --cp) + { + if (*cp != '\r' && *cp != '\n') + break; + *cp = '\0'; } - return szMessageBuffer; + } + + return szMessageBuffer; } diff --git a/src/w32/w32os.c b/src/w32/w32os.c index 9c5dec2..3382801 100644 --- a/src/w32/w32os.c +++ b/src/w32/w32os.c @@ -1,5 +1,5 @@ /* Windows32-based operating system interface for GNU Make. -Copyright (C) 2016-2022 Free Software Foundation, Inc. +Copyright (C) 2016-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the @@ -216,12 +216,12 @@ jobserver_setup (int slots, const char *style) /* sub_proc.c is limited in the number of objects it can wait for. */ if (style && strcmp (style, "sem") != 0) - OS (fatal, NILF, _("Unknown jobserver auth style '%s'"), style); + OS (fatal, NILF, _("unknown jobserver auth style '%s'"), style); if (slots > process_table_usable_size()) { slots = process_table_usable_size(); - DB (DB_JOBS, (_("Jobserver slots limited to %d\n"), slots)); + DB (DB_JOBS, (_("jobserver slots limited to %d\n"), slots)); } sprintf (jobserver_semaphore_name, "gmake_semaphore_%d", _getpid ()); @@ -255,10 +255,12 @@ jobserver_parse_auth (const char *auth) { DWORD err = GetLastError (); const char *estr = map_windows32_error_to_string (err); - fatal (NILF, strlen (auth) + INTSTR_LENGTH + strlen (estr), - _("internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"), + error (NILF, strlen (auth) + INTSTR_LENGTH + strlen (estr), + _("unable to open jobserver semaphore '%s': (Error %ld: %s)"), auth, err, estr); + return 0; } + DB (DB_JOBS, (_("Jobserver client (semaphore %s)\n"), auth)); return 1; diff --git a/tests/README b/tests/README index 6ffa19a..fb9b369 100644 --- a/tests/README +++ b/tests/README @@ -7,7 +7,7 @@ This entire test suite, including all test files, are copyright and distributed under the following terms: ----------------------------------------------------------------------------- - Copyright (C) 1992-2022 Free Software Foundation, Inc. + Copyright (C) 1992-2023 Free Software Foundation, Inc. This file is part of GNU Make. GNU Make is free software; you can redistribute it and/or modify it under the diff --git a/tests/config_flags_pm.com b/tests/config_flags_pm.com index d02ea66..64784c9 100755 --- a/tests/config_flags_pm.com +++ b/tests/config_flags_pm.com @@ -3,7 +3,7 @@ $! config_flags_pm.com - Build config-flags.pm on VMS. $! $! Just good enough to run the self tests for now. $! -$! Copyright (C) 2014-2022 Free Software Foundation, Inc. +$! Copyright (C) 2014-2023 Free Software Foundation, Inc. $! This file is part of GNU Make. $! $! GNU Make is free software; you can redistribute it and/or modify it under diff --git a/tests/mkshadow b/tests/mkshadow index 4615aec..f24b8f6 100755 --- a/tests/mkshadow +++ b/tests/mkshadow @@ -3,7 +3,7 @@ # Simple script to make a "shadow" test directory, using symbolic links. # Typically you'd put the shadow in /tmp or another local disk # -# Copyright (C) 1992-2022 Free Software Foundation, Inc. +# Copyright (C) 1992-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under diff --git a/tests/run_make_tests.bat b/tests/run_make_tests.bat index b90b6e3..3e3b91b 100644 --- a/tests/run_make_tests.bat +++ b/tests/run_make_tests.bat @@ -1,5 +1,5 @@ @echo off -rem Copyright (C) 2017-2022 Free Software Foundation, Inc. +rem Copyright (C) 2017-2023 Free Software Foundation, Inc. rem This file is part of GNU Make. rem rem GNU Make is free software; you can redistribute it and/or modify it under diff --git a/tests/run_make_tests.pl b/tests/run_make_tests.pl index 70dd182..012bd66 100644 --- a/tests/run_make_tests.pl +++ b/tests/run_make_tests.pl @@ -11,7 +11,7 @@ # [-make ] # (and others) -# Copyright (C) 1992-2022 Free Software Foundation, Inc. +# Copyright (C) 1992-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -56,7 +56,7 @@ $memcheck_args = '--num-callers=15 --tool=memcheck --leak-check=full --suppressi $massif_args = '--num-callers=15 --tool=massif --alloc-fn=xmalloc --alloc-fn=xcalloc --alloc-fn=xrealloc --alloc-fn=xstrdup --alloc-fn=xstrndup'; $pure_log = undef; -# The location of the GNU make source directory +# The location of the GNU Make source directory $srcdir = undef; $fqsrcdir = undef; $srcvol = undef; @@ -104,6 +104,7 @@ if ($^O eq 'VMS') # We want them from the C locale regardless of our current locale. $ERR_no_such_file = undef; +$ERR_no_such_file_code = "2"; $ERR_read_only_file = undef; $ERR_unreadable_file = undef; $ERR_nonexe_file = undef; @@ -128,7 +129,7 @@ sub valid_option if ($option =~ /^-srcdir$/i) { $srcdir = shift @argv; if (! -f File::Spec->catfile($srcdir, 'src', 'gnumake.h')) { - print "$option $srcdir: Not a valid GNU make source directory.\n"; + print "$option $srcdir: Not a valid GNU Make source directory.\n"; exit 1; } return 1; @@ -185,7 +186,6 @@ sub subst_make_string s/#PERL#/$perl_name/g; s/#PWD#/$cwdpath/g; s/#WORK#/$workdir/g; - # If we're using a shell s/#HELPER#/$perl_name $helptool/g; return $_; } @@ -424,6 +424,9 @@ sub set_defaults print "Opened non-existent file! Skipping related tests.\n"; } else { $ERR_no_such_file = "$!"; + if ($osname eq 'os390') { + $ERR_no_such_file_code = "129"; + } } unlink('file.out'); @@ -470,7 +473,7 @@ sub set_defaults if ($? == 0) { print "Invoked invalid file! Skipping related tests.\n"; } else { - chomp($_); + s/\r?\n//g; s/bad-command/#CMDNAME#/g; $ERR_command_not_found = $_; } @@ -602,7 +605,7 @@ sub set_more_defaults } $string = `$make_path -v`; - $string =~ /^(GNU Make [^,\n]*)/ or die "$make_path is not GNU make. Version:\n$string"; + $string =~ /^(GNU Make [^,\n]*)/ or die "$make_path is not GNU Make. Version:\n$string"; $testee_version = "$1\n"; create_file('null.mk', ''); @@ -668,6 +671,7 @@ sub set_more_defaults create_file('features.mk', 'all:;$(info $(.FEATURES))'); %FEATURES = map { $_ => 1 } split /\s+/, `$make_path -sf features.mk`; + print "$make_path FEATURES: @{[%FEATURES]}\n" if $verbose; unlink('features.mk'); # Find the default values for different built-in variables diff --git a/tests/scripts/features/archives b/tests/scripts/features/archives index 809bf21..81f515e 100644 --- a/tests/scripts/features/archives +++ b/tests/scripts/features/archives @@ -1,6 +1,6 @@ # -*-mode: perl-*- -$description = "Test GNU make's archive management features."; +$description = "Test GNU Make's archive management features."; $details = "\ This only works on systems that support it."; @@ -20,9 +20,7 @@ if ($osname eq 'VMS') { # objects when the test tampers with the timestamp. 1 while unlink "$afile.c1"; 1 while unlink "$afile.o"; - open (MYFILE, ">$afile.c1"); - print MYFILE "int $afile(void) {return 1;}\n"; - close MYFILE; + create_file("$afile.c1", "int $afile(void) {return 1;}\n"); system("cc $afile.c1 /object=$afile.o"); } } else { @@ -37,16 +35,16 @@ $redir = '' if $osname eq 'VMS'; # This is the value from src/default.c my $arflags = $osname eq 'aix' ? '-Xany -rv' : '-rv'; -my $arvar = "AR=$ar"; +my $arvar = "AR=\"$ar\""; # Newer versions of binutils can be built with --enable-deterministic-archives # which forces all timestamps (among other things) to always be 0, defeating -# GNU make's archive support. See if ar supports the U option to disable it. +# GNU Make's archive support. See if ar supports the U option to disable it. unlink('libxx.a'); $_ = `$ar ${arflags}U libxx.a a1.o $redir`; if ($? == 0) { $arflags = "${arflags}U"; - $arvar = "$arvar ARFLAGS=$arflags"; + $arvar = "$arvar ARFLAGS=\"$arflags\""; } # Some versions of ar print different things on creation. Find out. @@ -214,7 +212,7 @@ if ($osname eq 'VMS') { # Check long names for archive members. # See Savannah bug #54395 -if ($osname ne 'VMS') { +if ($osname ne 'VMS' && $osname ne 'os390') { my $pre = '1234567890123456'; my $lib = 'libxx.a'; my $cr = $created; @@ -238,5 +236,48 @@ $pre%: ; touch \$\@ unlink($lib); } +# SV 61436 : Allow redefining archive rules to propagate timestamps + +# These don't work right on z/OS for some reason: archives not fully supported? + +if ($osname ne 'os390') { +# Find the output when creating an archive from multiple files + +utouch(-10, 'a.o', 'b.o'); +my $create2 = `$ar $arflags mylib.a a.o b.o $redir`; +touch('b.o'); +my $add2 = `$ar $arflags mylib.a b.o $redir`; +unlink('a.o', 'b.o', 'mylib.a'); + +# Some systems complain when compiling empty files +create_file('a.c', 'int i;'); +create_file('b.c', 'int j;'); +utouch(-20, 'a.c', 'b.c'); + +my $cc = get_config('CC') || 'cc'; +my $vars = "CC=\"$cc\" $arvar"; + +run_make_test(q! +mylib.a: mylib.a(a.o b.o) +(%): % ; +%.a: ; $(AR) $(ARFLAGS) $@ $? +%.o : %.c ; @echo Compile $<; $(COMPILE.c) -o $@ $< +!, + $vars, "Compile a.c\nCompile b.c\n$ar $arflags mylib.a a.o b.o\n${create2}rm b.o a.o"); + +run_make_test(undef, $vars, "#MAKE#: 'mylib.a' is up to date."); + +# Now update one of the source files and it should be compiled and archived + +sleep(2); +touch('b.c'); + +run_make_test(undef, $vars, "Compile b.c\n$ar $arflags mylib.a b.o\n${add2}rm b.o"); + +run_make_test(undef, $vars, "#MAKE#: 'mylib.a' is up to date."); + +unlink('a.c', 'b.c', 'a.o', 'b.o', 'mylib.a'); +} + # This tells the test driver that the perl test script executed properly. 1; diff --git a/tests/scripts/features/conditionals b/tests/scripts/features/conditionals index 78344b9..ead3b7e 100644 --- a/tests/scripts/features/conditionals +++ b/tests/scripts/features/conditionals @@ -1,7 +1,7 @@ # -*-perl-*- -$description = "Check GNU make conditionals."; +$description = "Check GNU Make conditionals."; -$details = "Attempt various different flavors of GNU make conditionals."; +$details = "Attempt various different flavors of GNU Make conditionals."; run_make_test(' arg1 = first diff --git a/tests/scripts/features/errors b/tests/scripts/features/errors index 2cdaf31..54beaf3 100644 --- a/tests/scripts/features/errors +++ b/tests/scripts/features/errors @@ -35,12 +35,13 @@ all: sub errors_getinfo { - my ($cmd, $args) = @_; + my ($cmd, $args, $err) = @_; if ($port_type eq 'W32') { - return (2, "process_begin: CreateProcess(NULL, $cmd $args, ...) failed.\nmake (e=2): The system cannot find the file specified."); + return (2, "process_begin: CreateProcess(NULL, $cmd$args, ...) failed.\nmake (e=2): The system cannot find the file specified."); } - return (127, "#MAKE#: $cmd: $ERR_no_such_file"); + if (!$err) { $err = $ERR_no_such_file; } + return (127, "#MAKE#: $cmd: $err"); } # TEST #3 @@ -50,7 +51,7 @@ sub errors_getinfo my $unk = './foobarbazbozblat'; unlink($unk); -my ($ernum, $erstr) = errors_getinfo($unk, "xx yy"); +my ($ernum, $erstr) = errors_getinfo($unk, " xx yy"); run_make_test(qq! one: ; -$unk xx yy !, 'one', @@ -59,7 +60,7 @@ one: ; -$unk xx yy # TEST #4 # ------- -($ernum, $erstr) = errors_getinfo($unk, "aa bb"); +($ernum, $erstr) = errors_getinfo($unk, " aa bb"); run_make_test(qq! two: ; $unk aa bb !, 'two -i', @@ -73,7 +74,7 @@ run_make_test(undef, 'two', # SV #56918 : Test the unknown command as the second recipe line -($ernum, $erstr) = errors_getinfo($unk, "qq rr"); +($ernum, $erstr) = errors_getinfo($unk, " qq rr"); run_make_test(qq! three: \t\@echo one @@ -101,16 +102,26 @@ if ($ERR_nonexe_file) { if ($ERR_exe_dir) { mkdir('sd', 0775) or print "mkdir: sd: $!\n"; + ($ernum, $erstr) = errors_getinfo('sd', '', $ERR_exe_dir); + run_make_test(q! PATH := . all: ; sd !, - '', "sd\n#MAKE#: sd: $ERR_exe_dir\n#MAKE#: *** [#MAKEFILE#:3: all] Error 127", 512); + '', "sd\n$erstr\n#MAKE#: *** [#MAKEFILE#:3: all] Error $ernum", 512); + + if ($port_type eq 'W32') { + $ernum = 5; + $erstr = "process_begin: CreateProcess(NULL, ./sd, ...) failed.\nmake (e=5): Access is denied."; + } else { + $ernum = 127; + $erstr = "#MAKE#: ./sd: $ERR_exe_dir"; + } run_make_test(q! all: ; ./sd !, - '', "./sd\n#MAKE#: ./sd: $ERR_exe_dir\n#MAKE#: *** [#MAKEFILE#:2: all] Error 127", 512); + '', "./sd\n$erstr\n#MAKE#: *** [#MAKEFILE#:2: all] Error $ernum", 512); rmdir('sd'); } diff --git a/tests/scripts/features/export b/tests/scripts/features/export index ad58177..dcca211 100644 --- a/tests/scripts/features/export +++ b/tests/scripts/features/export @@ -1,5 +1,5 @@ # -*-perl-*- -$description = "Check GNU make export/unexport commands."; +$description = "Check GNU Make export/unexport commands."; $details = ""; diff --git a/tests/scripts/features/implicit_search b/tests/scripts/features/implicit_search index 564dc5b..57782c9 100644 --- a/tests/scripts/features/implicit_search +++ b/tests/scripts/features/implicit_search @@ -251,7 +251,7 @@ all: hello.tsk # One of the implicit rules has two prerequisites, hello.c and hello.x # hello.c does not qualify as ought to exit. # hello.x can be made from hello.z. -# This test exersizes the break, which prevents making hello.x as an +# This test exercises the break, which prevents making hello.x as an # intermediate from hello.z during compatibility search. unlink('hello.f'); touch('hello.z'); @@ -468,7 +468,7 @@ hello.x: flags+=good !, '-r', "true good\nhello.tsk\n"); # Intermediate prerequisite 'hello.x' has a target specific variable, a pattern -# specfic variable, matches on both rules '%.tsk: %.x' and 'big_%.tsk: %.x'. +# specific variable, matches on both rules '%.tsk: %.x' and 'big_%.tsk: %.x'. run_make_test(q! all: hello.tsk big_hello.tsk %.tsk: %.x; $(info $@) diff --git a/tests/scripts/features/include b/tests/scripts/features/include index 69d6718..cedabf7 100644 --- a/tests/scripts/features/include +++ b/tests/scripts/features/include @@ -1,6 +1,6 @@ -# -*-mode: perl; rm-trailing-spaces: nil-*- +# -*-mode: perl-*- -$description = "Test various forms of the GNU make 'include' command."; +$description = "Test various forms of the GNU Make 'include' command."; $details = "\ Test include, -include, sinclude and various regressions involving them. @@ -462,4 +462,31 @@ run_make_with_options(undef, ['-E', '%:;@echo $@', '-E', 'all:;', '-E', '-includ $answer = "bizbaz\nbazbiz\nfoobar\nbarfoo\n$defaults\n#MAKE#: 'all' is up to date.\n"; &compare_output(subst_make_string($answer), &get_logfile(1)); +# SV 63516 +if (exists $FEATURES{'dospaths'}) { + run_make_test(q! +include C:__foobar +%bar: ; @echo $@ +all: ; +!, + '', "C:__foobar\n#MAKE#: 'all' is up to date."); +} + +# sv 63484. +# Test that included makefiles are not intermediate. +# Here 'test.foo' is mentioned explicitly and cannot be considered +# intermediate. +utouch(-10, 'test.foo'); +utouch(-5, 'test.x'); +touch('test'); +run_make_test(q! +.PHONY: force +include test.foo +%.foo: force; @echo force $@ +%.x: %.foo; touch $@ +test: test.x; touch $@ +!, '', "force test.foo\n#MAKE#: 'test' is up to date.\n"); + +unlink('test.foo', 'test.x', 'test'); + 1; diff --git a/tests/scripts/features/jobserver b/tests/scripts/features/jobserver index 8ecbe34..a2f06ee 100644 --- a/tests/scripts/features/jobserver +++ b/tests/scripts/features/jobserver @@ -14,6 +14,7 @@ if (!$parallel_jobs) { # Shorthand my $np = '--no-print-directory'; +my $j1err = "warning: jobserver unavailable: using -j1. Add '+' to parent make rule."; # Simple test of MAKEFLAGS settings run_make_test(q! @@ -90,7 +91,7 @@ if ($port_type ne 'W32') { default: ; @ #MAKEPATH# -f Makefile2 !, "--jobserver-style=pipe -j2 $np", -"#MAKE#[1]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule. +"#MAKE#[1]: $j1err #MAKE#[1]: Nothing to be done for 'foo'."); rmfiles('Makefile2'); @@ -98,15 +99,15 @@ default: ; @ #MAKEPATH# -f Makefile2 # For Windows and named pipes, we don't need to worry about recursion if ($port_type eq 'W32' || exists $FEATURES{'jobserver-fifo'}) { - create_file('Makefile2', "vpath %.c ../\n", "foo:\n"); + create_file('Makefile2', "vpath %.c ../\n", "foo:\n"); - run_make_test(q! + run_make_test(q! default: ; @ #MAKEPATH# -f Makefile2 !, "-j2 $np", "#MAKE#[1]: Nothing to be done for 'foo'."); - rmfiles('Makefile2'); + rmfiles('Makefile2'); } # Ensure enter/leave directory messages appear before jobserver warnings @@ -129,17 +130,53 @@ all: a all a: ; @echo $@ !, '--jobserver-style=foo -j8', - "#MAKE#: *** Unknown jobserver auth style 'foo'. Stop.", 512); - -# sv 62908. -# Test that when mkfifo fails, make switches to pipe and succeeds. -# Force mkfifo to fail by attempting to create a fifo in a non existent -# directory. -# run_make_test does not allow matching a multiline pattern, therefore run the -# test twice. -# First time look for /$ERR_no_such_file/ to ensure mkfifo failed. -# Second time look for /Nothing to be done/ to ensure make succeeded. + "#MAKE#: *** unknown jobserver auth style 'foo'. Stop.", 512); + +# Ensure the jobserver is not disabled even if only later commands are recursive + +run_make_test(q! +.RECIPEPREFIX := > +all: +> @echo $@ 1 +> @echo $@ 2 +> @$(MAKE) -f #MAKEFILE# recurse + +recurse: ; @echo $@ +!, + "$np -j8", "all 1\nall 2\nrecurse"); + +if ($port_type ne 'W32') { + run_make_test(undef, "$np --jobserver-style=pipe -j8", + "all 1\nall 2\nrecurse"); +} + +# And with + instead of $(MAKE) + +run_make_test(q! +.RECIPEPREFIX := > +all: +> @echo $@ 1 +> @echo $@ 2 +> @+#MAKEPATH# -f #MAKEFILE# recurse + +recurse: ; @echo $@ +!, + "$np -j8", "all 1\nall 2\nrecurse"); + +if ($port_type ne 'W32') { + run_make_test(undef, "$np --jobserver-style=pipe -j8", + "all 1\nall 2\nrecurse"); +} + if (exists $FEATURES{'jobserver-fifo'}) { + # sv 62908. + # Test that when mkfifo fails, make switches to pipe and succeeds. + # Force mkfifo to fail by attempting to create a fifo in a non existent + # directory. + # run_make_test does not allow matching a multiline pattern, therefore run + # the test twice. + # First time look for /$ERR_no_such_file/ to ensure mkfifo failed. + # Second time look for /Nothing to be done/ to ensure make succeeded. $ENV{TMPDIR} = "nosuchdir"; run_make_test("all:\n", '-j2', "/$ERR_no_such_file/"); @@ -155,6 +192,10 @@ recurse: ; @$(MAKE) -f #MAKEFILE# all all:;@echo "$$MAKEFLAGS" !, "-j2 --no-print-directory", "/--jobserver-auth=fifo:\\./"); + + # Verify we fall back to -j1 but continue, of the auth is bad. + $ENV{MAKEFLAGS} = '-j2 --jobserver-auth=fifo:nosuchfile'; + run_make_test(q!all:;@echo hi!, "", "#MAKE#: cannot open jobserver nosuchfile: $ERR_no_such_file\n#MAKE#: $j1err\nhi\n"); } 1; diff --git a/tests/scripts/features/output-sync b/tests/scripts/features/output-sync index 13a54ca..3353f1c 100644 --- a/tests/scripts/features/output-sync +++ b/tests/scripts/features/output-sync @@ -38,10 +38,10 @@ sub output_sync_clean { # reliable. If things are too fast, then sometimes a different job will steal # the output sync lock and the output is mis-ordered from what we expect. sub output_sync_wait { - return subst_make_string("#HELPER# -q wait ../mksync.$_[0] sleep 1"); + return subst_make_string("#HELPER# \$Q wait ../mksync.$_[0] sleep 1"); } sub output_sync_set { - return subst_make_string("#HELPER# -q file ../mksync.$_[0]"); + return subst_make_string("#HELPER# \$Q file ../mksync.$_[0]"); } @syncfiles = qw(mksync.foo mksync.foo_start mksync.bar mksync.bar_start); @@ -66,27 +66,32 @@ open(MAKEFILE,"> foo/Makefile"); print MAKEFILE < bar/Makefile"); print MAKEFILE < <$(demo2)> <$(demo3)> <$(demo4)> <${demo5}>" '', "< 1 2 3 4 5 6 > <7 8 > <7 8 > < 2 3 > < 2 3 >\n"); # TEST 1: Handle '#' the same way as BSD make +$hashOctal = "\\043"; +if ($osname eq 'os390') { + $hashOctal = "\\173"; +} run_make_test(' foo1!=echo bar#baz -hash != printf \'\043\' +hash != printf \'' . $hashOctal . '\' foo2!= echo "bar$(hash)baz" all: ; @echo "<$(foo1)> <$(hash)> <$(foo2)>" diff --git a/tests/scripts/features/statipattrules b/tests/scripts/features/statipattrules index e4e118e..e3b00ac 100644 --- a/tests/scripts/features/statipattrules +++ b/tests/scripts/features/statipattrules @@ -182,7 +182,7 @@ for my $r (@dir) { # The directory of the prerequisite in the rule definition. my $dollar = $se ? '$' : ''; # The prerequisite should only have directory if the prerequisite of 'all' has -# it and if the prequisite pattern in the rule definition does not have it. +# it and if the prerequisite pattern in the rule definition does not have it. # That is combination 2. my $pdir = $d && !$r ? $d : ''; @@ -239,7 +239,7 @@ ${d}bye.x: $r%.x: $dollar\$(wordlist 1, 99, $dollar\$(wordlist 1, 99, %.1 %.2)) # Multiple funcs, each has multiple words, each word has multiple %, sole %, # various corner cases. -# Make should substitude the first % and only the first % in each word with the +# Make should substitute the first % and only the first % in each word with the # stem. $prereqs = "${pdir}bye1%2% ${pdir}bye 3${pdir}bye4%5 6${pdir}bye ${pdir}bye7%8 ${pdir}bye9 ${pdir}bye10% 11${pdir}bye12 13"; run_make_test(" diff --git a/tests/scripts/features/suffixrules b/tests/scripts/features/suffixrules index b8f4652..5e969b2 100644 --- a/tests/scripts/features/suffixrules +++ b/tests/scripts/features/suffixrules @@ -95,5 +95,70 @@ run_make_test(undef, unlink('foo.baz', 'foo.biz', 'foo.bar'); + +touch('hello.c'); +unlink('hello.o'); + +# sv 63821. +# Default suffix rule .c.o. + +run_make_test('all: hello.o', 'COMPILE.c=@echo OUTPUT_OPTION=', 'hello.c'); + +# User defined rules beat built-in rules. + +run_make_test(q! +all: hello.o +.c.o:; $(info $@ user defined .c.o rule) +!, '', "hello.o user defined .c.o rule\n#MAKE#: Nothing to be done for 'all'.\n"); + +# sv 63821. +# The same as above, but suffixes are cleared. + +run_make_test(q! +all: hello.o +.SUFFIXES: +.c.o:; $(info $@ user defined .c.o rule) +!, '', "#MAKE#: *** No rule to make target 'hello.o', needed by 'all'. Stop.\n", 512); + +# sv 63821. +# Suffixes are cleared and defined in the makefile. + +run_make_test(q! +all: hello.o +.SUFFIXES: +.SUFFIXES: .c .o +.c.o:; $(info $@ user defined .c.o rule) +!, '', "hello.o user defined .c.o rule\n#MAKE#: Nothing to be done for 'all'.\n"); + +# sv 63821. +# When built-in rules are disabled, but certain suffixes are added to +# .SUFFIXES, make should exit with the 'No rule...' error message. + +run_make_test(q! +.SUFFIXES: .c .o +all: hello.o +!, '-r', "#MAKE#: *** No rule to make target 'hello.o', needed by 'all'. Stop.\n", 512); + +# sv 63821. +# Same as above, but this time built-in rules are disabled inside the makefile. + +run_make_test(q! +MAKEFLAGS += -r +.SUFFIXES: .c .o +all: hello.o +!, '', "#MAKE#: *** No rule to make target 'hello.o', needed by 'all'. Stop.\n", 512); + +# sv 63821. +# Same as above, but this time there is a rule. + +run_make_test(q! +all: hello.o +MAKEFLAGS += -r +.SUFFIXES: .c .o +.c.o:; $(info $@ user defined .c.o rule) +!, '', "hello.o user defined .c.o rule\n#MAKE#: Nothing to be done for 'all'.\n"); + +unlink('hello.c', 'hello.o'); + # Complete 1; diff --git a/tests/scripts/features/temp_stdin b/tests/scripts/features/temp_stdin index b06df53..fee32a9 100644 --- a/tests/scripts/features/temp_stdin +++ b/tests/scripts/features/temp_stdin @@ -52,28 +52,29 @@ add_options($cmd, '-f', '/dev/null', '-E', q!all:;@echo $$PPID!); my $fout = 'ppidtest.out'; run_command_with_output($fout, @$cmd); $_ = read_file_into_string($fout); -chomp($_); +s/\r?\n//g; if (/^[0-9]+$/) { use POSIX (); # sv 63157. # Test that make removes the temporary file which holds make code from stdin, -# even when a signal is received. -# include bye.mk and bye.mk: rule is needed to cause make to keep the temporary -# file for re-exec. Without re-exec make will remove the file before the signal -# arrives. -# sleep is needed to let make write its "... Terminated" message to the log -# file. +# even when a signal is received. include bye.mk and bye.mk: rule is needed +# to cause make to keep the temporary file for re-exec. Without re-exec make +# will remove the file before the signal arrives. sleep is needed to let make +# write its "... Terminated" message to the log file. Must use REGEX because +# some systems (MacOS) add extra text after Terminated. &utouch(-600, 'bye.mk'); close(STDIN); open(STDIN, "<", 'input.mk') || die "$0: cannot open input.mk for reading: $!"; + run_make_test(q! include bye.mk -pid:=$(shell echo $$PPID) +pid := $(shell echo $$PPID) all:; -bye.mk: force; @kill -TERM $(pid) && sleep 16 +bye.mk: force; @#HELPER# -q term $(pid) sleep 10 force: -!, '-f-', '/#MAKE#: \*\*\* \[#MAKEFILE#:5: bye.mk] Terminated/', POSIX::SIGTERM); +!, + '-f-', '/#MAKE#: \*\*\* \[#MAKEFILE#:5: bye.mk] Terminated/', POSIX::SIGTERM); } unlink($fout); @@ -109,8 +110,24 @@ force: @make_command = @make_orig; unlink($makecopy); rmdir($tmakedir); + +# SV 63333. Test that make exits with an error message if we cannot store a +# makefile from stdin to a temporary file. +# Create a non-writable temporary directory. + +my $tdir = 'test_tmp_dir'; +mkdir($tdir, 0500); +$ENV{'TMPDIR'} = $tdir; +close(STDIN); +open(STDIN, "<", 'input.mk') || die "$0: cannot open input.mk for reading: $!"; + +run_make_test(q! +all:; $(info hello, world) +!, '-f-', '/cannot store makefile from stdin to a temporary file. Stop./', 512); +rmdir($tdir); } +# This close MUST come at the end of the test!! close(STDIN); unlink('input.mk', 'bye.mk'); diff --git a/tests/scripts/functions/eval b/tests/scripts/functions/eval index a3fba87..4a432fe 100644 --- a/tests/scripts/functions/eval +++ b/tests/scripts/functions/eval @@ -2,7 +2,7 @@ $description = "Test the eval function."; -$details = "This is a test of the eval function in GNU make. +$details = "This is a test of the eval function in GNU Make. This function will evaluate inline makefile syntax and incorporate the results into its internal database.\n"; diff --git a/tests/scripts/functions/file b/tests/scripts/functions/file index 50948a0..48318b0 100644 --- a/tests/scripts/functions/file +++ b/tests/scripts/functions/file @@ -23,7 +23,7 @@ define A a b endef -$(file >> file.out,$(A)) +$(file >> file.out ,$(A)) x:;@cat file.out !, '', "a\nb"); @@ -219,4 +219,14 @@ run_make_test('$(file <)', '', run_make_test('$(file foo)', '', "#MAKEFILE#:1: *** file: invalid file operation: foo. Stop.\n", 512); +# SV 17448: check whitespace +create_file('out1', "1\n"); + +run_make_test(q! +all:;$(info $(file < out1 )) +!, + '', "1\n#MAKE#: 'all' is up to date."); + +unlink('out1'); + 1; diff --git a/tests/scripts/functions/foreach b/tests/scripts/functions/foreach index 6a06109..27dae15 100644 --- a/tests/scripts/functions/foreach +++ b/tests/scripts/functions/foreach @@ -5,7 +5,7 @@ $description = "Test the foreach function."; $details = "This is a test of the foreach function in gnu make. This function starts with a space separated list of -names and a variable. Each name in the list is subsituted +names and a variable. Each name in the list is substituted into the variable and the given text evaluated. The general form of the command is $(foreach var,\$list,\$text). Several types of foreach loops are tested\n"; diff --git a/tests/scripts/functions/realpath b/tests/scripts/functions/realpath index fcea515..492db59 100644 --- a/tests/scripts/functions/realpath +++ b/tests/scripts/functions/realpath @@ -26,7 +26,7 @@ all: ; @: create_file('root.mk', 'all:;$(info $(realpath /))'); my $root = `$make_path -sf root.mk`; unlink('root.mk'); -chomp $root; +$root =~ s/\r?\n//g; my $tst = ' ifneq ($(realpath /.),#ROOT#) diff --git a/tests/scripts/functions/shell b/tests/scripts/functions/shell index d89a0c8..55fec05 100644 --- a/tests/scripts/functions/shell +++ b/tests/scripts/functions/shell @@ -148,7 +148,9 @@ all: ; @echo $(.SHELLSTATUS) # Solaris 10 perl 5.8.4 puts signal number + 128 into the high 8 bits. $ret >>= 8; } - $ret |= 128; + if ($osname ne 'os390') { + $ret |= 128; + } run_make_test('.PHONY: all $(shell kill -2 $$$$) diff --git a/tests/scripts/functions/value b/tests/scripts/functions/value index 8e1a6f0..d39a73f 100644 --- a/tests/scripts/functions/value +++ b/tests/scripts/functions/value @@ -2,7 +2,7 @@ $description = "Test the value function."; -$details = "This is a test of the value function in GNU make. +$details = "This is a test of the value function in GNU Make. This function will evaluate to the value of the named variable with no further expansion performed on it.\n"; diff --git a/tests/scripts/misc/close_stdout b/tests/scripts/misc/close_stdout index c8c839e..c4edbd6 100644 --- a/tests/scripts/misc/close_stdout +++ b/tests/scripts/misc/close_stdout @@ -4,6 +4,9 @@ $description = "Make sure make exits with an error if stdout is full."; -e '/dev/full' or return -1; +# In Strawberry Perl, /dev/full "exists" but does nothing :-/ +$port_type eq 'W32' and return -1; + run_make_test("\n", '-v > /dev/full', '/^#MAKE#: write error/', 256); 1; diff --git a/tests/scripts/misc/failure b/tests/scripts/misc/failure new file mode 100644 index 0000000..edd90fb --- /dev/null +++ b/tests/scripts/misc/failure @@ -0,0 +1,49 @@ +# -*-perl-*- + +$description = "Test miscellaneous failures."; + + +# Test that the "did you mean TAB" message is printed properly + +run_make_test(q! +$x. +!, + '', '#MAKEFILE#:2: *** missing separator. Stop.', 512); + +run_make_test(q! +foo: + bar +!, + '', '#MAKEFILE#:3: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.', 512); + +run_make_test(q! +.RECIPEPREFIX = : +foo: + bar +!, + '', '#MAKEFILE#:4: *** missing separator. Stop.', 512); + +for my $kw ('eq', 'neq') { +run_make_test(qq! +if$kw(foo,bar) +\$(error ouch) +endif +!, + '', '#MAKEFILE#:2: *** missing separator (ifeq/ifneq must be followed by whitespace). Stop.', 512); + +run_make_test(qq! +if$kw +\$(error ouch) +endif +!, + '', '#MAKEFILE#:2: *** invalid syntax in conditional. Stop.', 512); + +run_make_test(qq! +if$kw blah +\$(error ouch) +endif +!, + '', '#MAKEFILE#:2: *** invalid syntax in conditional. Stop.', 512); +} + +1; diff --git a/tests/scripts/misc/general4 b/tests/scripts/misc/general4 index cfd69a8..8dcd89f 100644 --- a/tests/scripts/misc/general4 +++ b/tests/scripts/misc/general4 @@ -136,11 +136,13 @@ all: ; $sname unlink($sname); -# SV 57674: ensure we use a system default PATH if one is not set -delete $ENV{PATH}; -run_make_test(q! +if ($port_type eq 'UNIX') { + # SV 57674: ensure we use a system default PATH if one is not set + delete $ENV{PATH}; + run_make_test(q! a: ; @echo hi !, - '', "hi\n"); + '', "hi\n"); +} 1; diff --git a/tests/scripts/options/dash-C b/tests/scripts/options/dash-C index 7daf69f..62284bf 100644 --- a/tests/scripts/options/dash-C +++ b/tests/scripts/options/dash-C @@ -1,66 +1,52 @@ # -*-perl-*- -$description = "Test the -C option to GNU make."; +$description = "Test the -C option to GNU Make."; -$details = "\ -This test is similar to the clean test except that this test creates the file -to delete in the work directory instead of the current directory. Make is -called from another directory using the -C workdir option so that it can both -find the makefile and the file to delete in the work directory."; +use File::Spec; -$example = $workdir . $pathsep . "EXAMPLE"; +# Pre-set $makefile to be in a subdirectory +$makefile = 'Makefile'; -open(MAKEFILE,"> $makefile"); -print MAKEFILE qq! -all: ; \@echo This makefile did not clean the dir ... good -clean: ; $CMD_rmfile EXAMPLE\$(ext) -!; -close(MAKEFILE); +my $_srcdir = 'src'; +mkdir($_srcdir, 0775); -# TEST #1 -# ------- -touch($example); - -run_make_with_options("${testname}.mk", "-C $workdir clean", &get_logfile); - -use Cwd; - -chdir $workdir; -$wpath = cwd(); -chdir $cwdpath; - -if (-f $example) { - $test_passed = 0; -} +my $_incdir = 'inc'; +mkdir($_incdir, 0775); -# Create the answer to what should be produced by this Makefile -$answer = "$make_name: Entering directory '$wpath'\n" - . "$CMD_rmfile EXAMPLE\n" - . "$make_name: Leaving directory '$wpath'\n"; - -compare_output($answer,&get_logfile(1)); +my $_mkpath = File::Spec->catfile($_srcdir, $makefile); +create_file($_mkpath, "include \$(file)\nall: ;\n"); +# TEST #1 +# ------- +run_make_test('', "-C $_srcdir --no-print-directory", + "#MAKE#: 'all' is up to date."); # TEST #2 # ------- # Do it again with trailing "/"; this should work the same -$example .= "slash"; +run_make_test(undef, "-C $_srcdir/ --no-print-directory", + "#MAKE#: 'all' is up to date."); + +# Test stringing together multiple -C options + +run_make_test(undef, "-C $_incdir -C .. -C $_srcdir --no-print-directory", + "#MAKE#: 'all' is up to date."); -touch($example); +# SV 63552 - Ensure -I is considered after -C -run_make_with_options("${testname}.mk", "-C $workdir/ clean ext=slash", &get_logfile); +my $_incfile = 'test'; +my $_incpath = File::Spec->catfile($_incdir, $_incfile); +create_file($_incpath, '$(info included)'); -if (-f $example) { - $test_passed = 0; -} +my $_incopt = File::Spec->catfile('..', $_incdir); -# Create the answer to what should be produced by this Makefile -$answer = "$make_name: Entering directory '$wpath'\n" - . "$CMD_rmfile EXAMPLEslash\n" - . "$make_name: Leaving directory '$wpath'\n"; +run_make_test(undef, "-C src -I $_incopt --no-print-directory file=$_incfile", + "included\n#MAKE#: 'all' is up to date."); -&compare_output($answer,&get_logfile(1)); +unlink($_incpath); +rmdir($_incdir); -unlink($example); +unlink($_mkpath); +rmdir($_srcdir); 1; diff --git a/tests/scripts/options/dash-I b/tests/scripts/options/dash-I index 64ee7c5..37178b3 100644 --- a/tests/scripts/options/dash-I +++ b/tests/scripts/options/dash-I @@ -86,7 +86,7 @@ create_file('defaultdirs.mk', "\$(info \$(.INCLUDE_DIRS))\nall:;\@:\n"); my $cmd = subst_make_string("#MAKEPATH# -f defaultdirs.mk"); my @dirs = `$cmd`; my $dirs = $dirs[0]; -chomp $dirs; +$dirs =~ s/\r?\n//g; unlink('defaultdirs.mk'); my $fn = undef; diff --git a/tests/scripts/options/dash-e b/tests/scripts/options/dash-e index 944c39d..e4659fb 100644 --- a/tests/scripts/options/dash-e +++ b/tests/scripts/options/dash-e @@ -1,8 +1,6 @@ # -*-perl-*- -$description = "The following test creates a makefile to ..."; - -$details = ""; +$description = "Test the -e (environment overrides) option"; $ENV{GOOGLE} = 'boggle'; @@ -12,4 +10,15 @@ all:; @echo "$(GOOGLE)" !, '-e', "boggle\n"); +# Ensure variables set on the command line have the origin correct +# See SV 61218 + +run_make_test(q! +$(info FOO [$(origin FOO)]: $(value FOO)) +all: ; +recurse: ; @$(MAKE) -f #MAKEFILE# +!, + '-e --no-print-directory FOO=1 recurse', + "FOO [command line]: 1\nFOO [command line]: 1\n#MAKE#[1]: 'all' is up to date."); + 1; diff --git a/tests/scripts/options/dash-f b/tests/scripts/options/dash-f index ab225ce..b241606 100644 --- a/tests/scripts/options/dash-f +++ b/tests/scripts/options/dash-f @@ -155,6 +155,8 @@ for my $opt (@opts) { run_make_test('', "-f$bye $opt", $answer); } + +# This close MUST come at the end of the test!! close(STDIN); unlink($hello, $bye, $byesrc); diff --git a/tests/scripts/options/dash-l b/tests/scripts/options/dash-l index d1e6049..a89da78 100644 --- a/tests/scripts/options/dash-l +++ b/tests/scripts/options/dash-l @@ -20,32 +20,27 @@ also specified on the command line."; $port_type eq 'W32' and return -1; open(MAKEFILE,"> $makefile"); -printf MAKEFILE q, -define test -if [ ! -f test-file ]; then \ - echo >> test-file; sleep 2; %s test-file; \ -else \ - echo $@ FAILED; \ -fi -endef +printf MAKEFILE subst_make_string(q! +test = #HELPER# noexist test-file file test-file sleep 2 rm test-file all : ONE TWO THREE ONE : ; @$(test) TWO : ; @$(test) THREE : ; @$(test) -,, $CMD_rmfile; +!); close(MAKEFILE); +my $ans = "noexist test-file\nfile test-file\nsleep 2\nrm test-file\n"; $mkoptions = "-l 0.0001"; $mkoptions .= " -j 4" if ($parallel_jobs); # We have to wait longer than the default (5s). -&run_make_with_options($makefile, $mkoptions, &get_logfile, 0, 8); +&run_make_with_options($makefile, $mkoptions, &get_logfile, 0, 10); $slurp = &read_file_into_string(&get_logfile(1)); if ($slurp =~ /cannot enforce load limit/) { return -1; } -&compare_output("", &get_logfile(1)); +&compare_output("$ans$ans$ans", &get_logfile(1)); 1; diff --git a/tests/scripts/options/dash-s b/tests/scripts/options/dash-s index 76bffe6..9e3d6fd 100644 --- a/tests/scripts/options/dash-s +++ b/tests/scripts/options/dash-s @@ -13,11 +13,11 @@ run_make_test(undef, '-s', "MAKEFLAGS=s\ntwo"); run_make_test(undef, '--silent', "MAKEFLAGS=s\ntwo"); run_make_test(undef, '--quiet', "MAKEFLAGS=s\ntwo"); -run_make_test(undef, '--no-silent', "MAKEFLAGS=\necho two\ntwo"); +run_make_test(undef, '--no-silent', "MAKEFLAGS= --no-silent\necho two\ntwo"); -run_make_test(undef, '-s --no-silent', "MAKEFLAGS=\necho two\ntwo"); -run_make_test(undef, '--silent --no-silent', "MAKEFLAGS=\necho two\ntwo"); -run_make_test(undef, '--quiet --no-silent', "MAKEFLAGS=\necho two\ntwo"); +run_make_test(undef, '-s --no-silent', "MAKEFLAGS= --no-silent\necho two\ntwo"); +run_make_test(undef, '--silent --no-silent', "MAKEFLAGS= --no-silent\necho two\ntwo"); +run_make_test(undef, '--quiet --no-silent', "MAKEFLAGS= --no-silent\necho two\ntwo"); run_make_test(undef, '--no-silent -s', "MAKEFLAGS=s\ntwo"); run_make_test(undef, '--no-silent --silent', "MAKEFLAGS=s\ntwo"); diff --git a/tests/scripts/options/print-directory b/tests/scripts/options/print-directory index 7ba9a2e..df70a7c 100644 --- a/tests/scripts/options/print-directory +++ b/tests/scripts/options/print-directory @@ -1,6 +1,6 @@ # -*-perl-*- -$description = "Test the -w option to GNU make."; +$description = "Test the -w option to GNU Make."; my $enter = "#MAKE#: Entering directory '#PWD#'"; my $leave = "#MAKE#: Leaving directory '#PWD#'"; diff --git a/tests/scripts/options/warn-undefined-variables b/tests/scripts/options/warn-undefined-variables index ce15507..d9653d2 100644 --- a/tests/scripts/options/warn-undefined-variables +++ b/tests/scripts/options/warn-undefined-variables @@ -4,6 +4,19 @@ $description = "Test the --warn-undefined-variables option."; $details = "Verify that warnings are printed for referencing undefined variables."; +# Verify that make's special variables don't warn even if they're not set +run_make_test(q! +vars := $(.VARIABLES) $(MAKECMDGOALS) $(MAKE_RESTARTS) $(CURDIR) +vars += $(GNUMAKEFLAGS) $(MAKEFLAGS) $(MFLAGS) $(MAKE_COMMAND) $(MAKE) +vars += $(MAKEFILE_LIST) $(MAKEOVERRIDES) $(-*-command-variables-*-) +vars += $(.RECIPEPREFIX) $(.LOADED) $(.FEATURES) +vars += $(SHELL) $(.SHELLFLAGS) $(MAKE_TERMOUT) $(MAKE_TERMERR) +vars += $(.DEFAULT) $(.DEFAULT_GOAL) $(-*-eval-flags-*-) $(SUFFIXES) +vars += $(VPATH) $(GPATH) +all:; +!, + '--warn-undefined-variables', "#MAKE#: 'all' is up to date."); + # Without --warn-undefined-variables, nothing should happen run_make_test(' EMPTY = @@ -22,4 +35,15 @@ run_make_test(undef, '--warn-undefined-variables', #MAKEFILE#:9: warning: undefined variable 'UNDEFINED' ref"); +# sv 63609. +# Test for buffer overrun in warn_undefined. +run_make_test(q! +all:; +X := $(averyveryverylongvariablename) +!, + '--warn-undefined-variables', + "#MAKEFILE#:3: warning: undefined variable 'averyveryverylongvariablename' +#MAKE#: 'all' is up to date.\n" +); + 1; diff --git a/tests/scripts/targets/NOTINTERMEDIATE b/tests/scripts/targets/NOTINTERMEDIATE index e4690b1..a24c4f7 100644 --- a/tests/scripts/targets/NOTINTERMEDIATE +++ b/tests/scripts/targets/NOTINTERMEDIATE @@ -36,7 +36,6 @@ hello.z: # Test 4. .NOTINTERMEDIATE without prerequisites makes everything # notintermediate. -unlink('hello.z'); run_make_test(q! hello.z: %.z: %.x; touch $@ @@ -112,8 +111,6 @@ hello.z: .SECONDARY: !, '', "touch hello.z\n"); - - unlink('hello.z'); # This tells the test driver that the perl test script executed properly. 1; diff --git a/tests/scripts/targets/ONESHELL b/tests/scripts/targets/ONESHELL index f9da14b..0ae9b5b 100644 --- a/tests/scripts/targets/ONESHELL +++ b/tests/scripts/targets/ONESHELL @@ -115,7 +115,7 @@ all:; @print "it works\n" SHELL = #PERL# .SHELLFLAGS = all:; @print "it works" -!, '', "Can't open perl script \"print \"it works\"\": $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:5: all] Error 2", 512); +!, '', "Can't open perl script \"print \"it works\"\": $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:5: all] Error $ERR_no_such_file_code", 512); # No .SHELLFLAGS. # sv 61805. @@ -123,7 +123,7 @@ all:; @print "it works" .ONESHELL: SHELL = #PERL# all:; @print "it works" -!, '', "Can't open perl script \"print \"it works\"\": $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:4: all] Error 2", 512); +!, '', "Can't open perl script \"print \"it works\"\": $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:4: all] Error $ERR_no_such_file_code", 512); # Pass a quoted string with spaces to oneshell. # sv 61805. diff --git a/tests/scripts/targets/POSIX b/tests/scripts/targets/POSIX index c40b8db..325d58c 100644 --- a/tests/scripts/targets/POSIX +++ b/tests/scripts/targets/POSIX @@ -6,24 +6,62 @@ $details = ""; # Ensure turning on .POSIX enables the -e flag for the shell -# We can't assume the exit value of "false" because on different systems it's -# different. -my $script = 'false; true'; -my $flags = '-ec'; -my $out = `$sh_name $flags '$script' 2>&1`; -my $err = $? >> 8; -run_make_test(qq! +run_make_test(q! .POSIX: -all: ; \@$script +all: ; @#HELPER# -q fail 1; #HELPER# out hello +!, + '', "#MAKE#: *** [#MAKEFILE#:3: all] Error 1\n", 512); + +# But explicit settings must still take precedence + +run_make_test(q! +.POSIX: +all: ; @-#HELPER# -q fail 1; #HELPER# out hello +.SHELLFLAGS = -c +!, + '', "hello"); + +run_make_test(q! +.POSIX: +all: ; @-#HELPER# -q fail 1; #HELPER# out hello +all: .SHELLFLAGS = -c +!, + '', "hello"); + +# SV 63667: We shouldn't add -e to sh if errors are ignored + +run_make_test(q! +.POSIX: +all: ; @-#HELPER# -q fail 1; #HELPER# out hello +!, + '', "hello\n"); + +# But explicit settings must still take precedence + +run_make_test(q! +.POSIX: +all: ; @-#HELPER# -q fail 1; #HELPER# out hello +.SHELLFLAGS = -ec !, - '', "#MAKE#: *** [#MAKEFILE#:3: all] Error $err\n", 512); + '', "#MAKE#: [#MAKEFILE#:3: all] Error 1 (ignored)\n"); + +run_make_test(q! +.POSIX: +all: ; @-#HELPER# -q fail 1; #HELPER# out hello +all: .SHELLFLAGS = -ec +!, + '', "#MAKE#: [#MAKEFILE#:3: all] Error 1 (ignored)\n"); # User settings must override .POSIX # In the standard .POSIX must be the first thing in the makefile -# but we relax that rule in GNU make. -$flags = '-xc'; -$out = `$sh_name $flags '$script' 2>&1`; +# but we relax that rule in GNU Make. + +# Different versions of sh generate different output for -x so check it +my $script = subst_make_string('#HELPER# -q fail 1; true'); +my $flags = '-xc'; +my $out = `$sh_name $flags '$script' 2>&1`; + run_make_test(qq! .SHELLFLAGS = $flags .POSIX: diff --git a/tests/scripts/variables/INCLUDE_DIRS b/tests/scripts/variables/INCLUDE_DIRS index 6881292..353630d 100644 --- a/tests/scripts/variables/INCLUDE_DIRS +++ b/tests/scripts/variables/INCLUDE_DIRS @@ -45,7 +45,7 @@ create_file('defaultdirs.mk', "\$(info \$(.INCLUDE_DIRS))\nall:;\@:\n"); my $cmd = subst_make_string("#MAKEPATH# -f defaultdirs.mk"); my @dirs = `$cmd`; my $dirs = $dirs[0]; -chomp $dirs; +$dirs =~ s/\r?\n//g; unlink('defaultdirs.mk'); run_make_test(" diff --git a/tests/scripts/variables/MAKEFLAGS b/tests/scripts/variables/MAKEFLAGS index a41f1cf..32c2ede 100644 --- a/tests/scripts/variables/MAKEFLAGS +++ b/tests/scripts/variables/MAKEFLAGS @@ -65,79 +65,118 @@ rmdir('bar'); # Test that command line switches are all present in MAKEFLAGS. # sv 62514. my @opts; +my @flavors; # Simple flags. @opts = ('i', 'k', 'n', 'q', 'r', 's', 'w', 'd'); exists $FEATURES{'check-symlink'} and push @opts, 'L'; +@flavors = ('=', ':=', ':::=', '+=-'); +for my $fl (@flavors) { for my $opt (@opts) { - run_make_test(q! -MAKEFLAGS:=B -all:; $(info makeflags='$(MAKEFLAGS)') -!, "-$opt", "/makeflags='B$opt'/"); + run_make_test(" +MAKEFLAGS${fl}B +all:; \$(info makeflags='\$(MAKEFLAGS)') +", "-$opt", "/makeflags='B$opt'/"); +} } +# Strawberry Perl's exec()--or something!--appears to replace all /tmp with the +# user's %TEMP% value so we can't use that for -I testing. Make a directory. + +mkdir('localtmp', 0777); + # Switches which carry arguments. -@opts = (' -I/tmp', ' -Onone', ' --debug=b', ' -l2.5'); +@opts = (' -Ilocaltmp', ' -Onone', ' --debug=b', ' -l2.5'); +for my $fl (@flavors) { for my $opt (@opts) { - run_make_test(q! -MAKEFLAGS:=B -all:; $(info makeflags='$(MAKEFLAGS)') -!, "$opt", "/makeflags='B$opt'/"); + run_make_test(" +MAKEFLAGS${fl}B +all:; \$(info makeflags='\$(MAKEFLAGS)') +", "$opt", "/makeflags='B$opt'/"); +} } # Long options which take no arguments. # sv 62514. @opts = (' --no-print-directory', ' --warn-undefined-variables', ' --trace'); +for my $fl (@flavors) { for my $opt (@opts) { -run_make_test(q! -MAKEFLAGS:=B -all:; $(info makeflags='$(MAKEFLAGS)') -!, "$opt", "/makeflags='B$opt'/"); +run_make_test(" +MAKEFLAGS${fl}B +all:; \$(info makeflags='\$(MAKEFLAGS)') +", "$opt", "/makeflags='B$opt'/"); +} } # Test that make filters out duplicates. # Each option is specified in the makefile, env and on the command line. -@opts = (' -I/tmp', ' -Onone', ' --debug=b', ' -l2.5'); -$ENV{'MAKEFLAGS'} = $opt; +@opts = (' -Ilocaltmp', ' -Onone', ' --debug=b', ' -l2.5'); +for my $fl (@flavors) { for my $opt (@opts) { +$ENV{'MAKEFLAGS'} = $opt; run_make_test(" -MAKEFLAGS:=B $opt +MAKEFLAGS${fl}B $opt all:; \$(info makeflags='\$(MAKEFLAGS)') ", "$opt", "/makeflags='B$opt'/"); } +} # Test that make filters out duplicates. # Each option is specified in the makefile, env and on the command line. # decode_switches reallocates when the number of parameters in sl->list exceeds 5. # This test exercises the realloc branch. +for my $fl (@flavors) { $ENV{'MAKEFLAGS'} = '-I1 -Onone --debug=b -l2.5 -I2 -I3 -I4 -I5 -I6 -I2 -I2'; -run_make_test(q! -MAKEFLAGS:=B -I1 -Onone --debug=b -l2.5 -I2 -I3 -I4 -I5 -I6 -I2 -I2 -all:; $(info makeflags='$(MAKEFLAGS)') -!, +run_make_test(" +MAKEFLAGS${fl}B -I1 -Onone --debug=b -l2.5 -I2 -I3 -I4 -I5 -I6 -I2 -I2 +all:; \$(info makeflags='\$(MAKEFLAGS)') +", '-I1 -Onone --debug=b -l2.5 -I2 -I3 -I4 -I5 -I6', "/makeflags='B -I1 -I2 -I3 -I4 -I5 -I6 -l2.5 -Onone --debug=b'/"); +} # A mix of multiple flags from env, the makefile and command line. # Skip -L since it's not available everywhere +for my $fl (@flavors) { $ENV{'MAKEFLAGS'} = 'ikB --no-print-directory --warn-undefined-variables --trace'; -run_make_test(q! -MAKEFLAGS:=iknqrswd -I/tmp -I/tmp -Onone -Onone -l2.5 -l2.5 -all:; $(info makeflags='$(MAKEFLAGS)') -!, -'-Onone -l2.5 -l2.5 -Onone -I/tmp -iknqrswd -i -n -s -k -I/tmp', -"/makeflags='Bdiknqrsw -I/tmp -l2.5 -Onone --trace --warn-undefined-variables'/"); +run_make_test(" +MAKEFLAGS${fl}iknqrswd -Ilocaltmp -Ilocaltmp -Onone -Onone -l2.5 -l2.5 +all:; \$(info makeflags='\$(MAKEFLAGS)') +", +'-Onone -l2.5 -l2.5 -Onone -Ilocaltmp -iknqrswd -i -n -s -k -Ilocaltmp', +"/makeflags='Bdiknqrsw -Ilocaltmp -l2.5 -Onone --trace --warn-undefined-variables'/"); +} -# Verify MAKEFLAGS are all available to shell functions +# Verify MAKEFLAGS are all available to shell function at parse time. +for my $fl (@flavors) { +my $answer = 'Biknqrs -Ilocaltmp -l2.5 -Onone --no-print-directory --warn-undefined-variables'; $ENV{'MAKEFLAGS'} = 'ikB --no-print-directory --warn-undefined-variables'; -run_make_test(q! -MAKEFLAGS := iknqrsw -I/tmp -I/tmp -Onone -Onone -l2.5 -l2.5 --no-print-directory -XX := $(shell echo "$$MAKEFLAGS") -all:; $(info makeflags='$(XX)') -!, - '-Onone -l2.5 -l2.5 -Onone -I/tmp -iknqrs -i -n -s -k -I/tmp', - "makeflags='iknqrsw -I/tmp -I/tmp -Onone -Onone -l2.5 -l2.5 --no-print-directory'"); +run_make_test(" +MAKEFLAGS${fl}iknqrsw -Ilocaltmp -Ilocaltmp -Onone -Onone -l2.5 -l2.5 --no-print-directory +\$(info at parse time '\$(MAKEFLAGS)') +XX := \$(shell echo \"\$\$MAKEFLAGS\") +all:; \$(info at build time makeflags='\$(XX)') +", +'-Onone -l2.5 -l2.5 -Onone -Ilocaltmp -iknqrs -i -n -s -k -Ilocaltmp', +"at parse time '$answer' +at build time makeflags='$answer'"); +} + +# Verify MAKEFLAGS and command line definitions are all available to shell function at parse time. +for my $fl (@flavors) { +$ENV{'MAKEFLAGS'} = 'ikB --no-print-directory --warn-undefined-variables'; +my $answer = 'Biknqrs -Ilocaltmp -l2.5 -Onone --no-print-directory --warn-undefined-variables -- hello=world'; +run_make_test(" +MAKEFLAGS${fl}iknqrsw -Ilocaltmp -Ilocaltmp -Onone -Onone -l2.5 -l2.5 --no-print-directory +\$(info at parse time '\$(MAKEFLAGS)') +XX := \$(shell echo \"\$\$MAKEFLAGS\") +all:; \$(info at build time makeflags='\$(XX)') +", +'-Onone -l2.5 -l2.5 -Onone -Ilocaltmp -iknqrs -i -n -s -k -Ilocaltmp hello=world', +"at parse time '$answer' +at build time makeflags='$answer'"); +} # Verify that command line arguments are included in MAKEFLAGS run_make_test(q! @@ -155,4 +194,713 @@ echo /erR --trace --no-print-directory -- FOO=bar/ /erR --trace --no-print-directory -- FOO=bar/"); +# sv 63347. +# Verify that command line arguments are included in MAKEFLAGS +# when makefiles are parsed. +my $answer = 'erR -- hello:=world FOO=bar'; +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '-e FOO=bar -r -R hello:=world', +"$answer +$answer +#MAKE#: 'all' is up to date.\n"); + +# sv 63347. +# Same as above, with makefile setting the value of the same variables as +# defined on the cli. +$answer = 'erR -- hello:=world FOO=bar'; +run_make_test(q! +$(info $(MAKEFLAGS)) +FOO=moon +hello:=moon +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '-e FOO=bar -r -R hello:=world', +"$answer +$answer +$answer +#MAKE#: 'all' is up to date.\n"); + +# sv 63347. +# Same as above, with makefile overriding the value of cli definition. +$answer = 'erR -- hello:=world FOO=bar'; +run_make_test(q! +$(info $(MAKEFLAGS)) +override FOO=moon +override hello:=moon +export hello +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '-e FOO=bar -r -R hello:=world', +"$answer +$answer +$answer +#MAKE#: 'all' is up to date.\n"); + +# Same as above, and makefile overrides the value of cli definition. +# resets MAKEOVERRIDES. +$answer = 'rR -- hello:=world FOO=bar'; +run_make_test(q! +$(info $(MAKEFLAGS)) +override FOO=moon +override hello:=moon +export hello +$(info $(MAKEFLAGS)) +MAKEOVERRIDES= +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, 'FOO=bar -r -R hello:=world', +"$answer +$answer +rR -- \nrR +#MAKE#: 'all' is up to date.\n"); + +# sv 63347. +# MAKEFLAGS set is env and makefile sets MAKEFLAGS and there is a command +# line definition. +$answer = ' -- bye=moon hello=world'; +$ENV{'MAKEFLAGS'} = 'hello=world'; +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, 'bye=moon', +" -- bye=moon hello=world + -- bye=moon hello=world +#MAKE#: 'all' is up to date.\n"); + +# sv 63347. +# Conditional assignment and MAKEFLAGS. +$answer = 'B -- bye=moon hello=world'; +$ENV{'MAKEFLAGS'} = 'hello=world'; +run_make_test(q! +$(info $(MAKEFLAGS)) +MAKEFLAGS?=-k +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '-B bye=moon', +"$answer +$answer +$answer +#MAKE#: 'all' is up to date.\n"); + +# sv 63347. +# MAKEFLAGS set is env and makefile sets MAKEFLAGS and there is a command +# line definition. +for my $fl (@flavors) { +my $answer = ' -- bye=moon hello=world'; +$ENV{'MAKEFLAGS'} = 'hello=world'; +run_make_test(" +\$(info \$(MAKEFLAGS)) +MAKEFLAGS${fl}R +\$(info \$(MAKEFLAGS)) +all:; \$(info \$(MAKEFLAGS)) +", 'bye=moon', +"$answer +R$answer +rR$answer +#MAKE#: 'all' is up to date.\n"); +} + +# sv 63347. +# Test changes introduced by makefiles to MAKEFLAGS. +for my $fl (@flavors) { +my $answer = 'rR --no-print-directory -- hello:=world FOO=bar'; +run_make_test(q! +MAKEFLAGS+=--no-print-directory +$(info $(MAKEFLAGS)) +MAKEFLAGS+=-k +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, 'FOO=bar -r -R hello:=world', +"$answer +k$answer +k$answer +#MAKE#: 'all' is up to date.\n"); +} + +# sv 63347. +# Test changes introduced by makefiles to MAKEFLAGS. +# Same as above, but with -e. +for my $fl (@flavors) { +my $answer = 'erR -- hello:=world FOO=bar'; +run_make_test(q! +MAKEFLAGS+=--no-print-directory +$(info $(MAKEFLAGS)) +MAKEFLAGS+=-k +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '-e FOO=bar -r -R hello:=world', +"$answer +$answer +$answer +#MAKE#: 'all' is up to date.\n"); +} + +mkdir('bye', 0777); + +create_file('bye/makefile', +'hello=moon +all:; $(info $(hello))'); + +# sv 63347. +# Test that a cli definition takes precedence over a definition set in +# submake. +run_make_test(q! +v:=$(shell $(MAKE) -C bye --no-print-directory) +all: ; $(info $(v)) +!, 'hello=world', "world #MAKE#[1]: 'all' is up to date.\n#MAKE#: 'all' is up to date."); + +# Same as above with the shell assignment operator. +run_make_test(q! +v \!= $(MAKE) -C bye --no-print-directory +all: ; $(info $(v)) +!, 'hello=world', "world #MAKE#[1]: 'all' is up to date.\n#MAKE#: 'all' is up to date."); + +unlink('bye/makefile'); +rmdir('bye'); + +# sv 63347 +# Invalid command line variable definition. +run_make_test(q! +all:; $(info $(hello)) +!, 'hello=\'$(world\'', "#MAKEFILE#:2: *** unterminated variable reference. Stop.\n", 512); + +# sv 63347 +# An unused invalid command line variable definition is ignored. +run_make_test(q! +all:; $(info good) +!, 'hello=\'$(world\'', "good\n#MAKE#: 'all' is up to date.\n"); + + + +# sv 63537 +# Certain switches can be flipped on and off. +# -k/-S, -w/--no-print-directory and -s/--no-silent. +# Test the following aspects of behavior of these switches +# 1. A switch can be enabled or disabled in makefile. +# 2. A switch can be enabled or disabled in env. +# 3. A switch can be enabled or disabled on the command line. +# 4. Command line beats makefile. +# 5. Env beats makefile. +# 6. Command line beats env. +# 7. MAKEFLAGS contains each specified switch at parse and build time. +# 8. If contradicting switches are specified in multiple origins, MAKEFLAGS +# contains the winning switch at parse and build time. +# 9. MAKEFLAGS does not contain the beaten switch. + +@flavors = ('=', ':=', ':::=', '+='); + +# sv 63537 +# -w vs --no-print-directory + +# -w on the command line. +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '-w', +"#MAKE#: Entering directory '#PWD#' +w +w +#MAKE#: 'all' is up to date. +#MAKE#: Leaving directory '#PWD#'\n"); + +# -w in the env. +$ENV{'MAKEFLAGS'} = '-w'; +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '', +"#MAKE#: Entering directory '#PWD#' +w +w +#MAKE#: 'all' is up to date. +#MAKE#: Leaving directory '#PWD#'\n"); + +# -w in env, --no-print-directory on the command line. +$ENV{'MAKEFLAGS'} = '-w'; +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '--no-print-directory', +" --no-print-directory + --no-print-directory +#MAKE#: 'all' is up to date.\n"); + +# --no-print-directory in env, -w on the command line. +$ENV{'MAKEFLAGS'} = '--no-print-directory'; +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '-w', +"#MAKE#: Entering directory '#PWD#' +w +w +#MAKE#: 'all' is up to date. +#MAKE#: Leaving directory '#PWD#'\n"); + +delete $ENV{'MAKEFLAGS'}; + +# -w in makefile. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}-w +\$(info \$(MAKEFLAGS)) +all:; \$(info \$(MAKEFLAGS)) +", '', +"#MAKE#: Entering directory '#PWD#' +w +w +#MAKE#: 'all' is up to date. +#MAKE#: Leaving directory '#PWD#'\n"); +} + +# sv 63537 +# -w in makefile, --no-print-directory on the command line. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}-w +\$(info \$(MAKEFLAGS)) +all:; \$(info \$(MAKEFLAGS)) +", '--no-print-directory', +" --no-print-directory + --no-print-directory +#MAKE#: 'all' is up to date.\n"); +} + +mkdir('lib2', 0777); +create_file('lib2/makefile', 'all:; $(info $(MAKEFLAGS))'); + +# sv 63537 +# Default, no -w or --no-print-directory is specified. +run_make_test(q! +all:; $(MAKE) -C lib2 +!, '', +"#MAKEPATH# -C lib2 +#MAKE#[1]: Entering directory '#PWD#/lib2' + +#MAKE#[1]: 'all' is up to date. +#MAKE#[1]: Leaving directory '#PWD#/lib2'\n"); + +# sv 63537 +# --no-print-directory in makefile, -w on the command line. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}--no-print-directory +\$(info \$(MAKEFLAGS)) +all: +\t \$(info \$(MAKEFLAGS)) +\t \$(MAKE) -C lib2 +", '-w', +"#MAKE#: Entering directory '#PWD#' +w +w +#MAKEPATH# -C lib2 +#MAKE#[1]: Entering directory '#PWD#/lib2' +w +#MAKE#[1]: 'all' is up to date. +#MAKE#[1]: Leaving directory '#PWD#/lib2' +#MAKE#: Leaving directory '#PWD#'\n"); +} + +# sv 63537 +# --no-print-directory in makefile, -w in the env. +for my $fl (@flavors) { +$ENV{'MAKEFLAGS'} = '-w'; +run_make_test(" +MAKEFLAGS${fl}--no-print-directory +\$(info \$(MAKEFLAGS)) +all: +\t \$(info \$(MAKEFLAGS)) +\t \$(MAKE) -C lib2 +", '', +"#MAKE#: Entering directory '#PWD#' +w +w +#MAKEPATH# -C lib2 +#MAKE#[1]: Entering directory '#PWD#/lib2' +w +#MAKE#[1]: 'all' is up to date. +#MAKE#[1]: Leaving directory '#PWD#/lib2' +#MAKE#: Leaving directory '#PWD#'\n"); +} + +unlink('lib2/makefile'); +rmdir('lib2'); + +# sv 63537 +# -k vs -S. + + +# -S in env. +$ENV{'MAKEFLAGS'} = '-S'; +run_make_test(q! +.RECIPEPREFIX := > +$(info $(MAKEFLAGS)) +all: one two +one: +> $(info $(MAKEFLAGS)) +> #HELPER# -q fail 1 +two:; $(info $@) +!, '', +"S +S +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1", 512); + +# -S in env, -k on the command line. +$ENV{'MAKEFLAGS'} = '-S'; +run_make_test(q! +.RECIPEPREFIX := > +$(info $(MAKEFLAGS)) +all: one two +one: +> $(info $(MAKEFLAGS)) +> #HELPER# -q fail 1 +two:; $(info $@) +!, '-k', +"k +k +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1 +two +#MAKE#: Target 'all' not remade because of errors.", 512); + +# -k in env. +$ENV{'MAKEFLAGS'} = '-k'; +run_make_test(q! +.RECIPEPREFIX := > +$(info $(MAKEFLAGS)) +all: one two +one: +> $(info $(MAKEFLAGS)) +> #HELPER# -q fail 1 +two:; $(info $@) +!, '', +"k +k +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1 +two +#MAKE#: Target 'all' not remade because of errors.", 512); + +# -k in env, -S on the command line. +$ENV{'MAKEFLAGS'} = '-k'; +run_make_test(q! +.RECIPEPREFIX := > +$(info $(MAKEFLAGS)) +all: one two +one: +> $(info $(MAKEFLAGS)) +> #HELPER# -q fail 1 +two:; $(info $@) +!, '-S', +"S +S +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1", 512); + +delete $ENV{'MAKEFLAGS'}; + +# -k in makefile. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}-k +\$(info \$(MAKEFLAGS)) +all: one two +one: +\t \$(info \$(MAKEFLAGS)) +\t #HELPER# -q fail 1 +two:; \$(info \$@) +", '', +"k +k +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1 +two +#MAKE#: Target 'all' not remade because of errors.", 512); +} + +# sv 63537 +# -k in makefile and -S on the command line. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}-k +\$(info \$(MAKEFLAGS)) +all: one two +one: +\t \$(info \$(MAKEFLAGS)) +\t #HELPER# -q fail 1 +two:; \$(info \$@) +", '-S', +"S +S +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1", 512); +} + +# sv 63537 +# -k in makefile and -S in the env. +for my $fl (@flavors) { +$ENV{'MAKEFLAGS'} = '-S'; +run_make_test(" +MAKEFLAGS${fl}-k +\$(info \$(MAKEFLAGS)) +all: one two +one: +\t \$(info \$(MAKEFLAGS)) +\t #HELPER# -q fail 1 +two:; \$(info \$@) +", '', +"S +S +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1", 512); +} + +delete $ENV{'MAKEFLAGS'}; + +# sv 63537 +# -S in makefile. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}-S +\$(info \$(MAKEFLAGS)) +all: one two +one: +\t \$(info \$(MAKEFLAGS)) +\t #HELPER# -q fail 1 +two:; \$(info \$@) +", '', +"S +S +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1", 512); +} + +# -S in makefile and -k on the command line. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}-S +\$(info \$(MAKEFLAGS)) +all: one two +one: +\t \$(info \$(MAKEFLAGS)) +\t #HELPER# -q fail 1 +two:; \$(info \$@) +", '-k', +"k +k +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1 +two +#MAKE#: Target 'all' not remade because of errors.", 512); +} + +# sv 63537 +# -S in makefile and -k in the env. +for my $fl (@flavors) { +$ENV{'MAKEFLAGS'} = '-k'; +run_make_test(" +MAKEFLAGS${fl}-S +\$(info \$(MAKEFLAGS)) +all: one two +one: +\t \$(info \$(MAKEFLAGS)) +\t #HELPER# -q fail 1 +two:; \$(info \$@) +", '', +"k +k +#HELPER# -q fail 1 +#MAKE#: *** [#MAKEFILE#:7: one] Error 1 +two +#MAKE#: Target 'all' not remade because of errors.", 512); +} + + +# sv 63537 +# -s vs --no-silent. + +# -s in env. +$ENV{'MAKEFLAGS'} = '-s'; +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '', "s\ns"); + +# -s in env, --no-silent on the command line. +$ENV{'MAKEFLAGS'} = '-s'; +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '--no-silent', +" --no-silent + --no-silent +#MAKE#: 'all' is up to date.\n"); + +# --no-silent in env. +$ENV{'MAKEFLAGS'} = '--no-silent'; +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '', +" --no-silent + --no-silent +#MAKE#: 'all' is up to date.\n"); + +# --no-silent in env, -s on the command line. +$ENV{'MAKEFLAGS'} = '--no-silent'; +run_make_test(q! +$(info $(MAKEFLAGS)) +all:; $(info $(MAKEFLAGS)) +!, '-s', "s\ns"); + +delete $ENV{'MAKEFLAGS'}; + +# -s in the makefile. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}-s +\$(info \$(MAKEFLAGS)) +all:; \$(info \$(MAKEFLAGS)) +", '', "s\ns"); +} + +# sv 63537 +# -s in makefile and --no-silent on the command line. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}-s +\$(info \$(MAKEFLAGS)) +all:; \$(info \$(MAKEFLAGS)) +", '--no-silent', +" --no-silent + --no-silent +#MAKE#: 'all' is up to date.\n"); +} + +# sv 63537 +# -s in makefile and --no-silent in the env. +for my $fl (@flavors) { +$ENV{'MAKEFLAGS'} = '--no-silent'; +run_make_test(" +MAKEFLAGS${fl}-s +\$(info \$(MAKEFLAGS)) +all:; \$(info \$(MAKEFLAGS)) +", '', +" --no-silent + --no-silent +#MAKE#: 'all' is up to date.\n"); +} + +delete $ENV{'MAKEFLAGS'}; + +# sv 63537 +# --no-silent in makefile. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}--no-silent +\$(info \$(MAKEFLAGS)) +all:; \$(info \$(MAKEFLAGS)) +", '', +" --no-silent + --no-silent +#MAKE#: 'all' is up to date.\n"); +} + +# sv 63537 +# --no-silent in makefile and -s on the command line. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}--no-silent +\$(info \$(MAKEFLAGS)) +all:; \$(info \$(MAKEFLAGS)) +", '-s', "s\ns"); +} + +# sv 63537 +# --no-silent in makefile and -s in the env. +for my $fl (@flavors) { +$ENV{'MAKEFLAGS'} = '-s'; +run_make_test(" +MAKEFLAGS${fl}--no-silent +\$(info \$(MAKEFLAGS)) +all:; \$(info \$(MAKEFLAGS)) +", '', "s\ns"); +} + +delete $ENV{'MAKEFLAGS'}; + +# sv 63537 +# Multiple --debug switches from various origins are all combined. +# Because run_make_test regex matching facility does not allow to match against +# multiple lines, run the test twice. During the first run match the output of +# --debug=b, during the second run match the output of --debug=-j. +# +# --debug=b in makefile. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}--debug=b +hello:; touch \$@ +.PHONY: hello +", '', "/Updating makefiles/"); +} + +# --debug=b in makefile, --debug=j on the command line. +# Test for --debug=j output. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}--debug=b +hello:; touch \$@ +.PHONY: hello +", '--debug=j', "/Putting child/"); +} + +# --debug=b in makefile, --debug=j on the command line. +# Test for --debug=b output. +for my $fl (@flavors) { +run_make_test(" +MAKEFLAGS${fl}--debug=b +hello:; touch \$@ +.PHONY: hello +", '--debug=j', "/Updating makefiles/"); +} + +# --debug=j in makefile, --debug=b on the command line. +# Test that MAKEFLAGS contains --debug=b. +run_make_test(q! +MAKEFLAGS=--debug=j +$(info makeflags=$(MAKEFLAGS)) +hello:; touch $@ +.PHONY: hello +!, '--debug=b', "/makeflags= --debug=b/"); + +# --debug=b in makefile, --debug=j in the env. +# Test for --debug=j output. +for my $fl (@flavors) { +$ENV{'MAKEFLAGS'} = '--debug=j'; +run_make_test(" +MAKEFLAGS${fl}--debug=b +hello:; touch \$@ +.PHONY: hello +", '', "/Putting child/"); +} + +# --debug=b in makefile, --debug=j in the env. +# Test for --debug=b output. +for my $fl (@flavors) { +$ENV{'MAKEFLAGS'} = '--debug=j'; +run_make_test(" +MAKEFLAGS${fl}--debug=b +hello:; touch \$@ +.PHONY: hello +", '', "/Updating makefiles/"); +} + +unlink('hello'); + +rmdir('localtmp'); + +# This tells the test driver that the perl test script executed properly. 1; diff --git a/tests/scripts/variables/SHELL b/tests/scripts/variables/SHELL index 78d887c..b18754f 100644 --- a/tests/scripts/variables/SHELL +++ b/tests/scripts/variables/SHELL @@ -36,7 +36,7 @@ run_make_test("SHELL := $altshell\n".' all:;@echo "$(SHELL) $$SHELL" ', '', "$altshell $mshell"); -# As a GNU make extension, if make's SHELL variable is explicitly exported, +# As a GNU Make extension, if make's SHELL variable is explicitly exported, # then we really _DO_ export it. $ENV{SHELL} = $mshell; @@ -66,8 +66,8 @@ one two:;@echo "$@: $(SHELL) $$SHELL" # Test .SHELLFLAGS -# We don't know the output here: on Solaris for example, every line printed -# by the shell in -x mode has a trailing space (!!) +# We don't know the output here: on some systems, for example, every line +# printed by the shell in -x mode has a trailing space! my $script = 'true; true'; my $flags = '-xc'; my $out = `$sh_name $flags '$script' 2>&1`; @@ -94,17 +94,14 @@ all: ; \@$script '', $out); } -# We can't just use "false" because on different systems it provides a -# different exit code--once again Solaris: false exits with 255 not 1 -$script = 'true; false; true'; +$script = subst_make_string('true; #HELPER# -q fail 1; true'); $flags = '-xec'; $out = `$sh_name $flags '$script' 2>&1`; -my $err = $? >> 8; run_make_test(qq! .SHELLFLAGS = $flags all: ; \@$script !, - '', "$out#MAKE#: *** [#MAKEFILE#:3: all] Error $err\n", 512); + '', "${out}#MAKE#: *** [#MAKEFILE#:3: all] Error 1", 512); 1; diff --git a/tests/scripts/variables/private b/tests/scripts/variables/private index 8967ffb..16a34c7 100644 --- a/tests/scripts/variables/private +++ b/tests/scripts/variables/private @@ -47,6 +47,17 @@ a: b ', '', "b: F=b / G=g\na: F= / G=g\n"); +# Exported private global variables +run_make_test(' +private export F = global +$(info $(shell #HELPER# env F)) +a: b +b: export F=b +a b: ; @#HELPER# raw $@ env F +', + '', "F=global\nbF=b\naF="); + + # 5: Multiple conditions on the same variable. Test export. delete $ENV{'_X'}; &run_make_test(' @@ -119,4 +130,48 @@ bar: IA=global b% bar bar: PA=global b% bar bar: PS=bar\n"); +# SV 61463: Private parent variables should not be exported + +run_make_test(q! +a: private export FOO := a +a: b +b: ; @#HELPER# env FOO +!, + '', 'FOO='); + +run_make_test(q! +a: private export FOO := a +a: b +b: FOO := b +b: ; @#HELPER# env FOO +!, + '', 'FOO='); + +run_make_test(q! +export FOO := g +a: private export FOO := a +a: b +b: +b: ; @#HELPER# env FOO +!, + '', 'FOO=g'); + +run_make_test(q! +export FOO := g +a: private export FOO := a +a: b +b: FOO := b +b: ; @#HELPER# env FOO +!, + '', 'FOO=b'); + +run_make_test(q! +private export FOO := g +a: private export FOO := a +a: b +b: FOO := b +b: ; @#HELPER# env FOO +!, + '', 'FOO='); + 1; diff --git a/tests/scripts/variables/special b/tests/scripts/variables/special index 68f3128..e05f6ab 100644 --- a/tests/scripts/variables/special +++ b/tests/scripts/variables/special @@ -1,6 +1,6 @@ # -*-perl-*- -$description = "Test special GNU make variables."; +$description = "Test special GNU Make variables."; $details = ""; @@ -122,26 +122,6 @@ reset-four \ : foo-three : foo-four'); -# Test that the "did you mean TAB" message is printed properly - -run_make_test(q! -$x. -!, - '', '#MAKEFILE#:2: *** missing separator. Stop.', 512); - -run_make_test(q! -foo: - bar -!, - '', '#MAKEFILE#:3: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.', 512); - -run_make_test(q! -.RECIPEPREFIX = : -foo: - bar -!, - '', '#MAKEFILE#:4: *** missing separator. Stop.', 512); - 1; ### Local Variables: diff --git a/tests/scripts/vms/library b/tests/scripts/vms/library index 8375dfa..9c603e0 100644 --- a/tests/scripts/vms/library +++ b/tests/scripts/vms/library @@ -1,6 +1,6 @@ # -*-mode: perl-*- -$description = "Test GNU make's VMS Library management features."; +$description = "Test GNU Make's VMS Library management features."; $details = "\ This only works on VMS systems."; diff --git a/tests/test_driver.pl b/tests/test_driver.pl index b64fffb..9380195 100644 --- a/tests/test_driver.pl +++ b/tests/test_driver.pl @@ -5,7 +5,7 @@ # Written 91-12-02 through 92-01-01 by Stephen McGee. # Modified 92-02-11 through 92-02-22 by Chris Arthur to further generalize. # -# Copyright (C) 1991-2022 Free Software Foundation, Inc. +# Copyright (C) 1991-2023 Free Software Foundation, Inc. # This file is part of GNU Make. # # GNU Make is free software; you can redistribute it and/or modify it under @@ -43,6 +43,9 @@ $categories_passed = 0; $total_tests_run = 0; # The total number of individual tests that have passed $total_tests_passed = 0; +# Set to true if something failed. It could be that tests_run == tests_passed +# even with failures, if we don't run tests for some reason. +$some_test_failed = 0; # The number of tests in this category that have been run $tests_run = 0; # The number of tests in this category that have passed @@ -145,7 +148,7 @@ sub resetENV # through Perl 5.004. It was fixed in Perl 5.004_01, but we don't # want to require that here, so just delete each one individually. - if ($^O ne 'VMS') { + if ($osname ne 'VMS') { foreach $v (keys %ENV) { delete $ENV{$v}; } @@ -202,6 +205,9 @@ sub toplevel 'PURIFYOPTIONS', # Windows-specific things 'Path', 'SystemRoot', 'TEMP', 'TMP', 'USERPROFILE', 'PATHEXT', + # z/OS specific things + 'LIBPATH', '_BPXK_AUTOCVT', + '_TAG_REDIR_IN', '_TAG_REDIR_OUT', # DJGPP-specific things 'DJDIR', 'DJGPP', 'SHELL', 'COMSPEC', 'HOSTNAME', 'LFN', 'FNCASE', '387', 'EMU387', 'GROUP' @@ -364,6 +370,11 @@ sub toplevel print ($categories_failed == 1 ? "y" : "ies"); print " Failed (See .$diffext* files in $workdir dir for details) :-(\n\n"; return 0; + } elsif ($some_test_failed) { + # Something failed but no tests were marked failed... probably a syntax + # error in a test script + print "\nSome tests failed (See output for details) :-(\n\n"; + return 0; } print "\n$total_tests_passed Test"; @@ -386,7 +397,7 @@ sub get_osname # # This is probably not specific enough. # - if ($osname =~ /MSWin32/i || $osname =~ /Windows/i + if ($osname =~ /MSWin32/i || $osname =~ /Windows/i || $osname =~ /msys/i || $osname =~ /MINGW32/i || $osname =~ /CYGWIN_NT/i) { $port_type = 'W32'; } @@ -402,15 +413,13 @@ sub get_osname elsif ($osname =~ m%OS/2%) { $port_type = 'OS/2'; } - # VMS has a GNV Unix mode or a DCL mode. # The SHELL environment variable should not be defined in VMS-DCL mode. elsif ($osname eq 'VMS' && !defined $ENV{"SHELL"}) { $port_type = 'VMS-DCL'; } # Everything else, right now, is UNIX. Note that we should integrate - # the VOS support into this as well and get rid of $vos; we'll do - # that next time. + # the VOS support into this as well and get rid of $vos else { $port_type = 'UNIX'; } @@ -424,7 +433,7 @@ sub get_osname # See if the filesystem supports long file names with multiple # dots. DOS doesn't. $short_filenames = 0; - (open (TOUCHFD, "> fancy.file.name") and close (TOUCHFD)) + (open (TOUCHFD, '>', 'fancy.file.name') and close (TOUCHFD)) or $short_filenames = 1; unlink ("fancy.file.name") or $short_filenames = 1; @@ -607,7 +616,7 @@ sub run_all_tests $perl_testname = "$scriptpath$pathsep$testname"; $testname =~ s/(\.pl|\.perl)$//; $testpath = "$workpath$pathsep$testname"; - $extext = '_' if $^O eq 'VMS'; + $extext = '_' if $osname eq 'VMS'; $log_filename = "$testpath.$logext"; $diff_filename = "$testpath.$diffext"; $base_filename = "$testpath.$baseext"; @@ -646,6 +655,7 @@ sub run_all_tests warn "\n*** Couldn't parse $perl_testname\n"; } $status = "FAILED ($tests_passed/$tests_run passed)"; + $some_test_failed = 1; } elsif ($code == -1) { # Skipped... not supported @@ -657,14 +667,17 @@ sub run_all_tests # the suite forgot to end with "1;". warn "\n*** Test returned $code\n"; $status = "FAILED ($tests_passed/$tests_run passed)"; + $some_test_failed = 1; } elsif ($tests_run == 0) { # Nothing was done!! $status = "FAILED (no tests found!)"; + $some_test_failed = 1; } elsif ($tests_run > $tests_passed) { # Lose! $status = "FAILED ($tests_passed/$tests_run passed)"; + $some_test_failed = 1; } else { # Win! @@ -806,12 +819,164 @@ sub error die "$caller: $message"; } +sub compare_answer_vms +{ + my ($kgo, $log) = @_; + + # VMS has extra blank lines in output sometimes. + # Ticket #41760 + $log =~ s/\n\n+/\n/gm; + $log =~ s/\A\n+//g; + return 1 if ($kgo eq $log); + + # VMS adding a "Waiting for unfinished jobs..." + # Remove it for now to see what else is going on. + $log =~ s/^.+\*\*\* Waiting for unfinished jobs.+$//m; + $log =~ s/\n\n/\n/gm; + $log =~ s/^\n+//gm; + return 1 if ($log eq $kgo); + + # VMS wants target device to exist or generates an error, + # Some test targets look like VMS devices and trip this. + $log =~ s/^.+\: no such device or address.*$//gim; + $log =~ s/\n\n/\n/gm; + $log =~ s/^\n+//gm; + return 1 if ($log eq $kgo); + + # VMS error message has a different case + $log =~ s/no such file /No such file /gm; + return 1 if ($log eq $kgo); + + # VMS is putting comas instead of spaces in output + $log =~ s/,/ /gm; + return 1 if ($log eq $kgo); + + # VMS Is sometimes adding extra leading spaces to output? + { + (my $mlog = $log) =~ s/^ +//gm; + return 1 if ($mlog eq $kgo); + } + + # VMS port not handling POSIX encoded child status + # Translate error case it for now. + $log =~ s/0x1035a00a/1/gim; + return 1 if ($log =~ /\Q$kgo\E/i); + + $log =~ s/0x1035a012/2/gim; + return 1 if ($log eq $kgo); + + # Tests are using a UNIX null command, temp hack + # until this can be handled by the VMS port. + # ticket # 41761 + $log =~ s/^.+DCL-W-NOCOMD.*$//gim; + $log =~ s/\n\n+/\n/gm; + $log =~ s/^\n+//gm; + return 1 if ($log eq $kgo); + + # Tests are using exit 0; + # this generates a warning that should stop the make, but does not + $log =~ s/^.+NONAME-W-NOMSG.*$//gim; + $log =~ s/\n\n+/\n/gm; + $log =~ s/^\n+//gm; + return 1 if ($log eq $kgo); + + # VMS is sometimes adding single quotes to output? + $log =~ s/\'//gm; + return 1 if ($log eq $kgo); + + # And missing an extra space in output + $kgo =~ s/\h\h+/ /gm; + return 1 if ($log eq $kgo); + + # VMS adding ; to end of some lines. + $log =~ s/;\n/\n/gm; + return 1 if ($log eq $kgo); + + # VMS adding trailing space to end of some quoted lines. + $log =~ s/\h+\n/\n/gm; + return 1 if ($log eq $kgo); + + # And VMS missing leading blank line + $kgo =~ s/\A\n//g; + return 1 if ($log eq $kgo); + + # Unix double quotes showing up as single quotes on VMS. + $kgo =~ s/\"//g; + return 1 if ($log eq $kgo); + + return 0; +} + +sub convert_answer_zos +{ + my ($log) = @_; + + # z/OS emits "Error 143" or "SIGTERM" instead of terminated + $log =~ s/Error 143/Terminated/gm; + $log =~ s/SIGTERM/Terminated/gm; + + # z/OS error messages have a prefix + $log =~ s/EDC5129I No such file or directory\./No such file or directory/gm; + $log =~ s/FSUM7351 not found/not found/gm; + + return $log; +} + +sub compare_answer +{ + my ($kgo, $log) = @_; + my ($mkgo, $mlog); + + # For make, get rid of any time skew error before comparing--too bad this + # has to go into the "generic" driver code :-/ + $log =~ s/^.*modification time .*in the future.*\n//gm; + $log =~ s/^.*Clock skew detected.*\n//gm; + return 1 if ($log eq $kgo); + + # Get rid of newline differences, forever + $kgo =~ s,\r\n,\n,gs; + $log =~ s,\r\n,\n,gs; + return 1 if ($log eq $kgo); + + # Keep the originals in case it's a regex + $mkgo = $kgo; + $mlog = $log; + + # z/OS has quirky outputs + if ($osname eq 'os390') { + $mlog = convert_answer_zos($mlog); + return 1 if ($mlog eq $kgo); + } + + # Some versions of Perl on Windows use /c instead of C: + $mkgo =~ s,\b([A-Z]):,/\L$1,g; + $mlog =~ s,\b([A-Z]):,/\L$1,g; + return 1 if ($mlog eq $mkgo); + + # See if it is a backslash problem (only on W32?) + $mkgo =~ tr,\\,/,; + $mlog =~ tr,\\,/,; + return 1 if ($mlog eq $mkgo); + + # VMS is a whole thing... + return 1 if ($osname eq 'VMS' && compare_answer_vms($kgo, $log)); + + # See if the answer might be a regex. + if ($kgo =~ m,^/(.+)/$,) { + # Check the regex against both the original and modified strings + return 1 if ($log =~ /$1/); + return 1 if ($mlog =~ /$1/); + } + + return 0; +} + my %old_tempfiles = (); sub compare_output { my ($answer, $logfile) = @_; - my ($slurp, $answer_matched, $extra) = ('', 0, 0); + my ($slurp, $matched, $extra) = ('', 0, 0); ++$tests_run; @@ -831,169 +996,25 @@ sub compare_output if (! defined $answer) { print "Ignoring output ........ " if $debug; - $answer_matched = 1; + $matched = 1; } else { print "Comparing output ........ " if $debug; - $slurp = &read_file_into_string ($logfile); - - # For make, get rid of any time skew error before comparing--too bad this - # has to go into the "generic" driver code :-/ - $slurp =~ s/^.*modification time .*in the future.*\n//gm; - $slurp =~ s/^.*Clock skew detected.*\n//gm; - - if ($slurp eq $answer) { - $answer_matched = 1; - } else { - # See if it is a slash or CRLF problem - my ($answer_mod, $slurp_mod) = ($answer, $slurp); - - $answer_mod =~ tr,\\,/,; - $answer_mod =~ s,\r\n,\n,gs; - - $slurp_mod =~ tr,\\,/,; - $slurp_mod =~ s,\r\n,\n,gs; - - $answer_matched = ($slurp_mod eq $answer_mod); - - if (!$answer_matched && $^O eq 'VMS') { - - # VMS has extra blank lines in output sometimes. - # Ticket #41760 - if (!$answer_matched) { - $slurp_mod =~ s/\n\n+/\n/gm; - $slurp_mod =~ s/\A\n+//g; - $answer_matched = ($slurp_mod eq $answer_mod); - } - - # VMS adding a "Waiting for unfinished jobs..." - # Remove it for now to see what else is going on. - if (!$answer_matched) { - $slurp_mod =~ s/^.+\*\*\* Waiting for unfinished jobs.+$//m; - $slurp_mod =~ s/\n\n/\n/gm; - $slurp_mod =~ s/^\n+//gm; - $answer_matched = ($slurp_mod eq $answer_mod); - } - - # VMS wants target device to exist or generates an error, - # Some test tagets look like VMS devices and trip this. - if (!$answer_matched) { - $slurp_mod =~ s/^.+\: no such device or address.*$//gim; - $slurp_mod =~ s/\n\n/\n/gm; - $slurp_mod =~ s/^\n+//gm; - $answer_matched = ($slurp_mod eq $answer_mod); - } - - # VMS error message has a different case - if (!$answer_matched) { - $slurp_mod =~ s/no such file /No such file /gm; - $answer_matched = ($slurp_mod eq $answer_mod); - } - - # VMS is putting comas instead of spaces in output - if (!$answer_matched) { - $slurp_mod =~ s/,/ /gm; - $answer_matched = ($slurp_mod eq $answer_mod); - } - - # VMS Is sometimes adding extra leading spaces to output? - if (!$answer_matched) { - my $slurp_mod = $slurp_mod; - $slurp_mod =~ s/^ +//gm; - $answer_matched = ($slurp_mod eq $answer_mod); - } - - # VMS port not handling POSIX encoded child status - # Translate error case it for now. - if (!$answer_matched) { - $slurp_mod =~ s/0x1035a00a/1/gim; - $answer_matched = 1 if $slurp_mod =~ /\Q$answer_mod\E/i; - - } - if (!$answer_matched) { - $slurp_mod =~ s/0x1035a012/2/gim; - $answer_matched = ($slurp_mod eq $answer_mod); - } - - # Tests are using a UNIX null command, temp hack - # until this can be handled by the VMS port. - # ticket # 41761 - if (!$answer_matched) { - $slurp_mod =~ s/^.+DCL-W-NOCOMD.*$//gim; - $slurp_mod =~ s/\n\n+/\n/gm; - $slurp_mod =~ s/^\n+//gm; - $answer_matched = ($slurp_mod eq $answer_mod); - } - # Tests are using exit 0; - # this generates a warning that should stop the make, but does not - if (!$answer_matched) { - $slurp_mod =~ s/^.+NONAME-W-NOMSG.*$//gim; - $slurp_mod =~ s/\n\n+/\n/gm; - $slurp_mod =~ s/^\n+//gm; - $answer_matched = ($slurp_mod eq $answer_mod); - } - - # VMS is sometimes adding single quotes to output? - if (!$answer_matched) { - my $noq_slurp_mod = $slurp_mod; - $noq_slurp_mod =~ s/\'//gm; - $answer_matched = ($noq_slurp_mod eq $answer_mod); - - # And missing an extra space in output - if (!$answer_matched) { - $noq_answer_mod = $answer_mod; - $noq_answer_mod =~ s/\h\h+/ /gm; - $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); - } - - # VMS adding ; to end of some lines. - if (!$answer_matched) { - $noq_slurp_mod =~ s/;\n/\n/gm; - $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); - } - - # VMS adding trailing space to end of some quoted lines. - if (!$answer_matched) { - $noq_slurp_mod =~ s/\h+\n/\n/gm; - $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); - } - - # And VMS missing leading blank line - if (!$answer_matched) { - $noq_answer_mod =~ s/\A\n//g; - $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); - } - - # Unix double quotes showing up as single quotes on VMS. - if (!$answer_matched) { - $noq_answer_mod =~ s/\"//g; - $answer_matched = ($noq_slurp_mod eq $noq_answer_mod); - } - } - } - - # If it still doesn't match, see if the answer might be a regex. - if (!$answer_matched && $answer =~ m,^/(.+)/$,) { - $answer_matched = ($slurp =~ /$1/); - if (!$answer_matched && $answer_mod =~ m,^/(.+)/$,) { - $answer_matched = ($slurp_mod =~ /$1/); - } - } - } + $matched = compare_answer($answer, &read_file_into_string ($logfile)); } - if ($keep || ! $answer_matched) { + if ($keep || ! $matched) { &create_file(&get_basefile, $answer); &create_file(&get_runfile, $command_string); } - if ($answer_matched && $test_passed && !$extra) { + if ($matched && $test_passed && !$extra) { print "ok\n" if $debug; ++$tests_passed; return 1; } - if (! $answer_matched) { + if (! $matched) { print "DIFFERENT OUTPUT\n" if $debug; print "\nCreating Difference File ...\n" if $debug; @@ -1001,10 +1022,11 @@ sub compare_output # Create the difference file my $base = get_basefile(); if ($diff_name) { - my $command = "$diff_name -c $base $logfile"; - &run_command_with_output(get_difffile(), $command); + &run_command_with_output(get_difffile(), + "$diff_name -c $base $logfile"); } else { - create_file(get_difffile(), "Log file $logfile differs from base file $base\n"); + create_file(get_difffile(), + "Log file $logfile differs from base file $base\n"); } } @@ -1067,7 +1089,7 @@ sub detach_default_output @OUTSTACK or error("default output stack has flown under!\n", 1); close(STDOUT); - close(STDERR) unless $^O eq 'VMS'; + close(STDERR) unless $osname eq 'VMS'; open (STDOUT, '>&', pop @OUTSTACK) or error("ddo: $! duping STDOUT\n", 1); @@ -1077,7 +1099,7 @@ sub detach_default_output sub _run_with_timeout { my $code; - if ($^O eq 'VMS') { + if ($osname eq 'VMS') { #local $SIG{ALRM} = sub { # my $e = $ERRSTACK[0]; # print $e "\nTest timed out after $test_timeout seconds\n"; @@ -1103,9 +1125,10 @@ sub _run_with_timeout $code = (($vms_code & 0xFFF) >> 3) * 256; } - } elsif ($port_type eq 'W32') { + } elsif ($port_type eq 'W32' && $^O ne 'msys') { + # Using ActiveState Perl (?) my $pid = system(1, @_); - $pid > 0 or die "Cannot execute $_[0]\n"; + $pid > 0 or die "Cannot execute $_[0]: $!\n"; local $SIG{ALRM} = sub { my $e = $ERRSTACK[0]; print $e "\nTest timed out after $test_timeout seconds\n"; @@ -1172,7 +1195,7 @@ sub run_command print "\nrun_command: @_\n" if $debug; my $code = _run_command(@_); print "run_command returned $code.\n" if $debug; - print "vms status = ${^CHILD_ERROR_NATIVE}\n" if $debug and $^O eq 'VMS'; + print "vms status = ${^CHILD_ERROR_NATIVE}\n" if $debug and $osname eq 'VMS'; return $code; } @@ -1194,7 +1217,7 @@ sub run_command_with_output $err and die $err; print "run_command_with_output returned $code.\n" if $debug; - print "vms status = ${^CHILD_ERROR_NATIVE}\n" if $debug and $^O eq 'VMS'; + print "vms status = ${^CHILD_ERROR_NATIVE}\n" if $debug and $osname eq 'VMS'; return $code; } @@ -1242,7 +1265,7 @@ sub remove_directory_tree_inner return 0; } } else { - if ($^O ne 'VMS') { + if ($osname ne 'VMS') { if (!unlink $object) { print "Cannot unlink $object: $!\n"; return 0; @@ -1266,7 +1289,7 @@ sub remove_directory_tree_inner # # foreach my $file (@filenames) { # utime ($now, $now, $file) -# or (open (TOUCHFD, ">> $file") and close (TOUCHFD)) +# or (open (TOUCHFD, '>>', $file) and close (TOUCHFD)) # or &error ("Couldn't touch $file: $!\n", 1); # } # return 1; @@ -1313,7 +1336,7 @@ sub create_file { my ($filename, @lines) = @_; - open (CF, "> $filename") or &error ("Couldn't open $filename: $!\n", 1); + open (CF, '>', $filename) or &error ("Couldn't open '$filename': $!\n", 1); foreach $line (@lines) { print CF $line; } diff --git a/tests/thelp.pl b/tests/thelp.pl index 993339c..da042aa 100755 --- a/tests/thelp.pl +++ b/tests/thelp.pl @@ -8,17 +8,21 @@ # Each step consists of an operator and argument. # # It supports the following operators: -# out : echo to stdout with a newline -# raw : echo to stdout without adding anything -# file : echo to stdout AND create the file -# dir : echo to stdout AND create the directory -# rm : echo to stdout AND delete the file/directory -# wait : wait for a file named to exist -# tmout : Change the timeout for waiting. Default is 4 seconds. -# sleep : Sleep for seconds then echo -# fail : echo to stdout then exit with error code err +# out : echo to stdout with a newline +# raw : echo to stdout without adding anything +# env : echo the value of the env.var. , or "" +# file : echo to stdout AND create the file +# dir : echo to stdout AND create the directory +# rm : echo to stdout AND delete the file/directory +# wait : wait for a file named to exist +# exist : echo AND fail if a file named doesn't exist +# noexist : echo AND fail if a file named exists +# tmout : Change the timeout for waiting. Default is 4 seconds. +# sleep : Sleep for seconds then echo +# term : send SIGTERM to PID +# fail : echo to stdout then exit with error code err # -# If given -q only the "out" command generates output. +# If given -q only the "out", "raw", and "env" commands generate output. # Force flush $| = 1; @@ -40,6 +44,16 @@ sub op { return 1; } + if ($op eq 'env') { + print "$nm=" unless $quiet; + if (exists $ENV{$nm}) { + print "$ENV{$nm}\n"; + } else { + print "\n"; + } + return 1; + } + # Show the output before creating the file if ($op eq 'file') { print "file $nm\n" unless $quiet; @@ -48,6 +62,18 @@ sub op { return 1; } + if ($op eq 'exist') { + -f "$nm" || die "$nm: file should exist: $!\n"; + print "exist $nm\n" unless $quiet; + return 1 + } + + if ($op eq 'noexist') { + -f "$nm" && die "$nm: file exists\n"; + print "noexist $nm\n" unless $quiet; + return 1 + } + # Show the output before creating the directory if ($op eq 'dir') { print "dir $nm\n" unless $quiet; @@ -95,8 +121,14 @@ sub op { return 1; } + if ($op eq 'term') { + print "term $nm\n" unless $quiet; + kill('TERM', $nm); + return 1; + } + if ($op eq 'fail') { - print "fail $nm\n"; + print "fail $nm\n" unless $quiet; exit($nm); }