Fix for EINTR problems when using jobserver.
authorPaul Smith <psmith@gnu.org>
Fri, 1 Jun 2001 03:56:50 +0000 (03:56 +0000)
committerPaul Smith <psmith@gnu.org>
Fri, 1 Jun 2001 03:56:50 +0000 (03:56 +0000)
New translation files.
Fix for @+ inside define macros being applied too widely.
Various other bug fixes.

15 files changed:
ChangeLog
NEWS
arscan.c
configure.in
dir.c
function.c
i18n/gl.po
i18n/ru.po
job.c
main.c
make.h
make.texinfo
read.c
remake.c
variable.c

index 377d48050ddb95b01aa32ccd8b67681ea3521a53..541da390b991f6844f20dbf78c88f9828b45a876 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,45 @@
+2001-05-06  Paul D. Smith  <psmith@gnu.org>
+
+       Modify the EINTR handling.
+
+       * job.c (new_job): Reorganize the jobserver algorithm.  Reorder
+       the way in which we manage the file descriptor/signal handler race
+       trap to be more efficient.
+
+2001-05-06  Paul Eggert  <eggert@twinsun.com>
+
+       Restart almost all system calls that are interrupted, instead
+       of worrying about EINTR.  The lone exception is the read() for
+       job tokens.
+
+       * configure.in (HAVE_SA_RESTART): New macro.
+       (MAKE_JOBSERVER): Define to 1 only if HAVE_SA_RESTART.
+       * main.c (main): Use SA_RESTART instead of the old,
+       nonstandard SA_INTERRUPT.
+
+       * configure.in (AC_CHECK_FUNCS): Add bsd_signal.
+       * main.c (bsd_signal): New function or macro,
+       if the implementation doesn't supply it.
+       (The bsd_signal function will be in POSIX 1003.1-200x.)
+       (HANDLESIG): Remove.
+       (main, FATAL_SIG): Use bsd_signal instead of signal or HANDLESIG.
+
+       * make.h (EINTR_SET): Remove.
+       (SA_RESTART): New macro.
+
+       * arscan.c (ar_member_touch): Don't worry about EINTR.
+       * function.c (func_shell): Likewise.
+       * job.c (reap_children, free_child, new_job): Likewise.
+       * main.c (main): Likewise.
+       * remake.c (touch_file, name_mtime): Likewise.
+
+       * arscan.c (ar_member_touch): Fix bug uncovered by EINTR removal;
+       if fstat failed with errno!=EINTR, the error was ignored.
+
+       * job.c (set_child_handler_action_flags): New function.
+       (new_job): Use it to temporarily clear the SIGCHLD action flags
+       while reading the token.
+
 2001-05-02  Paul D. Smith  <psmith@gnu.org>
 
        * job.c (start_job_command): Don't add define/endef per-line flags
        (VMS_get_member_info): Calculate the timezone differences correctly.
        Reported by John Fowler <jfowler@nyx.net>.
 
+
+2001-03-14  Paul D. Smith  <psmith@gnu.org>
+
+       * variable.c (lookup_variable) [VMS]: Null-terminate the variable
+       value before invoking define_variable().
+       Reported by John Fowler <jfowler@nyx.net>.
+
+2001-02-07  Paul D. Smith  <psmith@gnu.org>
+
+       * read.c (record_target_var): If we reset the variable due to a
+       command-line variable setting overriding it, turn off the "append"
+       flag.
+
 2001-01-17  Paul D. Smith  <psmith@gnu.org>
 
        * variable.c (lookup_variable) [VMS]: When getting values from the
diff --git a/NEWS b/NEWS
index 38a6d5b1ab3f2b3aaa21b023dde4b68a5a26f401..7f5f9c35eca27291e0a8a1d3984aba0a53ee8f66 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,8 +1,8 @@
 GNU make NEWS                                               -*-indented-text-*-
   History of user-visible changes.
-  23 Jun 2000
+  30 May 2001
 
-Copyright (C) 1992,93,94,95,96,97,98,99,2000 Free Software Foundation, Inc.
+Copyright (C) 1992,93,94,95,96,97,98,99,2000,2001 Free Software Foundation, Inc.
 See the end for copying conditions.
 
 All changes mentioned here are more fully described in the GNU make
@@ -12,12 +12,17 @@ Please send GNU make bug reports to <bug-make@gnu.org>.
 See the README file and the GNU make manual for details on sending bug
 reports.
 \f
+Version 3.79.2
+
 * New pseudo-target .LOW_RESOLUTION_TIME, superseding the configure
   option --disable-nsec-timestamps.  You might need this if your build
   process depends on tools like "cp -p" preserving time stamps, since
   "cp -p" (right now) doesn't preserve the subsecond portion of a time
   stamp.
 
+* Updated translations for Galician, Japanese, and Russian, and a new
+  Turkish translation.
+\f
 Version 3.79.1
 
 * .SECONDARY with no prerequisites now prevents any target from being
index 03ecb7c1c35e314bd77f9a74243b9c7beeacbf24..fc003e99537b0ae89809d9176299cc24f3b4d872 100644 (file)
--- a/arscan.c
+++ b/arscan.c
@@ -797,8 +797,8 @@ ar_member_touch (arname, memname)
   if (AR_HDR_SIZE != write (fd, (char *) &ar_hdr, AR_HDR_SIZE))
     goto lose;
   /* The file's mtime is the time we we want.  */
-  while (fstat (fd, &statbuf) < 0 && EINTR_SET)
-    ;
+  if (fstat (fd, &statbuf) < 0)
+    goto lose;
 #if defined(ARFMAG) || defined(ARFZMAG) || defined(AIAMAG) || defined(WINDOWS32)
   /* Advance member's time to that time */
   for (i = 0; i < sizeof ar_hdr.ar_date; i++)
index b5d109d677ddcb059a0180a5129a330124cc5075..fc5a47754b8ed6be41718f36e37b915d2b84f605 100644 (file)
@@ -3,7 +3,7 @@ AC_REVISION([$Id$])
 AC_PREREQ(2.13)dnl             dnl Minimum Autoconf version required.
 AC_INIT(vpath.c)dnl            dnl A distinctive file to look for in srcdir.
 
-AM_INIT_AUTOMAKE(make, 3.79.1.0)
+AM_INIT_AUTOMAKE(make, 3.79.1.90)
 AM_CONFIG_HEADER(config.h)
 
 dnl Regular configure stuff
@@ -42,7 +42,7 @@ AC_HEADER_TIME
 
 dnl Handle internationalization
 
-ALL_LINGUAS="de es fr gl ja ko nl pl pt_BR ru"
+ALL_LINGUAS="de es fr gl ja ko nl pl pt_BR ru tr"
 pds_WITH_GETTEXT
 
 jm_AC_TYPE_UINTMAX_T
@@ -113,8 +113,9 @@ if test $ac_cv_func_gettimeofday = yes; then
 fi
 
 AC_CHECK_FUNCS(        memmove memcpy strchr strdup psignal mkstemp mktemp fdopen \
-               dup2 getcwd sigsetmask sigaction getgroups setlinebuf \
-               seteuid setegid setreuid setregid pipe strerror strsignal)
+               bsd_signal dup2 getcwd sigsetmask sigaction getgroups \
+               setlinebuf seteuid setegid setreuid setregid pipe \
+               strerror strsignal)
 
 AC_CHECK_SYMBOL(sys_siglist)
 AC_FUNC_ALLOCA
@@ -196,9 +197,20 @@ case "$ac_cv_func_waitpid/$ac_cv_func_wait3" in
   no/no) has_wait_nohang=no ;;
 esac
 
-case "$ac_cv_func_pipe/$ac_cv_func_sigaction/$has_wait_nohang/$make_cv_job_server" in
-  yes/yes/yes/yes) AC_DEFINE(MAKE_JOBSERVER, 1,
-                     [Define this to enable job server support in GNU make.]);;
+AC_CACHE_CHECK(for SA_RESTART, make_cv_sa_restart, [
+  AC_TRY_COMPILE([#include <signal.h>],
+      [return SA_RESTART;],
+      make_cv_sa_restart=yes,
+      make_cv_sa_restart=no)])
+if test "$make_cv_sa_restart" != no; then
+  AC_DEFINE(HAVE_SA_RESTART, 1,
+     [Define if <signal.h> defines the SA_RESTART constant.])
+fi
+
+case "$ac_cv_func_pipe/$ac_cv_func_sigaction/$make_cv_sa_restart/$has_wait_nohang/$make_cv_job_server" in
+  yes/yes/yes/yes/yes)
+    AC_DEFINE(MAKE_JOBSERVER, 1,
+              [Define this to enable job server support in GNU make.]);;
 esac
 
 dnl Allow building with dmalloc
diff --git a/dir.c b/dir.c
index c6c542cc4d7eb0b50de44ca825ec2e107f21e1b9..bc926b9f323f168f65d0b368d711e2f5eea3865e 100644 (file)
--- a/dir.c
+++ b/dir.c
@@ -725,7 +725,7 @@ file_impossible (filename)
     dir = find_directory ("[]");
 #else
   dirend = strrchr (p, '/');
-#if defined (WINDOWS32) || defined (__MSDOS__)
+# if defined (WINDOWS32) || defined (__MSDOS__)
   /* Forward and backslashes might be mixed.  We need the rightmost one.  */
   {
     char *bslash = strrchr(p, '\\');
@@ -735,13 +735,13 @@ file_impossible (filename)
     if (!dirend && p[0] && p[1] == ':')
       dirend = p + 1;
   }
-#endif /* WINDOWS32 or __MSDOS__ */
+# endif /* WINDOWS32 or __MSDOS__ */
   if (dirend == 0)
-#ifdef _AMIGA
+# ifdef _AMIGA
     dir = find_directory ("");
-#else /* !VMS && !AMIGA */
+# else /* !VMS && !AMIGA */
     dir = find_directory (".");
-#endif /* AMIGA */
+# endif /* AMIGA */
 #endif /* VMS */
   else
     {
index 295d84b17b472749fc4c5b6a4b3eb49567d0d813..2c049ced8921fab785ce3a1dbbe0f162cafd2d52 100644 (file)
@@ -1435,8 +1435,7 @@ func_shell (o, argv, funcname)
       buffer = (char *) xmalloc (maxlen + 1);
 
       /* Read from the pipe until it gets EOF.  */
-      i = 0;
-      do
+      for (i = 0; ; i += cc)
        {
          if (i == maxlen)
            {
@@ -1444,12 +1443,10 @@ func_shell (o, argv, funcname)
              buffer = (char *) xrealloc (buffer, maxlen + 1);
            }
 
-         errno = 0;
          cc = read (pipedes[0], &buffer[i], maxlen - i);
-         if (cc > 0)
-           i += cc;
+         if (cc <= 0)
+           break;
        }
-      while (cc > 0 || EINTR_SET);
       buffer[i] = '\0';
 
       /* Close the read side of the pipe.  */
index ab4f56e4496ebd360ef36de39a53e0175f39f248..bb60f6c404d5c735bc5c7869679b5cf4eb798912 100644 (file)
@@ -4,9 +4,9 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.79\n"
-"POT-Creation-Date: 2000-04-05 10:09-0400\n"
-"PO-Revision-Date: 2000-10-01 19:14+02:00\n"
+"Project-Id-Version: make 3.79.1\n"
+"POT-Creation-Date: 2000-06-23 12:21-0400\n"
+"PO-Revision-Date: 2001-05-13 01:51+02:00\n"
 "Last-Translator: Jacobo Tarrio <jtarrio@iname.com>\n"
 "Language-Team: Galician <gpul-traduccion@ceu.fi.udc.es>\n"
 "MIME-Version: 1.0\n"
@@ -57,21 +57,21 @@ msgstr "a chamada a lbr$ini_control fallou con status = %d"
 msgid "unable to open library `%s' to lookup member `%s'"
 msgstr "non se pode abri-la biblioteca `%s' para busca-lo membro `%s'"
 
-#: arscan.c:820
+#: arscan.c:838
 #, c-format
 msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
 msgstr "Membro `%s'%s: %ld bytes en %ld (%ld).\n"
 
-#: arscan.c:821
+#: arscan.c:839
 msgid " (name might be truncated)"
 msgstr " (o nome pode quedar truncado)"
 
-#: arscan.c:823
+#: arscan.c:841
 #, c-format
 msgid "  Date %s"
 msgstr "  Data %s"
 
-#: arscan.c:824
+#: arscan.c:842
 #, c-format
 msgid "  uid = %d, gid = %d, mode = 0%o.\n"
 msgstr "  uid = %d, gid = %d, modo = 0%o.\n"
@@ -80,257 +80,270 @@ msgstr "  uid = %d, gid = %d, modo = 0%o.\n"
 msgid "*** Break.\n"
 msgstr "*** Interrompido.\n"
 
-#: commands.c:483
+#: commands.c:486
 #, c-format
 msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
 msgstr "*** [%s] O membro do arquivo `%s' pode non ser correcto; non borrado"
 
-#: commands.c:486
+#: commands.c:489
 #, c-format
 msgid "*** Archive member `%s' may be bogus; not deleted"
 msgstr "*** O membro do arquivo `%s' pode non ser correcto; non borrado"
 
-#: commands.c:498
+#: commands.c:501
 #, c-format
 msgid "*** [%s] Deleting file `%s'"
 msgstr "*** [%s] Borrando o ficheiro `%s'"
 
-#: commands.c:500
+#: commands.c:503
 #, c-format
 msgid "*** Deleting file `%s'"
 msgstr "*** Borrando o ficheiro `%s'"
 
-#: commands.c:538
+#: commands.c:541
 msgid "#  commands to execute"
 msgstr "#  comandos para executar"
 
-#: commands.c:541
+#: commands.c:544
 msgid " (built-in):"
 msgstr " (incluidas):"
 
-#: commands.c:543
+#: commands.c:546
 #, c-format
 msgid " (from `%s', line %lu):\n"
 msgstr " (de `%s', liña %lu):\n"
 
-#: dir.c:902
+#: dir.c:912
 msgid "\n# Directories\n"
 msgstr "\n# Directorios\n"
 
-#: dir.c:910
+#: dir.c:920
 #, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: non se puido face-la operación de stat.\n"
 
-#: dir.c:913
+#: dir.c:923
 #, c-format
 msgid "# %s (key %s, mtime %d): could not be opened.\n"
 msgstr "# %s (clave %s, mtime %d): non se puido abrir.\n"
 
-#: dir.c:917
+#: dir.c:927
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
 msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): non se puido abrir.\n"
 
-#: dir.c:922
+#: dir.c:932
 #, c-format
 msgid "# %s (device %ld, inode %ld): could not be opened.\n"
 msgstr "# %s (dispositivo %ld, inode %ld): non se puido abrir.\n"
 
-#: dir.c:939
+#: dir.c:949
 #, c-format
 msgid "# %s (key %s, mtime %d): "
 msgstr "# %s (clave %s, mtime %d): "
 
-#: dir.c:943
+#: dir.c:953
 #, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): "
 msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): "
 
-#: dir.c:948
+#: dir.c:958
 #, c-format
 msgid "# %s (device %ld, inode %ld): "
 msgstr "# %s (dispositivo %ld, inode %ld): "
 
-#: dir.c:954 dir.c:974
+#: dir.c:964 dir.c:984
 msgid "No"
 msgstr "Non"
 
-#: dir.c:957 dir.c:977
+#: dir.c:967 dir.c:987
 msgid " files, "
 msgstr " ficheiros, "
 
-#: dir.c:959 dir.c:979
+#: dir.c:969 dir.c:989
 msgid "no"
 msgstr "non"
 
-#: dir.c:962
+#: dir.c:972
 msgid " impossibilities"
 msgstr " imposibles"
 
-#: dir.c:966
+#: dir.c:976
 msgid " so far."
 msgstr " ata aquí."
 
-#: dir.c:982
+#: dir.c:992
 #, c-format
 msgid " impossibilities in %u directories.\n"
 msgstr " imposibles en %u directorios.\n"
 
-#: expand.c:105
+#: expand.c:106
 #, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr "A variable recursiva `%s' fai referencia a si mesma (ao final)"
 
-#: expand.c:130
+#: expand.c:131
 #, c-format
 msgid "warning: undefined variable `%.*s'"
 msgstr "aviso: variable non definida `%.*s'"
 
 #. Unterminated variable reference.
-#: expand.c:247
+#: expand.c:248
 msgid "unterminated variable reference"
 msgstr "referencia a variable non rematada"
 
-#: file.c:307
+#: file.c:303
 #, c-format
 msgid "Commands were specified for file `%s' at %s:%lu,"
 msgstr "Especificáronse comandos do ficheiro `%s' en %s:%lu,"
 
-#: file.c:313
+#: file.c:309
 #, c-format
 msgid "Commands for file `%s' were found by implicit rule search,"
 msgstr "Atopáronse os comandos do ficheiro `%s' por busca de regras implícitas,"
 
-#: file.c:317
+#: file.c:313
 #, 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'."
 
-#: file.c:321
+#: file.c:317
 #, c-format
 msgid "Commands for `%s' will be ignored in favor of those for `%s'."
 msgstr "Os comandos de `%s' serán ignorados en favor dos de `%s'."
 
-#: file.c:342
+#: file.c:338
 #, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr "non se pode renomear `%s' con dous puntos a `%s' con catro puntos"
 
-#: file.c:347
+#: file.c:343
 #, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr "non se pode renomear `%s' con catro puntos a `%s' con dous puntos"
 
-#: file.c:414
+#: file.c:412
 #, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** Borrando o ficheiro intermedio `%s'"
 
-#: file.c:622
+#: file.c:576
+#, c-format
+msgid "%s: Timestamp out of range; substituting %s"
+msgstr "%s: Marca de tempo fóra de rango; substituíndo %s"
+
+#: file.c:577
+msgid "Current time"
+msgstr "Hora actual"
+
+#: file.c:669
 msgid "# Not a target:"
 msgstr "# Non é un obxectivo:"
 
-#: file.c:630
+#: file.c:677
 msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  Ficheiro precioso (prerrequisito de .PRECIOUS)."
 
-#: file.c:632
+#: file.c:679
 msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  Obxectivo falso (prerrequisito de .PHONY)."
 
-#: file.c:634
+#: file.c:681
 msgid "#  Command-line target."
 msgstr "#  Obxectivo da liña de comando."
 
-#: file.c:636
+#: file.c:683
 msgid "#  A default or MAKEFILES makefile."
 msgstr "#  Un ficheiro de make por defecto ou de MAKEFILES."
 
-#: file.c:638
+#: file.c:685
 msgid "#  Implicit rule search has been done."
 msgstr "#  Fíxose a busca de regras implícitas."
 
-#: file.c:639
+#: file.c:686
 msgid "#  Implicit rule search has not been done."
 msgstr "#  Non se fixo a busca de regras implícitas."
 
-#: file.c:641
+#: file.c:688
 #, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "#  Raiz do patrón implícito/estático: `%s'\n"
 
-#: file.c:643
+#: file.c:690
 msgid "#  File is an intermediate prerequisite."
 msgstr "#  O ficheiro é un prerrequisito intermedio."
 
-#: file.c:646
+#: file.c:693
 msgid "#  Also makes:"
 msgstr "#  Tamén se fai:"
 
-#: file.c:652
+#: file.c:699
 msgid "#  Modification time never checked."
 msgstr "#  Nunca se comprobou o tempo de modificación."
 
-#: file.c:654
+#: file.c:701
 msgid "#  File does not exist."
 msgstr "#  O ficheiro non existe."
 
-#: file.c:659
+#: file.c:703
+msgid "#  File is very old."
+msgstr "#  O ficheiro é moi antigo."
+
+#: file.c:708
 #, c-format
 msgid "#  Last modified %s\n"
 msgstr "#  Última modificación: %s\n"
 
-#: file.c:662
+#: file.c:711
 msgid "#  File has been updated."
 msgstr "#  O ficheiro foi actualizado."
 
-#: file.c:662
+#: file.c:711
 msgid "#  File has not been updated."
 msgstr "#  O ficheiro non foi actualizado."
 
-#: file.c:666
+#: file.c:715
 msgid "#  Commands currently running (THIS IS A BUG)."
 msgstr "#  Comandos que se están a executar agora (ISTO É UN ERRO)."
 
-#: file.c:669
+#: file.c:718
 msgid "#  Dependencies commands running (THIS IS A BUG)."
 msgstr "#  Comandos de dependencias que se están a executar (ISTO É UN ERRO)."
 
-#: file.c:678
+#: file.c:727
 msgid "#  Successfully updated."
 msgstr "#  Actualizado con éxito."
 
-#: file.c:682
+#: file.c:731
 msgid "#  Needs to be updated (-q is set)."
 msgstr "#  Ten que ser actualizado (-q está estabrecido)."
 
-#: file.c:685
+#: file.c:734
 msgid "#  Failed to be updated."
 msgstr "#  Non se puido actualizar."
 
-#: file.c:688
+#: file.c:737
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  ¡Valor non válido no membro `update_status'!"
 
-#: file.c:695
+#: file.c:744
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  ¡Valor non válido no membro `command_state'!"
 
-#: file.c:714
+#: file.c:763
 msgid "\n# Files"
 msgstr "\n# Ficheiros"
 
-#: file.c:737
+#: file.c:786
 msgid "\n# No files."
 msgstr "\n# Non hai ficheiros."
 
-#: file.c:740
+#: file.c:789
 #, c-format
 msgid "\n# %u files in %u hash buckets.\n"
 msgstr "\n# %u ficheiros en %u baldes hash.\n"
 
-#: file.c:742
+#: file.c:791
 #, c-format
 msgid "# average %.3f files per bucket, max %u files in one bucket.\n"
 msgstr "# %.3f ficheiros de media por balde, máximo de %u ficheiros nun balde.\n"
@@ -341,8 +354,8 @@ msgid "non-numeric first argument to `word' function"
 msgstr "primeiro argumento da función `word' non numérico"
 
 #: function.c:741
-msgid "the `word' function takes a positive index argument"
-msgstr "a función `word' toma un argumento índice positivo"
+msgid "first argument to `word' function must be greater than 0"
+msgstr "o primeiro argumento da función `word' debe ser maior que 0"
 
 #: function.c:765
 msgid "non-numeric first argument to `wordlist' function"
@@ -381,12 +394,12 @@ msgstr "Limpando o ficheiro de lotes temporal %s\n"
 msgid "Insufficient number of arguments (%d) to function `%s'"
 msgstr "Número de argumentos insuficiente (%d) na chamada á función `%s'"
 
-#: function.c:1692
+#: function.c:1699
 #, c-format
 msgid "Unimplemented on this platform: function `%s'"
 msgstr "Non implementada nesta plataforma: función `%s'"
 
-#: function.c:1745
+#: function.c:1752
 #, c-format
 msgid "unterminated call to function `%s': missing `%c'"
 msgstr "chamada á función `%s' non rematada: falla `%c'"
@@ -460,41 +473,41 @@ msgstr "Buscando unha regra impl
 msgid "Looking for archive-member implicit rule for `%s'.\n"
 msgstr "Buscando unha regra implícita membro do arquivo para `%s'.\n"
 
-#: implicit.c:201
+#: implicit.c:202
 msgid "Avoiding implicit rule recursion.\n"
 msgstr "Evitando a recursión de regras implícitas.\n"
 
-#: implicit.c:339
+#: implicit.c:340
 #, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
 msgstr "Probando a regra de patrón con raiz `%.*s'.\n"
 
-#: implicit.c:380
+#: implicit.c:381
 #, c-format
 msgid "Rejecting impossible implicit prerequisite `%s'.\n"
 msgstr "Rexeitando o prerrequisito implícito imposible `%s'.\n"
 
-#: implicit.c:381
+#: implicit.c:382
 #, c-format
 msgid "Rejecting impossible rule prerequisite `%s'.\n"
 msgstr "Rexeitando o prerrequisito imposible `%s'.\n"
 
-#: implicit.c:391
+#: implicit.c:392
 #, c-format
 msgid "Trying implicit prerequisite `%s'.\n"
 msgstr "Probando o prerrequisito implícito `%s'.\n"
 
-#: implicit.c:392
+#: implicit.c:393
 #, c-format
 msgid "Trying rule prerequisite `%s'.\n"
 msgstr "Probando o prerrequisito `%s'.\n"
 
-#: implicit.c:413
+#: implicit.c:414
 #, c-format
 msgid "Found prerequisite `%s' as VPATH `%s'\n"
 msgstr "Atopouse a o prerrequisito `%s' coma VPATH `%s'\n"
 
-#: implicit.c:430
+#: implicit.c:431
 #, c-format
 msgid "Looking for a rule with intermediate file `%s'.\n"
 msgstr "Buscando unha regra co ficheiro intermedio `%s'.\n"
@@ -545,7 +558,7 @@ msgstr "*** Agardando por traballos non rematados...."
 msgid "Live child 0x%08lx (%s) PID %ld %s\n"
 msgstr "Proceso fillo vivo 0x%08lx (%s) PID %ld %s\n"
 
-#: job.c:484 job.c:644 job.c:742 job.c:1295
+#: job.c:484 job.c:644 job.c:742 job.c:1302
 msgid " (remote)"
 msgstr " (remoto)"
 
@@ -578,130 +591,130 @@ msgstr "write jobserver"
 msgid "Released token for child 0x%08lx (%s).\n"
 msgstr "Liberouse un elemento para o proceso fillo 0x%08lx (%s).\n"
 
-#: job.c:1229 job.c:2218
+#: job.c:1236 job.c:2226
 #, c-format
 msgid "process_easy() failed failed to launch process (e=%d)\n"
 msgstr "process_easy() non puido lanza-lo proceso (e=%d)\n"
 
-#: job.c:1233 job.c:2222
+#: job.c:1240 job.c:2230
 #, c-format
 msgid "\nCounted %d args in failed launch\n"
 msgstr "\nContáronse %d argumentos no lanzamento que fallou\n"
 
-#: job.c:1293
+#: job.c:1300
 #, c-format
 msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
 msgstr "Poñendo o proceso fillo 0x%08lx (%s) PID %ld%s na cadea.\n"
 
-#: job.c:1490
+#: job.c:1498
 #, c-format
 msgid "Obtained token for child 0x%08lx (%s).\n"
 msgstr "Obtívose un elemento para o proceso fillo 0x%08lx (%s).\n"
 
-#: job.c:1496
+#: job.c:1504
 msgid "read jobs pipe"
 msgstr "lectura do cano de traballos"
 
-#: job.c:1566
+#: job.c:1574
 msgid "cannot enforce load limits on this operating system"
 msgstr "non se poden impoñer límites de carga neste sistema operativo"
 
-#: job.c:1568
+#: job.c:1576
 msgid "cannot enforce load limit: "
 msgstr "non se pode impoñer un límite de carga: "
 
-#: job.c:1671
+#: job.c:1679
 #, c-format
 msgid "internal error: `%s' command_state"
 msgstr "erro interno: `%s' command_state"
 
-#: job.c:1756
+#: job.c:1764
 msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
 msgstr "-aviso, CTRL-Y deixará subprocesos ceibos.\n"
 
-#: job.c:1773
+#: job.c:1781
 msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
 msgstr "-aviso, pode que teña que reactiva-lo manexo de CTRL-Y dende o DCL.\n"
 
-#: job.c:1886
+#: job.c:1894
 #, c-format
 msgid "BUILTIN [%s][%s]\n"
 msgstr "BUILTIN [%s][%s]\n"
 
-#: job.c:1897
+#: job.c:1905
 #, c-format
 msgid "BUILTIN CD %s\n"
 msgstr "BUILTIN CD %s\n"
 
-#: job.c:1915
+#: job.c:1923
 #, c-format
 msgid "BUILTIN RM %s\n"
 msgstr "BUILTIN RM %s\n"
 
-#: job.c:1936
+#: job.c:1944
 #, c-format
 msgid "Unknown builtin command '%s'\n"
 msgstr "Comando incluido descoñecido '%s'\n"
 
-#: job.c:1958
+#: job.c:1966
 msgid "Error, empty command\n"
 msgstr "Erro, comando baleiro\n"
 
-#: job.c:1965 main.c:1270
+#: job.c:1973 main.c:1307
 msgid "fopen (temporary file)"
 msgstr "fopen (ficheiro temporal)"
 
-#: job.c:1970
+#: job.c:1978
 #, c-format
 msgid "Redirected input from %s\n"
 msgstr "Entrada redirixida de %s\n"
 
-#: job.c:1977
+#: job.c:1985
 #, c-format
 msgid "Redirected error to %s\n"
 msgstr "Erros redirixidos a %s\n"
 
-#: job.c:1984
+#: job.c:1992
 #, c-format
 msgid "Redirected output to %s\n"
 msgstr "Saída redirixida a %s\n"
 
-#: job.c:2047
+#: job.c:2055
 #, c-format
 msgid "Executing %s instead\n"
 msgstr "Executando %s no canto\n"
 
-#: job.c:2144
+#: job.c:2152
 #, c-format
 msgid "Error spawning, %d\n"
 msgstr "Erro ao lanzar, %d\n"
 
-#: job.c:2247
+#: job.c:2255
 #, c-format
 msgid "make reaped child pid %d, still waiting for pid %d\n"
 msgstr "make colleitou un proceso fillo de pid %d, ainda se agarda polo pid %d\n"
 
-#: job.c:2266
+#: job.c:2274
 #, c-format
 msgid "%s: Command not found"
 msgstr "%s: Comando non atopado"
 
-#: job.c:2295
+#: job.c:2303
 #, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: Intérprete de comandos non atopado"
 
-#: job.c:2476
+#: job.c:2484
 #, c-format
 msgid "$SHELL changed (was `%s', now `%s')"
 msgstr "O valor de $SHELL cambiou (antes era `%s', agora `%s')"
 
-#: job.c:2882
+#: job.c:2890
 #, c-format
 msgid "Creating temporary batch file %s\n"
 msgstr "Creando un ficheiro por lotes temporal %s\n"
 
-#: job.c:2924
+#: job.c:2932
 #, c-format
 msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
 msgstr "%s (liña %d) Contexto do intérprete de comandos incorrecto (!unixy && !batch_mode_shell)\n"
@@ -875,148 +888,148 @@ msgstr "find_and_set_shell estabrecendo default_shell = %s\n"
 msgid "find_and_set_shell path search set default_shell = %s\n"
 msgstr "find_and_set_shell busca de camiños estabrece default_shell = %s\n"
 
-#: main.c:1051
+#: main.c:1058
 #, c-format
 msgid "%s is suspending for 30 seconds..."
 msgstr "%s está suspendido durante 30 segundos..."
 
-#: main.c:1053
+#: main.c:1060
 msgid "done sleep(30). Continuing.\n"
 msgstr "rematouse sleep(30). Continuando.\n"
 
-#: main.c:1260
+#: main.c:1268
 msgid "Makefile from standard input specified twice."
 msgstr "O ficheiro de make da entrada estándar foi especificado dúas veces."
 
-#: main.c:1276
+#: main.c:1313
 msgid "fwrite (temporary file)"
 msgstr "fwrite (ficheiro temporal)"
 
-#: main.c:1378
+#: main.c:1415
 msgid "Do not specify -j or --jobs if sh.exe is not available."
 msgstr "Non especifique -j ou --jobs se sh.exe non está dispoñible."
 
-#: main.c:1379
+#: main.c:1416
 msgid "Resetting make for single job mode."
 msgstr "Reiniciando make para entrar no modo de un traballo."
 
-#: main.c:1416
+#: main.c:1453
 msgid "Parallel jobs (-j) are not supported on this platform."
 msgstr "Os traballos en paralelo (-j) non están soportados nesta plataforma."
 
-#: main.c:1417
+#: main.c:1454
 msgid "Resetting to single job (-j1) mode."
 msgstr "Reiniciando para entrar no modo de un traballo (-j1)."
 
-#: main.c:1431
+#: main.c:1468
 msgid "internal error: multiple --jobserver-fds options"
 msgstr "erro interno: opcións --jobserver-fds múltiples"
 
-#: main.c:1439
+#: main.c:1476
 #, c-format
 msgid "internal error: invalid --jobserver-fds string `%s'"
 msgstr "erro interno: cadea --jobserver-fds non válida `%s'"
 
-#: main.c:1449
+#: main.c:1486
 msgid "warning: -jN forced in submake: disabling jobserver mode."
 msgstr "aviso: -jN forzado no submake: desactivando o modo de servidor de traballos."
 
-#: main.c:1459
+#: main.c:1496
 msgid "dup jobserver"
 msgstr "dup jobserver"
 
-#: main.c:1462
+#: main.c:1499
 msgid "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
 msgstr "aviso: o servidor de traballos non está dispoñible: usando -j1. Engada `+' á regra do make pai."
 
-#: main.c:1485
+#: main.c:1522
 msgid "creating jobs pipe"
 msgstr "creando o cano de traballos"
 
-#: main.c:1495
+#: main.c:1532
 msgid "init jobserver pipe"
 msgstr "inicializa-lo cano do servidor de traballos"
 
-#: main.c:1580
+#: main.c:1617
 msgid "Updating makefiles....\n"
 msgstr "Actualizando os ficheiros de make....\n"
 
-#: main.c:1605
+#: main.c:1642
 #, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr "O ficheiro de make `%s' podería causar un lazo; non se refai.\n"
 
 #. The update failed and this makefile was not
 #. from the MAKEFILES variable, so we care.
-#: main.c:1679
+#: main.c:1716
 #, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr "Non se puido reface-lo ficheiro de make `%s'."
 
-#: main.c:1695
+#: main.c:1732
 #, c-format
 msgid "Included makefile `%s' was not found."
 msgstr "Non se atopou o ficheiro de make incluido `%s'."
 
 #. A normal makefile.  We must die later.
-#: main.c:1700
+#: main.c:1737
 #, c-format
 msgid "Makefile `%s' was not found"
 msgstr "Non se atopou o ficheiro de make `%s'"
 
-#: main.c:1768
+#: main.c:1805
 msgid "Couldn't change back to original directory."
 msgstr "Non se puido voltar ao directorio orixinal."
 
-#: main.c:1802
+#: main.c:1839
 msgid "Re-executing:"
 msgstr "Re-executando:"
 
-#: main.c:1833
+#: main.c:1870
 msgid "unlink (temporary file): "
 msgstr "unlink (ficheiro temporal)"
 
-#: main.c:1855
+#: main.c:1892
 msgid "No targets specified and no makefile found"
 msgstr "Non se especificaron obxectivos e non se atopou un ficheiro de make"
 
-#: main.c:1857
+#: main.c:1894
 msgid "No targets"
 msgstr "Non hai obxectivos"
 
 #. Update the goals.
-#: main.c:1862
+#: main.c:1899
 msgid "Updating goal targets....\n"
 msgstr "Actualizando os obxectivos meta....\n"
 
-#: main.c:1888
+#: main.c:1925
 msgid "warning:  Clock skew detected.  Your build may be incomplete."
 msgstr "aviso: Detectáronse inconsistencias de reloxo. A operación pode quedar incompleta."
 
-#: main.c:2043
+#: main.c:2080
 #, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "Uso: %s [opcións] [obxectivo] ...\n"
 
-#: main.c:2045
+#: main.c:2082
 msgid "Options:\n"
 msgstr "Opcións:\n"
 
-#: main.c:2126
+#: main.c:2163
 msgid "\nReport bugs to <bug-make@gnu.org>.\n"
 msgstr "\nInforme dos erros a <bug-make@gnu.org>.\n"
 
-#: main.c:2235
+#: main.c:2284
 #, c-format
 msgid "the `-%c' option requires a positive integral argument"
 msgstr "a opción `-%c' precisa dun argumento integral positivo"
 
-#: main.c:2659
+#: main.c:2708
 #, c-format
 msgid ""
 ", by Richard Stallman and Roland McGrath.\n"
 "%sBuilt for %s\n"
-"%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99\n"
+"%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000\n"
 "%s\tFree Software Foundation, Inc.\n"
 "%sThis is free software; see the source for copying conditions.\n"
 "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n"
@@ -1027,7 +1040,7 @@ msgid ""
 msgstr ""
 ", por Richard Stallman e Roland McGrath.\n"
 "%sCompilado para %s\n"
-"%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99\n"
+"%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000\n"
 "%s\tFree Software Foundation, Inc.\n"
 "%sIsto é software libre; vexa o código fonte polas condicións de copia.\n"
 "%sNON hai garantía; nin sequera de COMERCIABILIDADE ou APTITUDE PARA\n"
@@ -1036,55 +1049,55 @@ msgstr ""
 "%sInforme dos erros a <bug-make@gnu.org>.\n"
 "\n"
 
-#: main.c:2685
+#: main.c:2734
 #, c-format
 msgid "\n# Make data base, printed on %s"
 msgstr "\n# Base de datos de Make, imprimida en %s"
 
-#: main.c:2694
+#: main.c:2743
 #, c-format
 msgid "\n# Finished Make data base on %s\n"
 msgstr "\n# Base de datos de Make rematada en %s\n"
 
-#: main.c:2749
+#: main.c:2798
 msgid "Entering"
 msgstr "Entrando"
 
-#: main.c:2749
+#: main.c:2798
 msgid "Leaving"
 msgstr "Saindo"
 
-#: main.c:2768
+#: main.c:2817
 msgid "an unknown directory"
 msgstr "un directorio descoñecido"
 
-#: main.c:2770
+#: main.c:2819
 #, c-format
 msgid "directory `%s'\n"
 msgstr "directorio `%s'\n"
 
-#: misc.c:307
+#: misc.c:308
 msgid ".  Stop.\n"
 msgstr ". Detido.\n"
 
-#: misc.c:329
+#: misc.c:330
 #, c-format
 msgid "Unknown error %d"
 msgstr "Erro %d descoñecido"
 
-#: misc.c:369 misc.c:384 misc.c:402 read.c:2708
+#: misc.c:370 misc.c:385 misc.c:403 read.c:2717
 msgid "virtual memory exhausted"
 msgstr "memoria virtual esgotada"
 
 #. All the other debugging messages go to stdout,
 #. but we write this one to stderr because it might be
 #. run in a child fork whose stdout is piped.
-#: misc.c:653
+#: misc.c:655
 #, c-format
 msgid "%s access: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr "Acceso %s: usuario %lu (real %lu), grupo %lu (real %lu)\n"
 
-#: misc.c:674
+#: misc.c:676
 msgid "Initialized"
 msgstr "Inicializado"
 
@@ -1092,48 +1105,48 @@ msgstr "Inicializado"
 msgid "Reading makefiles...\n"
 msgstr "Lendo os ficheiros de make...\n"
 
-#: read.c:337
+#: read.c:335
 #, c-format
 msgid "Reading makefile `%s'"
 msgstr "Lendo o ficheiro de make `%s'"
 
-#: read.c:339
+#: read.c:337
 msgid " (no default goal)"
 msgstr " (non hai un obxectivo por defecto)"
 
-#: read.c:341
+#: read.c:339
 msgid " (search path)"
 msgstr " (camiño de busca)"
 
-#: read.c:343
+#: read.c:341
 msgid " (don't care)"
 msgstr " (non importa)"
 
-#: read.c:345
+#: read.c:343
 msgid " (no ~ expansion)"
 msgstr " (non hai expansión de ~)"
 
-#: read.c:525
+#: read.c:523
 msgid "invalid syntax in conditional"
 msgstr "sintaxe non válida no condicional"
 
-#: read.c:534
+#: read.c:532
 msgid "extraneous `endef'"
 msgstr "`endef' superfluo"
 
-#: read.c:546 read.c:573 variable.c:873
+#: read.c:544 read.c:572 variable.c:873
 msgid "empty variable name"
 msgstr "nome de variable baleiro"
 
-#: read.c:564
+#: read.c:562
 msgid "empty `override' directive"
 msgstr "directiva `override' baleira"
 
-#: read.c:587
+#: read.c:586
 msgid "invalid `override' directive"
 msgstr "directiva `override' non válida"
 
-#: read.c:671
+#: read.c:670
 #, c-format
 msgid "no file name for `%sinclude'"
 msgstr "non hai un home de ficheiro en `%sinclude'"
@@ -1146,98 +1159,98 @@ msgstr "non hai un home de ficheiro en `%sinclude'"
 msgid "commands commence before first target"
 msgstr "os comandos comezan antes do primeiro obxectivo"
 
-#: read.c:787
+#: read.c:788
 msgid "missing rule before commands"
 msgstr "falla unha regra antes dos comandos"
 
 #. There's no need to be ivory-tower about this: check for
 #. one of the most common bugs found in makefiles...
-#: read.c:873
+#: read.c:874
 #, c-format
 msgid "missing separator%s"
 msgstr "falla un separador%s"
 
-#: read.c:875
+#: read.c:876
 msgid " (did you mean TAB instead of 8 spaces?)"
 msgstr " (¿se cadra unha tabulación no canto de oito espacios?)"
 
-#: read.c:1011
+#: read.c:1020
 msgid "missing target pattern"
 msgstr "falla un patrón obxectivo"
 
-#: read.c:1013
+#: read.c:1022
 msgid "multiple target patterns"
 msgstr "patróns de obxectivo múltiples"
 
-#: read.c:1017
+#: read.c:1026
 msgid "target pattern contains no `%%'"
 msgstr "o patrón obxectivo non contén `%%'"
 
-#: read.c:1058
+#: read.c:1067
 msgid "missing `endif'"
 msgstr "falla `endif'"
 
-#: read.c:1117
+#: read.c:1126
 msgid "Extraneous text after `endef' directive"
 msgstr "Texto superfluo trala directiva `endef'"
 
 #. No `endef'!!
-#: read.c:1147
+#: read.c:1156
 msgid "missing `endef', unterminated `define'"
 msgstr "falla `endef', `define' sen rematar"
 
-#: read.c:1201 read.c:1357
+#: read.c:1210 read.c:1366
 #, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "Texto superfluo trala directiva `%s'"
 
-#: read.c:1204
+#: read.c:1213
 #, c-format
 msgid "extraneous `%s'"
 msgstr "`%s' superfluo"
 
-#: read.c:1209
+#: read.c:1218
 msgid "only one `else' per conditional"
 msgstr "só un `else' por condicional"
 
-#: read.c:1471
+#: read.c:1480
 msgid "Malformed per-target variable definition"
 msgstr "Definición dunha variable por obxectivo mal formada"
 
-#: read.c:1553
+#: read.c:1562
 msgid "mixed implicit and static pattern rules"
 msgstr "regrás de patrón implícitas e estáticas mesturadas"
 
-#: read.c:1556
+#: read.c:1565
 msgid "mixed implicit and normal rules"
 msgstr "regras implícitas e normais mesturadas"
 
-#: read.c:1597
+#: read.c:1606
 #, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr "o obxectivo `%s' non coincide co patrón do obxectivo"
 
-#: read.c:1619
+#: read.c:1628
 #, c-format
 msgid "target `%s' leaves prerequisite pattern empty"
 msgstr "o obxectivo `%s' deixa o patrón prerrequisito baleiro"
 
-#: read.c:1635 read.c:1735
+#: read.c:1644 read.c:1744
 #, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr "o ficheiro obxectivo `%s' ten entradas : e ::"
 
-#: read.c:1641
+#: read.c:1650
 #, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr "o obxectivo `%s' aparece máis dunha vez na mesma regra."
 
-#: read.c:1650
+#: read.c:1659
 #, c-format
 msgid "warning: overriding commands for target `%s'"
 msgstr "aviso: ignorando os comandos do obxectivo `%s'"
 
-#: read.c:1653
+#: read.c:1662
 #, c-format
 msgid "warning: ignoring old commands for target `%s'"
 msgstr "aviso: ignóranse os comandos antigos do obxectivo `%s'"
@@ -1247,178 +1260,178 @@ msgstr "aviso: ign
 #. lossage strikes again!  (xmkmf puts NULs in its makefiles.)
 #. There is nothing really to be done; we synthesize a newline so
 #. the following line doesn't appear to be part of this line.
-#: read.c:2153
+#: read.c:2162
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "aviso: viuse un carácter NUL; ignórase o resto da liña"
 
-#: remake.c:227
+#: remake.c:230
 #, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "Non hai nada que facer para `%s'"
 
-#: remake.c:228
+#: remake.c:231
 #, c-format
 msgid "`%s' is up to date."
 msgstr "`%s' está actualizado."
 
-#: remake.c:296
+#: remake.c:299
 #, c-format
 msgid "Pruning file `%s'.\n"
 msgstr "Podando o ficheiro `%s'.\n"
 
-#: remake.c:350
+#: remake.c:353
 #, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "Considerando o ficheiro obxectivo `%s'.\n"
 
-#: remake.c:357
+#: remake.c:360
 #, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr "Hai pouco probouse a actualiza-lo ficheiro `%s' e non se puido.\n"
 
-#: remake.c:361
+#: remake.c:364
 #, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "O ficheiro `%s' xa fora considerado.\n"
 
-#: remake.c:371
+#: remake.c:374
 #, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "Ainda se está actualizando o ficheiro `%s'.\n"
 
-#: remake.c:374
+#: remake.c:377
 #, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "Rematouse de actualiza-lo ficheiro `%s'.\n"
 
-#: remake.c:395
+#: remake.c:398
 #, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "O ficheiro `%s' non existe.\n"
 
-#: remake.c:405 remake.c:825
+#: remake.c:408 remake.c:828
 #, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr "Atopouse unha regra implícita de `%s'.\n"
 
-#: remake.c:407 remake.c:827
+#: remake.c:410 remake.c:830
 #, c-format
 msgid "No implicit rule found for `%s'.\n"
 msgstr "Non se atopou unha regra implícita para `%s'.\n"
 
-#: remake.c:413 remake.c:833
+#: remake.c:416 remake.c:836
 #, c-format
 msgid "Using default commands for `%s'.\n"
 msgstr "Usando os comandos por defecto para `%s'.\n"
 
-#: remake.c:433 remake.c:857
+#: remake.c:436 remake.c:860
 #, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "A dependencia circular %s <- %s foi eliminada."
 
-#: remake.c:511
+#: remake.c:514
 #, c-format
 msgid "Finished prerequisites of target file `%s'.\n"
 msgstr "Rematáronse os prerrequisitos do ficheiro obxectivo `%s'.\n"
 
-#: remake.c:517
+#: remake.c:520
 #, c-format
 msgid "The prerequisites of `%s' are being made.\n"
 msgstr "Estan a se face-los prerrequisitos de `%s'.\n"
 
-#: remake.c:530
+#: remake.c:533
 #, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr "Abandonando no ficheiro obxectivo `%s'.\n"
 
-#: remake.c:535
+#: remake.c:538
 #, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr "Non se refai o obxectivo `%s' a causa dos erros."
 
-#: remake.c:583
+#: remake.c:586
 #, c-format
 msgid "Prerequisite `%s' of target `%s' does not exist.\n"
 msgstr "O prerrequisito `%s' do obxectivo `%s' non existe.\n"
 
-#: remake.c:588
+#: remake.c:591
 #, c-format
 msgid "Prerequisite `%s' is newer than target `%s'.\n"
 msgstr "O prerrequisito `%s' é máis novo có obxectivo `%s'.\n"
 
-#: remake.c:591
+#: remake.c:594
 #, c-format
 msgid "Prerequisite `%s' is older than target `%s'.\n"
 msgstr "O prerrequisito `%s' é máis vello có obxectivo `%s'.\n"
 
-#: remake.c:609
+#: remake.c:612
 #, c-format
 msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr "O obxectivo `%s' ten catro puntos e non ten prerrequisitos.\n"
 
-#: remake.c:615
+#: remake.c:618
 #, c-format
 msgid "No commands for `%s' and no prerequisites actually changed.\n"
 msgstr "Non hai comandos de `%s', e non cambiaron os prerrequisitos.\n"
 
-#: remake.c:623
+#: remake.c:626
 #, c-format
 msgid "No need to remake target `%s'"
 msgstr "Non é preciso reface-lo obxectivo `%s'"
 
-#: remake.c:625
+#: remake.c:628
 #, c-format
 msgid "; using VPATH name `%s'"
 msgstr "; usando o nome de VPATH `%s'"
 
-#: remake.c:645
+#: remake.c:648
 #, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "Debe refacerse o obxectivo `%s'.\n"
 
-#: remake.c:651
+#: remake.c:654
 #, c-format
 msgid "  Ignoring VPATH name `%s'.\n"
 msgstr "  Ignorando o nome VPATH `%s'.\n"
 
-#: remake.c:660
+#: remake.c:663
 #, c-format
 msgid "Commands of `%s' are being run.\n"
 msgstr "Estanse a executa-los comandos de `%s'.\n"
 
-#: remake.c:667
+#: remake.c:670
 #, c-format
 msgid "Failed to remake target file `%s'.\n"
 msgstr "Non se puido reface-lo ficheiro obxectivo `%s'.\n"
 
-#: remake.c:670
+#: remake.c:673
 #, c-format
 msgid "Successfully remade target file `%s'.\n"
 msgstr "O ficheiro obxectivo `%s' foi feito de novo con éxito.\n"
 
-#: remake.c:673
+#: remake.c:676
 #, c-format
 msgid "Target file `%s' needs remade under -q.\n"
 msgstr "O ficheiro obxectivo `%s' precisa refacerse con -q.\n"
 
-#: remake.c:974
+#: remake.c:977
 #, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr "%sNon hai unha regra para face-lo obxectivo `%s'%s"
 
-#: remake.c:976
+#: remake.c:979
 #, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
 msgstr "%sNon hai unha regra para face-lo obxectivo `%s', que precisa `%s'%s"
 
-#: remake.c:1177
+#: remake.c:1191
 #, c-format
 msgid "*** Warning: File `%s' has modification time in the future (%s > %s)"
 msgstr "*** Aviso: O ficheiro `%s' ten unha data de modificación no futuro (%s > %s)"
 
 #. Give a warning if there is no pattern, then remove the
 #. pattern so it's ignored next time.
-#: remake.c:1291
+#: remake.c:1311
 #, c-format
 msgid ".LIBPATTERNS element `%s' is not a pattern"
 msgstr "O elemento de .LIBPATTERNS `%s' non é un patrón"
@@ -1668,24 +1681,24 @@ msgstr "# %d.%d variables de media por balde, m
 msgid "\n# Variables\n"
 msgstr "\n# Variables\n"
 
-#: vpath.c:552
+#: vpath.c:553
 msgid "\n# VPATH Search Paths\n"
 msgstr "\n# Camiños de Busca VPATH\n"
 
-#: vpath.c:569
+#: vpath.c:570
 msgid "# No `vpath' search paths."
 msgstr "# Non hai camiños de busca `vpath'"
 
-#: vpath.c:571
+#: vpath.c:572
 #, c-format
 msgid "\n# %u `vpath' search paths.\n"
 msgstr "\n# %u camiños de busca `vpath'.\n"
 
-#: vpath.c:574
+#: vpath.c:575
 msgid "\n# No general (`VPATH' variable) search path."
 msgstr "\n# Non hai un camiño de busca xeral (variable `VPATH')."
 
-#: vpath.c:580
+#: vpath.c:581
 msgid ""
 "\n"
 "# General (`VPATH' variable) search path:\n"
@@ -1705,6 +1718,9 @@ msgstr "A Aduana non exporta: %s\n"
 msgid "sys$search failed with %d\n"
 msgstr "a chamada a sys$search fallou con %d\n"
 
+#~ msgid "the `word' function takes a positive index argument"
+#~ msgstr "a función `word' toma un argumento índice positivo"
+
 #~ msgid "\n# Implicit Rules"
 #~ msgstr "\n# Regras Implícitas"
 
index 93af904265fbaf4111513567cab0987870232338..369bd2668087e1a1ae7e35db5ff2579d88c49afc 100644 (file)
 # ìÏËÁÌÉÚÁÃÉÑ make
-# Copyright (C) 1998 Free Software Foundation, Inc.
+# Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
 # Oleg S. Tihonov <tihonov@ffke-campus.mipt.ru>, 1998
+# Alexey Mahotkin <alexm@hsys.msk.ru> 2001
+# Denis Perchine <dyp@perchine.com>, 2001
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: make 3.74.4\n"
-"POT-Creation-Date: 1996-05-22 09:11-0400\n"
-"PO-Revision-Date: 1998-12-02 23:00+03:00\n"
-"Last-Translator: Oleg S. Tihonov <tihonov@ffke-campus.mipt.ru>\n"
+"Project-Id-Version: make 3.79\n"
+"POT-Creation-Date: 2000-04-05 10:09-0400\n"
+"PO-Revision-Date: 2001-05-10 12:00+06:00\n"
+"Last-Translator: Denis Perchine <dyp@perchine.com>\n"
 "Language-Team: Russian <ru@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=koi8-r\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ar.c:48
-#, possible-c-format
+#: ar.c:50
+#, c-format
 msgid "attempt to use unsupported feature: `%s'"
 msgstr "ÐÏÐÙÔËÁ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÎÅÐÏÄÄÅÒÖÉ×ÁÅÍÏÇÏ ÓÒÅÄÓÔ×Á: `%s'"
 
-#: ar.c:142
-#, possible-c-format
-msgid "Error in lbr$ini_control, %d\n"
-msgstr "ïÛÉÂËÁ × lbr$ini_control, %d\n"
-
-#: ar.c:147
-#, possible-c-format
-msgid "Error opening library %s to lookup member %s, %d\n"
-msgstr "ïÛÉÂËÁ ÏÔËÒÙÔÉÑ ÂÉÂÌÉÏÔÅËÉ %s ÄÌÑ ÐÏÉÓËÁ ÞÌÅÎÁ %s; %d\n"
-
-#: ar.c:153
-#, possible-c-format
-msgid "Error looking up module %s in library %s, %d\n"
-msgstr "ïÛÉÂËÁ ÐÏÉÓËÁ ÍÏÄÕÌÑ %s × ÂÉÂÌÉÏÔÅËÅ %s, %d\n"
-
-#: ar.c:159
-#, possible-c-format
-msgid "Error getting module info, %d\n"
-msgstr "ïÛÉÂËÁ ÐÏÌÕÞÅÎÉÑ Ó×ÅÄÅÎÉÊ Ï ÍÏÄÕÌÅ, %d\n"
-
-#: ar.c:244
+#: ar.c:141
 msgid "touch archive member is not available on VMS"
 msgstr "ÏÂÎÏ×ÌÅÎÉÅ ×ÒÅÍÅÎÉ ÉÚÍÅÎÅÎÉÑ ÞÌÅÎÁ ÁÒÈÉ×Á ÎÅ×ÏÚÍÏÖÎÏ × ÓÉÓÔÅÍÅ VMS"
 
-#: ar.c:276
-#, possible-c-format
+#: ar.c:173
+#, c-format
 msgid "touch: Archive `%s' does not exist"
 msgstr "ÏÂÎÏ×ÌÅÎÉÅ ×ÒÅÍÅÎÉ ÉÚÍÅÎÅÎÉÑ: áÒÈÉ× `%s' ÎÅ ÓÕÝÅÓÔ×ÕÅÔ"
 
-#: ar.c:279
-#, possible-c-format
+#: ar.c:176
+#, c-format
 msgid "touch: `%s' is not a valid archive"
 msgstr "ÏÂÎÏ×ÌÅÎÉÅ ×ÒÅÍÅÎÉ ÉÚÍÅÎÅÎÉÑ: îÅ×ÅÒÎÙÊ ÁÒÈÉ×: `%s'"
 
-#: ar.c:282
-msgid "touch: "
-msgstr "ÏÂÎÏ×ÌÅÎÉÅ ×ÒÅÍÅÎÉ ÉÚÍÅÎÅÎÉÑ: "
-
-#: ar.c:285
-#, possible-c-format
+#: ar.c:183
+#, c-format
 msgid "touch: Member `%s' does not exist in `%s'"
-msgstr "ÏÂÎÏ×ÌÅÎÉÅ ×ÒÅÍÅÎÉ ÉÚÍÅÎÅÎÉÑ: þÌÅΠ`%s' ÎÅ ÓÏÄÅÒÖÉÔÓÑ × `%s'"
+msgstr "ÏÂÎÏ×ÌÅÎÉÅ ×ÒÅÍÅÎÉ ÉÚÍÅÎÅÎÉÑ: üÌÅÍÅÎÔ `%s' ÎÅ ÓÏÄÅÒÖÉÔÓÑ × `%s'"
 
-#: ar.c:291
-#, possible-c-format
+#: ar.c:190
+#, c-format
 msgid "touch: Bad return code from ar_member_touch on `%s'"
 msgstr ""
 "ÏÂÎÏ×ÌÅÎÉÅ ×ÒÅÍÅÎÉ ÉÚÍÅÎÅÎÉÑ: æÕÎËÃÉÑ ar_member_touch ×ÅÒÎÕÌÁ\n"
 "ÏÛÉÂÏÞÎÏÅ ÚÎÁÞÅÎÉÅ ÄÌÑ `%s'"
 
-#: arscan.c:550
+#: arscan.c:71
+#, c-format
+msgid "lbr$set_module failed to extract module info, status = %d"
+msgstr "lbr$set_module ÎÅ ÓÍÏÇÌÁ ÉÚ×ÌÅÞØ ÉÎÆÏÒÍÁÃÉÀ Ï ÍÏÄÕÌÅ, ÓÔÁÔÕÓ = %d"
+
+#: arscan.c:155
+#, c-format
+msgid "lbr$ini_control failed with status = %d"
+msgstr "lbr$init_control ×ÅÒÎÕÌÁ ËÏÄ ÏÛÉÂËÉ %d"
+
+#: arscan.c:166
+#, c-format
+msgid "unable to open library `%s' to lookup member `%s'"
+msgstr "ïÛÉÂËÁ ÏÔËÒÙÔÉÑ ÂÉÂÌÉÏÔÅËÉ `%s' ÄÌÑ ÐÏÉÓËÁ ÜÌÅÍÅÎÔÁ `%s'"
+
+#: arscan.c:820
+#, c-format
+msgid "Member `%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "üÌÅÍÅÎÔ `%s'%s: %ld ÂÁÊÔ ÐÏ ÁÄÒÅÓÕ %ld (%ld).\n"
+
+#: arscan.c:821
 msgid " (name might be truncated)"
 msgstr " (ÉÍÑ ÍÏÖÅÔ ÂÙÔØ ÕÓÅÞÅÎÏ)"
 
-#: arscan.c:552
-#, possible-c-format
+#: arscan.c:823
+#, c-format
 msgid "  Date %s"
 msgstr "  äÁÔÁ %s"
 
-#~ #: arscan.c:553
-#~ #, possible-c-format
-#~ msgid "  uid = %d, gid = %d, mode = 0%o.\n"
-#~ msgstr ""
+#: arscan.c:824
+#, c-format
+msgid "  uid = %d, gid = %d, mode = 0%o.\n"
+msgstr ""
+
+#: commands.c:391
+msgid "*** Break.\n"
+msgstr "*** ïÓÔÁÎÏ×.\n"
+
+#: commands.c:483
+#, c-format
+msgid "*** [%s] Archive member `%s' may be bogus; not deleted"
+msgstr "*** [%s] üÌÅÍÅÎÔ ÁÒÈÉ×Á `%s', ËÁÖÅÔÓÑ, ÎÅÄÅÊÓÔ×ÉÔÅÌÅÎ; ÎÅ ÕÄÁÌÅÎ"
+
+#: commands.c:486
+#, c-format
+msgid "*** Archive member `%s' may be bogus; not deleted"
+msgstr "*** üÌÅÍÅÎÔ ÁÒÈÉ×Á `%s', ËÁÖÅÔÓÑ, ÎÅÄÅÊÓÔ×ÉÔÅÌÅÎ; ÎÅ ÕÄÁÌÅÎ"
+
+#: commands.c:498
+#, c-format
+msgid "*** [%s] Deleting file `%s'"
+msgstr "*** [%s] õÄÁÌÑÅÔÓÑ ÆÁÊÌ `%s'"
+
+#: commands.c:500
+#, c-format
+msgid "*** Deleting file `%s'"
+msgstr "*** õÄÁÌÑÅÔÓÑ ÆÁÊÌ `%s'"
+
+#: commands.c:538
+msgid "#  commands to execute"
+msgstr "#  ËÏÍÁÎÄÙ, ËÏÔÏÒÙÅ ÓÌÅÄÕÅÔ ×ÙÐÏÌÎÉÔØ"
+
+#: commands.c:541
+msgid " (built-in):"
+msgstr " (×ÓÔÒÏÅÎÎÙÅ):"
 
-#: dir.c:678
+#: commands.c:543
+#, c-format
+msgid " (from `%s', line %lu):\n"
+msgstr "  (ÉÚ `%s', ÓÔÒÏËÁ %lu):\n"
+
+#: dir.c:902
 msgid "\n# Directories\n"
 msgstr "\n# ëÁÔÁÌÏÇÉ\n"
 
-#: dir.c:686
-#, possible-c-format
+#: dir.c:910
+#, c-format
 msgid "# %s: could not be stat'd.\n"
 msgstr "# %s: ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ Ó×ÅÄÅÎÉÑ ×ÙÚÏ×ÏÍ stat.\n"
 
-#: dir.c:689
-#, possible-c-format
+#: dir.c:913
+#, c-format
+msgid "# %s (key %s, mtime %d): could not be opened.\n"
+msgstr "# %s (ËÌÀÞ %s, ×ÒÅÍÑ ÍÏÄÉÆÉËÁÃÉÉ %d): ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ.\n"
+
+#: dir.c:917
+#, c-format
 msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
-msgstr "# %s (device %d, inode [%d,%d,%d]): ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ.\n"
+msgstr "# %s (ÕÓÔÒÏÊÓÔ×Ï %d, inode [%d,%d,%d]): ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ.\n"
+
+#: dir.c:922
+#, c-format
+msgid "# %s (device %ld, inode %ld): could not be opened.\n"
+msgstr "# %s (ÕÓÔÒÏÊÓÔ×Ï %ld, inode %ld): ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ.\n"
 
-#: dir.c:694
-#, possible-c-format
-msgid "# %s (device %d, inode %d): could not be opened.\n"
-msgstr "# %s (device %d, inode %d): ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ.\n"
+#: dir.c:939
+#, c-format
+msgid "# %s (key %s, mtime %d): "
+msgstr "# %s (ËÌÀÞ %s, ×ÒÅÍÑ ÍÏÄÉÆÉËÁÃÉÉ %d): "
 
-#~ #: dir.c:709
-#~ #, possible-c-format
-#~ msgid "# %s (device %d, inode [%d,%d,%d]): "
-#~ msgstr ""
+#: dir.c:943
+#c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): "
+msgstr "# %s (ÕÓÔÒÏÊÓÔ×Ï %d, inode [%d,%d,%d]): "
 
-#~ #: dir.c:714
-#~ #, possible-c-format
-#~ msgid "# %s (device %d, inode %d): "
-#~ msgstr ""
+#: dir.c:948
+#c-format
+msgid "# %s (device %ld, inode %ld): "
+msgstr "# %s (ÕÓÔÒÏÊÓÔ×Ï %ld, inode %ld): "
 
-#: dir.c:718 dir.c:738
+#: dir.c:954 dir.c:974
 msgid "No"
 msgstr "îÅÔ"
 
-#: dir.c:721 dir.c:741
+#: dir.c:957 dir.c:977
 msgid " files, "
 msgstr " ÆÁÊÌÏ×,"
 
-#: dir.c:723 dir.c:743
+#: dir.c:959 dir.c:979
 msgid "no"
 msgstr "ÎÅÔ"
 
-#: dir.c:726
+#: dir.c:962
 msgid " impossibilities"
 msgstr " ÎÅÄÏÓÔÉÖÉÍÙÈ ÃÅÌÅÊ"
 
-#: dir.c:730
+#: dir.c:966
 msgid " so far."
 msgstr " ÎÁ ÔÅËÕÝÉÊ ÍÏÍÅÎÔ."
 
-#: dir.c:746
-#, possible-c-format
+#: dir.c:982
+#, c-format
 msgid " impossibilities in %u directories.\n"
 msgstr " ÎÅÄÏÓÔÉÖÉÍÙÈ ÃÅÌÅÊ × %u ËÁÔÁÌÏÇÁÈ.\n"
 
-#: expand.c:92 expand.c:97
-#, possible-c-format
+#: expand.c:105
+#, c-format
 msgid "Recursive variable `%s' references itself (eventually)"
 msgstr "òÅËÕÒÓÉ×ÎÁÑ ÐÅÒÅÍÅÎÎÁÑ `%s' ÓÓÙÌÁÅÔÓÑ ÓÁÍÁ ÎÁ ÓÅÂÑ (× ÒÅÚÕÌØÔÁÔÅ)"
 
-#: expand.c:120
-#, possible-c-format
+#: expand.c:130
+#, c-format
 msgid "warning: undefined variable `%.*s'"
 msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÎÅÏÐÒÅÄÅÌÅÎÎÁÑ ÐÅÒÅÍÅÎÎÁÑ `%.*s'"
 
-#: expand.c:223 expand.c:225
+#. Unterminated variable reference.
+#: expand.c:247
 msgid "unterminated variable reference"
 msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÁÑ ÓÓÙÌËÁ ÎÁ ÐÅÒÅÍÅÎÎÕÀ"
 
-#: file.c:264
-#, possible-c-format
-msgid "Commands were specified for file `%s' at %s:%u,"
-msgstr "ëÏÍÁÎÄÙ ÄÌÑ ÆÁÊÌÁ `%s' ÂÙÌÉ ÚÁÄÁÎÙ %s:%u,"
+#: file.c:307
+#, c-format
+msgid "Commands were specified for file `%s' at %s:%lu,"
+msgstr "ëÏÍÁÎÄÙ ÄÌÑ ÆÁÊÌÁ `%s' ÂÙÌÉ ÚÁÄÁÎÙ × %s:%lu,"
 
-#: file.c:270
-#, possible-c-format
+#: file.c:313
+#, c-format
 msgid "Commands for file `%s' were found by implicit rule search,"
 msgstr "ëÏÍÁÎÄÙ ÄÌÑ ÆÁÊÌÁ `%s' ÂÙÌÉ ÎÁÊÄÅÎÙ ÉÚ ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ,"
 
-#: file.c:274
-#, possible-c-format
+#: file.c:317
+#, c-format
 msgid "but `%s' is now considered the same file as `%s'."
 msgstr "ÎÏ `%s' É `%s' ÔÅÐÅÒØ ÓÞÉÔÁÀÔÓÑ ÏÄÎÉÍ É ÔÅÍ ÖÅ ÆÁÊÌÏÍ. "
 
-#: file.c:278
-#, possible-c-format
+#: file.c:321
+#, c-format
 msgid "Commands for `%s' will be ignored in favor of those for `%s'."
-msgstr "ëÏÍÁÎÄÙ ÄÌÑ `%s' ÉÇÎÏÒÉÒÏ×ÁÎÙ, ÂÕÄÕÔ éÓÐÏÌØÚÏ×ÁÎÙ ËÏÍÁÎÄÙ ÄÌÑ `%s'."
+msgstr "ëÏÍÁÎÄÙ ÄÌÑ `%s' ÉÇÎÏÒÉÒÕÀÔÓÑ, ×ÍÅÓÔÏ ÎÉÈ ÂÕÄÕÔ ÉÓÐÏÌØÚÏ×ÁÎÙ ËÏÍÁÎÄÙ ÄÌÑ `%s'."
 
-#: file.c:299
-#, possible-c-format
+#: file.c:342
+#, c-format
 msgid "can't rename single-colon `%s' to double-colon `%s'"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÉÍÅÎÏ×ÁÔØ `%s' Ó ÏÄÎÉÍ Ä×ÏÅÔÏÞÉÅÍ × `%s' Ó Ä×ÕÍÑ Ä×ÏÅÔÏÞÉÑÍÉ"
 
-#: file.c:302
-#, possible-c-format
+#: file.c:347
+#, c-format
 msgid "can't rename double-colon `%s' to single-colon `%s'"
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÉÍÅÎÏ×ÁÔØ `%s' Ó Ä×ÕÍÑ Ä×ÏÅÔÏÞÉÑÍÉ × `%s' Ó ÏÄÎÉÍ Ä×ÏÅÔÏÞÉÅÍ"
 
-#: file.c:363
-#, possible-c-format
+#: file.c:414
+#, c-format
 msgid "*** Deleting intermediate file `%s'"
 msgstr "*** õÄÁÌÅÎÉÅ ÐÒÏÍÅÖÕÔÏÞÎÏÇÏ ÆÁÊÌÁ `%s'"
 
-#: file.c:523
+#: file.c:622
 msgid "# Not a target:"
 msgstr "# îÅ Ñ×ÌÑÅÔÓÑ ÃÅÌØÀ:"
 
-#: file.c:531
-msgid "#  Precious file (dependency of .PRECIOUS)."
+#: file.c:630
+msgid "#  Precious file (prerequisite of .PRECIOUS)."
 msgstr "#  ãÅÎÎÙÊ ÆÁÊÌ (ÚÁ×ÉÓÉÍÏÓÔØ .PRECIOUS)."
 
-#: file.c:533
-msgid "#  Phony target (dependency of .PHONY)."
+#: file.c:632
+msgid "#  Phony target (prerequisite of .PHONY)."
 msgstr "#  ðÓÅ×ÄÏÃÅÌØ (ÚÁ×ÉÓÉÍÏÓÔØ ÏÔ .PHONY)."
 
-#: file.c:535
+#: file.c:634
 msgid "#  Command-line target."
 msgstr "#  ãÅÌØ, ×ÙÚÙ×ÁÅÍÁÑ ÉÚ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ."
 
-#: file.c:537
+#: file.c:636
 msgid "#  A default or MAKEFILES makefile."
 msgstr "#  makefile ÐÏ ÕÍÏÌÞÁÎÉÀ ÉÌÉ ÉÚ MAKEFILES."
 
-#: file.c:538
-#, possible-c-format
-msgid "#  Implicit rule search has%s been done.\n"
-msgstr "#  ðÏÉÓË ÎÅÑ×ÎÙÈ ÐÒÁ×ÉÌ%s ÐÒÏÉÚ×ÏÄÉÌÓÑ.\n"
+#: file.c:638
+msgid "#  Implicit rule search has been done."
+msgstr "#  ðÒÏÉÚ×ÏÄÉÌÓÑ ÐÏÉÓË ÎÅÑ×ÎÙÈ ÐÒÁ×ÉÌ"
 
-#: file.c:539 file.c:564
-msgid " not"
-msgstr " ÎÅ"
+#: file.c:639
+msgid "#  Implicit rule search has not been done."
+msgstr "#  ðÏÉÓË ÎÅÑ×ÎÙÈ ÐÒÁ×ÉÌ ÎÅ ÐÒÏÉÚ×ÏÄÉÌÓÑ."
 
-#: file.c:541
-#, possible-c-format
+#: file.c:641
+#, c-format
 msgid "#  Implicit/static pattern stem: `%s'\n"
 msgstr "#  ïÓÎÏ×Á ÎÅÑ×ÎÏÇÏ ÉÌÉ ÓÔÁÔÉÞÅÓËÏÇÏ ÏÂÒÁÚÃÁ: `%s'\n"
 
-#: file.c:543
-msgid "#  File is an intermediate dependency."
-msgstr "#  æÁÊÌ -- ÐÒÏÍÅÖÕÔÏÞÎÁÑ ÚÁ×ÉÓÉÍÏÓØ."
+#: file.c:643
+msgid "#  File is an intermediate prerequisite."
+msgstr "#  æÁÊÌ -- ÐÒÏÍÅÖÕÔÏÞÎÁÑ ÚÁ×ÉÓÉÍÏÓÔØ."
 
-#: file.c:546
+#: file.c:646
 msgid "#  Also makes:"
 msgstr "#  óÏÂÉÒÁÅÔ ÔÁËÖÅ:"
 
-#: file.c:552
+#: file.c:652
 msgid "#  Modification time never checked."
-msgstr "#  ÷ÒÅÍÑ ÉÚÍÅÎÅÎÉÑ ÎÉËÏÇÄÁ ÎÅ ÐÒÏ×ÅÒÑÌÏÓØ."
+msgstr "#  ÷ÒÅÍÑ ÉÚÍÅÎÅÎÉÑ ÎÉ ÒÁÚÕ ÎÅ ÐÒÏ×ÅÒÑÌÏÓØ."
 
-#: file.c:554
+#: file.c:654
 msgid "#  File does not exist."
 msgstr "#  æÁÊÌ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ."
 
-#: file.c:557
-#, possible-c-format
-msgid "#  Last modified %.24s (%0lx)\n"
-msgstr "#  ÷ÒÅÍÑ ÐÏÓÌÅÄÎÅÇÏ ÉÚÍÅÎÅÎÉÑ %.24s (%0lx)\n"
+#: file.c:659
+#, c-format
+msgid "#  Last modified %s\n"
+msgstr "#  ÷ÒÅÍÑ ÐÏÓÌÅÄÎÅÇÏ ÉÚÍÅÎÅÎÉÑ %s\n"
 
-#: file.c:560
-#, possible-c-format
-msgid "#  Last modified %.24s (%ld)\n"
-msgstr "#  ÷ÒÅÍÑ ÐÏÓÌÅÄÎÅÇÏ ÉÚÍÅÎÅÎÉÑ %.24s (%ld)\n"
+#: file.c:662
+msgid "#  File has been updated."
+msgstr "#  æÁÊÌ ÂÙÌ ÏÂÎÏ×ÌÅÎ."
 
-#: file.c:563
-#, possible-c-format
-msgid "#  File has%s been updated.\n"
-msgstr "#  æÁÊÌ%s ÂÙÌ ÏÂÎÏ×ÌÅÎ.\n"
+#: file.c:662
+msgid "#  File has not been updated."
+msgstr "#  æÁÊÌ ÎÅ ÂÙÌ ÏÂÎÏ×ÌÅÎ."
 
-#: file.c:568
+#: file.c:666
 msgid "#  Commands currently running (THIS IS A BUG)."
 msgstr "#  ÷ ÄÁÎÎÙÊ ÍÏÍÅÎÔ ×ÙÐÏÌÎÑÀÔÓÑ ÎÅËÏÔÏÒÙÅ ËÏÍÁÎÄÙ (üôï ïûéâëá)."
 
-#: file.c:571
+#: file.c:669
 msgid "#  Dependencies commands running (THIS IS A BUG)."
 msgstr "#  ÷ ÄÁÎÎÙÊ ÍÏÍÅÎÔ ×ÙÐÏÌÎÑÀÔÓÑ ËÏÍÁÎÄÙ ÎÅËÏÔÏÒÏÊ ÚÁ×ÉÓÉÍÏÓÔÉ (üôï ïûéâëá)."
 
-#: file.c:580
+#: file.c:678
 msgid "#  Successfully updated."
 msgstr "#  õÓÐÅÛÎÏ ÏÂÎÏ×ÌÅÎÏ."
 
-#: file.c:584
+#: file.c:682
 msgid "#  Needs to be updated (-q is set)."
-msgstr "#  äÏÌÖÎÏ ÂÙÔØ ÏÂÎÏ×ÌÅÎÏ (ÕÓÔÁÎÏ×ÌÅΠËÌÀÞ -q)."
+msgstr "#  äÏÌÖÎÏ ÂÙÔØ ÏÂÎÏ×ÌÅÎÏ (ÚÁÄÁΠËÌÀÞ -q)."
 
-#: file.c:587
+#: file.c:685
 msgid "#  Failed to be updated."
 msgstr "#  ðÏÐÙÔËÁ ÏÂÎÏ×ÌÅÎÉÑ ÂÅÚÕÓÐÅÛÎÁ."
 
-#: file.c:590
+#: file.c:688
 msgid "#  Invalid value in `update_status' member!"
 msgstr "#  îÅ×ÅÒÎÏÅ ÚÎÁÞÅÎÉÅ ÞÌÅÎÁ `update_status'!"
 
-#: file.c:597
+#: file.c:695
 msgid "#  Invalid value in `command_state' member!"
 msgstr "#  îÅ×ÅÒÎÏÅ ÚÎÁÞÅÎÉÅ ÞÌÅÎÁ `command_state'!"
 
-#: file.c:616
+#: file.c:714
 msgid "\n# Files"
 msgstr "\n# æÁÊÌÙ"
 
-#: file.c:639
+#: file.c:737
 msgid "\n# No files."
 msgstr "\n# æÁÊÌÏ× ÎÅÔ."
 
-#: file.c:642
-#, possible-c-format
+#: file.c:740
+#, c-format
 msgid "\n# %u files in %u hash buckets.\n"
-msgstr "\n# %u ÆÁÊÌÏ× in %u ÑÞÅÊËÁÈ ÈÅÛ-ÔÁÂÌÉÃÙ..\n"
+msgstr "\n# %u ÆÁÊÌÏ× in %u ÑÞÅÊËÁÈ ÈÅÛ-ÔÁÂÌÉÃÙ.\n"
 
-#: file.c:644
-#, possible-c-format
-msgid "# average %.1f files per bucket, max %u files in one bucket.\n"
-msgstr "# × ÓÒÅÄÎÅÍ %.1f ÆÁÊÌÏ× × ÑÞÅÊËÅ, ÍÁËÓ. %u ÆÁÊÌÏ× × ÏÄÎÏÊ ÑÞÅÊËÅ.\n"
+#: file.c:742
+#, c-format
+msgid "# average %.3f files per bucket, max %u files in one bucket.\n"
+msgstr "# × ÓÒÅÄÎÅÍ %.3f ÆÁÊÌÏ× × ÑÞÅÊËÅ, ÍÁËÓ. %u ÆÁÊÌÏ× × ÏÄÎÏÊ ÑÞÅÊËÅ.\n"
 
-#: function.c:648
-msgid "undefined"
-msgstr "ÎÅ ÏÐÒÅÄÅÌÅÎÁ"
+#. Check the first argument.
+#: function.c:737
+msgid "non-numeric first argument to `word' function"
+msgstr "ÎÅÞÉÓÌÏ×ÏÊ ÐÅÒ×ÙÊ ÁÒÇÕÍÅÎÔ ÆÕÎËÃÉÉ `word'"
 
-#: function.c:657 variable.c:736
-msgid "default"
-msgstr "ÐÏ ÕÍÏÌÞÁÎÉÀ"
+#: function.c:741
+#, fuzzy
+msgid "the `word' function takes a positive index argument"
+msgstr "ËÌÀÞ `-%c' ÄÏÌÖÅΠÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÃÅÌÙÍ ÐÏÌÏÖÉÔÅÌØÎÙÍ ÁÒÇÕÍÅÎÔÏÍ"
 
-#: function.c:660 variable.c:739
-msgid "environment"
-msgstr "ÏÐÒÅÄÅÌÅÎÁ × ÓÒÅÄÅ"
+#: function.c:765
+msgid "non-numeric first argument to `wordlist' function"
+msgstr "ÎÅÞÉÓÌÏ×ÏÊ ÐÅÒ×ÙÊ ÁÒÇÕÍÅÎÔ ÆÕÎËÃÉÉ `wordlist'"
+
+#: function.c:767
+msgid "non-numeric second argument to `wordlist' function"
+msgstr "ÎÅÞÉÓÌÏ×ÏÊ ×ÔÏÒÏÊ ÁÒÇÕÍÅÎÔ ÆÕÎËÃÉÉ `wordlist'"
+
+#: function.c:1208
+#, c-format
+msgid "create_child_process: DuplicateHandle(In) failed (e=%d)\n"
+msgstr "create_child_process: DuplicateHandle(In) ×ÅÒÎÕÌÁ ËÏÄ ÏÛÉÂËÉ (e=%d)\n"
+
+#: function.c:1219
+#, c-format
+msgid "create_child_process: DuplicateHandle(Err) failed (e=%d)\n"
+msgstr "create_child_process: DuplicateHandle(Err) ×ÅÒÎÕÌÁ ËÏÄ ÏÛÉÂËÉ (e=%d)\n"
+
+#: function.c:1224
+#, c-format
+msgid "CreatePipe() failed (e=%d)\n"
+msgstr "CreatePipe() ×ÅÒÎÕÌÁ ËÏÄ ÏÛÉÂËÉ (e=%d)\n"
+
+#: function.c:1229
+msgid "windows32_openpipe (): process_init_fd() failed\n"
+msgstr "windows32_openpipe(): process_init_fd() ×ÅÒÎÕÌÁ ËÏÄ ÏÛÉÂËÉ\n"
+
+#: function.c:1468
+#, c-format
+msgid "Cleaning up temporary batch file %s\n"
+msgstr "ïÞÉÝÁÀ ×ÒÅÍÅÎÎÙÊ ÐÁËÅÔÎÙÊ ÆÁÊÌ %s\n"
+
+#: function.c:1688
+#, c-format
+msgid "Insufficient number of arguments (%d) to function `%s'"
+msgstr "îÅÄÏÓÔÁÔÏÞÎÏ ÁÒÇÕÍÅÎÔÏ× (×ÓÅÇÏ %d) ÆÕÎËÃÉÉ `%s'"
+
+#: function.c:1692
+#, c-format
+msgid "Unimplemented on this platform: function `%s'"
+msgstr "îÅ ÒÅÁÌÉÚÏ×ÁÎÏ ÎÁ ÜÔÏÊ ÐÌÁÔÆÏÒÍÅ: ÆÕÎËÃÉÑ `%s'"
+
+#: function.c:1745
+#, c-format
+msgid "unterminated call to function `%s': missing `%c'"
+msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÙÊ ×ÙÚÏ× ÆÕÎËÃÉÉ `%s': ÐÒÏÐÕÝÅÎÏ `%c'"
 
-#: function.c:663
-msgid "file"
-msgstr "ÆÁÊÌ"
+# óÏÏÂÝÅÎÉÑ getopt ÉÓËÌÀÞÅÎÙ, Ô.Ë. ÏÎÉ ÏÔÎÏÓÑÔÓÑ Ë ÕÖÅ
+# ÕÓÔÁÒÅ×ÛÅÊ ×ÅÒÓÉÉ ÜÔÏÊ ÂÉÂÌÉÏÔÅËÉ, É ÉÓÞÅÚÎÕÔ × ÓÌÅÄÕÀÝÅÊ ×ÅÒÓÉÉ make
+#
+#: getopt.c:675
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
 
-#: function.c:666
-msgid "environment override"
-msgstr "ÐÅÒÅËÒÙÔÁ ÐÅÒÅÍÅÎÎÏÊ ÓÒÅÄÙ"
+#: getopt.c:699
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
 
-#: function.c:669 variable.c:748
-msgid "command line"
-msgstr "ÏÐÒÅÄÅÌÅÎÁ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ"
+#: getopt.c:704
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
 
-#: function.c:672
-msgid "override"
-msgstr "ÐÅÒÅËÒÙÔÁ"
+#: getopt.c:721 getopt.c:894
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
 
-#: function.c:675 variable.c:754
-msgid "automatic"
-msgstr "Á×ÔÏÍÁÔÉÞÅÓËÁÑ"
+#. --option
+#: getopt.c:750
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
 
-#: function.c:1087 function.c:1089
-msgid "non-numeric first argument to `word' function"
-msgstr "ÎÅÞÉÓÌÏ×ÏÊ ÐÅÒ×ÙÊ ÁÒÇÕÍÅÎÔ ÄÌÑ ÆÕÎËÃÉÉ `word'"
+#. +option or -option
+#: getopt.c:754
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
 
-#: function.c:1097 function.c:1100
-msgid "the `word' function takes a one-origin index argument"
-msgstr "ÉÎÄÅËÓÙ, ËÏÔÏÒÙÅ ÆÕÎËÃÉÑ `word' ÐÒÉÎÉÍÁÅÔ ËÁË ÁÒÇÕÍÅÎÔÙ, ÎÁÞÉÎÁÀÔÓÑ Ó 1"
+#. 1003.2 specifies the format of this message.
+#: getopt.c:780
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
 
-#: function.c:1341
-#, possible-c-format
-msgid "unterminated call to function `%s': missing `%c'"
-msgstr "ÎÅÚÁ×ÅÒÛÅÎÎÙÊ ×ÙÚÏ× ÆÕÎËÃÉÉ `%s'; ÐÒÏÐÕÝÅÎÏ `%c'"
+#: getopt.c:783
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#. 1003.2 specifies the format of this message.
+#: getopt.c:813 getopt.c:943
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: getopt.c:860
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: getopt.c:878
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr ""
 
-#: implicit.c:38
-#, possible-c-format
+#: implicit.c:40
+#, c-format
 msgid "Looking for an implicit rule for `%s'.\n"
 msgstr "ðÏÉÓË ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ ÄÌÑ `%s'.\n"
 
-#: implicit.c:53
-#, possible-c-format
+#: implicit.c:56
+#, c-format
 msgid "Looking for archive-member implicit rule for `%s'.\n"
-msgstr "ðÏÉÓË ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ ÄÌÑ ÞÌÅÎÁ ÁÒÈÉ×Á `%s'.\n"
+msgstr "ðÏÉÓË ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ ÄÌÑ ÜÌÅÍÅÎÔÁ ÁÒÈÉ×Á `%s'.\n"
 
-#: implicit.c:190
-#, possible-c-format
-msgid "Avoiding implicit rule recursion.%s%s\n"
-msgstr "éÚÂÅÖÁÎÉÅ ÒÅËÕÒÓÉ×ÎÏÇÏ ×ÙÚÏ×Á ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ.%s%s\n"
+#: implicit.c:201
+msgid "Avoiding implicit rule recursion.\n"
+msgstr "éÚÂÅÖÁÎÉÅ ÒÅËÕÒÓÉ×ÎÏÇÏ ×ÙÚÏ×Á ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ.\n"
 
-#: implicit.c:326
-#, possible-c-format
+#: implicit.c:339
+#, c-format
 msgid "Trying pattern rule with stem `%.*s'.\n"
-msgstr "ðÏÐÙÔËÁ ÐÒÉÍÅÎÅÎÉÑ ÐÒÁ×ÉÌÏ Ó ÏÂÒÁÚÃÏÍ, ÏÓÎÏ×Á `%.*s'.\n"
-
-#: implicit.c:365
-#, possible-c-format
-msgid "Rejecting impossible %s dependency `%s'.\n"
-msgstr "ïÔ×ÅÒÖÅÎÉÅ ÎÅ×ÏÚÍÏÖÎÏÊ %s ÚÁ×ÉÓÉÍÏÓÔÉ `%s'.\n"
-
-#: implicit.c:366 implicit.c:374
-msgid "implicit"
-msgstr "ÎÅÑ×ÎÏÊ"
-
-#: implicit.c:366 implicit.c:374
-msgid "rule"
-msgstr "ÚÁÄÁÎÎÏÊ ÐÒÁ×ÉÌÏÍ"
-
-#: implicit.c:373
-#, possible-c-format
-msgid "Trying %s dependency `%s'.\n"
-msgstr "ðÏÐÙÔËÁ ÐÒÉÍÅÎÅÎÉÑ %s ÚÁ×ÉÓÉÍÏÓÔÉ `%s'.\n"
-
-#: implicit.c:393
-#, possible-c-format
-msgid "Found dependency as `%s'.%s\n"
-msgstr "úÁ×ÉÓÉÍÏÓÔØ ÎÁÊÄÅÎÁ ËÁË `%s'.%s\n"
-
-#: implicit.c:408
-#, possible-c-format
-msgid "Looking for a rule with %s file `%s'.\n"
-msgstr "ðÏÉÓË ÐÒÁ×ÉÌÁ Ó %s ÆÁÊÌÏÍ `%s'.\n"
-
-#: implicit.c:409
-msgid "intermediate"
-msgstr "ÐÒÏÍÅÖÕÔÏÞÎÙÍ"
-
-#: job.c:190
-#, possible-c-format
-msgid "*** [%s] Error 0x%x%s"
-msgstr "*** [%s] ïÛÉÂËÁ 0x%x%s"
-
-#: job.c:190
-msgid " (ignored)"
-msgstr " (ÉÇÎÏÒÉÒÏ×ÁÎÁ) "
-
-#: job.c:193
-#, possible-c-format
+msgstr "ðÏÐÙÔËÁ ÐÒÉÍÅÎÅÎÉÑ ÐÒÁ×ÉÌÁ Ó ÏÂÒÁÚÃÏÍ, ÏÓÎÏ×Á `%.*s'.\n"
+
+#: implicit.c:380
+#, c-format
+msgid "Rejecting impossible implicit prerequisite `%s'.\n"
+msgstr "ïÔ×ÅÒÖÅÎÉÅ ÎÅ×ÏÚÍÏÖÎÏÊ ÎÅÑ×ÎÏÊ ÚÁ×ÉÓÉÍÏÓÔÉ `%s'.\n"
+
+#: implicit.c:381
+#, c-format
+msgid "Rejecting impossible rule prerequisite `%s'.\n"
+msgstr "ïÔ×ÅÒÖÅÎÉÅ ÎÅ×ÏÚÍÏÖÎÏÊ ÚÁ×ÉÓÉÍÏÓÔÉ ÐÒÁ×ÉÌÁ `%s'.\n"
+
+#: implicit.c:391
+#, c-format
+msgid "Trying implicit prerequisite `%s'.\n"
+msgstr "ðÏÐÙÔËÁ ÐÒÉÍÅÎÅÎÉÑ ÎÅÑ×ÎÏÊ ÚÁ×ÉÓÉÍÏÓÔÉ `%s'.\n"
+
+#: implicit.c:392
+#, c-format
+msgid "Trying rule prerequisite `%s'.\n"
+msgstr "ðÏÐÙÔËÁ ÐÒÉÍÅÎÅÎÉÑ ÐÒÁ×ÉÌÁ ÚÁ×ÉÓÉÍÏÓÔÉ `%s'.\n"
+
+#: implicit.c:413
+#, c-format
+msgid "Found prerequisite `%s' as VPATH `%s'\n"
+msgstr "ïÂÎÁÒÕÖÅÎÁ ÚÁ×ÉÓÉÍÏÓÔØ `%s' × ×ÉÄÅ VPATH `%s'\n"
+
+#: implicit.c:430
+#, c-format
+msgid "Looking for a rule with intermediate file `%s'.\n"
+msgstr "ðÏÉÓË ÐÒÁ×ÉÌÁ Ó ÐÒÏÍÅÖÕÔÏÞÎÙÍ ÆÁÊÌÏÍ `%s'.\n"
+
+#: job.c:253
+#, c-format
+msgid "*** [%s] Error 0x%x (ignored)"
+msgstr "*** [%s] ïÛÉÂËÁ 0x%x (ÉÇÎÏÒÉÒÏ×ÁÎÁ)"
+
+#: job.c:254
+#, c-format
+msgid "*** [%s] Error 0x%x"
+msgstr "*** [%s] ïÛÉÂËÁ 0x%x"
+
+#: job.c:258
+#, c-format
 msgid "[%s] Error %d (ignored)"
 msgstr "[%s] ïÛÉÂËÁ %d (ÉÇÎÏÒÉÒÏ×ÁÎÁ)"
 
-#: job.c:194
-#, possible-c-format
+#: job.c:259
+#, c-format
 msgid "*** [%s] Error %d"
 msgstr "*** [%s] ïÛÉÂËÁ %d"
 
-#: job.c:199
+#: job.c:264
 msgid " (core dumped)"
 msgstr " (ÓÄÅÌÁΠÄÁÍРÐÁÍÑÔÉ)"
 
-#: job.c:234
-#, possible-c-format
-msgid "Got a SIGCHLD; %d unreaped children.\n"
-msgstr "ðÏÌÕÞÅΠÓÉÇÎÁÌ SIGCHLD; ÐÏÔÏÍËÏ× Ó ÎÅÏÂÒÁÂÏÔÁÎÎÙÍÉ ÒÅÚÕÌØÔÁÔÁÍÉ %d.\n"
+#: job.c:316
+msgid "Warning: Empty redirection\n"
+msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ: ðÕÓÔÏÅ ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÅ\n"
+
+#: job.c:352
+msgid "Syntax error, still inside '\"'\n"
+msgstr "óÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ, ×ÓÅ ÅÝÅ ×ÎÕÔÒÉ '\"'\n"
 
-#: job.c:265
+#: job.c:404
+#, c-format
+msgid "Got a SIGCHLD; %u unreaped children.\n"
+msgstr "ðÏÌÕÞÅΠÓÉÇÎÁÌ SIGCHLD; %u ÐÏÔÏÍËÏ× Ó ÎÅÏÂÒÁÂÏÔÁÎÎÙÍÉ ÒÅÚÕÌØÔÁÔÁÍÉ.\n"
+
+#: job.c:453
 msgid "*** Waiting for unfinished jobs...."
 msgstr "*** ïÖÉÄÁÎÉÅ ÚÁ×ÅÒÛÅÎÉÑ ÚÁÄÁÎÉÊ..."
 
-#: job.c:290
-#, possible-c-format
-msgid "Live child 0x%08lx PID %d%s\n"
-msgstr "îÅÚÁ×ÅÒÛÅÎÎÙÊ ÐÏÔÏÍÏË 0x%08lx PID %d%s\n"
+#: job.c:482
+#, c-format
+msgid "Live child 0x%08lx (%s) PID %ld %s\n"
+msgstr "îÅÚÁ×ÅÒÛÅÎÎÙÊ ÐÏÔÏÍÏË 0x%08lx (%s) PID %ld %s\n"
 
-#: job.c:292 job.c:427 job.c:514 job.c:919
+#: job.c:484 job.c:644 job.c:742 job.c:1295
 msgid " (remote)"
 msgstr " (ÕÄÁÌÅÎÎÙÊ)"
 
-#: job.c:414
-#, possible-c-format
-msgid "Unknown%s job %d"
-msgstr "îÅÉÚ×ÅÓÔÎÏÅ%s ÚÁÄÁÎÉÅ %d"
-
-#: job.c:414
-msgid " remote"
-msgstr " ÕÄÁÌÅÎÎÏÅ"
+#: job.c:641
+#, c-format
+msgid "Reaping losing child 0x%08lx PID %ld %s\n"
+msgstr "ðÏÄÂÉÒÁÀ ÎÅÕÄÁÞÎÏ ÚÁ×ÅÒÛÉ×ÛÅÇÏÓÑ ÐÏÔÏÍËÁ 0x%08lx PID %ld %s\n"
 
-#: job.c:419
-#, possible-c-format
-msgid "%s finished."
-msgstr "%s ÚÁ×ÅÒÛÅÎÏ."
+#: job.c:642
+#, c-format
+msgid "Reaping winning child 0x%08lx PID %ld %s\n"
+msgstr "ðÏÄÂÉÒÁÀ ÕÄÁÞÎÏ ÚÁ×ÅÒÛÉ×ÛÅÇÏÓÑ ÐÏÔÏÍËÁ 0x%08lx PID %ld %s\n"
 
-#: job.c:424
-#, possible-c-format
-msgid "Reaping %s child 0x%08lx PID %d%s\n"
-msgstr "ïÂÒÁÂÏÔËÁ ÒÅÚÕÌØÔÁÔÏ× %s ÒÁÂÏÔÙ ÐÏÔÏÍËÁ 0x%08lx PID %d%s\n"
+#: job.c:647
+#, c-format
+msgid "Cleaning up temp batch file %s\n"
+msgstr "ðÏÄÞÉÝÁÀ ×ÒÅÍÅÎÎÙÊ ÐÁËÅÔÎÙÊ ÆÁÊÌ %s\n"
 
-#: job.c:425
-msgid "losing"
-msgstr "ÕÓÐÅÛÎÏÊ"
+#: job.c:740
+#, c-format
+msgid "Removing child 0x%08lx PID %ld %s from chain.\n"
+msgstr "õÄÁÌÅÎÉÅ ÐÏÔÏÍËÁ 0x%08lx PID %ld %s ÉÚ ÃÅÐÏÞËÉ ÁËÔÉ×ÎÙÈ ÐÏÔÏÍËÏ×.\n"
 
-#: job.c:425
-msgid "winning"
-msgstr "ÎÅÕÓÐÅÛÎÏÊ"
-
-#: job.c:512
-#, possible-c-format
-msgid "Removing child 0x%08lx PID %d%s from chain.\n"
-msgstr "õÄÁÌÅÎÉÅ ÐÏÔÏÍËÁ 0x%08lx PID %d%s ÉÚ ÃÅÐÏÞËÉ ÁËÔÉ×ÎÙÈ ÐÏÔÏÍËÏ×.\n"
+#: job.c:797
+msgid "write jobserver"
+msgstr ""
 
-#: job.c:917
-#, possible-c-format
-msgid "Putting child 0x%08lx PID %05d%s on the chain.\n"
-msgstr "ðÏÍÅÝÅÎÉÅ ÐÏÔÏÍËÁ 0x%08lx PID %d%s × ÃÅÐÏÞËÕ ÁËÔÉ×ÎÙÈ ÐÏÔÏÍËÏ×.\n"
+#: job.c:799
+#, c-format
+msgid "Released token for child 0x%08lx (%s).\n"
+msgstr "ïÓ×ÏÂÏÖÄÁÅÔÓÑ ÔÏËÅΠÄÌÑ ÐÏÔÏÍËÁ 0x%08lx (%s).\n"
+
+#: job.c:1229 job.c:2218
+#, c-format
+msgid "process_easy() failed failed to launch process (e=%d)\n"
+msgstr "process_easy() ÎÅ ÓÍÏÇÌÁ ÚÁÐÕÓÔÉÔØ ÐÒÏÃÅÓÓ (e=%d)\n"
+
+#: job.c:1233 job.c:2222
+#, c-format
+msgid "\nCounted %d args in failed launch\n"
+msgstr "\nðÒÉ ÎÅÕÓÐÅÛÎÏÍ ÚÁÐÕÓËÅ ÓÏÓÞÉÔÁÎÏ %d ÁÒÇÕÍÅÎÔÏ×\n"
+
+#: job.c:1293
+#, c-format
+msgid "Putting child 0x%08lx (%s) PID %ld%s on the chain.\n"
+msgstr "ðÏÍÅÝÅÎÉÅ ÐÏÔÏÍËÁ 0x%08lx (%s) PID %ld%s × ÃÅÐÏÞËÕ ÁËÔÉ×ÎÙÈ ÐÏÔÏÍËÏ×.\n"
+
+#: job.c:1490
+#, c-format
+msgid "Obtained token for child 0x%08lx (%s).\n"
+msgstr "ðÏÌÕÞÅΠÔÏËÅΠÄÌÑ ÐÏÔÏÍËÁ 0x%08lx (%s).\n"
+
+#: job.c:1496
+msgid "read jobs pipe"
+msgstr ""
 
-#: job.c:1140
+#: job.c:1566
 msgid "cannot enforce load limits on this operating system"
 msgstr "ÜÔÁ ÏÐÅÒÁÃÉÏÎÎÁÑ ÓÉÓÔÅÍÁ ÎÅ ÐÏÚ×ÏÌÑÅÔ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ ÐÒÅÄÅÌÙ ÚÁÇÒÕÚËÉ"
 
-#: job.c:1142
+#: job.c:1568
 msgid "cannot enforce load limit: "
 msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÐÒÅÄÅÌÙ ÚÁÇÒÕÚËÉ: "
 
-#: job.c:1244
-#, possible-c-format
-msgid "internal error: `%s' command_state %d in child_handler"
-msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: `%s' command_state %d × child_handler"
+#: job.c:1671
+#, c-format
+msgid "internal error: `%s' command_state"
+msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: `%s' command_state"
+
+#: job.c:1756
+msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
+msgstr "-ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ, ÐÏÓÌÅ CTRL-Y ÏÓÔÁÎÕÔÓÑ ÓÕÂ-ÐÒÏÃÅÓÓÙ.\n"
+
+#: job.c:1773
+msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
+msgstr ""
+"-ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ, ×ÏÚÍÏÖÎÏ ×ÁÍ ÐÏÔÒÅÂÕÅÔÓÑ ÐÏ×ÔÏÒÎÏ ÒÁÚÒÅÛÉÔØ\n"
+"ÏÂÒÁÂÏÔËÕ CTRL-Y ÉÚ DCL.\n"
+
+#: job.c:1886
+#, c-format
+msgid "BUILTIN [%s][%s]\n"
+msgstr "÷óôòïåîîùê [%s][%s]\n"
+
+#: job.c:1897
+#, c-format
+msgid "BUILTIN CD %s\n"
+msgstr "÷óôòïåîîùê CD %s\n"
+
+#: job.c:1915
+#, c-format
+msgid "BUILTIN RM %s\n"
+msgstr "÷óôòïåîîùê RM %s\n"
+
+#: job.c:1936
+#, c-format
+msgid "Unknown builtin command '%s'\n"
+msgstr "îÅÉÚ×ÅÓÔÎÁÑ ×ÓÔÒÏÅÎÎÁÑ ËÏÍÁÎÄÁ '%s'\n"
+
+#: job.c:1958
+msgid "Error, empty command\n"
+msgstr "ïÛÉÂËÁ, ÐÕÓÔÁÑ ËÏÍÁÎÄÁ\n"
+
+#: job.c:1965 main.c:1270
+msgid "fopen (temporary file)"
+msgstr "fopen (×ÒÅÍÅÎÎÙÊ ÆÁÊÌ)"
+
+#: job.c:1970
+#, c-format
+msgid "Redirected input from %s\n"
+msgstr "óÔÁÎÄÁÒÔÎÙÊ ××ÏÄ ÐÅÒÅÎÁÐÒÁ×ÌÅΠÉÚ %s\n"
+
+#: job.c:1977
+#, c-format
+msgid "Redirected error to %s\n"
+msgstr "ðÏÔÏË ÏÛÉÂÏË ÐÅÒÅÎÁÐÒÁ×ÌÅΠנ%s\n"
 
-#: job.c:1350
-#, possible-c-format
+#: job.c:1984
+#, c-format
+msgid "Redirected output to %s\n"
+msgstr "óÔÁÎÄÁÒÔÎÙÊ ×Ù×ÏÄ ÐÅÒÅÎÁÐÒÁ×ÌÅΠנ%s\n"
+
+#: job.c:2047
+#, c-format
 msgid "Executing %s instead\n"
 msgstr "÷ÍÅÓÔÏ ÚÁÄÁÎÎÏÇÏ ×ÙÐÏÌÎÑÅÔÓÑ %s\n"
 
-#: job.c:1381
-#, possible-c-format
+#: job.c:2144
+#, c-format
 msgid "Error spawning, %d\n"
 msgstr "ïÛÉÂËÁ ÐÏÒÏÖÄÅÎÉÑ ÐÒÏÃÅÓÓÁ, %d\n"
 
-#: job.c:1442
-#, possible-c-format
+#: job.c:2247
+#, c-format
+msgid "make reaped child pid %d, still waiting for pid %d\n"
+msgstr "make ÎÁÛÌÁ ÚÁ×ÅÒÛÉ×ÛÅÇÏÓÑ ÐÏÔÏÍËÁ pid %d, ×ÓÅ ÅÝÅ ÏÖÉÄÁÅÔ pid %d\n"
+
+#: job.c:2266
+#, c-format
 msgid "%s: Command not found"
 msgstr "%s: ëÏÍÁÎÄÁ ÎÅ ÎÁÊÄÅÎÁ"
 
-#: job.c:1471
-#, possible-c-format
+#: job.c:2295
+#, c-format
 msgid "%s: Shell program not found"
 msgstr "%s: ëÏÍÁÎÄÎÙÊ ÐÒÏÃÅÓÓÏÒ ÎÅ ÎÁÊÄÅÎ"
 
-#: main.c:224
+#: job.c:2476
+#, c-format
+msgid "$SHELL changed (was `%s', now `%s')"
+msgstr "ðÅÒÅÍÅÎÎÁÑ $SHELL ÉÚÍÅÎÉÌÁÓØ (ÂÙÌÏ '%s', ÔÅÐÅÒØ '%s')"
+
+#: job.c:2882
+#, c-format
+msgid "Creating temporary batch file %s\n"
+msgstr "óÏÚÄÁÅÔÓÑ ×ÒÅÍÅÎÎÙÊ ÐÁËÅÔÎÙÊ ÆÁÊÌ %s\n"
+
+#: job.c:2924
+#, c-format
+msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
+msgstr "%s (ÓÔÒÏËÁ %d) ðÌÏÈÏÊ ËÏÎÔÅËÓÔ ËÏÍÁÎÄÎÏÇÏ ÐÒÏÃÅÓÓÏÒÁ (!unixy && !batch_mode_shell)\n"
+
+#: main.c:259
 msgid "Ignored for compatibility"
-msgstr "éÇÎÏÒÉÒÏ×ÁÎÏ ÄÌÑ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ"
+msgstr "éÇÎÏÒÉÒÕÅÔÓÑ ÄÌÑ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ"
+
+#: main.c:261 main.c:288
+msgid "DIRECTORY"
+msgstr "ëáôáìïç"
 
-#: main.c:227
+#: main.c:262
 msgid "Change to DIRECTORY before doing anything"
 msgstr "ðÅÒÅÊÔÉ × ëáôáìïç ÐÅÒÅÄ ÎÁÞÁÌÏÍ ÒÁÂÏÔÙ"
 
-#: main.c:230
+#: main.c:265
 msgid "Print lots of debugging information"
-msgstr "÷Ù×ÏÄÉÔØ ÏÔÌÁÄÏÞÎÙÅ ÓÏÏÂÝÅÎÉÑ"
+msgstr "÷Ù×ÏÄÉÔØ ÍÁÓÓÕ ÏÔÌÁÄÏÞÎÙÈ ÓÏÏÂÝÅÎÉÊ"
+
+#: main.c:268
+msgid "FLAGS"
+msgstr "æìáçé"
 
-#: main.c:233
+#: main.c:269
+msgid "Print various types of debugging information"
+msgstr "÷Ù×ÏÄÉÔØ ÒÁÚÌÉÞÎÙÅ ÔÉÐÙ ÏÔÌÁÄÏÞÎÏÊ ÉÎÆÏÒÍÁÃÉÉ"
+
+#: main.c:273
+msgid "Suspend process to allow a debugger to attach"
+msgstr "ðÒÉÏÓÔÁÎÏ×ÉÔØ ÐÒÏÃÅÓÓ, ÞÔÏÂÙ ÐÏÚ×ÏÌÉÔØ ÐÒÉÃÅÐÉÔØÓÑ ÏÔÌÁÄÞÉËÕ"
+
+#: main.c:277
 msgid "Environment variables override makefiles"
-msgstr "ðÅÒÅÍÅÎÎÙÅ ÓÒÅÄÙ ÐÅÒÅËÒÙ×ÁÀÔ ÐÅÒÅÍÅÎÎÙÅ, ÏÐÒÅÄÅÌÅÎÎÙÅ × make-ÆÁÊÌÅ"
+msgstr ""
+"ðÅÒÅÍÅÎÎÙÅ ÓÒÅÄÙ ÐÅÒÅËÒÙ×ÁÀÔ ÐÅÒÅÍÅÎÎÙÅ, \n"
+"ÏÐÒÅÄÅÌÅÎÎÙÅ × make-ÆÁÊÌÅ"
 
-#: main.c:236
+#: main.c:279 main.c:320 main.c:354
+msgid "FILE"
+msgstr "æáêì"
+
+#: main.c:280
 msgid "Read FILE as a makefile"
-msgstr "óÞÉÔÁÔØ æáêì ËÁË make-ÆÁÊÌ"
+msgstr "éÓÐÏÌØÚÏ×ÁÔØ æáêì × ËÁÞÅÓÔ×Å make-ÆÁÊÌÁ"
 
-#: main.c:239
+#: main.c:283
 msgid "Print this message and exit"
 msgstr "ðÏËÁÚÁÔØ ÜÔÕ ÓÐÒÁ×ËÕ É ×ÙÊÔÉ"
 
-#: main.c:242
+#: main.c:286
 msgid "Ignore errors from commands"
 msgstr "éÇÎÏÒÉÒÏ×ÁÔØ ÏÛÉÂËÉ ËÏÍÁÎÄ"
 
-#: main.c:245
+#: main.c:289
 msgid "Search DIRECTORY for included makefiles"
 msgstr "éÓËÁÔØ ×ËÌÀÞÁÅÍÙÅ make-ÆÁÊÌÙ × ëáôáìïçå"
 
-#: main.c:249
+#: main.c:294
 msgid "Allow N jobs at once; infinite jobs with no arg"
 msgstr ""
-"úÁÐÕÓËÁÔØ ÏÄÎÏ×ÒÅÍÅÎÎÏ ÄÏ î ÚÁÄÁÎÉÊ; ÅÓÌÉ ÁÒÇÕÍÅÎÔ ÎÅ ÚÁÄÁÎ,\n"
-"  ÞÉÓÌÏ ÚÁÄÁÎÉÊ ÎÅÏÇÒÁÎÉÞÅÎÏ"
+"úÁÐÕÓËÁÔØ ÏÄÎÏ×ÒÅÍÅÎÎÏ ÄÏ N ÚÁÄÁÎÉÊ; \n"
+"ÅÓÌÉ ÁÒÇÕÍÅÎÔ ÎÅ ÚÁÄÁÎ, ÞÉÓÌÏ ÚÁÄÁÎÉÊ ÎÅÏÇÒÁÎÉÞÅÎÏ"
 
-#: main.c:253
+#: main.c:301
 msgid "Keep going when some targets can't be made"
-msgstr "ðÒÏÄÏÌÖÁÔØ ÒÁÂÏÔÕ, ÄÁÖÅ ÅÓÌÉ ÎÅËÏÔÏÒÙÅ ÃÅÌÉ ÎÅ ÄÏÓÔÉÇÎÕÔÙ"
+msgstr ""
+"ðÒÏÄÏÌÖÁÔØ ÒÁÂÏÔÕ, ÄÁÖÅ ÅÓÌÉ ÎÅËÏÔÏÒÙÅ ÃÅÌÉ\n"
+"ÎÅ ÍÏÇÕÔ ÂÙÔØ ÄÏÓÔÉÇÎÕÔÙ"
 
-#: main.c:258 main.c:263
+#: main.c:306 main.c:311
 msgid "Don't start multiple jobs unless load is below N"
-msgstr "îÅ ÚÁÐÕÓËÁÔØ ÐÁÒÁÌÌÅØÎÙÅ ÚÁÄÁÎÉÑ ÐÏËÁ ÚÁÇÒÕÚËÁ ÎÅ ÓÎÉÚÉÔÓÑ ÄÏ î"
+msgstr ""
+"îÅ ÚÁÐÕÓËÁÔØ ÐÁÒÁÌÌÅÌØÎÙÅ ÚÁÄÁÞÉ,\n"
+"ÐÏËÁ ÚÁÇÒÕÚËÁ ÎÅ ÓÎÉÚÉÔÓÑ ÄÏ N"
 
-#: main.c:270
+#: main.c:318
 msgid "Don't actually run any commands; just print them"
 msgstr "îÅ ×ÙÐÏÌÎÑÔØ ËÏÍÁÎÄÙ, ÐÒÏÓÔÏ ÎÁÐÅÞÁÔÁÔØ ÉÈ"
 
-#: main.c:273
+#: main.c:321
 msgid "Consider FILE to be very old and don't remake it"
 msgstr "óÞÉÔÁÔØ æáêì ÏÞÅÎØ ÓÔÁÒÙÍ É ÎÅ ÐÅÒÅÓÏÂÉÒÁÔØ ÅÇÏ"
 
-#: main.c:276
+#: main.c:324
 msgid "Print make's internal database"
 msgstr "îÁÐÅÞÁÔÁÔØ ×ÎÕÔÒÅÎÎÀÀ ÂÁÚÕ ÄÁÎÎÙÈ make"
 
-#: main.c:279
+#: main.c:327
 msgid "Run no commands; exit status says if up to date"
-msgstr "îÅ ×ÙÐÏÌÎÑÔØ ËÏÍÁÎÄÙ, ×ÏÚ×ÒÁÝÁÅÍÏÅ ÚÎÁÞÅÎÉÅ ÐÏËÁÚÙ×ÁÅÔ ÓÔÁÔÕÓ ÏÂÎÏ×ÌÅÎÎÏÓÔÉ"
+msgstr ""
+"îÅ ×ÙÐÏÌÎÑÔØ ËÏÍÁÎÄÙ;\n"
+"ËÏÄ ÚÁ×ÅÒÛÅÎÉÑ ÐÏËÁÚÙ×ÁÅÔ, ×ÓÅ ÌÉ ÕÖÅ ÓÄÅÌÁÎÏ"
 
-#: main.c:282
+#: main.c:330
 msgid "Disable the built-in implicit rules"
 msgstr "îÅ ÉÓÐÏÌØÚÏ×ÁÔØ ×ÓÔÒÏÅÎÎÙÅ ÎÅÑ×ÎÙÅ ÐÒÁ×ÉÌÁ"
 
-#: main.c:285
+# þÔÏ ÔÁËÏÅ "variable settings"?
+#: main.c:333
+msgid "Disable the built-in variable settings"
+msgstr ""
+
+#: main.c:336
 msgid "Don't echo commands"
-msgstr "îÅ ÐÅÞÁÔÁÔØ ×ÙÐÏÌÎÙÅÍÙÅ ËÏÍÁÎÄÙ"
+msgstr "îÅ ÐÅÞÁÔÁÔØ ×ÙÐÏÌÎÑÅÍÙÅ ËÏÍÁÎÄÙ"
 
-#: main.c:289
+#: main.c:340
 msgid "Turns off -k"
 msgstr "ïÔÍÅÎÉÔØ ËÌÀÞ -k"
 
-#: main.c:292
+#: main.c:343
 msgid "Touch targets instead of remaking them"
-msgstr "õÓÔÁÎÏ×ÉÔØ ×ÒÅÍÑ ÄÏÓÔÕÐÁ ÃÅÌÅÊ, Á ÎÅ ÐÅÒÅÓÏÂÉÒÁÔØ ÉÈ"
+msgstr ""
+"õÓÔÁÎÏ×ÉÔØ ×ÒÅÍÑ ÄÏÓÔÕÐÁ ÃÅÌÅÊ × ÔÅËÕÝÅÅ,\n"
+"Á ÎÅ ÐÅÒÅÓÏÂÉÒÁÔØ ÉÈ"
 
-#: main.c:295
+#: main.c:346
 msgid "Print the version number of make and exit"
 msgstr "ðÏËÁÚÁÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ"
 
-#: main.c:298
+#: main.c:349
 msgid "Print the current directory"
 msgstr "îÁÐÅÞÁÔÁÔØ ÔÅËÕÝÉÊ ËÁÔÁÌÏÇ"
 
-#: main.c:301
+#: main.c:352
 msgid "Turn off -w, even if it was turned on implicitly"
 msgstr "ïÔÍÅÎÉÔØ ËÌÀÞ -w, ÄÁÖÅ ÅÓÌÉ ÏΠÂÙÌ Ñ×ÎÏ ÕËÁÚÁÎ"
 
-#: main.c:304
+#: main.c:355
 msgid "Consider FILE to be infinitely new"
 msgstr "óÞÉÔÁÔØ æáêì ÎÅÏÇÒÁÎÉÞÅÎÎÏ ÎÏ×ÙÍ"
 
-#: main.c:307
+#: main.c:358
 msgid "Warn when an undefined variable is referenced"
-msgstr "÷ÙÄÁ×ÁÔØ ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ ÐÒÉ ÓÓÙÌËÅ ÎÁ ÎÅÏÐÒÅÄÅÌÅÎÎÕÀ ÐÅÒÅÍÅÎÎÕÀ"
+msgstr ""
+"÷ÙÄÁ×ÁÔØ ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ ÐÒÉ ÓÓÙÌËÅ\n"
+"ÎÁ ÎÅÏÐÒÅÄÅÌÅÎÎÕÀ ÐÅÒÅÍÅÎÎÕÀ"
 
-#: main.c:394
+#: main.c:456
 msgid "empty string invalid as file name"
 msgstr "ÐÕÓÔÁÑ ÓÔÒÏËÁ ÎÅÄÏÐÕÓÔÉÍÁ × ËÁÞÅÓÔ×Å ÉÍÅÎÉ ÆÁÊÌÁ"
 
-#: main.c:781
-msgid "fopen (temporary file)"
-msgstr "fopen (×ÒÅÍÅÎÎÙÊ ÆÁÊÌ)"
+#: main.c:536
+#, c-format
+msgid "unknown debug level specification `%s'"
+msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÐÏÓÏ ÚÁÄÁÎÉÑ ÕÒÏ×ÎÑ ÏÔÌÁÄËÉ `%s'"
+
+#: main.c:576
+#, c-format
+msgid "%s: Interrupt/Exception caught (code = 0x%x, addr = 0x%x)\n"
+msgstr "%s: ÐÏÊÍÁÎÏ ÐÒÅÒÙ×ÁÎÉÅ ÉÌÉ ÉÓËÌÀÞÅÎÉÅ (ËÏÄ = 0x%x, ÁÄÒÅÓ = 0x%x)\n"
+
+#: main.c:583
+#, c-format
+msgid ""
+"\n"
+"Unhandled exception filter called from program %s\n"
+"ExceptionCode = %x\n"
+"ExceptionFlags = %x\n"
+"ExceptionAddress = %x\n"
+msgstr ""
+
+#: main.c:591
+#, c-format
+msgid "Access violation: write operation at address %x\n"
+msgstr "îÁÒÕÛÅÎÉÅ ÄÏÓÔÕÐÁ: ÏÐÅÒÁÃÉÑ ÚÁÐÉÓÉ ÐÏ ÁÄÒÅÓÕ %x\n"
+
+#: main.c:592
+#, c-format
+msgid "Access violation: read operation at address %x\n"
+msgstr "îÁÒÕÛÅÎÉÅ ÄÏÓÔÕÐÁ: ÏÐÅÒÁÃÉÑ ÞÔÅÎÉÑ ÁÄÒÅÓÁ %x\n"
+
+#: main.c:657
+#, c-format
+msgid "find_and_set_shell setting default_shell = %s\n"
+msgstr "find_and_set_shell ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ default_shell = %s\n"
+
+#: main.c:700
+#, c-format
+msgid "find_and_set_shell path search set default_shell = %s\n"
+msgstr "find_and_set_shell: ÐÏÉÓË × ÐÕÔÑÈ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ default_shell = %s\n"
+
+#: main.c:1051
+#, c-format
+msgid "%s is suspending for 30 seconds..."
+msgstr "%s ÐÒÉÏÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÎÁ 30 ÓÅËÕÎÄ..."
+
+#: main.c:1053
+msgid "done sleep(30). Continuing.\n"
+msgstr "sleep(30) ÚÁ×ÅÒÛÅÎ.  ðÒÏÄÏÌÖÁÅÍ.\n"
 
-#: main.c:787
+#: main.c:1260
+msgid "Makefile from standard input specified twice."
+msgstr "Makefile ÉÚ ÓÔÁÎÄÁÒÔÎÏÇÏ ××ÏÄÁ ÕËÁÚÁΠÄ×ÁÖÄÙ."
+
+#: main.c:1276
 msgid "fwrite (temporary file)"
 msgstr "fwrite (×ÒÅÍÅÎÎÙÊ ÆÁÊÌ)"
 
-#: main.c:930
-msgid "Updating makefiles...."
-msgstr "ïÂÎÏ×ÌÅÎÉÅ make-ÆÁÊÌÏ×..."
+#: main.c:1378
+msgid "Do not specify -j or --jobs if sh.exe is not available."
+msgstr "îÅ ÕËÁÚÙ×ÁÊÔÅ -j ÉÌÉ --jobs, ÅÓÌÉ ÎÅÔÕ sh.exe."
+
+#: main.c:1379
+msgid "Resetting make for single job mode."
+msgstr "make ÂÕÄÅÔ ×ÙÐÏÌÎÑÔØÓÑ × ÒÅÖÉÍÅ ÏÄÉÎÏÞÎÏÊ ÚÁÄÁÞÉ."
+
+#: main.c:1416
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "ðÁÒÁÌÌÅÌØÎÙÅ ÚÁÄÁÞÉ (-j) ÎÅ ÐÏÄÄÅÒÖÉ×ÁÀÔÓÑ ÎÁ ÜÔÏÊ ÐÌÁÔÆÏÒÍÅ."
+
+#: main.c:1417
+msgid "Resetting to single job (-j1) mode."
+msgstr "÷ÏÚ×ÒÁÝÁÅÔÓÑ ÒÅÖÉÍ ÏÄÉÎÏÞÎÏÊ ÚÁÄÁÞÉ (-j1)."
+
+#: main.c:1431
+msgid "internal error: multiple --jobserver-fds options"
+msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: ÎÅÓËÏÌØËÏ ËÌÀÞÅÊ --jobserver-fds"
+
+#: main.c:1439
+#, c-format
+msgid "internal error: invalid --jobserver-fds string `%s'"
+msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: ÎÅÐÒÁ×ÉÌØÎÁÑ ÓÔÒÏËÁ --jobserver-fds: `%s'"
+
+#: main.c:1449
+msgid "warning: -jN forced in submake: disabling jobserver mode."
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: × ÓÕÂ-Makefile ÐÒÉÎÕÄÉÔÅÌØÎÏ ÚÁÄÁΠ-jN; ÒÅÖÉÍ ÓÅÒ×ÅÒÁ ÚÁÄÁÞ ÚÁÐÒÅÝÅÎ"
+
+#: main.c:1459
+msgid "dup jobserver"
+msgstr ""
+
+#: main.c:1462
+msgid "warning: jobserver unavailable: using -j1.  Add `+' to parent make rule."
+msgstr ""
+"ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÓÅÒ×ÅÒ ÚÁÄÁÞ ÎÅÄÏÓÔÕÐÅÎ: ÉÓÐÏÌØÚÕÅÔÓÑ -j1.\n"
+"äÏÂÁרÔÅ `+' Ë ÐÒÁ×ÉÌÕ × ÒÏÄÉÔÅÌØÓËÏÍ make."
+
+#: main.c:1485
+msgid "creating jobs pipe"
+msgstr ""
+
+#: main.c:1495
+msgid "init jobserver pipe"
+msgstr ""
+
+#: main.c:1580
+msgid "Updating makefiles....\n"
+msgstr "ïÂÎÏ×ÌÅÎÉÅ make-ÆÁÊÌÏ×....\n"
 
-#: main.c:955
-#, possible-c-format
+#: main.c:1605
+#, c-format
 msgid "Makefile `%s' might loop; not remaking it.\n"
 msgstr "Make-ÆÁÊÌ `%s', ×ÏÚÍÏÖÎÏ, ÚÁÃÉËÌÅÎ, ÏΠÎÅ ÂÕÄÅÔ ÐÅÒÅÓÏÂÉÒÁÔØÓÑ.\n"
 
-#: main.c:1029
-#, possible-c-format
+#. The update failed and this makefile was not
+#. from the MAKEFILES variable, so we care.
+#: main.c:1679
+#, c-format
 msgid "Failed to remake makefile `%s'."
 msgstr "ðÏÐÙÔËÁ ÐÅÒÅÓÏÂÒÁÔØ make-ÆÁÊÌ `%s' ÎÅÕÓÐÅÛÎÁ."
 
-#: main.c:1044
-#, possible-c-format
+#: main.c:1695
+#, c-format
 msgid "Included makefile `%s' was not found."
 msgstr "÷ËÌÀÞÁÅÍÙÊ make-ÆÁÊÌ `%s' ÎÅ ÎÁÊÄÅÎ."
 
-#: main.c:1049
-#, possible-c-format
+#. A normal makefile.  We must die later.
+#: main.c:1700
+#, c-format
 msgid "Makefile `%s' was not found"
 msgstr "Make-ÆÁÊÌ `%s' ÎÅ ÎÁÊÄÅÎ"
 
-#: main.c:1108
+#: main.c:1768
 msgid "Couldn't change back to original directory."
 msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÊÔÉ × ÐÅÒ×ÏÎÁÞÁÌØÎÙÊ ËÁÔÁÌÏÇ."
 
-#: main.c:1142
+#: main.c:1802
 msgid "Re-executing:"
 msgstr "ðÏ×ÔÏÒÎÏÅ ×ÙÐÏÌÎÅÎÉÅ:"
 
-#: main.c:1186
-msgid "Updating goal targets...."
-msgstr "ïÂÎÏ×ÌÅÎÉÅ ÃÅÌÅÊ..."
+#: main.c:1833
+msgid "unlink (temporary file): "
+msgstr "unlink (×ÒÅÍÅÎÎÙÊ ÆÁÊÌ)"
 
-#: main.c:1211
+#: main.c:1855
 msgid "No targets specified and no makefile found"
 msgstr "îÅ ÚÁÄÁÎÙ ÃÅÌÉ É ÎÅ ÎÁÊÄÅΠmake-ÆÁÊÌ"
 
-#: main.c:1213
+#: main.c:1857
 msgid "No targets"
 msgstr "îÅÔ ÃÅÌÅÊ"
 
-#: main.c:1439
-#, possible-c-format
-msgid "the `-%c' option requires a positive integral argument"
-msgstr "ËÌÀÞ `-%c' ÄÏÌÖÅΠÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÃÅÌÙÍ ÐÏÌÏÖÉÔÅÌØÎÙÍ ÁÒÇÕÍÅÎÔÏÍ"
+#. Update the goals.
+#: main.c:1862
+msgid "Updating goal targets....\n"
+msgstr "ïÂÎÏ×ÌÅÎÉÅ ÃÅÌÅÊ ÒÅÚÕÌØÔÁÔÁ...\n"
+
+#: main.c:1888
+msgid "warning:  Clock skew detected.  Your build may be incomplete."
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: îÅÐÒÁ×ÉÌØÎÙÊ ÈÏÄ ÞÁÓÏ×.  óÂÏÒËÁ ÍÏÖÅÔ ÂÙÔØ ÎÅÐÏÌÎÏÊ."
 
-#: main.c:1490
-#, possible-c-format
+#: main.c:2043
+#, c-format
 msgid "Usage: %s [options] [target] ...\n"
 msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþ]... [ãåìø]...\n"
 
-#: main.c:1492
+#: main.c:2045
 msgid "Options:\n"
 msgstr "ëÌÀÞÉ:\n"
 
-#: main.c:1967
-#, possible-c-format
-msgid "%sGNU Make version %s"
-msgstr "%sGNU Make ×ÅÒÓÉÉ %s"
+#: main.c:2126
+msgid "\nReport bugs to <bug-make@gnu.org>.\n"
+msgstr "\nóÏÏÂÝÁÊÔÅ Ï ÏÛÉÂËÁÈ ÐÏ ÁÄÒÅÓÕ <bug-make@gnu.org>.\n"
 
-#: main.c:1971
-#, possible-c-format
+#: main.c:2235
+#, c-format
+msgid "the `-%c' option requires a positive integral argument"
+msgstr "ËÌÀÞ `-%c' ÄÏÌÖÅΠÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÃÅÌÙÍ ÐÏÌÏÖÉÔÅÌØÎÙÍ ÁÒÇÕÍÅÎÔÏÍ"
+
+#: main.c:2659
+#, fuzzy, c-format
 msgid ""
 ", by Richard Stallman and Roland McGrath.\n"
-"%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95 Free Software Foundation, Inc.\n"
+"%sBuilt for %s\n"
+"%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99\n"
+"%s\tFree Software Foundation, Inc.\n"
 "%sThis is free software; see the source for copying conditions.\n"
 "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n"
 "%sPARTICULAR PURPOSE.\n"
 "\n"
+"%sReport bugs to <bug-make@gnu.org>.\n"
+"\n"
 msgstr ""
 ", Á×ÔÏÒÙ Richard Stallman É Roland McGrath.\n"
-"%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95 Free Software Foundation, Inc.\n"
+"%sóÏÂÒÁÎÏ ÄÌÑ %s\n"
+"%sCopyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000\n"
+"%s\tFree Software Foundation, Inc.\n"
 "%süÔÏ Ó×ÏÂÏÄÎÁÑ ÐÒÏÇÒÁÍÍÁ; ÐÏÄÒÏÂÎÏÓÔÉ Ï ÕÓÌÏ×ÉÑÈ ÒÁÓÐÒÏÓÔÒÁÎÅÎÉÑ ÓÍÏÔÒÉÔÅ\n"
 "%s× ÉÓÈÏÄÎÏÍ ÔÅËÓÔÅ.  íÙ îå ÐÒÅÄÏÓÔÁ×ÌÑÅÍ ÇÁÒÁÎÔÉÊ; ÄÁÖÅ ÇÁÒÁÎÔÉÊ\n"
-"%sëïííåòþåóëïê ãåîîïóôé ÉÌÉ ðòéçïäîïóôé äìñ ëïîëòåôîïê ãåìé.\n"
+"%sëïííåòþåóëïê ãåîîïóôé ÉÌÉ ðòéçïäîïóôé äìñ ëáëïê-ìéâï ãåìé.\n"
+"\n"
+"%sóÏÏÂÝÁÊÔÅ Ï ÏÛÉÂËÁÈ ÐÏ ÁÄÒÅÓÕ <bug-make@gnu.org>.\n"
 "\n"
 
-#: main.c:1993
-#, possible-c-format
+#: main.c:2685
+#, c-format
 msgid "\n# Make data base, printed on %s"
 msgstr "\n# âÁÚÁ ÄÁÎÎÙÈ Make, ÎÁÐÅÞÁÔÁÎÁ %s"
 
-#: main.c:2002
-#, possible-c-format
+#: main.c:2694
+#, c-format
 msgid "\n# Finished Make data base on %s\n"
 msgstr "\n# ðÅÞÁÔØ ÂÁÚÙ ÄÁÎÎÙÈ Make ÚÁ×ÅÒÛÅÎÁ %s\n"
 
-#: main.c:2053
+#: main.c:2749
 msgid "Entering"
-msgstr "÷ÈÏÄ ×"
+msgstr ""
 
-#: main.c:2053
+#: main.c:2749
 msgid "Leaving"
-msgstr "÷ÙÈÏÄ ÉÚ"
+msgstr ""
 
-#: main.c:2072
+#: main.c:2768
+#, fuzzy
 msgid "an unknown directory"
-msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ËÁÔÁÌÏÇ"
+msgstr "÷ÙÈÏÄ ÉÚ ÎÅÉÚ×ÅÓÔÎÏÇÏ ËÁÔÁÌÏÇÁ"
 
-#: main.c:2074
-#, possible-c-format
+#: main.c:2770
+#, fuzzy, c-format
 msgid "directory `%s'\n"
-msgstr "ËÁÔÁÌÏÇ `%s'\n"
+msgstr "÷ÙÈÏÄ ÉÚ ËÁÔÁÌÏÇÁ `%s'\n"
 
-#: misc.c:212 misc.c:260
+#: misc.c:307
 msgid ".  Stop.\n"
 msgstr ".  ïÓÔÁÎÏ×.\n"
 
-#: misc.c:277
-msgid "Unknown error 12345678901234567890"
-msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ 12345678901234567890"
-
-#: misc.c:282
-#, possible-c-format
+#: misc.c:329
+#, c-format
 msgid "Unknown error %d"
 msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÏÛÉÂËÁ %d"
 
-#: misc.c:318 misc.c:330 read.c:2151
+#: misc.c:369 misc.c:384 misc.c:402 read.c:2708
 msgid "virtual memory exhausted"
 msgstr "×ÉÒÔÕÁÌØÎÁÑ ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ"
 
-#: misc.c:536
-#, possible-c-format
-msgid "%s access: user %d (real %d), group %d (real %d)\n"
+#. All the other debugging messages go to stdout,
+#. but we write this one to stderr because it might be
+#. run in a child fork whose stdout is piped.
+#: misc.c:653
+#, c-format
+msgid "%s access: user %lu (real %lu), group %lu (real %lu)\n"
 msgstr ""
-"ðÒÁ×Á ÄÏÓÔÕÐÁ Ë %s: ÐÏÌØÚÏ×ÁÔÅÌØ %d (ÄÅÊÓÔ×ÉÔÅÌØÎÙÊ %d),\n"
-"ÇÒÕÐÐÁ %d (ÄÅÊÓÔ×ÉÔÅÌØÎÁÑ %d)\n"
+"ðÒÁ×Á ÄÏÓÔÕÐÁ Ë %s: ÐÏÌØÚÏ×ÁÔÅÌØ %lu (ÄÅÊÓÔ×ÉÔÅÌØÎÙÊ %lu),\n"
+"ÇÒÕÐÐÁ %lu (ÄÅÊÓÔ×ÉÔÅÌØÎÁÑ %lu)\n"
 
-#: misc.c:556
+#: misc.c:674
 msgid "Initialized"
 msgstr "éÎÉÃÉÁÌÉÚÉÒÏ×ÁÎ"
 
-#: misc.c:635
-msgid "User"
-msgstr "ðÏÌØÚÏ×ÁÔÅÌØ"
+#: read.c:153
+msgid "Reading makefiles...\n"
+msgstr "þÔÅÎÉÅ make-ÆÁÊÌÏ×...\n"
 
-#~ #: misc.c:683
-#~ msgid "Make"
-#~ msgstr ""
-
-#: misc.c:717
-msgid "Child"
-msgstr "ðÏÔÏÍÏË"
-
-#: read.c:129
-msgid "Reading makefiles..."
-msgstr "þÔÅÎÉÅ make-ÆÁÊÌÏ×..."
-
-#: read.c:298
-#, possible-c-format
+#: read.c:337
+#, c-format
 msgid "Reading makefile `%s'"
 msgstr "þÔÅÎÉÅ make-ÆÁÊÌÁ `%s'"
 
-#: read.c:300
+#: read.c:339
 msgid " (no default goal)"
 msgstr " (ÎÅÔ ÃÅÌÉ ÐÏ ÕÍÏÌÞÁÎÉÀ)"
 
-#: read.c:302
+#: read.c:341
 msgid " (search path)"
 msgstr " (ÐÕÔØ ÐÏÉÓËÁ)"
 
-#: read.c:304
+#: read.c:343
 msgid " (don't care)"
 msgstr " (ÉÇÎÏÒÉÒÏ×ÁÔØ ÏÛÉÂËÉ)"
 
-#: read.c:306
+#: read.c:345
 msgid " (no ~ expansion)"
 msgstr " (ÎÅ ÒÁÓËÒÙ×ÁÔØ ÓÉÍ×ÏÌ `~') "
 
-#: read.c:466
+#: read.c:525
 msgid "invalid syntax in conditional"
 msgstr "ÎÅ×ÅÒÎÙÊ ÓÉÎÔÁËÓÉÓ × ÕÓÌÏ×ÎÏÍ ×ÙÒÁÖÅÎÉÉ"
 
-#: read.c:474
+#: read.c:534
 msgid "extraneous `endef'"
 msgstr "ÉÚÌÉÛÎÉÊ `endef'"
 
-#: read.c:500 read.c:522
+#: read.c:546 read.c:573 variable.c:873
+msgid "empty variable name"
+msgstr "ÐÕÓÔÏÅ ÉÍÑ ÐÅÒÅÍÅÎÎÏÊ"
+
+#: read.c:564
 msgid "empty `override' directive"
 msgstr "ÐÕÓÔÁÑ ÄÉÒÅËÔÉ×Á `override'"
 
-#: read.c:584
-#, possible-c-format
+#: read.c:587
+msgid "invalid `override' directive"
+msgstr "ÎÅÐÒÁ×ÉÌØÎÁÑ ÄÉÒÅËÔÉ×Á `override'"
+
+#: read.c:671
+#, c-format
 msgid "no file name for `%sinclude'"
 msgstr "ÎÅ ÚÁÄÁÎÏ ÉÍÑ ÆÁÊÌÁ ÄÌÑ `%sinclude'"
 
-#: read.c:670
+#. This line starts with a tab but was not caught above
+#. because there was no preceding target, and the line
+#. might have been usable as a variable definition.
+#. But now it is definitely lossage.
+#: read.c:738
 msgid "commands commence before first target"
 msgstr "ËÏÍÁÎÄÙ ×ÓÔÒÅÞÅÎÙ ÄÏ ÐÅÒ×ÏÇÏ ÏÐÒÅÄÅÌÅÎÉÑ ÃÅÌÉ"
 
-#: read.c:714
+#: read.c:787
 msgid "missing rule before commands"
 msgstr "ÐÅÒÅÄ ËÏÍÁÎÄÁÍÉ ÐÒÏÐÕÝÅÎÏ ÐÒÁ×ÉÌÏ"
 
-#: read.c:733
-msgid "missing separator"
-msgstr "ÐÒÏÐÕÝÅΠÒÁÚÄÅÌÉÔÅÌØ"
+#. There's no need to be ivory-tower about this: check for
+#. one of the most common bugs found in makefiles...
+#: read.c:873
+#, c-format
+msgid "missing separator%s"
+msgstr "ÐÒÏÐÕÝÅΠÒÁÚÄÅÌÉÔÅÌØ%s"
 
-#: read.c:782
+#: read.c:875
+msgid " (did you mean TAB instead of 8 spaces?)"
+msgstr "(ÎÅ ÉÍÅÌÉ ÌÉ ×Ù × ×ÉÄÕ TAB ×ÍÅÓÔÏ ×ÏÓØÍÉ ÐÒÏÂÅÌÏ×?)"
+
+#: read.c:1011
 msgid "missing target pattern"
 msgstr "ÐÒÏÐÕÝÅΠÏÂÒÁÚÅàÃÅÌÉ"
 
-#: read.c:784
+#: read.c:1013
 msgid "multiple target patterns"
-msgstr "ÎÅ ÏÄÉΠÏÂÒÁÚÅàÃÅÌÉ"
+msgstr "ÎÅÓËÏÌØËÏ ÏÂÒÁÚÃÏ× ÃÅÌÉ"
 
-#: read.c:789
+#: read.c:1017
 msgid "target pattern contains no `%%'"
 msgstr "ÏÂÒÁÚÅàÃÅÌÉ ÎÅ ÓÏÄÅÒÖÉÔ `%%'"
 
-#: read.c:829
+#: read.c:1058
 msgid "missing `endif'"
 msgstr "ÐÒÏÐÕÝÅÎÁ `endif'"
 
-#: read.c:887
+#: read.c:1117
 msgid "Extraneous text after `endef' directive"
 msgstr "éÚÌÉÛÎÉÊ ÔÅËÓÔ ÐÏÓÌÅ ÄÉÒÅËÔÉ×Ù `endef'"
 
-#: read.c:917
+#. No `endef'!!
+#: read.c:1147
 msgid "missing `endef', unterminated `define'"
 msgstr "ÐÒÏÐÕÝÅÎÁ `endif', ÎÅÚÁ×ÅÒÛÅÎÎÁÑ `define'"
 
-#: read.c:973 read.c:1120
-#, possible-c-format
+#: read.c:1201 read.c:1357
+#, c-format
 msgid "Extraneous text after `%s' directive"
 msgstr "éÚÌÉÛÎÉÊ ÔÅËÓÔ ÐÏÓÌÅ ÄÉÒÅËÔÉ×Ù `%s'"
 
-#: read.c:977
-#, possible-c-format
+#: read.c:1204
+#, c-format
 msgid "extraneous `%s'"
 msgstr "ÉÚÌÉÛÎÑÑ `%s'"
 
-#: read.c:982
+#: read.c:1209
 msgid "only one `else' per conditional"
 msgstr "× ÕÓÌÏ×ÎÏÍ ×ÙÒÁÖÅÎÉÉ ×ÏÚÍÏÖÎÁ ÔÏÌØËÏ ÏÄÎÁ `else'"
 
-#: read.c:1230
+#: read.c:1471
+msgid "Malformed per-target variable definition"
+msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÆÏÒÍÁÔ ÚÁÄÁÎÉÑ ÐÅÒÅÍÅÎÎÏÊ ÄÌÑ ÃÅÌÉ"
+
+#: read.c:1553
 msgid "mixed implicit and static pattern rules"
 msgstr "ÓÍÅÛÁÎÙ ÎÅÑ×ÎÙÅ ÐÒÁ×ÉÌÁ É ÐÒÁ×ÉÌÁ ÓÏ ÓÔÁÔÉÞÅÓËÉÍÉ ÏÂÒÁÚÃÁÍÉ"
 
-#: read.c:1233
+#: read.c:1556
 msgid "mixed implicit and normal rules"
 msgstr "ÓÍÅÛÁÎÙ ÎÅÑ×ÎÙÅ É ÏÂÙÞÎÙÅ ÐÒÁ×ÉÌÁ"
 
-#: read.c:1273
-#, possible-c-format
+#: read.c:1597
+#, c-format
 msgid "target `%s' doesn't match the target pattern"
 msgstr "ÃÅÌØ `%s' ÎÅ ÓÏÏÔ×ÅÔÓÔ×ÕÅÔ ÏÂÒÁÚÃÕ ÃÅÌÅÊ"
 
-#: read.c:1305 read.c:1407
-#, possible-c-format
+#: read.c:1619
+#, c-format
+msgid "target `%s' leaves prerequisite pattern empty"
+msgstr "ÃÅÌØ `%s' ÏÓÔÁ×ÌÑÅÔ ÐÕÓÔÏÊ ÛÁÂÌÏΠÚÁ×ÉÓÉÍÏÓÔÉ"
+
+#: read.c:1635 read.c:1735
+#, c-format
 msgid "target file `%s' has both : and :: entries"
 msgstr "ÃÅÌÅ×ÏÊ ÆÁÊÌ `%s' ÉÍÅÅÔ ×ÈÏÖÄÅÎÉÑ É Ó `:', É Ó `::' "
 
-#: read.c:1313
-#, possible-c-format
+#: read.c:1641
+#, c-format
 msgid "target `%s' given more than once in the same rule."
 msgstr "ÃÅÌØ `%s' ÕËÁÚÁÎÁ ÎÅÓËÏÌØËÏ ÒÁÚ × ÏÄÎÏÍ ÐÒÁ×ÉÌÅ"
 
-#: read.c:1322
-#, possible-c-format
+#: read.c:1650
+#, c-format
 msgid "warning: overriding commands for target `%s'"
-msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÐÅÒÅËÒÙÔÉÅ ËÏÍÁÎÄ ÄÌÑ ÃÅÌÉ `%s'"
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ËÏÍÁÎÄ ÄÌÑ ÃÅÌÉ `%s'"
 
-#: read.c:1325
-#, possible-c-format
+#: read.c:1653
+#, c-format
 msgid "warning: ignoring old commands for target `%s'"
-msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÉÇÎÏÒÉÒÏ×ÁÎÉÅ ÓÔÁÒÙÈ ËÏÍÁÎÄ ÄÌÑ ÃÅÌÉ `%s'"
-
-#: read.c:1815
+msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ÓÔÁÒÙÅ ËÏÍÁÎÄÙ ÄÌÑ ÃÅÌÉ `%s' ÉÇÎÏÒÉÒÕÀÔÓÑ"
+
+#. This only happens when the first thing on the line is a '\0'.
+#. It is a pretty hopeless case, but (wonder of wonders) Athena
+#. lossage strikes again!  (xmkmf puts NULs in its makefiles.)
+#. There is nothing really to be done; we synthesize a newline so
+#. the following line doesn't appear to be part of this line.
+#: read.c:2153
 msgid "warning: NUL character seen; rest of line ignored"
 msgstr "ÐÒÅÄÕÐÒÅÖÄÅÎÉÅ: ×ÓÔÒÅÞÅΠÓÉÍ×ÏÌ NUL; ÉÇÎÏÒÉÒÕÅÔÓÑ ÄÏ ËÏÎÃÁ ÓÔÒÏËÉ"
 
-#: remake.c:212
-#, possible-c-format
+#: remake.c:227
+#, c-format
 msgid "Nothing to be done for `%s'."
 msgstr "ãÅÌØ `%s' ÎÅ ÔÒÅÂÕÅÔ ×ÙÐÏÌÎÅÎÉÑ ËÏÍÁÎÄ."
 
-#: remake.c:213
-#, possible-c-format
+#: remake.c:228
+#, c-format
 msgid "`%s' is up to date."
 msgstr "`%s' ÎÅ ÔÒÅÂÕÅÔ ÏÂÎÏ×ÌÅÎÉÑ."
 
-#: remake.c:310
-#, possible-c-format
+#: remake.c:296
+#, c-format
+msgid "Pruning file `%s'.\n"
+msgstr "ïÂÒÅÚÁÅÔÓÑ ÆÁÊÌ `%s'.\n"
+
+#: remake.c:350
+#, c-format
 msgid "Considering target file `%s'.\n"
 msgstr "ïÂÒÁÂÏÔËÁ ÃÅÌÅ×ÏÇÏ ÆÁÊÌÁ `%s'.\n"
 
-#: remake.c:316
-#, possible-c-format
+#: remake.c:357
+#, c-format
 msgid "Recently tried and failed to update file `%s'.\n"
 msgstr "ðÒÅÄÙÄÕÝÁÑ ÐÏÐÙÔËÁ ÏÂÎÏ×ÉÔØ ÆÁÊÌ `%s' ÚÁ×ÅÒÛÉÌÁÓØ ÎÅÕÓÐÅÛÎÏ.\n"
 
-#: remake.c:320
-#, possible-c-format
+#: remake.c:361
+#, c-format
 msgid "File `%s' was considered already.\n"
 msgstr "æÁÊÌ `%s' ÕÖÅ ÂÙÌ ÏÂÒÁÂÏÔÁÎ.\n"
 
-#: remake.c:330
-#, possible-c-format
+#: remake.c:371
+#, c-format
 msgid "Still updating file `%s'.\n"
 msgstr "æÁÊÌ `%s' ÏÂÎÏ×ÌÑÅÔÓÑ × ÄÁÎÎÙÊ ÍÏÍÅÎÔ.\n"
 
-#: remake.c:333
-#, possible-c-format
+#: remake.c:374
+#, c-format
 msgid "Finished updating file `%s'.\n"
 msgstr "ïÂÎÏ×ÌÅÎÉÅ ÆÁÊÌÁ `%s' ÚÁ×ÅÒÛÅÎÏ.\n"
 
-#: remake.c:354
-#, possible-c-format
+#: remake.c:395
+#, c-format
 msgid "File `%s' does not exist.\n"
 msgstr "æÁÊÌ `%s' ÎÅ ÓÕÝÅÓÔ×ÕÅÔ.\n"
 
-#: remake.c:364 remake.c:728
-#, possible-c-format
+#: remake.c:405 remake.c:825
+#, c-format
 msgid "Found an implicit rule for `%s'.\n"
 msgstr "îÁÊÄÅÎÏ ÎÅÑ×ÎÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ `%s'.\n"
 
-#: remake.c:366 remake.c:730
-#, possible-c-format
+#: remake.c:407 remake.c:827
+#, c-format
 msgid "No implicit rule found for `%s'.\n"
-msgstr "îÅ ÎÁÊÄÅÎÏ ÎÅÑ×ÎÙÈ ÐÒÁ×ÉÌ ÄÌÑ `%s'.\n"
+msgstr "îÅ ÎÁÊÄÅÎÏ ÎÅÑ×ÎÏÇÏ ÐÒÁ×ÉÌÁ ÄÌÑ `%s'.\n"
 
-#: remake.c:372 remake.c:736
-#, possible-c-format
+#: remake.c:413 remake.c:833
+#, c-format
 msgid "Using default commands for `%s'.\n"
 msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ ËÏÍÁÎÄ ÐÏ ÕÍÏÌÞÁÎÉÀ ÄÌÑ `%s'.\n"
 
-#: remake.c:392 remake.c:760
-#, possible-c-format
+#: remake.c:433 remake.c:857
+#, c-format
 msgid "Circular %s <- %s dependency dropped."
 msgstr "ãÉËÌÉÞÅÓËÁÑ ÚÁ×ÉÓÉÍÏÓÔØ %s <- %s ÐÒÏÐÕÝÅÎÁ."
 
-#: remake.c:474
-#, possible-c-format
-msgid "Finished dependencies of target file `%s'.\n"
+#: remake.c:511
+#, c-format
+msgid "Finished prerequisites of target file `%s'.\n"
 msgstr "ïÂÎÏ×ÌÅÎÉÅ ÃÅÌÅÊ, ÏÔ ËÏÔÏÒÙÈ ÚÁ×ÉÓÉÔ ÃÅÌÅ×ÏÊ ÆÁÊÌ `%s', ÚÁ×ÅÒÛÅÎÏ.\n"
 
-#: remake.c:480
-#, possible-c-format
-msgid "The dependencies of `%s' are being made.\n"
-msgstr "ãÅÌÉ, ÏÔ ËÏÔÏÒÙÈ ÚÁ×ÉÓÉÔ `%s', ÂÙÌÉ ÓÏÂÒÁÎÙ.\n"
+#: remake.c:517
+#, c-format
+msgid "The prerequisites of `%s' are being made.\n"
+msgstr "ãÅÌÉ, ÏÔ ËÏÔÏÒÙÈ ÚÁ×ÉÓÉÔ `%s', × ÎÁÓÔÏÑÝÉÊ ÍÏÍÅÎÔ ÓÏÂÉÒÁÀÔÓÑ.\n"
 
-#: remake.c:493
-#, possible-c-format
+#: remake.c:530
+#, c-format
 msgid "Giving up on target file `%s'.\n"
 msgstr "á×ÁÒÉÊÎÙÊ ÏÓÔÁÎÏ× ÎÁ ÃÅÌÅ×ÏÍ ÆÁÊÌÅ `%s'.\n"
 
-#: remake.c:497
-#, possible-c-format
+#: remake.c:535
+#, c-format
 msgid "Target `%s' not remade because of errors."
 msgstr "ãÅÌØ `%s' ÎÅ ÂÙÌÁ ÐÅÒÅÓÏÂÒÁÎÁ ÉÚ-ÚÁ ÏÛÉÂÏË."
 
-#: remake.c:542
-#, possible-c-format
-msgid "Dependency `%s' does not exist.\n"
-msgstr "úÁ×ÉÓÉÍÏÓÔØ `%s' ÎÅ ÓÕÝÅÓÔ×ÕÅÔ.\n"
-
-#: remake.c:544
-#, possible-c-format
-msgid "Dependency `%s' is %s than dependent `%s'.\n"
-msgstr "ãÅÌØ `%s' ÏÂÎÏ×ÌÑÌÁÑÓØ %s ÞÅÍ ÚÁ×ÉÓÑÝÁÑ ÏÔ ÎÅÅ `%s'.\n"
+#: remake.c:583
+#, c-format
+msgid "Prerequisite `%s' of target `%s' does not exist.\n"
+msgstr "úÁ×ÉÓÉÍÏÓÔØ `%s' ÃÅÌÉ `%s' ÎÅ ÓÕÝÅÓÔ×ÕÅÔ.\n"
 
-#: remake.c:545
-msgid "newer"
-msgstr "ÐÏÚÖÅ"
+#: remake.c:588
+#, c-format
+msgid "Prerequisite `%s' is newer than target `%s'.\n"
+msgstr "úÁ×ÉÓÉÍÏÓÔØ `%s' ÎÏ×ÅÅ, ÞÅÍ ÃÅÌØ `%s'.\n"
 
-#: remake.c:545
-msgid "older"
-msgstr "ÒÁÎØÛÅ"
+#: remake.c:591
+#, c-format
+msgid "Prerequisite `%s' is older than target `%s'.\n"
+msgstr "úÁ×ÉÓÉÍÏÓÔØ `%s' ÓÔÁÒÅÅ, ÞÅÍ ÃÅÌØ `%s'.\n"
 
-#: remake.c:556
-#, possible-c-format
-msgid "Target `%s' is double-colon and has no dependencies.\n"
+#: remake.c:609
+#, c-format
+msgid "Target `%s' is double-colon and has no prerequisites.\n"
 msgstr "ãÅÌØ `%s' ÏÂßÑ×ÌÅÎÁ Ó Ä×ÕÍÑ Ä×ÏÅÔÏÞÉÑÍÉ É ÎÅ ÉÍÅÅÔ ÚÁ×ÉÓÉÍÏÓÔÅÊ.\n"
 
-#: remake.c:561
-#, possible-c-format
-msgid "No commands for `%s' and no dependencies actually changed.\n"
+#: remake.c:615
+#, c-format
+msgid "No commands for `%s' and no prerequisites actually changed.\n"
 msgstr "ëÏÍÁÎÄÙ ÄÌÑ `%s' ÎÅ ÚÁÄÁÎÙ, É ÚÁ×ÉÓÉÍÏÓÔÉ ÎÅ ÂÙÌÉ ÉÚÍÅÎÅÎÙ.\n"
 
-#: remake.c:566
-#, possible-c-format
-msgid "No need to remake target `%s'.\n"
-msgstr "îÅÔ ÎÅÏÂÈÏÄÉÍÏÓÔÉ ÐÅÒÅÓÏÂÉÒÁÔØ ÃÅÌØ `%s'.\n"
+#: remake.c:623
+#, c-format
+msgid "No need to remake target `%s'"
+msgstr "îÅÔ ÎÅÏÂÈÏÄÉÍÏÓÔÉ ÐÅÒÅÓÏÂÉÒÁÔØ ÃÅÌØ `%s'."
 
-#: remake.c:571
-#, possible-c-format
+#: remake.c:625
+#, c-format
+msgid "; using VPATH name `%s'"
+msgstr "; ÉÓÐÏÌØÚÕÅÔÓÑ VPATH-ÉÍÑ `%s'"
+
+#: remake.c:645
+#, c-format
 msgid "Must remake target `%s'.\n"
 msgstr "îÅÏÂÈÏÄÉÍÏ ÐÅÒÅÓÏÂÒÁÔØ ÃÅÌØ `%s'.\n"
 
-#: remake.c:578
-#, possible-c-format
+#: remake.c:651
+#, c-format
+msgid "  Ignoring VPATH name `%s'.\n"
+msgstr "  éÇÎÏÒÉÒÕÅÔÓÑ VPATH-ÉÍÑ `%s'.\n"
+
+#: remake.c:660
+#, c-format
 msgid "Commands of `%s' are being run.\n"
 msgstr "ëÏÍÁÎÄÙ ÄÌÑ `%s' ×ÙÐÏÌÎÑÀÔÓÑ × ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ.\n"
 
-#: remake.c:585
-#, possible-c-format
+#: remake.c:667
+#, c-format
 msgid "Failed to remake target file `%s'.\n"
-msgstr "ðÏÐÙÔËÁ ÐÅÒÅÓÂÏÒËÉ ÃÅÌÅ×ÏÇÏ ÆÁÊÌÁ `%s' ÂÅÚÕÓÐÅÛÎÁ.\n"
+msgstr "ðÏÐÙÔËÁ ÐÅÒÅÓÏÚÄÁÎÉÑ ÃÅÌÅ×ÏÇÏ ÆÁÊÌÁ `%s' ÂÅÚÕÓÐÅÛÎÁ.\n"
 
-#: remake.c:588
-#, possible-c-format
+#: remake.c:670
+#, c-format
 msgid "Successfully remade target file `%s'.\n"
-msgstr "ãÅÌÅ×ÏÊ ÆÁÊÌ `%s' ÕÓÐÅÛÎÏ ÐÅÒÅÓÏÂÒÁÎ.\n"
+msgstr "ãÅÌÅ×ÏÊ ÆÁÊÌ `%s' ÕÓÐÅÛÎÏ ÐÅÒÅÓÏÚÄÁÎ.\n"
 
-#: remake.c:591
-#, possible-c-format
+#: remake.c:673
+#, c-format
 msgid "Target file `%s' needs remade under -q.\n"
-msgstr "ãÅÌÅ×ÏÊ ÆÁÊÌ `%s' ÔÒÅÂÕÅÔ ÐÅÒÅÓÂÏÒËÉ Ó ËÌÀÞÏÍ -q.\n"
+msgstr "ãÅÌÅ×ÏÊ ÆÁÊÌ `%s' ÔÒÅÂÕÅÔ ÐÅÒÅÓÏÚÄÁÎÉÑ Ó ËÌÀÞÏÍ -q.\n"
 
-#: remake.c:880
-#, possible-c-format
+#: remake.c:974
+#, c-format
 msgid "%sNo rule to make target `%s'%s"
 msgstr "%sîÅÔ ÐÒÁ×ÉÌÁ ÄÌÑ ÓÂÏÒËÉ ÃÅÌÉ `%s'%s"
 
-#: remake.c:882
-#, possible-c-format
+#: remake.c:976
+#, c-format
 msgid "%sNo rule to make target `%s', needed by `%s'%s"
 msgstr "%sîÅÔ ÐÒÁ×ÉÌÁ ÄÌÑ ÓÂÏÒËÉ ÃÅÌÉ `%s', ÔÒÅÂÕÅÍÏÊ ÄÌÑ `%s'%s"
 
-#: remake.c:1053
-#, possible-c-format
-msgid "*** File `%s' has modification time in the future"
-msgstr "*** æÁÊÌ `%s' ÂÙÌ ÉÚÍÅÎÅΠנÂÕÄÕÝÅÍ"
-
-#: remote-cstms.c:94
-#, possible-c-format
-msgid "Customs won't export: %s\n"
-msgstr ""
-
-#: remote-cstms.c:129
-msgid "exporting: Couldn't create return socket."
-msgstr "ÜËÓÐÏÒÔÉÒÏ×ÁÎÉÅ: îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ×ÏÚ×ÒÁÝÁÅÍÙÊ ÓÏËÅÔ."
-
-#: remote-cstms.c:138
-msgid "exporting: "
-msgstr "ÜËÓÐÏÒÔÉÒÏ×ÁÎÉÅ: "
-
-#: remote-cstms.c:171
-#, possible-c-format
-msgid "exporting: %s"
-msgstr "ÜËÓÐÏÒÔÉÒÏ×ÁÎÉÅ: %s"
-
-#: remote-cstms.c:185
-#, possible-c-format
-msgid "Job exported to %s ID %u\n"
-msgstr "úÁÄÁÎÉÅ ÜËÓÐÏÒÔÉÒÏ×ÁÎÏ ÎÁ %s ID %u\n"
+#: remake.c:1177
+#, c-format
+msgid "*** Warning: File `%s' has modification time in the future (%s > %s)"
+msgstr "*** æÁÊÌ `%s' ÂÙÌ ÉÚÍÅÎÅΠנÂÕÄÕÝÅÍ (%s > %s)"
 
-#: rule.c:556
-msgid "\n# Implicit Rules"
-msgstr "\n# îÅÑ×ÎÙÅ ÐÒÁ×ÉÌÁ"
+#. Give a warning if there is no pattern, then remove the
+#. pattern so it's ignored next time.
+#: remake.c:1291
+#, c-format
+msgid ".LIBPATTERNS element `%s' is not a pattern"
+msgstr "üÌÅÍÅÎÔ .LIBPATTERNS `%s' ÎÅ Ñ×ÌÑÅÔÓÑ ÏÂÒÁÚÃÏÍ"
 
-#: rule.c:571
+#: rule.c:671
 msgid "\n# No implicit rules."
 msgstr "\n# îÅÑ×ÎÙÈ ÐÒÁ×ÉÌ ÎÅÔ."
 
-#: rule.c:574
-#, possible-c-format
+#: rule.c:674
+#, c-format
 msgid "\n# %u implicit rules, %u"
 msgstr "\n# îÅÑ×ÎÙÈ ÐÒÁ×ÉÌ: %u, ÔÅÒÍÉÎÁÌØÎÙÈ: %u"
 
-#: rule.c:583
+#: rule.c:683
 msgid " terminal."
 msgstr "."
 
-#: rule.c:587
-#, possible-c-format
+#: rule.c:691
+#, c-format
 msgid "BUG: num_pattern_rules wrong!  %u != %u"
 msgstr "ïûéâëá: ÎÅ×ÅÒÎÏÅ ÚÎÁÞÅÎÉÅ num_pattern_rules! %u != %u"
 
-#: variable.c:658 variable.c:660
-msgid "empty variable name"
-msgstr "ÐÕÓÔÏÅ ÉÍÑ ÐÅÒÅÍÅÎÎÏÊ"
-
-#: variable.c:742
-msgid "makefile"
-msgstr "Make-ÆÁÊÌ"
-
-#: variable.c:745
-msgid "environment under -e"
-msgstr "ÚÁÄÁΠËÌÀÞ -e"
-
-#: variable.c:751
-msgid "`override' directive"
-msgstr "äÉÒÅËÔÉ×Á `override'"
-
-#: variable.c:822
-msgid "# No variables."
-msgstr "# ðÅÒÅÍÅÎÎÙÈ ÎÅÔ."
-
-#: variable.c:825
-#, possible-c-format
-msgid "# %u variables in %u hash buckets.\n"
-msgstr "# %u ÐÅÒÅÍÅÎÎÙÈ × %u ÑÞÅÊËÁÈ ÈÅÛ-ÔÁÂÌÉÃÙ.\n"
-
-#: variable.c:828
-#, possible-c-format
-msgid "# average of %.1f variables per bucket, max %u in one bucket.\n"
-msgstr "# × ÓÒÅÄÎÅÍ %.1f ÐÅÒÅÍÅÎÎÙÈ × ÑÞÅÊËÅ, ÍÁËÓ. %u × ÏÄÎÏÊ ÑÞÅÊËÅ.\n"
-
-#: variable.c:835
-#, possible-c-format
-msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n"
-msgstr "# × ÓÒÅÄÎÅÍ %d.%d ÐÅÒÅÍÅÎÎÙÈ × ÑÞÅÊËÅ, ÍÁËÓ. %u × ÏÄÎÏÊ ÑÞÅÊËÅ.\n"
-
-#: variable.c:850
-msgid "\n# Variables\n"
-msgstr "\n# ðÅÒÅÍÅÎÎÙÅ\n"
-
-#: vpath.c:455
-msgid "\n# VPATH Search Paths\n"
-msgstr "\n# ðÕÔÉ ÐÏÉÓËÁ VPATH\n"
-
-#: vpath.c:472
-msgid "# No `vpath' search paths."
-msgstr "# îÅ ÏÐÒÅÄÅÌÅΠÐÕÔØ ÐÏÉÓËÁ `vpath'."
-
-#: vpath.c:474
-#, possible-c-format
-msgid "\n# %u `vpath' search paths.\n"
-msgstr "\n# %u `vpath' ÐÕÔØ ÐÏÉÓËÁ.\n"
+#: rule.c:695
+msgid "\n# Pattern-specific variable values"
+msgstr ""
 
-#: vpath.c:477
-msgid "\n# No general (`VPATH' variable) search path."
-msgstr "\n# îÅ ÏÐÒÅÄÅÌÅΠÏÂÝÉÊ (ÐÅÒÅÍÅÎÎÁÑ `VPATH') ÐÕÔØ ÐÏÉÓËÁ."
+#: rule.c:710
+msgid "\n# No pattern-specific variable values."
+msgstr ""
 
-#: vpath.c:483
-msgid ""
-"\n"
-"# General (`VPATH' variable) search path:\n"
-"# "
+#: rule.c:713
+#, c-format
+msgid "\n# %u pattern-specific variable values"
 msgstr ""
-"\n"
-"# ïÂÝÉÊ (ÐÅÒÅÍÅÎÎÁÑ `VPATH') ÐÕÔØ ÐÏÉÓËÁ:\n"
-"# "
 
-#: getloadavg.c:948
-msgid "Error getting load average"
-msgstr "ïÛÉÂËÁ ÐÏÌÕÞÅÎÉÑ Ó×ÅÄÅÎÉÊ Ï ÓÒÅÄÎÅÊ ÚÁÇÒÕÚËÅ"
-
-#: getloadavg.c:952
-#, possible-c-format
-msgid "1-minute: %f  "
-msgstr "1 ÍÉÎÕÔÁ: %f  "
-
-#: getloadavg.c:954
-#, possible-c-format
-msgid "5-minute: %f  "
-msgstr "5 ÍÉÎÕÔ: %f  "
-
-#: getloadavg.c:956
-#, possible-c-format
-msgid "15-minute: %f  "
-msgstr "15 ÍÉÎÕÔ: %f  "
-
-#~ # óÏÏÂÝÅÎÉÑ getopt ÉÓËÌÀÞÅÎÙ, Ô.Ë. ÏÎÉ ÏÔÎÏÓÑÔÓÑ Ë ÕÖÅ
-#~ # ÕÓÔÁÒÅ×ÛÅÊ ×ÅÒÓÉÉ ÜÔÏÊ ÂÉÂÌÉÏÔÅËÉ, É ÉÓÞÅÚÎÕÔ × ÓÌÅÄÕÀÝÅÊ ×ÅÒÓÉÉ make
-#~ #
-#~ #: getopt.c:565
-#~ #, possible-c-format
-#~ msgid "%s: option `%s' is ambiguous\n"
-#~ msgstr ""
-
-#~ #: getopt.c:589
-#~ #, possible-c-format
-#~ msgid "%s: option `--%s' doesn't allow an argument\n"
-#~ msgstr ""
-
-#~ #: getopt.c:594
-#~ #, possible-c-format
-#~ msgid "%s: option `%c%s' doesn't allow an argument\n"
-#~ msgstr ""
-
-#~ #: getopt.c:611
-#~ #, possible-c-format
-#~ msgid "%s: option `%s' requires an argument\n"
-#~ msgstr ""
-
-#~ #: getopt.c:640
-#~ #, possible-c-format
-#~ msgid "%s: unrecognized option `--%s'\n"
-#~ msgstr ""
-
-#~ #: getopt.c:644
-#~ #, possible-c-format
-#~ msgid "%s: unrecognized option `%c%s'\n"
-#~ msgstr ""
-
-#~ #: getopt.c:670
-#~ #, possible-c-format
-#~ msgid "%s: illegal option -- %c\n"
-#~ msgstr ""
-
-#~ #: getopt.c:673
-#~ #, possible-c-format
-#~ msgid "%s: invalid option -- %c\n"
-#~ msgstr ""
-
-#~ #: getopt.c:709
-#~ #, possible-c-format
-#~ msgid "%s: option requires an argument -- %c\n"
-#~ msgstr ""
-
-#~ #: getopt.c:777 getopt1.c:141
-#~ msgid "digits occur in two different argv-elements.\n"
-#~ msgstr ""
-
-#~ #: getopt.c:779 getopt1.c:143
-#~ #, possible-c-format
-#~ msgid "option %c\n"
-#~ msgstr ""
-
-#~ #: getopt.c:783 getopt1.c:147
-#~ msgid "option a\n"
-#~ msgstr ""
-
-#~ #: getopt.c:787 getopt1.c:151
-#~ msgid "option b\n"
-#~ msgstr ""
-
-#~ #: getopt.c:791 getopt1.c:155
-#~ #, possible-c-format
-#~ msgid "option c with value `%s'\n"
-#~ msgstr ""
-
-#~ #: getopt.c:798 getopt1.c:166
-#~ #, possible-c-format
-#~ msgid "?? getopt returned character code 0%o ??\n"
-#~ msgstr ""
-
-#~ #: getopt.c:804 getopt1.c:172
-#~ msgid "non-option ARGV-elements: "
-#~ msgstr ""
-
-#~ #: getopt1.c:159
-#~ #, possible-c-format
-#~ msgid "option d with value `%s'\n"
-#~ msgstr ""
-
-#: signame.c:57
+#: signame.c:97
 msgid "unknown signal"
 msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÇÎÁÌ"
 
-#: signame.c:107
+#: signame.c:108
 msgid "Hangup"
-msgstr "ïÂÒÁ× ÔÅÒÍÉÎÁÌØÎÏÊ ÌÉÎÉÉ"
+msgstr "ïÂÒÙ× ÔÅÒÍÉÎÁÌØÎÏÊ ÌÉÎÉÉ"
 
-#: signame.c:110
+#: signame.c:111
 msgid "Interrupt"
-msgstr "ðÒÅÒÁ×ÁÎÉÅ"
+msgstr "ðÒÅÒÙ×ÁÎÉÅ"
 
-#: signame.c:113
+#: signame.c:114
 msgid "Quit"
 msgstr "á×ÁÒÉÊÎÏÅ ÐÒÅÒÙ×ÁÎÉÅ"
 
-#: signame.c:116
+#: signame.c:117
 msgid "Illegal Instruction"
 msgstr "îÅÄÏÐÕÓÔÉÍÁÑ ÉÎÓÔÒÕËÃÉÑ"
 
-#: signame.c:119
+#: signame.c:120
 msgid "Trace/breakpoint trap"
 msgstr "ðÒÅÒÙ×ÁÎÉÅ ÎÁ ËÏÎÔÒÏÌØÎÏÊ ÔÏÞËÅ"
 
-#: signame.c:124
+#: signame.c:125
 msgid "Aborted"
 msgstr "ðÒÅÒ×ÁÎÏ"
 
-#: signame.c:127
+#: signame.c:128
 msgid "IOT trap"
 msgstr "ïÛÉÂËÁ IOT"
 
-#: signame.c:130
+#: signame.c:131
 msgid "EMT trap"
-msgstr "ïÛÉÂËÁ ÜÍÕÌÉÒÏ×ÁÎÉÑ"
+msgstr "ïÛÉÂËÁ ÜÍÕÌÑÃÉÉ"
 
-#: signame.c:133
+#: signame.c:134
 msgid "Floating point exception"
 msgstr "ïÛÉÂËÁ ÏÐÅÒÁÃÉÉ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ"
 
-#: signame.c:136
+#: signame.c:137
 msgid "Killed"
 msgstr "õÎÉÞÔÏÖÅÎÉÅ"
 
-#: signame.c:139
+#: signame.c:140
 msgid "Bus error"
-msgstr "îÅ×ÅÒÎÏÅ ÏÂÒÁÛÅÎÉÅ Ë ÐÁÍÑÔÉ"
+msgstr "îÅ×ÅÒÎÏÅ ÏÂÒÁÝÅÎÉÅ Ë ÐÁÍÑÔÉ"
 
-#: signame.c:142
+#: signame.c:143
 msgid "Segmentation fault"
-msgstr "îÁÒÕÝÅÎÉÅ ÐÒÁ× ÄÏÓÔÕÐÁ Ë ÐÁÍÑÔÉ"
+msgstr "îÁÒÕÛÅÎÉÅ ÐÒÁ× ÄÏÓÔÕÐÁ Ë ÐÁÍÑÔÉ"
 
-#: signame.c:145
+#: signame.c:146
 msgid "Bad system call"
 msgstr "îÅÐÒÁ×ÉÌØÎÙÊ ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ×"
 
-#: signame.c:148
+#: signame.c:149
 msgid "Broken pipe"
 msgstr "ïÂÒÙ× ËÁÎÁÌÁ"
 
-#: signame.c:151
+#: signame.c:152
 msgid "Alarm clock"
 msgstr "óÉÇÎÁÌ ÐÏ ÔÁÊÍÅÒÕ"
 
-#: signame.c:154
+#: signame.c:155
 msgid "Terminated"
 msgstr "úÁ×ÅÒÛÅÎÉÅ"
 
-#: signame.c:157
+#: signame.c:158
 msgid "User defined signal 1"
 msgstr "ïÐÒÅÄÅÌÑÅÍÙÊ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÓÉÇÎÁÌ 1"
 
-#: signame.c:160
+#: signame.c:161
 msgid "User defined signal 2"
 msgstr "ïÐÒÅÄÅÌÑÅÍÙÊ ÐÏÌØÚÏ×ÁÔÅÌÅÍ ÓÉÇÎÁÌ 2"
 
-#: signame.c:165 signame.c:168
+#: signame.c:166 signame.c:169
 msgid "Child exited"
 msgstr "ðÏÔÏÍÏË ÚÁ×ÅÒÛÉÌ ÒÁÂÏÔÕ"
 
-#: signame.c:171
+#: signame.c:172
 msgid "Power failure"
 msgstr "ïÔËÁÚ ÐÉÔÁÎÉÑ"
 
-#: signame.c:174
+#: signame.c:175
 msgid "Stopped"
 msgstr "ïÓÔÁÎÏ×"
 
-#: signame.c:177
+#: signame.c:178
 msgid "Stopped (tty input)"
 msgstr "ïÓÔÁÎÏ× (××ÏÄ Ó ÔÅÒÍÉÎÁÌÁ) "
 
-#: signame.c:180
+#: signame.c:181
 msgid "Stopped (tty output)"
 msgstr "ïÓÔÁÎÏ× (×Ù×ÏÄ ÎÁ ÔÅÒÍÉÎÁÌ)"
 
-#: signame.c:183
+#: signame.c:184
 msgid "Stopped (signal)"
 msgstr "ïÓÔÁÎÏ× (ÓÉÇÎÁÌ)"
 
-#: signame.c:186
+#: signame.c:187
 msgid "CPU time limit exceeded"
 msgstr "ðÒÅ×ÙÛÅΠÐÒÅÄÅÌ ÐÒÏÃÅÓÓÏÒÎÏÇÏ ×ÒÅÍÅÎÉ"
 
-#: signame.c:189
+#: signame.c:190
 msgid "File size limit exceeded"
 msgstr "ðÒÅ×ÙÛÅΠÐÒÅÄÅÌ ÒÁÚÍÅÒÁ ÆÁÊÌÁ"
 
-#: signame.c:192
+#: signame.c:193
 msgid "Virtual timer expired"
 msgstr "÷ÉÒÔÕÁÌØÎÏÅ ×ÒÅÍÑ ÉÓÔÅËÌÏ"
 
-#: signame.c:195
+#: signame.c:196
 msgid "Profiling timer expired"
 msgstr "÷ÒÅÍÑ ÐÒÏÆÉÌÉÒÏ×ÁÎÉÑ ÉÓÔÅËÌÏ"
 
-#: signame.c:201
+#. "Window size changed" might be more accurate, but even if that
+#. is all that it means now, perhaps in the future it will be
+#. extended to cover other kinds of window changes.
+#: signame.c:202
 msgid "Window changed"
 msgstr "ïËÎÏ ÉÚÍÅÎÅÎÏ"
 
-#: signame.c:204
+#: signame.c:205
 msgid "Continued"
 msgstr "÷ÏÚÏÂÎÏ×ÌÅÎÉÅ"
 
-#: signame.c:207
+#: signame.c:208
 msgid "Urgent I/O condition"
-msgstr "õÓÌÏ×ÉÑ ÜËÓÔÒÅÎÎÏÇÏ ××ÏÄ/×Ù×ÏÄ"
+msgstr "õÓÌÏ×ÉÑ ÜËÓÔÒÅÎÎÏÇÏ ××ÏÄÁ/×Ù×ÏÄÁ"
 
-#: signame.c:214 signame.c:223
+#. "I/O pending" has also been suggested.  A disadvantage is
+#. that signal only happens when the process has
+#. asked for it, not everytime I/O is pending.  Another disadvantage
+#. is the confusion from giving it a different name than under Unix.
+#: signame.c:215 signame.c:224
 msgid "I/O possible"
 msgstr "÷ÏÚÍÏÖÅΠ××ÏÄ/×Ù×ÏÄ"
 
-#~ #: signame.c:217
-#~ msgid "SIGWIND"
-#~ msgstr ""
+#: signame.c:218
+msgid "SIGWIND"
+msgstr ""
 
-#~ #: signame.c:220
-#~ msgid "SIGPHONE"
-#~ msgstr ""
+#: signame.c:221
+msgid "SIGPHONE"
+msgstr ""
 
-#: signame.c:226
+#: signame.c:227
 msgid "Resource lost"
 msgstr "òÅÓÕÒÓ ÐÏÔÅÒÑÎ"
 
-#: signame.c:229
+#: signame.c:230
 msgid "Danger signal"
 msgstr "óÉÇÎÁÌ ÏÐÁÓÎÏÓÔÉ"
 
-#: signame.c:232
+#: signame.c:233
 msgid "Information request"
 msgstr "úÁÐÒÏÓ ÉÎÆÏÒÍÁÃÉÉ"
 
-#: signame.c:286
-#, possible-c-format
-msgid "%s: unknown signal"
-msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÇÎÁÌ"
+#: signame.c:236
+msgid "Floating point co-processor not available"
+msgstr "óÏÐÒÏÃÅÓÓÏÒ Ó ÐÌÁ×ÁÀÝÅÊ ÔÏÞËÏÊ ÎÅÄÏÓÔÕÐÅÎ"
+
+#: variable.c:1079
+msgid "default"
+msgstr "ÐÏ ÕÍÏÌÞÁÎÉÀ"
+
+#: variable.c:1082
+msgid "environment"
+msgstr "ÏÐÒÅÄÅÌÅÎÁ × ÓÒÅÄÅ"
+
+#: variable.c:1085
+msgid "makefile"
+msgstr "Make-ÆÁÊÌ"
+
+#: variable.c:1088
+msgid "environment under -e"
+msgstr "ÚÁÄÁΠËÌÀÞ -e"
+
+#: variable.c:1091
+msgid "command line"
+msgstr "ÏÐÒÅÄÅÌÅÎÁ × ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÅ"
+
+#: variable.c:1094
+msgid "`override' directive"
+msgstr "äÉÒÅËÔÉ×Á `override'"
+
+#: variable.c:1097
+msgid "automatic"
+msgstr "Á×ÔÏÍÁÔÉÞÅÓËÁÑ"
+
+#: variable.c:1167
+msgid "# No variables."
+msgstr "# ðÅÒÅÍÅÎÎÙÈ ÎÅÔ."
+
+#: variable.c:1170
+#, c-format
+msgid "# %u variables in %u hash buckets.\n"
+msgstr "# %u ÐÅÒÅÍÅÎÎÙÈ × %u ÑÞÅÊËÁÈ ÈÅÛ-ÔÁÂÌÉÃÙ.\n"
+
+#: variable.c:1173
+#, c-format
+msgid "# average of %.1f variables per bucket, max %u in one bucket.\n"
+msgstr "# × ÓÒÅÄÎÅÍ %.1f ÐÅÒÅÍÅÎÎÙÈ × ÑÞÅÊËÅ, ÍÁËÓ. %u × ÏÄÎÏÊ ÑÞÅÊËÅ.\n"
+
+#: variable.c:1180
+#, c-format
+msgid "# average of %d.%d variables per bucket, max %u in one bucket.\n"
+msgstr "# × ÓÒÅÄÎÅÍ %d.%d ÐÅÒÅÍÅÎÎÙÈ × ÑÞÅÊËÅ, ÍÁËÓ. %u × ÏÄÎÏÊ ÑÞÅÊËÅ.\n"
+
+#: variable.c:1195
+msgid "\n# Variables\n"
+msgstr "\n# ðÅÒÅÍÅÎÎÙÅ\n"
+
+#: vpath.c:552
+msgid "\n# VPATH Search Paths\n"
+msgstr "\n# ðÕÔÉ ÐÏÉÓËÁ VPATH\n"
+
+#: vpath.c:569
+msgid "# No `vpath' search paths."
+msgstr "# îÅ ÏÐÒÅÄÅÌÅΠÐÕÔØ ÐÏÉÓËÁ `vpath'."
+
+#: vpath.c:571
+#, c-format
+msgid "\n# %u `vpath' search paths.\n"
+msgstr "\n# %u ÐÕÔÅÊ ÐÏÉÓËÁ ÐÏ `vpath'\n"
+
+#: vpath.c:574
+msgid "\n# No general (`VPATH' variable) search path."
+msgstr "\n# îÅ ÏÐÒÅÄÅÌÅΠÏÂÝÉÊ (ÐÅÒÅÍÅÎÎÁÑ `VPATH') ÐÕÔØ ÐÏÉÓËÁ."
+
+#: vpath.c:580
+msgid ""
+"\n"
+"# General (`VPATH' variable) search path:\n"
+"# "
+msgstr ""
+"\n"
+"# ïÂÝÉÊ (ÐÅÒÅÍÅÎÎÁÑ `VPATH') ÐÕÔØ ÐÏÉÓËÁ:\n"
+"# "
+
+#: remote-cstms.c:127
+#, c-format
+msgid "Customs won't export: %s\n"
+msgstr ""
+
+#: vmsfunctions.c:80
+#, c-format
+msgid "sys$search failed with %d\n"
+msgstr "sys$search ×ÅÒÎÕÌÁ ËÏÄ ÏÛÉÂËÉ %d\n"
+
+#~ msgid "%s: Timestamp out of range; substituting %s"
+#~ msgstr "%s: ÷ÒÅÍÅÎÎÏÊ ÛÔÁÍР×ÙÈÏÄÉÔ ÚÁ ÐÒÅÄÅÌÙ ÄÉÁÐÁÚÏÎÁ; ÐÏÄÓÔÁ×ÌÑÅÍ %s"
+
+#~ msgid "Current time"
+#~ msgstr "ôÅËÕÝÅÅ ×ÒÅÍÑ"
+
+#~ msgid "#  File is very old."
+#~ msgstr "# æÁÊÌ ÏÞÅÎØ ÓÔÁÒÙÊ."
+
+#~ msgid "first argument to `word' function must be greater than 0"
+#~ msgstr "ÐÅÒ×ÙÊ ÁÒÇÕÍÅÎÔ ÆÕÎËÃÉÉ `word' ÄÏÌÖÅΠÂÙÔØ ÂÏÌØÛÅ ÎÕÌÑ"
 
-#: signame.c:299
-msgid "Signal 12345678901234567890"
-msgstr "óÉÇÎÁÌ 12345678901234567890"
+#~ msgid "Entering an unknown directory"
+#~ msgstr "÷ÈÏÄ × ÎÅÉÚ×ÅÓÔÎÙÊ ËÁÔÁÌÏÇ"
 
-#: signame.c:304
-#, possible-c-format
-msgid "Signal %d"
-msgstr "óÉÇÎÁÌ %d"
+#~ msgid "Entering directory `%s'\n"
+#~ msgstr "÷ÈÏÄ × ËÁÔÁÌÏÇ `%s'\n"
diff --git a/job.c b/job.c
index 033429068a91d1952303e1a66932d133c0a52063..83ffc33f3956e849042f8b8abca75366b19bd097 100644 (file)
--- a/job.c
+++ b/job.c
@@ -436,8 +436,8 @@ reap_children (block, err)
 
      we'll keep reaping children.  */
 
-  while ((children != 0 || shell_function_pid != 0) &&
-        (block || REAP_MORE))
+  while ((children != 0 || shell_function_pid != 0)
+         && (block || REAP_MORE))
     {
       int remote = 0;
       register int pid;
@@ -500,9 +500,6 @@ reap_children (block, err)
        {
           /* A remote status command failed miserably.  Punt.  */
        remote_status_lose:
-         if (EINTR_SET)
-           continue;
-
          pfatal_with_name ("remote_status");
        }
       else
@@ -511,7 +508,6 @@ reap_children (block, err)
 #if !defined(__MSDOS__) && !defined(_AMIGA) && !defined(WINDOWS32)
          if (any_local)
            {
-            local_wait:
 #ifdef VMS
              vmsWaitForChildren (&status);
              pid = c->pid;
@@ -529,10 +525,6 @@ reap_children (block, err)
 
          if (pid < 0)
            {
-              /* EINTR?  Try again. */
-             if (EINTR_SET)
-               goto local_wait;
-
               /* The wait*() failed miserably.  Punt.  */
              pfatal_with_name ("wait");
            }
@@ -737,7 +729,7 @@ reap_children (block, err)
            update_status to its also_make files.  */
         notice_finished_file (c->file);
 
-      DB (DB_JOBS, (_("Removing child 0x%08lx PID %ld %s from chain.\n"),
+      DB (DB_JOBS, (_("Removing child 0x%08lx PID %ld%s from chain.\n"),
                     (unsigned long int) c, (long) c->pid,
                     c->remote ? _(" (remote)") : ""));
 
@@ -792,9 +784,8 @@ free_child (child)
 
       /* Write a job token back to the pipe.  */
 
-      while (write (job_fds[1], &token, 1) != 1)
-        if (!EINTR_SET)
-          pfatal_with_name (_("write jobserver"));
+      if (write (job_fds[1], &token, 1) != 1)
+       pfatal_with_name (_("write jobserver"));
 
       DB (DB_JOBS, (_("Released token for child 0x%08lx (%s).\n"),
                     (unsigned long int) child, child->file->name));
@@ -848,6 +839,26 @@ unblock_sigs ()
 }
 #endif
 
+#ifdef MAKE_JOBSERVER
+/* Set the child handler action flags to FLAGS.  */
+static void
+set_child_handler_action_flags (flags)
+     int flags;
+{
+  struct sigaction sa;
+  bzero ((char *) &sa, sizeof sa);
+  sa.sa_handler = child_handler;
+  sa.sa_flags = flags;
+#if defined SIGCHLD
+  sigaction (SIGCHLD, &sa, NULL);
+#endif
+#if defined SIGCLD && SIGCLD != SIGCHLD
+  sigaction (SIGCLD, &sa, NULL);
+#endif
+}
+#endif
+
+
 /* Start a job to run the commands specified in CHILD.
    CHILD is updated to reflect the commands and ID of the child process.
 
@@ -1489,34 +1500,73 @@ new_job (file)
     while (1)
       {
         char token;
+       int got_token;
+       int saved_errno;
+
+        DB (DB_JOBS, ("Need a job token; we %shave children\n",
+                      children ? "" : "don't "));
 
         /* If we don't already have a job started, use our "free" token.  */
         if (!children)
           break;
 
         /* Read a token.  As long as there's no token available we'll block.
-           If we get a SIGCHLD we'll return with EINTR.  If one happened
-           before we got here we'll return immediately with EBADF because
-           the signal handler closes the dup'd file descriptor.  */
+           We enable interruptible system calls before the read(2) so that if
+           we get a SIGCHLD while we're waiting, we'll return with EINTR and
+           we can process the death(s) and return tokens to the free pool.
+
+           Once we return from the read, we immediately reinstate restartable
+           system calls.  This allows us to not worry about checking for
+           EINTR on all the other system calls in the program.
+
+           There is one other twist: there is a span between the time
+           reap_children() does its last check for dead children and the time
+           the read(2) call is entered, below, where if a child dies we won't
+           notice.  This is extremely serious as it could cause us to
+           deadlock, given the right set of events.
+
+           To avoid this, we do the following: before we reap_children(), we
+           dup(2) the read FD on the jobserver pipe.  The read(2) call below
+           uses that new FD.  In the signal handler, we close that FD.  That
+           way, if a child dies during the section mentioned above, the
+           read(2) will be invoked with an invalid FD and will return
+           immediately with EBADF.  */
+
+        /* Make sure we have a dup'd FD.  */
+        if (job_rfd < 0)
+          {
+            DB (DB_JOBS, ("Duplicate the job FD\n"));
+            job_rfd = dup (job_fds[0]);
+          }
 
-        if (read (job_rfd, &token, 1) == 1)
+        /* Reap anything that's currently waiting.  */
+        reap_children (0, 0);
+
+        /* If our "free" token has become available, use it.  */
+        if (!children)
+          break;
+
+        /* Set interruptible system calls, and read() for a job token.  */
+       set_child_handler_action_flags (0);
+       got_token = read (job_rfd, &token, 1);
+       saved_errno = errno;
+       set_child_handler_action_flags (SA_RESTART);
+
+        /* If we got one, we're done here.  */
+       if (got_token == 1)
           {
             DB (DB_JOBS, (_("Obtained token for child 0x%08lx (%s).\n"),
                           (unsigned long int) c, c->file->name));
             break;
           }
 
+        /* If the error _wasn't_ expected (EINTR or EBADF), punt.  Otherwise,
+           go back and reap_children(), and try again.  */
+       errno = saved_errno;
         if (errno != EINTR && errno != EBADF)
           pfatal_with_name (_("read jobs pipe"));
-
-        /* Re-dup the read side of the pipe, so the signal handler can
-           notify us if we miss a child.  */
-        if (job_rfd < 0)
-          job_rfd = dup (job_fds[0]);
-
-        /* Something's done.  We don't want to block for a whole child,
-           just reap whatever's there.  */
-        reap_children (0, 0);
+        if (errno == EBADF)
+          DB (DB_JOBS, ("Read returned EBADF.\n"));
       }
 #endif
 
diff --git a/main.c b/main.c
index 66369a41d81ebc2abd15cb48c5557b077247b51e..6a7e09d0cbe37d26351beea4972add41f06a1691 100644 (file)
--- a/main.c
+++ b/main.c
@@ -448,6 +448,27 @@ int fatal_signal_mask;
 #endif
 #endif
 
+#if !defined HAVE_BSD_SIGNAL && !defined bsd_signal
+# if !defined HAVE_SIGACTION
+#  define bsd_signal signal
+# else
+static RETSIGTYPE
+(*bsd_signal) PARAMS ((int)) (sig, func)
+     int sig;
+     RETSIGTYPE (*func) PARAMS ((int));
+{
+  struct sigaction act, oact;
+  act.sa_handler = func;
+  act.sa_flags = SA_RESTART;
+  sigemptyset (&act.sa_mask);
+  sigaddset (&act.sa_mask, sig);
+  if (sigaction (sig, &act, &oact) != 0)
+    return SIG_ERR;
+  return oact.sa_handler;
+}
+# endif
+#endif
+
 static struct file *
 enter_command_line_file (name)
      char *name;
@@ -839,8 +860,8 @@ int main (int argc, char ** argv)
 #endif
 
 #define        FATAL_SIG(sig)                                                        \
-  if (signal ((sig), fatal_error_signal) == SIG_IGN)                         \
-    (void) signal ((sig), SIG_IGN);                                          \
+  if (bsd_signal (sig, fatal_error_signal) == SIG_IGN)                       \
+    bsd_signal (sig, SIG_IGN);                                               \
   else                                                                       \
     ADD_SIG (sig);
 
@@ -879,10 +900,10 @@ int main (int argc, char ** argv)
 
 #ifdef HAVE_WAIT_NOHANG
 # if defined SIGCHLD
-  (void) signal (SIGCHLD, SIG_DFL);
+  (void) bsd_signal (SIGCHLD, SIG_DFL);
 # endif
 # if defined SIGCLD && SIGCLD != SIGCHLD
-  (void) signal (SIGCLD, SIG_DFL);
+  (void) bsd_signal (SIGCLD, SIG_DFL);
 # endif
 #endif
 
@@ -1345,34 +1366,18 @@ int main (int argc, char ** argv)
      If none of these are true, we don't need a signal handler at all.  */
   {
     extern RETSIGTYPE child_handler PARAMS ((int sig));
-
-# if defined HAVE_SIGACTION
-    struct sigaction sa;
-
-    bzero ((char *)&sa, sizeof (struct sigaction));
-    sa.sa_handler = child_handler;
-#  if defined SA_INTERRUPT
-    /* This is supposed to be the default, but what the heck... */
-    sa.sa_flags = SA_INTERRUPT;
-#  endif
-#  define HANDLESIG(s) sigaction (s, &sa, NULL)
-# else
-#  define HANDLESIG(s) signal (s, child_handler)
-# endif
-
-    /* OK, now actually install the handlers.  */
 # if defined SIGCHLD
-    (void) HANDLESIG (SIGCHLD);
+    bsd_signal (SIGCHLD, child_handler);
 # endif
 # if defined SIGCLD && SIGCLD != SIGCHLD
-    (void) HANDLESIG (SIGCLD);
+    bsd_signal (SIGCLD, child_handler);
 # endif
   }
 #endif
 
   /* Let the user send us SIGUSR1 to toggle the -d flag during the run.  */
 #ifdef SIGUSR1
-  (void) signal (SIGUSR1, debug_signal_handler);
+  bsd_signal (SIGUSR1, debug_signal_handler);
 #endif
 
   /* Define the initial list of suffixes for old-style rules.  */
@@ -1527,9 +1532,8 @@ int main (int argc, char ** argv)
          want job_slots to be 0 to indicate we're using the jobserver.  */
 
       while (--job_slots)
-        while (write (job_fds[1], &c, 1) != 1)
-          if (!EINTR_SET)
-            pfatal_with_name (_("init jobserver pipe"));
+        if (write (job_fds[1], &c, 1) != 1)
+         pfatal_with_name (_("init jobserver pipe"));
 
       /* Fill in the jobserver_fds struct for our children.  */
 
diff --git a/make.h b/make.h
index bc4c1d43a0cc76c5142e28f7664f4b119dd9da78..6ce11d14e9a01bf4a7cae33a80123ac439fcb45a 100644 (file)
--- a/make.h
+++ b/make.h
@@ -111,14 +111,6 @@ Boston, MA 02111-1307, USA.  */
 extern int errno;
 #endif
 
-/* A shortcut for EINTR checking.  Note you should be careful when negating
-   this!  That might not mean what you want if EINTR is not available.  */
-#ifdef EINTR
-# define EINTR_SET (errno == EINTR)
-#else
-# define EINTR_SET (0)
-#endif
-
 #ifndef isblank
 # define isblank(c)     ((c) == ' ' || (c) == '\t')
 #endif
@@ -149,6 +141,10 @@ extern int errno;
 # define sigmask(sig)   (1 << ((sig) - 1))
 #endif
 
+#ifndef HAVE_SA_RESTART
+# define SA_RESTART 0
+#endif
+
 #ifdef  HAVE_LIMITS_H
 # include <limits.h>
 #endif
index 98a69856b4d2ee936f2c5ea6b6ae9797e126a846..1a4b02901b8c9a76dc9d0f10abca2a3c7b57739f 100644 (file)
@@ -2223,7 +2223,7 @@ SUBDIRS = foo bar baz
 subdirs: $(SUBDIRS)
 
 $(SUBDIRS):
-        $(MAKE) -C $@
+        $(MAKE) -C $@@
 
 foo: baz
 @end group
diff --git a/read.c b/read.c
index ecb5cb4cfcc16f9ca4bea7ed2d245ca1723c97e5..6b66a8132d778f58f1be11dc4ca727c44d29aa52 100644 (file)
--- a/read.c
+++ b/read.c
@@ -1490,8 +1490,11 @@ record_target_var (filenames, defn, two_colon, origin, flocp)
           current_variable_set_list = global;
           gv = lookup_variable (v->name, len);
           if (gv && (gv->origin == o_env_override || gv->origin == o_command))
-            define_variable_in_set (v->name, len, gv->value, gv->origin,
-                                    gv->recursive, vlist->set, flocp);
+            {
+              v = define_variable_in_set (v->name, len, gv->value, gv->origin,
+                                          gv->recursive, vlist->set, flocp);
+              v->append = 0;
+            }
         }
 
       /* Free name if not needed further.  */
index 06e8d3165cff71b737e9d1f84fa5e97715c48d5b..029cd9122f638d7bbdd3f1f8c26caf445d95a99f 100644 (file)
--- a/remake.c
+++ b/remake.c
@@ -933,13 +933,8 @@ touch_file (file)
        {
          struct stat statbuf;
          char buf;
-         int status;
 
-         do
-           status = fstat (fd, &statbuf);
-         while (status < 0 && EINTR_SET);
-
-         if (status < 0)
+         if (fstat (fd, &statbuf) < 0)
            TOUCH_ERROR ("touch: fstat: ");
          /* Rewrite character 0 same as it already is.  */
          if (read (fd, &buf, 1) < 0)
@@ -1239,13 +1234,12 @@ name_mtime (name)
 {
   struct stat st;
 
-  while (stat (name, &st) != 0)
-    if (!EINTR_SET)
-      {
-        if (errno != ENOENT && errno != ENOTDIR)
-          perror_with_name ("stat:", name);
-        return NONEXISTENT_MTIME;
-      }
+  if (stat (name, &st) != 0)
+    {
+      if (errno != ENOENT && errno != ENOTDIR)
+        perror_with_name ("stat:", name);
+      return NONEXISTENT_MTIME;
+    }
 
   return FILE_TIMESTAMP_STAT_MODTIME (name, st);
 }
index f28e83cdd4802297d01a17011e69d3e341a4f27c..aec6edaa3477ceeea776660845fe1cf98e96a077 100644 (file)
@@ -207,6 +207,7 @@ lookup_variable (name, length)
                 sptr++;
               }
 
+            *nptr = '\0';
             return define_variable (vname, length, nvalue, o_env, 1);
 
           }