summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJinWang An <jinwang.an@samsung.com>2021-12-28 15:15:18 +0900
committerJinWang An <jinwang.an@samsung.com>2021-12-28 15:15:18 +0900
commitb11e2699c7ec42e6d2fc0f4c940f14e7c89b3974 (patch)
tree14002517ee70130303762f511b4d1b50251267ca
parent0a1cba99f5ce73ae0cacdbf9ab1186137efd77f7 (diff)
downloadmake-b11e2699c7ec42e6d2fc0f4c940f14e7c89b3974.tar.gz
make-b11e2699c7ec42e6d2fc0f4c940f14e7c89b3974.tar.bz2
make-b11e2699c7ec42e6d2fc0f4c940f14e7c89b3974.zip
Imported Upstream version 4.3upstream/4.3
-rw-r--r--AUTHORS4
-rw-r--r--Basic.mk246
-rw-r--r--ChangeLog1547
-rw-r--r--INSTALL231
-rw-r--r--Makefile.DOS819
-rw-r--r--Makefile.am197
-rw-r--r--Makefile.ami308
-rw-r--r--Makefile.in1256
-rw-r--r--NEWS121
-rw-r--r--NMakefile364
-rw-r--r--README56
-rw-r--r--README.Amiga19
-rw-r--r--README.DOS82
-rw-r--r--README.OS22
-rw-r--r--README.W32145
-rw-r--r--README.customs2
-rw-r--r--SCOPTIONS2
-rw-r--r--SMakefile450
-rw-r--r--aclocal.m4322
-rwxr-xr-xbuild-aux/compile (renamed from config/compile)13
-rwxr-xr-x[-rw-r--r--]build-aux/config.guess (renamed from config/config.guess)875
-rwxr-xr-xbuild-aux/config.rpath (renamed from config/config.rpath)0
-rwxr-xr-xbuild-aux/config.sub1793
-rwxr-xr-xbuild-aux/depcomp (renamed from config/depcomp)10
-rwxr-xr-xbuild-aux/install-sh (renamed from config/install-sh)49
-rwxr-xr-xbuild-aux/mdate-sh (renamed from config/mdate-sh)14
-rwxr-xr-xbuild-aux/missing (renamed from config/missing)16
-rw-r--r--build-aux/texinfo.tex (renamed from config/texinfo.tex)2412
-rw-r--r--build.cfg.in (renamed from glob/Makefile.am)32
-rwxr-xr-xbuild.sh149
-rwxr-xr-xbuild.sh.in81
-rwxr-xr-xbuild_w32.bat348
-rw-r--r--builddos.bat95
-rw-r--r--config.h.in506
-rw-r--r--config/Makefile.am18
-rw-r--r--config/Makefile.in469
-rwxr-xr-xconfig/ar-lib270
-rw-r--r--config/config.sub1815
-rwxr-xr-xconfigure9050
-rw-r--r--configure.ac183
-rw-r--r--configure.bat60
-rw-r--r--doc/Makefile.am2
-rw-r--r--doc/Makefile.in566
-rw-r--r--doc/fdl.texi4
-rw-r--r--doc/make.1 (renamed from make.1)22
-rw-r--r--doc/make.info348
-rw-r--r--doc/make.info-1727
-rw-r--r--doc/make.info-2667
-rw-r--r--doc/make.texi532
-rw-r--r--doc/stamp-vti8
-rw-r--r--doc/version.texi8
-rw-r--r--dosbuild.bat65
-rw-r--r--glob/COPYING.LIB481
-rw-r--r--glob/ChangeLog191
-rw-r--r--glob/Makefile.ami67
-rw-r--r--glob/Makefile.in604
-rw-r--r--glob/SCOPTIONS13
-rw-r--r--glob/SMakefile67
-rw-r--r--glob/configure.bat43
-rw-r--r--job.h159
-rw-r--r--lib/Makefile.am1169
-rw-r--r--lib/Makefile.in2118
-rw-r--r--lib/_Noreturn.h40
-rw-r--r--lib/access.c31
-rw-r--r--lib/alloca.c (renamed from alloca.c)337
-rw-r--r--lib/alloca.in.h71
-rw-r--r--lib/arg-nonnull.h26
-rw-r--r--lib/basename-lgpl.c75
-rw-r--r--lib/c++defs.h316
-rw-r--r--lib/close.c71
-rw-r--r--lib/concat-filename.c73
-rw-r--r--lib/concat-filename.h41
-rw-r--r--lib/dirname-lgpl.c86
-rw-r--r--lib/dirname.h54
-rw-r--r--lib/dosname.h52
-rw-r--r--lib/dup2.c235
-rw-r--r--lib/errno.in.h279
-rw-r--r--lib/error.c411
-rw-r--r--lib/error.h75
-rw-r--r--lib/exitfail.c24
-rw-r--r--lib/exitfail.h18
-rw-r--r--lib/fcntl.c627
-rw-r--r--lib/fcntl.in.h392
-rw-r--r--lib/fd-hook.c116
-rw-r--r--lib/fd-hook.h119
-rw-r--r--lib/filename.h54
-rw-r--r--lib/findprog-in.c251
-rw-r--r--lib/findprog.h71
-rw-r--r--lib/fnmatch.c (renamed from glob/fnmatch.c)0
-rw-r--r--lib/fnmatch.in.h (renamed from glob/fnmatch.h)0
-rw-r--r--lib/getdtablesize.c124
-rw-r--r--lib/getloadavg.c (renamed from getloadavg.c)697
-rw-r--r--lib/getprogname.c260
-rw-r--r--lib/getprogname.h40
-rw-r--r--lib/gettext.h301
-rw-r--r--lib/glob.c (renamed from glob/glob.c)29
-rw-r--r--lib/glob.in.h (renamed from glob/glob.h)0
-rw-r--r--lib/intprops.h584
-rw-r--r--lib/limits.in.h104
-rw-r--r--lib/malloc.c56
-rw-r--r--lib/msvc-inval.c129
-rw-r--r--lib/msvc-inval.h222
-rw-r--r--lib/msvc-nothrow.c51
-rw-r--r--lib/msvc-nothrow.h43
-rw-r--r--lib/stdbool.in.h132
-rw-r--r--lib/stddef.in.h121
-rw-r--r--lib/stdint.in.h746
-rw-r--r--lib/stdio.in.h1444
-rw-r--r--lib/stdlib.in.h1112
-rw-r--r--lib/stpcpy.c49
-rw-r--r--lib/strerror-override.c302
-rw-r--r--lib/strerror-override.h56
-rw-r--r--lib/strerror.c71
-rw-r--r--lib/string.in.h1067
-rw-r--r--lib/stripslash.c45
-rw-r--r--lib/sys_types.in.h106
-rw-r--r--lib/unistd.c4
-rw-r--r--lib/unistd.in.h1719
-rw-r--r--lib/verify.h301
-rw-r--r--lib/warn-on-use.h131
-rw-r--r--lib/xalloc-die.c41
-rw-r--r--lib/xalloc-oversized.h60
-rw-r--r--lib/xalloc.h262
-rw-r--r--lib/xconcat-filename.c41
-rw-r--r--lib/xmalloc.c122
-rw-r--r--m4/00gnulib.m446
-rw-r--r--m4/absolute-header.m4102
-rw-r--r--m4/access.m416
-rw-r--r--m4/acinclude.m4 (renamed from acinclude.m4)2
-rw-r--r--m4/alloca.m4128
-rw-r--r--m4/asm-underscore.m472
-rw-r--r--m4/close.m435
-rw-r--r--m4/dirname.m419
-rw-r--r--m4/dospaths.m4 (renamed from config/dospaths.m4)2
-rw-r--r--m4/double-slash-root.m438
-rw-r--r--m4/dup2.m4117
-rw-r--r--m4/eaccess.m412
-rw-r--r--m4/errno_h.m4133
-rw-r--r--m4/error.m427
-rw-r--r--m4/extensions.m4189
-rw-r--r--m4/extern-inline.m4114
-rw-r--r--m4/fcntl-o.m4139
-rw-r--r--m4/fcntl.m4126
-rw-r--r--m4/fcntl_h.m452
-rw-r--r--m4/findprog-in.m411
-rw-r--r--m4/getdtablesize.m460
-rw-r--r--m4/getloadavg.m4159
-rw-r--r--m4/getprogname.m443
-rw-r--r--m4/gettext.m4 (renamed from config/gettext.m4)0
-rw-r--r--m4/gnulib-cache.m469
-rw-r--r--m4/gnulib-common.m4459
-rw-r--r--m4/gnulib-comp.m4481
-rw-r--r--m4/host-cpu-c-abi.m4675
-rw-r--r--m4/iconv.m4 (renamed from config/iconv.m4)0
-rw-r--r--m4/include_next.m4224
-rw-r--r--m4/intlmacosx.m4 (renamed from config/intlmacosx.m4)0
-rw-r--r--m4/lib-ld.m4 (renamed from config/lib-ld.m4)0
-rw-r--r--m4/lib-link.m4 (renamed from config/lib-link.m4)0
-rw-r--r--m4/lib-prefix.m4 (renamed from config/lib-prefix.m4)0
-rw-r--r--m4/limits-h.m443
-rw-r--r--m4/longlong.m4 (renamed from config/longlong.m4)0
-rw-r--r--m4/malloc.m4104
-rw-r--r--m4/msvc-inval.m419
-rw-r--r--m4/msvc-nothrow.m410
-rw-r--r--m4/multiarch.m462
-rw-r--r--m4/nls.m4 (renamed from config/nls.m4)0
-rw-r--r--m4/off_t.m418
-rw-r--r--m4/po.m4 (renamed from config/po.m4)0
-rw-r--r--m4/progtest.m4 (renamed from config/progtest.m4)0
-rw-r--r--m4/ssize_t.m423
-rw-r--r--m4/stdbool.m4122
-rw-r--r--m4/stddef_h.m472
-rw-r--r--m4/stdint.m4535
-rw-r--r--m4/stdio_h.m4225
-rw-r--r--m4/stdlib_h.m4136
-rw-r--r--m4/stpcpy.m425
-rw-r--r--m4/strerror.m4102
-rw-r--r--m4/string_h.m4122
-rw-r--r--m4/sys_socket_h.m4188
-rw-r--r--m4/sys_types_h.m460
-rw-r--r--m4/unistd_h.m4201
-rw-r--r--m4/warn-on-use.m451
-rw-r--r--m4/wchar_t.m424
-rw-r--r--m4/wint_t.m474
-rw-r--r--m4/xalloc.m47
-rw-r--r--make.lnk5
-rw-r--r--make_msvc_net2003.sln21
-rw-r--r--make_msvc_net2003.vcproj340
-rw-r--r--makefile.com25
-rw-r--r--makefile.vms180
-rw-r--r--mk/Amiga.mk45
-rw-r--r--mk/VMS.mk97
-rw-r--r--mk/Windows32.mk122
-rw-r--r--mk/msdosdjgpp.mk43
-rw-r--r--po/LINGUAS34
-rw-r--r--po/Makevars68
-rw-r--r--po/POTFILES.in62
-rw-r--r--po/be.gmobin6786 -> 6580 bytes
-rw-r--r--po/be.po1026
-rw-r--r--po/bg.gmobin0 -> 59330 bytes
-rw-r--r--po/bg.po2293
-rw-r--r--po/cs.gmobin45392 -> 45689 bytes
-rw-r--r--po/cs.po1066
-rw-r--r--po/da.gmobin23665 -> 41220 bytes
-rw-r--r--po/da.po1750
-rw-r--r--po/de.gmobin46290 -> 45198 bytes
-rw-r--r--po/de.po1071
-rw-r--r--po/es.gmobin45475 -> 45980 bytes
-rw-r--r--po/es.po1099
-rw-r--r--po/fi.gmobin33027 -> 31939 bytes
-rw-r--r--po/fi.po1047
-rw-r--r--po/fr.gmobin43874 -> 44911 bytes
-rw-r--r--po/fr.po1911
-rw-r--r--po/ga.gmobin19407 -> 43490 bytes
-rw-r--r--po/ga.po2214
-rw-r--r--po/gl.gmobin22329 -> 21543 bytes
-rw-r--r--po/gl.po1052
-rw-r--r--po/he.gmobin10624 -> 10151 bytes
-rw-r--r--po/he.po1050
-rw-r--r--po/hr.gmobin46853 -> 46070 bytes
-rw-r--r--po/hr.po1839
-rw-r--r--po/id.gmobin41529 -> 40284 bytes
-rw-r--r--po/id.po1051
-rw-r--r--po/it.gmobin43007 -> 45544 bytes
-rw-r--r--po/it.po1469
-rw-r--r--po/ja.gmobin48746 -> 48996 bytes
-rw-r--r--po/ja.po1068
-rw-r--r--po/ko.gmobin46650 -> 46973 bytes
-rw-r--r--po/ko.po1043
-rw-r--r--po/lt.gmobin7219 -> 7037 bytes
-rw-r--r--po/lt.po1024
-rw-r--r--po/make.pot1003
-rw-r--r--po/nl.gmobin44149 -> 44391 bytes
-rw-r--r--po/nl.po1101
-rw-r--r--po/pl.gmobin44256 -> 44530 bytes
-rw-r--r--po/pl.po1041
-rw-r--r--po/pt.gmobin0 -> 43530 bytes
-rw-r--r--po/pt.po2266
-rw-r--r--po/pt_BR.gmobin24369 -> 44043 bytes
-rw-r--r--po/pt_BR.po2135
-rw-r--r--po/ru.gmobin56375 -> 56673 bytes
-rw-r--r--po/ru.po1068
-rw-r--r--po/sr.gmobin0 -> 53185 bytes
-rw-r--r--po/sr.po2274
-rw-r--r--po/sv.gmobin43230 -> 43480 bytes
-rw-r--r--po/sv.po1041
-rw-r--r--po/tr.gmobin19725 -> 18996 bytes
-rw-r--r--po/tr.po1061
-rw-r--r--po/uk.gmobin55678 -> 56014 bytes
-rw-r--r--po/uk.po1073
-rw-r--r--po/vi.gmobin47141 -> 47388 bytes
-rw-r--r--po/vi.po1076
-rw-r--r--po/zh_CN.gmobin41620 -> 42126 bytes
-rw-r--r--po/zh_CN.po1095
-rw-r--r--po/zh_TW.gmobin0 -> 42268 bytes
-rw-r--r--po/zh_TW.po2222
-rw-r--r--src/amiga.c (renamed from amiga.c)2
-rw-r--r--src/amiga.h (renamed from amiga.h)2
-rw-r--r--src/ar.c (renamed from ar.c)6
-rw-r--r--src/arscan.c (renamed from arscan.c)191
-rw-r--r--src/commands.c (renamed from commands.c)43
-rw-r--r--src/commands.h (renamed from commands.h)2
-rw-r--r--src/config.ami (renamed from config.ami)10
-rw-r--r--src/config.h-vms (renamed from config.h-vms)11
-rw-r--r--src/config.h.W32 (renamed from config.h.W32)36
-rw-r--r--src/config.h.in1132
-rw-r--r--src/configh.dos (renamed from configh.dos)11
-rw-r--r--src/debug.h (renamed from debug.h)4
-rw-r--r--src/default.c (renamed from default.c)2
-rw-r--r--src/dep.h (renamed from dep.h)22
-rw-r--r--src/dir.c (renamed from dir.c)50
-rw-r--r--src/expand.c (renamed from expand.c)38
-rw-r--r--src/file.c (renamed from file.c)114
-rw-r--r--src/filedef.h (renamed from filedef.h)10
-rw-r--r--src/function.c (renamed from function.c)193
-rw-r--r--src/getopt.c (renamed from getopt.c)2
-rw-r--r--src/getopt.h (renamed from getopt.h)2
-rw-r--r--src/getopt1.c (renamed from getopt1.c)2
-rw-r--r--src/gettext.h (renamed from gettext.h)2
-rw-r--r--src/gmk-default.h (renamed from gmk-default.h)0
-rw-r--r--src/gmk-default.scm (renamed from gmk-default.scm)2
-rw-r--r--src/gnumake.h (renamed from gnumake.h)2
-rw-r--r--src/guile.c (renamed from guile.c)2
-rw-r--r--src/hash.c (renamed from hash.c)227
-rw-r--r--src/hash.h (renamed from hash.h)40
-rw-r--r--src/implicit.c (renamed from implicit.c)116
-rw-r--r--src/job.c (renamed from job.c)673
-rw-r--r--src/job.h93
-rw-r--r--src/load.c (renamed from load.c)8
-rw-r--r--src/loadapi.c (renamed from loadapi.c)4
-rw-r--r--src/main.c (renamed from main.c)405
-rw-r--r--src/makeint.h (renamed from makeint.h)106
-rw-r--r--src/misc.c (renamed from misc.c)303
-rw-r--r--src/os.h (renamed from os.h)15
-rw-r--r--src/output.c (renamed from output.c)97
-rw-r--r--src/output.h (renamed from output.h)63
-rw-r--r--src/posixos.c (renamed from posixos.c)177
-rw-r--r--src/read.c (renamed from read.c)548
-rw-r--r--src/remake.c (renamed from remake.c)91
-rw-r--r--src/remote-cstms.c (renamed from remote-cstms.c)10
-rw-r--r--src/remote-stub.c (renamed from remote-stub.c)6
-rw-r--r--src/rule.c (renamed from rule.c)116
-rw-r--r--src/rule.h (renamed from rule.h)9
-rw-r--r--src/signame.c (renamed from signame.c)4
-rw-r--r--src/strcache.c (renamed from strcache.c)22
-rw-r--r--src/variable.c (renamed from variable.c)132
-rw-r--r--src/variable.h (renamed from variable.h)31
-rw-r--r--src/version.c (renamed from version.c)2
-rw-r--r--src/vms_exit.c (renamed from vms_exit.c)2
-rw-r--r--src/vms_export_symbol.c (renamed from vms_export_symbol.c)2
-rw-r--r--src/vms_progname.c (renamed from vms_progname.c)2
-rw-r--r--src/vmsdir.h (renamed from vmsdir.h)2
-rw-r--r--src/vmsfunctions.c (renamed from vmsfunctions.c)2
-rw-r--r--src/vmsify.c (renamed from vmsify.c)2
-rw-r--r--src/vmsjobs.c (renamed from vmsjobs.c)45
-rw-r--r--src/vpath.c (renamed from vpath.c)32
-rw-r--r--src/w32/compat/dirent.c (renamed from w32/compat/dirent.c)31
-rw-r--r--src/w32/compat/posixfcn.c (renamed from w32/compat/posixfcn.c)2
-rw-r--r--src/w32/include/dirent.h (renamed from w32/include/dirent.h)53
-rw-r--r--src/w32/include/dlfcn.h (renamed from w32/include/dlfcn.h)2
-rw-r--r--src/w32/include/pathstuff.h (renamed from w32/include/pathstuff.h)2
-rw-r--r--src/w32/include/sub_proc.h (renamed from w32/include/sub_proc.h)8
-rw-r--r--src/w32/include/w32err.h (renamed from w32/include/w32err.h)2
-rw-r--r--src/w32/pathstuff.c (renamed from w32/pathstuff.c)4
-rw-r--r--src/w32/subproc/misc.c (renamed from w32/subproc/misc.c)6
-rw-r--r--src/w32/subproc/proc.h (renamed from w32/subproc/proc.h)4
-rw-r--r--src/w32/subproc/sub_proc.c (renamed from w32/subproc/sub_proc.c)192
-rw-r--r--src/w32/subproc/w32err.c (renamed from w32/subproc/w32err.c)2
-rw-r--r--src/w32/w32os.c (renamed from w32/w32os.c)36
-rw-r--r--tests/COPYING674
-rw-r--r--tests/ChangeLog.11429
-rw-r--r--tests/NEWS178
-rw-r--r--tests/README2
-rw-r--r--tests/config-flags.pm19
-rw-r--r--tests/config-flags.pm.W329
-rw-r--r--tests/config-flags.pm.in21
-rwxr-xr-xtests/config_flags_pm.com5
-rwxr-xr-xtests/mkshadow2
-rw-r--r--tests/run_make_tests.bat (renamed from subproc.bat)45
-rwxr-xr-xtests/run_make_tests.com272
-rw-r--r--tests/run_make_tests.pl533
-rw-r--r--tests/scripts/features/archives46
-rw-r--r--tests/scripts/features/echoing4
-rw-r--r--tests/scripts/features/errors158
-rw-r--r--tests/scripts/features/escape61
-rw-r--r--tests/scripts/features/exec63
-rw-r--r--tests/scripts/features/grouped_targets133
-rw-r--r--tests/scripts/features/include110
-rw-r--r--tests/scripts/features/jobserver30
-rw-r--r--tests/scripts/features/load12
-rw-r--r--tests/scripts/features/loadapi13
-rw-r--r--tests/scripts/features/output-sync35
-rw-r--r--tests/scripts/features/parallelism164
-rw-r--r--tests/scripts/features/patternrules34
-rw-r--r--tests/scripts/features/quoting1
-rw-r--r--tests/scripts/features/recursion26
-rw-r--r--tests/scripts/features/reinvoke8
-rw-r--r--tests/scripts/features/se_explicit36
-rw-r--r--tests/scripts/features/se_implicit64
-rw-r--r--tests/scripts/features/suffixrules99
-rw-r--r--tests/scripts/features/targetvars31
-rw-r--r--tests/scripts/features/vpath24
-rw-r--r--tests/scripts/features/vpathplus9
-rw-r--r--tests/scripts/functions/abspath3
-rw-r--r--tests/scripts/functions/file26
-rw-r--r--tests/scripts/functions/foreach2
-rw-r--r--tests/scripts/functions/guile17
-rw-r--r--tests/scripts/functions/realpath80
-rw-r--r--tests/scripts/functions/shell48
-rw-r--r--tests/scripts/functions/wildcard158
-rw-r--r--tests/scripts/misc/bs-nl11
-rw-r--r--tests/scripts/misc/close_stdout6
-rw-r--r--tests/scripts/misc/general372
-rw-r--r--tests/scripts/misc/general439
-rw-r--r--tests/scripts/options/dash-C35
-rw-r--r--tests/scripts/options/dash-I8
-rw-r--r--tests/scripts/options/dash-k10
-rw-r--r--tests/scripts/options/dash-l18
-rw-r--r--tests/scripts/options/dash-n2
-rw-r--r--tests/scripts/options/dash-s26
-rw-r--r--tests/scripts/options/eval23
-rw-r--r--tests/scripts/options/general25
-rw-r--r--tests/scripts/options/symlinks85
-rw-r--r--tests/scripts/targets/DEFAULT44
-rw-r--r--tests/scripts/targets/FORCE37
-rw-r--r--tests/scripts/targets/INTERMEDIATE4
-rw-r--r--tests/scripts/targets/ONESHELL20
-rw-r--r--tests/scripts/targets/PHONY40
-rw-r--r--tests/scripts/targets/POSIX9
-rw-r--r--tests/scripts/targets/SECONDARY5
-rw-r--r--tests/scripts/targets/SILENT67
-rw-r--r--tests/scripts/targets/clean39
-rw-r--r--tests/scripts/variables/CURDIR14
-rw-r--r--tests/scripts/variables/EXTRA_PREREQS151
-rw-r--r--tests/scripts/variables/MAKEFILES14
-rw-r--r--tests/scripts/variables/MFILE_LIST34
-rw-r--r--tests/scripts/variables/SHELL46
-rw-r--r--tests/scripts/variables/automatic2
-rw-r--r--tests/scripts/variables/flavors60
-rw-r--r--tests/scripts/variables/negative4
-rw-r--r--tests/scripts/vms/library8
-rw-r--r--tests/test_driver.pl1215
-rwxr-xr-xtests/thelp.pl113
-rw-r--r--w32/Makefile.am26
-rw-r--r--w32/Makefile.in727
-rw-r--r--w32/subproc/NMakefile60
406 files changed, 73384 insertions, 35156 deletions
diff --git a/AUTHORS b/AUTHORS
index 9b6212f..dc9127e 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -67,12 +67,14 @@ Other contributors:
David A. Wheeler <dwheeler@dwheeler.com>
David Boyce <dsb@boyski.com>
Frank Heckenbach <f.heckenbach@fh-soft.de>
+ Kaz Kylheku <kaz@kylheku.com>
+ Christof Warlich <cwarlich@gmx.de>
With suggestions/comments/bug reports from a cast of ... well ...
hundreds, anyway :)
-------------------------------------------------------------------------------
-Copyright (C) 1997-2016 Free Software Foundation, Inc.
+Copyright (C) 1997-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/Basic.mk b/Basic.mk
new file mode 100644
index 0000000..3de3d3f
--- /dev/null
+++ b/Basic.mk
@@ -0,0 +1,246 @@
+# Basic GNU -*-Makefile-*- to build GNU make
+#
+# NOTE:
+# If you have no 'make' program at all to process this makefile:
+# * On Windows, run ".\buildw32.bat" to bootstrap one.
+# * On MS-DOS, run ".\builddos.bat" to bootstrap one.
+#
+# Once you have a GNU make program created, you can use it with this makefile
+# to keep it up to date if you make changes, as:
+#
+# make.exe -f Basic.mk
+#
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 3 of the License, or (at your option) any later
+# version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program. If not, see <http://www.gnu.org/licenses/>.
+
+all:
+
+src = src/
+lib = lib/
+
+make_SOURCES = $(src)ar.c $(src)arscan.c $(src)commands.c $(src)default.c $(src)dir.c $(src)expand.c $(src)file.c $(src)function.c $(src)getopt.c $(src)getopt1.c $(src)guile.c $(src)hash.c $(src)implicit.c $(src)job.c $(src)load.c $(src)loadapi.c $(src)main.c $(src)misc.c $(src)output.c $(src)read.c $(src)remake.c $(src)rule.c $(src)signame.c $(src)strcache.c $(src)variable.c $(src)version.c $(src)vpath.c
+glob_SOURCES = $(lib)fnmatch.c $(lib)glob.c
+loadavg_SOURCES = $(lib)getloadavg.c
+alloca_SOURCES = $(lib)alloca.c
+w32_SOURCES = $(src)w32/pathstuff.c $(src)w32/w32os.c $(src)w32/compat/dirent.c $(src)w32/compat/posixfcn.c $(src)w32/subproc/misc.c $(src)w32/subproc/sub_proc.c $(src)w32/subproc/w32err.c
+vms_SOURCES = $(src)vms_exit.c $(src)vms_export_symbol.c $(src)vms_progname.c $(src)vmsfunctions.c $(src)vmsify.c
+amiga_SOURCES = $(src)amiga.c
+
+posix_SOURCES = $(src)posixos.c
+remote_SOURCES = $(src)remote-stub.c
+
+OUTDIR =
+SRCDIR = .
+
+OBJEXT = o
+EXEEXT =
+
+PREFIX = /usr/local
+INCLUDEDIR = $(PREFIX)/include
+LIBDIR = $(PREFIX)/lib
+LOCALEDIR = $(PREFIX)/share
+
+PROG = $(OUTDIR)make$(EXEEXT)
+
+prog_SOURCES = $(make_SOURCES) $(remote_SOURCES)
+
+BUILT_SOURCES =
+
+OBJECTS = $(patsubst %.c,$(OUTDIR)%.$(OBJEXT),$(prog_SOURCES))
+
+OBJDIRS = $(addsuffix .,$(sort $(dir $(OBJECTS))))
+
+# Use the default value of CC
+LD = $(CC)
+
+# Reserved for command-line override
+CPPFLAGS =
+CFLAGS = -g -O2
+LDFLAGS =
+
+extra_CPPFLAGS = -DHAVE_CONFIG_H -I$(OUTDIR)src -I$(SRCDIR)/src -I$(OUTDIR)lib -I$(SRCDIR)/lib \
+ -DLIBDIR=\"$(LIBDIR)\" -DINCLUDEDIR=\"$(INCLUDEDIR)\" -DLOCALEDIR=\"$(LOCALDIR)\"
+extra_CFLAGS =
+extra_LDFLAGS = $(extra_CFLAGS) $(CFLAGS)
+
+C_SOURCE = -c
+OUTPUT_OPTION = -o $@
+LINK_OUTPUT = -o $@
+
+# Command lines
+
+# $(call COMPILE.cmd,<src>,<tgt>)
+COMPILE.cmd = $(CC) $(extra_CFLAGS) $(CFLAGS) $(extra_CPPFLAGS) $(CPPFLAGS) $(TARGET_ARCH) $(OUTPUT_OPTION) $(C_SOURCE) $1
+
+# $(call LINK.cmd,<objectlist>)
+LINK.cmd = $(LD) $(extra_LDFLAGS) $(LDFLAGS) $(TARGET_ARCH) $1 $(LDLIBS) $(LINK_OUTPUT)
+
+# $(CHECK.cmd)
+CHECK.cmd = cd $(SRCDIR)/tests && ./run_make_tests -make $(shell cd $(<D) && pwd)/$(<F)
+
+# $(call MKDIR.cmd,<dirlist>)
+MKDIR.cmd = mkdir -p $1
+
+# $(call RM.cmd,<filelist>)
+RM.cmd = rm -f $1
+
+# $(call CP.cmd,<from>,<to>)
+CP.cmd = cp $1 $2
+
+CLEANSPACE = $(call RM.cmd,$(OBJECTS) $(PROG) $(BUILT_SOURCES))
+
+# Load overrides for the above variables.
+include $(firstword $(wildcard $(SRCDIR)/mk/$(lastword $(subst -, ,$(MAKE_HOST)).mk) $(OUTDIR)mk/Posix.mk $(SRCDIR)/mk/Posix.mk))
+
+VERSION = 4.3
+
+VPATH = $(SRCDIR)
+
+all: $(PROG)
+
+$(PROG): $(OBJECTS)
+ $(call LINK.cmd,$^)
+
+$(OBJECTS): $(OUTDIR)%.$(OBJEXT): %.c
+ $(call COMPILE.cmd,$<)
+
+$(OBJECTS): | $(OBJDIRS) $(BUILT_SOURCES)
+
+$(OBJDIRS):
+ $(call MKDIR.cmd,$@)
+
+check:
+ $(CHECK.cmd)
+
+clean:
+ $(CLEANSPACE)
+
+$(filter %.h,$(BUILT_SOURCES)): %.h : %.in.h
+ $(call RM.cmd,$@)
+ $(call CP.cmd,$<,$@)
+
+.PHONY: all check clean
+
+# --------------- DEPENDENCIES
+#
+
+# src/.deps/amiga.Po
+# dummy
+
+# src/.deps/ar.Po
+# dummy
+
+# src/.deps/arscan.Po
+# dummy
+
+# src/.deps/commands.Po
+# dummy
+
+# src/.deps/default.Po
+# dummy
+
+# src/.deps/dir.Po
+# dummy
+
+# src/.deps/expand.Po
+# dummy
+
+# src/.deps/file.Po
+# dummy
+
+# src/.deps/function.Po
+# dummy
+
+# src/.deps/getopt.Po
+# dummy
+
+# src/.deps/getopt1.Po
+# dummy
+
+# src/.deps/guile.Po
+# dummy
+
+# src/.deps/hash.Po
+# dummy
+
+# src/.deps/implicit.Po
+# dummy
+
+# src/.deps/job.Po
+# dummy
+
+# src/.deps/load.Po
+# dummy
+
+# src/.deps/loadapi.Po
+# dummy
+
+# src/.deps/main.Po
+# dummy
+
+# src/.deps/misc.Po
+# dummy
+
+# src/.deps/output.Po
+# dummy
+
+# src/.deps/posixos.Po
+# dummy
+
+# src/.deps/read.Po
+# dummy
+
+# src/.deps/remake.Po
+# dummy
+
+# src/.deps/remote-cstms.Po
+# dummy
+
+# src/.deps/remote-stub.Po
+# dummy
+
+# src/.deps/rule.Po
+# dummy
+
+# src/.deps/signame.Po
+# dummy
+
+# src/.deps/strcache.Po
+# dummy
+
+# src/.deps/variable.Po
+# dummy
+
+# src/.deps/version.Po
+# dummy
+
+# src/.deps/vms_exit.Po
+# dummy
+
+# src/.deps/vms_export_symbol.Po
+# dummy
+
+# src/.deps/vms_progname.Po
+# dummy
+
+# src/.deps/vmsfunctions.Po
+# dummy
+
+# src/.deps/vmsify.Po
+# dummy
+
+# src/.deps/vpath.Po
+# dummy
diff --git a/ChangeLog b/ChangeLog
index 3dee3b6..dce824b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,1550 @@
+2020-01-19 Paul Smith <psmith@gnu.org>
+
+ GNU Make release 4.3
+ * NEWS: Update for the release
+ * configure.ac: New release number
+ * doc/make.texi: New edition number
+
+ * configure.ac (guile): Check for Guile 3.0 installations
+
+ * src/job.c (sh_cmds): [SV 57625] Update builtin shell command list
+
+ Resolve some documentation issues
+ * doc/make.texi (Interrupts): [SV 46193] Recommend defensive recipes
+ * doc/make.texi: [SV 49262] Clarify interaction of prerequisites and
+ non-terminal match-anything rules.
+
+2020-01-19 Paul Smith <psmith@gnu.org>
+
+ [SV 40657] Reinstate old behavior for suffix rules with prereqs
+ POSIX says that suffix rules cannot have prerequisites, but after
+ making this change we observed a number of makefiles "in the wild"
+ that were relying on this behavior and failed.
+
+ For .POSIX: makefiles, obey POSIX. Otherwise preserve the old
+ behavior. However, generate a warning so users know this is a
+ problem. In a future version we will change all behavior to be
+ POSIX-conforming.
+
+ * NEWS: describe the change
+ * src/rule.c (convert_to_pattern): If posix_pedantic don't make a
+ pattern rule if prereqs exist. Otherwise show a warning.
+ * tests/scripts/features/suffixrules: Add tests for the new behavior
+ including .POSIX vs. non-.POSIX.
+
+2020-01-05 Dmitry Goncharov <dgoncharov@users.sf.net>
+
+ * tests/test_driver.pl: Enhance error messages
+
+2020-01-04 Paul Smith <psmith@gnu.org>
+
+ * doc/make.texi: Change the GFDL to an Appendix
+
+ * NEWS: Clarify authorship of new features.
+
+ Enable compilation with C90 compilers
+ * configure.ac: Try compiling Guile headers: they don't work with C90.
+ * maintMakefile: Simplify config checks via target-specific variables.
+ * src/makeint.h: Use ATTRIBUTE rather than defining __attribute__,
+ as that causes compile issues with system headers.
+ (ENUM_BITFIELD): Don't use enum bitfields in ANSI mode.
+ * src/main.c: Use ATTRIBUTE instead of __attribute__.
+ * src/job.h: Ditto.
+ * src/file.c: Don't define variables inside for loops.
+ * src/rule.c: Ditto.
+ * src/dep.h (SI): Only use static inline in non-ANSI mode.
+
+2020-01-03 Paul Smith <psmith@gnu.org>
+
+ * bootstrap: Update to the latest gnulib version
+
+ Release GNU make 4.2.93
+ * NEWS: Update the release and date
+ * configure.ac: Update the release number
+
+ Update copyright statements for 2020
+
+2020-01-03 Paul Smith <psmith@gnu.org>
+
+ Support the .EXTRA_PREREQS special variable
+ Initial implementation by Christof Warlich <cwarlich@gmx.de>
+
+ * NEWS: Announce the new feature.
+ * doc/make.texi (Other Special Variables): Document .EXTRA_PREREQS.
+ * src/dep.h (struct dep): New flag to note extra prereq deps.
+ * src/filedef.h (expand_extra_prereqs): Declare a function to expand
+ the value of .EXTRA_PREREQS.
+ * src/file.c (expand_extra_prereqs): Given a struct variable lookup
+ of .EXTRA_PREREQS, convert it into a list of deps and for each one
+ make sure it has a struct file and has the new flag set.
+ (snap_file): A new function invoked by hash_map that will perform
+ per-file operations: set up second expansion, intermediate, and also
+ .EXTRA_PREREQS. Manage circular dependencies by ignoring them.
+ (snap_deps): Defer per-file operations until the end. Look up the
+ global .EXTRA_PREREQS and pass it along to snap_file for each file.
+ * src/implicit.c (struct patdeps): Remember the extra prereqs flag.
+ (pattern_search): Transfer extra prereqs flag settings into the
+ matched pattern rule.
+ * src/rule.h (snap_implicit_rules): Rename count_implicit_rules to
+ snap_implicit_rules since we now do more than count.
+ * src/rule.c (snap_implicit_rules): As we walk through all the pattern
+ rules, add in any global .EXTRA_PREREQS to the dep list. Ensure we
+ take them into account for the max number of prereqs and name length.
+ * src/main.c (main): Add extra-prereqs to .FEATURES.
+ Call the renamed snap_implicit_rules.
+ * tests/scripts/variables/EXTRA_PREREQS: Add tests.
+
+2020-01-03 Paul Smith <psmith@gnu.org>
+
+ * tests/scripts/features/patternrules: Use Windows-compatible quoting
+
+ * tests/test_driver.pl: Compute full path to Perl interpreter
+
+ * tests/scripts/features/exec: Don't use $ENV in the description
+
+ * src/makeint.h: Add a declaration for memrchr()
+
+2019-12-27 Paul Smith <psmith@gnu.org>
+
+ * NEWS: Remove info about disabled /proc/loadavg usage.
+
+2019-12-27 Paul Smith <psmith@gnu.org>
+
+ [SV 57022] Avoid posix_spawn which fails asynchronously
+ Avoid using posix_spawn implementations that fail asynchronously when
+ the spawned program can't be invoked: this means instead of getting
+ an error such as "No such file or directory" we get just "Exit 127".
+
+ Original implementation of the configure.ac macro provided by
+ Martin Dorey <martin.dorey@hds.com>
+
+ Original implementation of the regression tests provided by
+ Dmitry Goncharov <dgoncharov@users.sf.net>
+
+ * configure.ac: Test whether posix_spawn fails asynchronously. In a
+ cross-compilation environment, assume that it does not. If we detect
+ that it does, fall back to fork/exec.
+ * tests/scripts/features/exec: Add regression tests for different
+ shebang invocation methods.
+
+2019-12-26 Paul Smith <psmith@gnu.org>
+
+ [SV 56655] Allow pattern expansion to contain spaces
+ * src/dep.h: Add a new flag PARSEFS_ONEWORD
+ * src/read.c (parse_file_seq): If PARSEFS_ONEWORD is given, treat the
+ entire incoming string as a single pattern.
+ * src/implicit.c (pattern_search): Pass PARSEFS_ONEWORD when parsing
+ patterns for wildcards.
+ * tests/scripts/features/patternrules: Add a new test.
+
+2019-12-18 Ben Wijen <ben@wijen.net>
+
+ * src/misc.c (spin): On WINDOWS32 use Sleep() instead of sleep()
+
+ * bootstrap.bat: Fix typo in batch file name
+
+2019-12-18 Paul Smith <psmith@gnu.org>
+
+ * src/config.h.W32.template: [SV 57152] MinGW32 doesn't support d_type
+
+2019-12-18 Jouke Witteveen <j.witteveen@gmail.com>
+
+ [SV 54161] Fix second expansion of $* for paths
+ If the stem matches a path containing a directory not just a
+ filename, make sure the second expansion of $* in the
+ prerequisites matches $* in the recipe. This requires using
+ $(*F) when replacing % in the first expansion to preserve the
+ simple filename.
+
+ * src/implicit.c (pattern_search): If lastslash is set prepend
+ the directory onto the stem. Then use $(*F) when expanding %.
+ * tests/scripts/features/se_implicit: Add a test case
+
+2019-12-17 Jouke Witteveen <j.witteveen@gmail.com>
+
+ * src/implicit.c (pattern_search): Set lastslash correctly
+ If filename contained multiple slashes lastslash is wrongly set to 0.
+ * configure.ac: Check for the GNU memrchr() extension function.
+ * src/misc.c (memrchr): Supply memrchr() if not available.
+
+ * src/implicit.c (pattern-search): Remove unneeded 'dir' variable
+
+2019-12-17 Paul Smith <psmith@gnu.org>
+
+ * Makefile.am: Build lzip package instead of bzip2
+ * README.git: Mention changed requirements.
+
+ * src/job.c (load_too_high): Disable Linux /proc/loadavg for now
+ This new feature has a problem: if you provide a load which is
+ larger than the number of cores then it will always run every job.
+ Before we can enable it we need to at the least learn how to clamp
+ this value to the number of cores. To experiment with it, set
+ PROC_FD_INIT to -2 in job.c to re-enable the feature.
+
+ * tests/run_make_tests.pl (set_more_defaults): Fix typo
+
+2019-12-16 Paul Smith <psmith@gnu.org>
+
+ * tests/run_make_tests.pl (subst_make_string): Force use of /
+ On Windows the path to the helper tool will contain '\': this will
+ fail if recipes are run with a POSIX shell. Convert '\' to '/'
+ on Windows. While here, escape any spaces in the path as well.
+
+ Rename jhelp.pl to thelp.pl and make it a generic test helper.
+ * tests/thelp.pl: Rename from tests/jhelp.pl.
+ (op): Use names instead of options for the operations.
+ (op): Add new operations for sleep, mkdir, and rm.
+ (op): Enhance wait to time out
+ * tests/run_make_tests.pl: Add a new #HELPER# replacement
+ (subst_make_string): Use fully-qualified path to thelp.pl
+ * tests/scripts/features/parallelism: Update to use thelp.pl
+ and the new named operations. Use thelp.pl sleep instead of
+ system-specific sleep commands.
+ * tests/scripts/features/output-sync: Update to use thelp.pl
+ instead of complex shell scripts.
+ * Makefile.am: Distribute tests/thelp.pl instead of tests/jhelp.pl
+
+2019-10-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port functions/shell test to Solaris 10
+ * tests/scripts/functions/shell: Port exit-status calculation
+ to Solaris 10 with Perl 5.8.4.
+
+2019-10-08 Paul Smith <psmith@gnu.org>
+
+ Release GNU make 4.2.92
+ * NEWS: Update the release and date
+ * configure.ac: Update the release number
+
+2019-10-06 Paul Smith <psmith@gnu.org>
+
+ * doc/make.text (Reading Makefiles): Rewrite to be more clear.
+
+2019-10-05 Paul Smith <psmith@gnu.org>
+
+ * Makefile.am (check-regression): Use PERLFLAGS when running Perl
+ * maintMakefile: Set PERLFLAGS to enable warnings.
+ * tests/run_make_tests.pl: Clean up issues pointed out by perl -w.
+
+ * tests/scripts/functions/wildcard: Skip slash tests for local glob.
+
+ tests: Convert %CONFIG_FLAGS to get_config()
+ * tests/config-flags.pm.W32: Create a predefined Windows file.
+ * Makefile.am (test_FILES): Add it to the distribution.
+ * build_w32.bat: Install tests/config-flags.pm if not existing.
+ * tests/run_make_tests.pl (get_config): Create new function.
+ * tests/scripts/features/archives: Call get_config() rather than
+ using %CONFIG_FLAGS directly.
+ * tests/scripts/features/load: Ditto.
+ * tests/scripts/features/loadapi: Ditto.
+ * tests/scripts/functions/wildcard: Ditto.
+
+ * src/hash.c (jhash_string): Don't read past end of string.
+ Original patch from Dmitry Goncharov <dgoncharov@users.sf.net>.
+
+ * tests/run_make_tests.pl (valid_option): Add missing File::Spec
+
+2019-09-23 Paul Smith <psmith@gnu.org>
+
+ * src/function.c (func_realpath) [AIX]: Remove trailing slashes.
+
+2019-09-22 Paul Smith <psmith@gnu.org>
+
+ * tests/scripts/features/vpathplus: Fix output for big-endian systems.
+ Our hashing algorithm gives different ordering on LE vs BE systems.
+ Patch from Dmitry Goncharov <dgoncharov@users.sf.net>.
+
+2019-09-22 Florian Weimer <fweimer@redhat.com> (tiny change)
+
+ * configure.ac (HAVE_GETTIMEOFDAY): Avoid undeclared exit function.
+
+2019-09-22 Paul Smith <psmith@gnu.org>
+
+ * test/test_driver.el (_run_with_timeout): Show error message.
+
+ * job.c (child_error): Modify error message string.
+ This reverts commit 6264deece3bb77798240a906ceed79097adbcf48.
+ Further investigation discovers that the real issue is that
+ GNU Emacs compile mode doesn't have a matching regex for GNU
+ make error messages generated when targets fail. I submitted
+ a patch to GNU Emacs adding a matcher for compile mode.
+
+2019-09-21 Paul Smith <psmith@gnu.org>
+
+ * tests: Convert from File::Spec::Functions to File::Spec.
+ Users report the Functions version doesn't work correctly for some
+ older versions of Perl.
+
+ * tests/scripts/function/guile: Valgrind doesn't work with Guile.
+
+ * src/job.c (child_execute_job): Allocate space for argv NULL.
+
+2019-09-21 Paul Smith <psmith@gnu.org>
+
+ [SV 56918] Compute job slots properly on failing command
+ Ensure we properly reduce job_slots_used if a command fails because
+ it doesn't exist/can't be started.
+
+ * src/job.h (struct child): Add a field jobslot to be set when using
+ a job slot.
+ * src/job.c (start_waiting_job): Remember if we are using a job slot.
+ (reap_children): Reduce number of job slots used by jobslot.
+
+2019-09-21 Paul Smith <psmith@gnu.org>
+
+ * src/arscan.c (ar_scan): Restrict length for sscanf of ar_mode.
+
+ * tests/scripts/functions/shell: Detect correct SHELLSTATUS code.
+
+ * tests/run_make_test.pl: Fix support for valgrind.
+ Change the variable holding the make command to be a list that can
+ hold extra commands and options, not just a string.
+
+ * tests/run_make_tests.pl (find_prog): Fix syntax error.
+
+2019-09-16 Paul Smith <psmith@gnu.org>
+
+ * NEWS: Update date and clarify -l change.
+
+ * tests/run_make_tests.pl: Create $scriptsuffix for Windows/VMS.
+ * tests/scripts/features/targetvars: Add a suffix to scripts.
+ * tests/scripts/misc/general4: Ditto.
+
+2019-09-16 Paul Smith <psmith@gnu.org>
+
+ Refresh the test suite framework implementation.
+ Go through both run_make_tests.pl and test_driver.pl and slightly
+ modernize the Perl and clean up indentation etc. Fix a number of
+ warnings in the test scripts detected by running with -w.
+
+ * tests/test_driver.pl: Move make error string detection out of the
+ base test driver.
+ (run_all_tests): Ensure that we always look for tests in the cwd.
+ * tests/run_make_tests.pl: Use File::Spec for path manipulations.
+ Correctly use setlocale() when detecting error strings.
+ Get configuration from the config-flags.pm file not config.status.
+ * tests/scripts/features/archives: Use new $cwddir variable.
+ * tests/scripts/features/reinvoke: Add missing semicolon.
+ * tests/scripts/features/vpath2: Avoid non-existent variable.
+ * tests/scripts/functions/foreach: Escape variables.
+ * tests/scripts/misc/bs-nl: Remove non-existing \v escape sequence.
+ * tests/scripts/misc/general4: Use handy create_file().
+ * tests/scripts/options/dash-C: Use Cwd/$cwddir.
+ * tests/scripts/options/dash-I: Use subst_make_string() and #PWD#.
+ * tests/scripts/options/symlinks: Use File::Spec.
+ * tests/scripts/targets/DEFAULT: Use create_file and run_make_test.
+ * tests/scripts/variables/CURDIR: Use run_make_test.
+ * tests/scripts/variables/automatic: Remove extraneous "\".
+ * tests/scripts/vms/library: Remove extra "my" and extraneous "\".
+
+2019-09-16 Paul Smith <psmith@gnu.org>
+
+ * tests/config-flags.pm.in: Add USE_SYSTEM_GLOB.
+ * tests/config_flags_pm.com [VMS]: Ditto.
+
+ * README.git: [SV 56895] Provide more info about "maintainer mode".
+ * src/read.c (get_next_mword) [HAVE_DOS_PATHS]: Don't fall through to
+ parsing variable references if we find a drivespec in a word!
+
+ * tests/test_driver.pl: Remember error for "running" a directory.
+ * tests/scripts/features/errors: Check errors "running" a directory.
+
+ * src/job.c (child_execute_job): Use errno from find_in_given_path().
+ * tests/test_driver.pl: Determine non-executable error message.
+ * tests/scripts/features/errors: Use the local non-executable error.
+
+ * src/job.c (child_execute_job): Use newer gnulib findprog version.
+
+2019-09-10 Eli Zaretskii <eliz@gnu.org>
+
+ Revert "[SV 56449] (Windows) Use slow path if '%' appears in the command"
+ This reverts commit 38e96eadea6e2cd42a0f414959bac327de9f468a.
+ Per discussion on Savannah, the modified behavior matches
+ the way % is handled in batch files, but not in cmd command
+ lines. And since Make mostly tries to emulate the command
+ line, the new behavior is unexpected and backward-incompatible.
+
+2019-09-09 Paul Smith <psmith@gnu.org>
+
+ Rework the creation of build.sh so it's not a template.
+ * build.sh: Rename from build.template. Get the list of objects
+ from the Makefile. Move configure-replaced variables ...
+ * build.cfg.in: to this new .in file.
+ * configure.ac: Remove special handling of build.sh.in and add
+ build.cfg as a generated file.
+ * Makefile.am (EXTRA_DIST): Remove build.sh.in and add build.sh
+ and build.cfg.in for build.sh.in.
+ * maintMakefile: Remove handling for build.template. Treat
+ build.sh as a source file, not a generated file.
+ * .gitignore: Ignore generated build.cfg file.
+
+2019-09-08 Paul Smith <psmith@gnu.org>
+
+ * gl/modules/make-glob: Move local glob configure.ac to here
+ * configure.ac: from here.
+
+2019-09-08 Paul Smith <psmith@gnu.org>
+
+ [SV 56834] Support local PATH search with posix_spawnp
+ When using exec we install the child's environment before invoking
+ execlp(), so commands are found on the child's PATH. posix_spawnp
+ searches on the parent's PATH, which we don't want.
+
+ Import gnulib's findprog-in module and use it to search the child's
+ PATH, then use posix_spawn() to run it.
+
+ Also, posix_spawn() does not fall back to trying sh on ENOEXEC, as
+ execlp() does, so implement that as well.
+
+ * bootstrap.conf: Add the findprog-in gnulib module
+ * src/job.c: Include findprog.h if we're using posix_spawn.
+ (start_job_command): Remove the handling of child->cmd_name,
+ (child_execute_job): and add it here. Look up the command to be
+ run in the child's path and invoke it if found. If it fails with
+ ENOEXEC then retry it as an argument to the default shell.
+ * tests/scripts/misc/general4: Test makefile PATH assignments.
+ * tests/scripts/features/targetvars: Ditto, for target variables.
+
+2019-09-07 Paul Smith <psmith@gnu.org>
+
+ * doc/make.texi (Recipe Execution): Correct example to use $(<[DF])
+
+ * configure.ac: Check whether struct dirent has a d_type field
+ * src/dir.c (dir_contents_file_exists_p): Use the autoconf macro
+ HAVE_STRUCT_DIRENT_D_TYPE rather than relying on the GNU libc-
+ specific _DIRENT_HAVE_D_TYPE.
+ * lib/glob.c: Set HAVE_D_TYPE if HAVE_STRUCT_DIRENT_D_TYPE.
+
+ * src/config.h.W32.template [W32]: Add support for dirent.d_type
+ * src/w32/include/dirent.h: Add DT_* values for dirent.d_type
+ (struct dirent): Add d_type
+ * src/w32/compat/durent.c (readdir): Set dirent.d_type based on
+ Windows file attributes.
+
+ * src/makeint.h: Add typedef for mode_t if !HAVE_UMASK
+
+ * build.template: Rewrite to allow gnulib support.
+
+ * doc/make.texi: Clarify that the jobserver pipe is "blocking"
+
+2019-09-07 Paul Smith <psmith@gnu.org>
+
+ Align child_execute_job among different ports
+ Create a struct childbase which is the basics of struct child needed
+ to invoke child_execute_job(), and can be cast back and forth to a
+ struct child. Ensure all implementations of child_execute_job() take
+ the same arguments.
+
+ * src/job.h (CHILDBASE): Create a macro to hold the base parts.
+ (struct childbase): A structure containing CHILDBASE.
+ (struct child): Use CHILDBASE as the initial part of child.
+ [VMS]: Remove declaration of VMS version of child_execute_job.
+ * src/job.c (start_job_command): Use new child_execute_job() call.
+ (child_execute_job) [__EMX__]: Implement new calling signature.
+ (child_execute_job): Implement new calling signature.
+ * src/main.c (main) [__EMX__]: Use new child_execute_job() call.
+ * src/function.c (func_shell_base): Use new child_execute_job() call.
+ * src/vmsjobs.c (vmsHandleChildTerm): Accept struct childbase.
+ * src/vmsjobs.c (child_execute_job): Implement new calling signature.
+ Modify the return value to be pid_t, not a boolean, and return the
+ PID rather than setting it in the child. This is OK because our only
+ caller immediately reset PID to -1 anyway if we return 0.
+
+2019-09-07 Paul Smith <psmith@gnu.org>
+
+ * doc/make.tex (Substitution Refs): Clarify patsubst relationship.
+
+ * src/job.c (start_job_command) [VMS]: Correct VMS comment.
+
+2019-09-07 Paul Smith <psmith@gnu.org>
+
+ Show useful errors when posix_spawn() doesn't do so
+ The posix_spawn() function may not detect that the command to run is
+ invalid when it's invoked. Instead, it will run then exit with
+ error code 127. If that happens do our best to present the user
+ with a useful error message.
+
+ * src/job.h (struct child): Add cmd_name to hold the command we ran.
+ * src/job.c (start_job_command): On success, remember the cmd_name.
+ (reap_children): On exit 127, stat cmd_name and show a useful error.
+ (free_child): Free cmd_name.
+
+2019-09-07 Paul Smith <psmith@gnu.org>
+
+ * README.git: Describe GCC and GNU make requirements
+ * maintMakefile: Put custom C flags into a separate variable
+ so they can be overridden more easily on the command line.
+
+ * tests/scripts/features/archives: Fix expected long ar name output.
+
+ * tetss/run_make_test.pl: Avoid 'sh -c' for Windows portability.
+
+ Update to GNU make release candidate 4.2.91
+
+ * tests/scripts/functions/wildcard: Skip dangling symlink test.
+ The built-in glob implementation does not correctly handle dangling
+ symlinks. This needs to be fixed by switching to the latest glob
+ implementation from gnulib but that's a big job: for now avoid the
+ test if we know it will fail.
+
+ * maintMakefile: Use check-local when testing build.sh.
+ Running 'make check' will rebuild 'make' so we're not testing the
+ build.sh-generated make binary.
+
+2019-09-07 Paul Smith <psmith@gnu.org>
+
+ Don't reset stack size when using posix_spawn()
+ There's no way to run setrlimit() from posix_spawn() so we can't reset
+ the stack limit in children; thus, don't change it in the parent.
+
+ * src/makeint.h (SET_STACK_SIZE): Don't set this when HAVE_POSIX_SPAWN.
+ * src/job.c (child_execute_job): Remove useless comment.
+
+2019-09-07 Paul Smith <psmith@gnu.org>
+
+ * configure.ac: Remove redundant getloadavg gnulib support
+
+ * src/dir.c (dir_setup_glob): Initialize unused gl_offs.
+ * tests/scripts/functions/wildcard: Add trailing slash tests.
+ Initial changes by Dmitry Goncharov <dgoncharov@users.sf.net>
+
+2019-09-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ Pacify Oracle Studio c99
+ * src/dep.h (DEP):
+ * src/function.c (struct function_table_entry):
+ Use unsigned int, not unsigned short. Without this patch, c99
+ complains ‘warning: nonportable bit-field type’.
+
+ Port grouped_targets test to Solaris 10
+ * tests/scripts/features/grouped_targets: Use ‘printf ''’
+ instead of ‘echo -n’, as POSIX says the latter is not portable.
+
+ Remove useless code in eval
+ * src/read.c (eval): Remove useless code. Without this patch,
+ Oracle Studio 12.6 complains ‘"src/read.c", line 1405: warning:
+ loop not entered at top’.
+
+ Pacify Oracle Studio 12.6 in init_switches
+ * src/main.c (init_switches): Use a cast to convert char const *
+ to char *. Without this patch, the compiler complains
+ ‘"src/main.c", line 2643: warning: assignment type mismatch:
+ pointer to char "=" pointer to const char’.
+
+ Pacify Oracle Studio 12.6
+ * src/arscan.c [VMS]: Use ‘#if !defined LBR$_HDRTRUNC’ instead
+ of ‘#ifndef LBR$_HDRTRUNC’ to pacify Oracle Studio 12.6, which
+ looks inside unused #if branches for preprocessor syntax errors.
+ Without this patch it complains ‘"src/arscan.c", line 43: warning:
+ tokens ignored at end of directive line’.
+
+2019-09-02 Paul Smith <psmith@gnu.org>
+
+ * NEWS: Fix incorrect notes.
+
+ * src/read.c (parse_file_seq): [SV 52076] Don't reverse glob() results.
+
+2019-08-28 Eli Zaretskii <eliz@gnu.org>
+
+ Fix MS-Windows MinGW build
+ * src/w32/subproc/sub_proc.c (process_wait_for_multiple_objects):
+ Fix format specifier for GetLastError's value.
+
+ * src/job.c (reap_children): Define the 'remote_status_lose' label
+ only for Posix platforms, to avoid compiler warning.
+
+ * build_w32.bat (LNKOUT): New variable, using forward slashes.
+ Use forward slashes in calls to :Compile, so that linking with GNU
+ ld works.
+
+ * src/makeint.h [!HAVE_UMASK]: Prototype for 'umask'.
+ (UMASK, MODE_T): Don't define.
+
+ * src/misc.c (get_tmpfile): Don't call UMASK, call umask, to
+ avoid compilation warning on !HAVE_UMASK platforms.
+ * src/output.c (output_tmpfd): Likewise.
+
+ * src/misc.c (umask) [!HAVE_UMASK]: New no-op function.
+
+ * src/config.h.W32.template (__USE_MINGW_ANSI_STDIO)
+ [__MINGW32__]: Define to 1, to force Make use ANSI-compatible
+ stdio functions, which also support the non-standard 'Id' and 'Ix'
+ specifiers.
+ (HAVE_UMASK) [__MINGW32__]: Define to 1.
+
+ * src/arscan.c (ar_member_touch): Type-cast argument of strlen to
+ avoid compiler warnings.
+
+2019-08-26 Paul Smith <psmith@gnu.org>
+
+ * NEWS: Update for pre-release
+
+2019-08-26 Paul Smith <psmith@gnu.org>
+
+ Update maintainer mode to support debug wait points.
+ Make a spin() method available when compiled in maintainer mode.
+ If a file exists in the working directory with a specific name,
+ make will sleep until the file is deleted.
+
+ Ensure that maintainer mode is enabled on Windows, using the same
+ algorithm we use on POSIX / autoconf systems.
+
+ * build_w32.bat: If maintMakefile exists, enable maintainer mode.
+ * src/main.c (main): Replace Windows-only suspend flag with spin().
+ * src/makeint.h: A SPIN() macro calls spin() in maintainer mode.
+ * src/misc.c (spin): If a spin file exists sleep until it's deleted.
+
+2019-08-26 Paul Smith <psmith@gnu.org>
+
+ * tests/scripts/features/archives: [SV 54395] Support non-GNU ar.
+
+ * tests/scripts/misc/general3: Add more tests for SHELL/.SHELLFLAGS
+
+2019-08-25 Paul Smith <psmith@gnu.org>
+
+ * src/job.c (construct_command_argv): Remove unused VMS code
+
+ * src/job.c (child_execute_job): Set pid to -1 on posix_spawn failure.
+
+2019-08-24 Paul Smith <psmith@gnu.org>
+
+ * bootstrap: Update from latest gnulib version
+
+ * scripts/copyright-update: Use git ls-files for controlled files
+
+ * po/LINGUAS: Add a translation for Bulgarian.
+
+2019-07-14 Christian Eggers <ceggers@arri.de> (tiny change)
+
+ [SV 56449] (Windows) Use slow path if '%' appears in the command
+ * src/job.c (sh_chars_dos): Add '%' as a special character
+ * src/job.c (construct_command_argv_internal): Check for '%' in quotes
+
+ For the windows version of make, a recipe line cannot be executed
+ diretly by make (without a shell) if a '%' character is present. This
+ character starts a cmd.exe escape sequence.
+
+2019-07-14 Paul Smith <psmith@gnu.org>
+
+ * src/read.c (parse_file_seq): Update comments.
+
+2019-07-13 Mike Haboustak <haboustak@gmail.com> (tiny change)
+
+ [SV 28456] Don't override $< when no default rule has been defined
+ The check for matching a file's command to the default rule's command
+ does not account for null. If no .DEFAULT is defined a rule with no
+ recipe has it's $< variable set to the value of $@. This breaks second
+ expansion, particularly when used with pattern rules.
+
+ * src/commands.c [set_file_variables]: Check that cmds is set
+ * tests/scripts/features/se_explicit: Test case
+ * tests/scripts/features/se_implicit: Test case
+
+2019-07-13 Paul Smith <psmith@gnu.org>
+
+ Switch to the gnulib version of strerror()
+ * bootstrap.conf: Add strerror module
+ * configure.ac: Remove strerror check
+ * src/misc.c: Remove local strerror() implementation
+ * src/config.ami.template: Remove HAVE_STRERROR
+ * src/config.h-vms.template: Ditto.
+ * src/config.h.W32.template: Ditto.
+
+2019-05-19 Paul Smith <psmith@gnu.org>
+
+ * doc/make.texi: [SV 51974] Clarify makefile parsing operations.
+
+ * doc/make.texi: [SV 54116] Document whitespace removal trick.
+ Discovered and explained by Michael Henry <gnu@drmikehenry.com>
+ * tests/scripts/variables/flavors: Add a test to preserve the behavior.
+
+2019-05-19 Paul Smith <psmith@gnu.org>
+
+ [SV 46013] Allow recursive variable overrides from Makefiles
+ Ensure that variable overrides are passed to recursive make instances
+ even if no overrides were provided on the command line.
+ Fix suggested by Rici Lake <ricilake@gmail.com>
+
+ * src/main.c (define_makeflags): Add overrides without respect to the
+ value of command_variables.
+ * tests/scripts/features/recursion: Add a test.
+
+2019-05-19 Paul Smith <psmith@gnu.org>
+
+ Update developer customizations
+ * .ccls: Remove -std=c99: it disables __attribute__ causing warnings.
+ * .dir-locals.el: Force the C coding style to "gnu".
+ * make-gdb.py: Add GDB macros for pretty-printing GNU make structs.
+ * scripts/copyright-update: Use GNULIB_SRCDIR to find update-copyright.
+
+2019-05-19 Paul Smith <psmith@gnu.org>
+
+ [SV 54549] Don't free used set_lists during merge
+ When merging the variable_set_lists for two targets it could be
+ that the "from" set list is a subset of the "to" set list: check
+ for this situation to avoid freeing used memory.
+
+ * src/variable.c (merge_variable_set_lists): Walk the "to" list and
+ if the "from" list is contained in it, nothing to do.
+ * tests/scripts/features/se_explicit: Add a test.
+
+2019-05-19 Paul Smith <psmith@gnu.org>
+
+ * src/hash.c (jash_string): [SV 54980] Avoid ASAN error
+
+2019-05-19 Paul Smith <psmith@gnu.org>
+
+ [SV 54740] Ensure .SILENT settings do not leak into sub-makes
+ Create a new variable run_silent to hold the current instance's global
+ silence setting, allowing silent_flag to represent only whether the -s
+ option was provided on the command line.
+
+ * src/makeint.h: Change silent_flag variable to run_silent.
+ * src/job.c: Ditto.
+ * src/remake.c: Ditto.
+ * src/file.c: Ditto.
+ * src/main.c: Add a new global variable run_silent.
+ (decode_switches): After switches are decoded, initialize run_silent.
+ * tests/scripts/targets/SILENT: Add a test for recursive behavior.
+
+2019-05-19 Paul Smith <psmith@gnu.org>
+
+ Update copyright statements for 2019
+
+2019-05-12 Kaz Kylheku <kaz@kylheku.com>
+
+ [SV 8297] Implement "grouped targets" for explicit rules.
+ This patch allows "grouped targets" using the &: syntax:
+
+ tgt1 tgt2 ... tgtn &: pre1 pre2 ...
+ recipe
+
+ When the &: separator is used (in single or double colon forms), all
+ the targets are understood to be built by a single invocation of the
+ recipe. This is accomplished by piggy-backing on the already-existing
+ pattern rule feature, using the file's "also_make" list.
+
+ * NEWS: Add information about grouped targets.
+ * doc/make.texi (Multiple Targets): Add information on grouped targets.
+ (Pattern Intro): Refer to the new section to discuss multiple patterns.
+ * src/main.c (main): Add "grouped-targets" to .FEATURES
+ * src/read.c (make_word_type): Add new types for &: and &::.
+ (eval): Recognize the &: and &:: separator and remember when used.
+ (record_files): Accept an indicator of whether the rule is grouped.
+ If so, update also_make for each file to depend on the other files.
+ (get_next_mword): Recognize the &: and &:: word types.
+ * tests/scripts/features/grouped_targets: New test script.
+ * AUTHORS: Add Kaz Kylheku
+
+2019-05-12 Paul Smith <psmith@gnu.org>
+
+ * variable.c (define_variable_in_set): Clear new structs
+
+ * po/LINGUAS: Add Portuguese translation
+
+ Add developer customizations
+ * .ccls: Configure the ccls LSP server
+ * .dir-locals.el: Reset some parameters for ccls and lsp-mode
+ * .gitignore: Update for GTAGS and ccls
+ * maintMakefile: Don't search hidden directories for sources
+
+2018-09-16 Paul Smith <psmith@gnu.org>
+
+ * src/arscan.c (ar_member_touch): [SV 54533] Stop \0 in archive headers
+
+ Change output_write() to writebuf(), add readbuf() helper.
+ * src/misc.c (writebuf, readbuf): Create helper functions that will
+ reliably write a buffer to a file descriptor in the face of EINTR
+ causing short writes, and read from a file descriptor into a buffer
+ in the face of EINTR causing short reads.
+ * src/makeint.h: Declare these functions.
+ * src/output.c: Remove output_write() and replace with writebuf().
+ (_outputs, out_of_memory): Call writebuf(), not output_write().
+ * src/arscan.c (ar_scan): Call readbuf() instead of read(2).
+ (ar_member_touch): Remove duplicate header write, call writebuf()
+ instead of output_write(), and readbuf() instead of read(2).
+
+2018-09-15 Paul Smith <psmith@gnu.org>
+
+ * doc/make.texi (Remaking Makefiles): [SV 52273] Note MAKE_RESTARTS
+
+ * src/main.c (main): Set jobserver permissions before re-execing
+ Fixes an issue seen in the Linux kernel build system, reported by
+ Masahiro Yamada <yamada.masahiro@socionext.com>. Fix suggested
+ on the bug-make mailing list by Mike Shal <marfey@gmail.com>.
+ * tests/scripts/features/parallelism: Add a test to verify this.
+
+ * doc/make.texi: [SV 48970] Clarify the value of $?
+
+ * doc/make.text: [SV 54360] Weaken "obsolete" language in the manual.
+ There's no need to frighten users away from capabilities which are
+ perfectly reasonable and definitely not going away, by calling them
+ obsolete or discouraged in the manual.
+
+ [SV 40657] Don't create pattern rules for suffix rules with deps.
+ * NEWS: Update with a backward-compatibility warning.
+ * src/rule.c (convert_to_pattern): If a suffix rule has dependencies,
+ do not create a pattern rule for it. According to the manual suffix
+ rules with prerequisites are treated as normal targets.
+ * tests/scrips/features/suffixrules: Create some regression tests for
+ .SUFFIXES and suffix rules.
+
+2018-08-04 Paul Smith <psmith@gnu.org>
+
+ * NEWS: Update for the latest changes.
+
+2018-08-04 Paul Smith <psmith@gnu.org>
+
+ [SV 54233] Preserve higher command_state values on also_make targets.
+ If multiple pattern rules have the same pattern as also-make targets
+ and we attempt to run them at the same time, we might downgrade the
+ command state from 'running' to 'deps_running'; this will prevent
+ that also_make from being considered complete causing make to wait
+ forever for it to finish.
+
+ Ensure that set_command_state never downgrades the state of a target.
+
+ * src/file.c (set_command_state): Don't downgrade command_state.
+ * src/filedef.h (struct file): Document the order prerequisite.
+ * test/scripts/features/patternrules: Test the behavior.
+
+2018-08-04 Paul Smith <psmith@gnu.org>
+
+ * src/job.c (reap_children): Fix inverted win/lose message.
+
+ * tests/scripts/functions/wildcard: [SV 52018] Test dangling symlink.
+
+2018-08-04 Bernhard M. Wiedemann <bwiedemann@suse.de>
+
+ * src/read.c (parse_file_seq): [SV 52076] Sort wildcard results.
+
+2018-08-04 Paul Smith <psmith@gnu.org>
+
+ * tests/scripts/features/archives: [SV 54395] Test long archive names.
+
+2018-08-04 Ben Hutchings <ben@decadent.org.uk>
+
+ * src/arscan.c (ar_scan): [SV 54395] Allow long names in archives.
+ Commit bc9d72beb0cb "Resolve issues discovered by static code
+ analysis." added range checks on archive member name length. However,
+ on non-AIX systems it also checked BSD-style long names against the
+ short name limits and and checked the *offset* for GNU-style long
+ names against the short name limits. This caused valid long names to
+ be rejected.
+
+ * Record the size of the GNU name map and validate offsets against it
+ * Ensure that the last entry in the name map is null-terminated
+ * Apply a maximum length of INT_MAX for element sizes
+
+ Reported-by: Philipp Wolski <philipp.wolski@kisters.de>
+
+2018-08-04 Paul Smith <psmith@gnu.org>
+
+ * lib/glob.c (glob_in_dir): [SV 53465] Allow symlinks to directories.
+ Fix from Rich Felker <bugdal@aerifal.cx> on the musl mailing list.
+ * tests/scripts/functions/wildcard: Create a regression test for this.
+
+ * configure.ac: Add --disable-posix-spawn option
+ * maintMakefile: Add a test for the option
+ * src/job.c: Change HAVE_* preprocessor checks to USE_POSIX_SPAWN
+
+ * src/job.c (child_execute_job): Clean up posix_spawn invocation
+
+2018-08-04 Aron Barath <baratharon@caesar.elte.hu>
+
+ * job.c (child_execute_job): Prefer posix_spawn() over fork()/exec()
+
+2018-08-04 Paul Smith <psmith@gnu.org>
+
+ Clean up errors for invalid commands and add regression tests.
+ * src/function.c (func_shell_base): Use error() instead of recreating
+ the error output.
+ * src/job.c (exec_command): Show more standard error messages.
+ * src/load.c (unload_file): Fix whitespace in the error message.
+ * tests/scripts/features/errors: Add tests for starting non-
+ existent commands and new error message formats.
+ * tests/scripts/features/output-sync: New error message formats.
+ * tests/scripts/functions/shell: Ditto.
+
+2018-08-04 Paul Smith <psmith@gnu.org>
+
+ Queue failed fork() (etc.) to be handled like any other failed job.
+ If we failed to fork() we were essentially exiting make immediately
+ without respect to ignore flags, etc. On one hand that makes sense
+ because if you can't fork you're in real trouble, but it doesn't
+ work so well on systems where we don't fork at all. Instead, treat
+ a fork error like any other error by delaying the handling until
+ the next call to reap_children(). Any child with a PID of -1 is
+ considered to have died before starting so check these first without
+ waiting for them.
+
+ * src/commands.c (fatal_error_signal): Don't kill children that
+ never started.
+ * src/function.c (func_shell_base): Handle cleanup properly if the
+ child doesn't start.
+ * src/job.c (reap_children): Check for children that died before
+ starting and handle them without waiting for the PID.
+ (start_job_command): Free memory when the child doesn't start.
+ (start_waiting_job): Don't manage children who never started.
+ (child_execute_job): If the fork fails return PID -1.
+ * src/vmsjobs.c: Check for children that never started.
+ * tests/run_make_tests.pl: Parse config.status to get all options.
+
+2018-08-02 Aron Barath <baratharon@caesar.elte.hu>
+
+ * configure.ac: Check for posix_spawnattr_setsigmask
+
+ * configure.ac: Check for spawn.h and posix_spawn()
+
+ * src/makeint.h: Use pid_t to store PIDs, of int.
+ * src/commands.c (getpid): Ditto.
+ * src/job.h (*): Ditto.
+ * src/job.c (*): Ditto.
+ * src/main.c (main): Ditto.
+ * src/remote-cstms.c (start_remote_job): Ditto.
+ * src/remote-stub.c (start_remote_job): Ditto.
+
+2018-08-02 spagoveanu@gmail.com <spagoveanu@gmail.com> (tiny change)
+
+ * src/dir.c: Preserve glob d_type field
+ When using GNU make on a system with glibc glob a pattern ending in
+ a slash is also matching regular files, but only in subdirectories:
+
+ $ mkdir -p dir/subdir
+ $ cd dir
+ $ touch file1 subdir/file2
+ $ echo 'test:; @echo $(wildcard */ */*/)' | make -f -
+ subdir/ subdir/file2
+ $ echo 'test: */ */*/; @echo "$?" != */ */*/' | make -f -
+ subdir/ subdir/file2 != subdir/ */*/
+
+ It happens because in the gl->gl_readdir callback supplied to glob(),
+ dirent->d_type is set to DT_UNKNOWN, and the glob() implementation
+ in glibc assumes that such a directory entry *cannot* possibly be a
+ regular file.
+
+ Pass the actual d_type down to glob(); this is the right thing to do
+ even if glibc is fixed, because it saves an extra stat() syscall for
+ each dirent.
+
+2018-08-02 Paul Smith <psmith@gnu.org>
+
+ * src/read.c(unescape_char): Use C comments not C++ comments.
+ * src/posixos.c(set_blocking): Ditto.
+ * src/w32/subproc/sub_proc.c(process_init): Ditto
+
+ Enhance the Basic.mk environment to work with Gnulib
+ * maintMakefile: Omit generated headers from Basic.mk prerequisites.
+ * Basic.mk.template: Rework commands to use with $(call ...) macros.
+ * mk/Amiga.mk: Ditto.
+ * mk/VMS.mk: Ditto.
+ * mk/Windows32.mk: Ditto, plus P2W to convert POSIX to Windows paths.
+ * mk/msdosdjgpp.mk: Ditto.
+
+2018-07-02 Paul Smith <psmith@gnu.org>
+
+ Resolve most of the Windows Visual Studio warnings.
+ * Convert integer types to size_t where necessary.
+ * Align other integral types to avoid casts and type warnings.
+
+2018-07-02 Paul Smith <psmith@nuodb.com>
+
+ Update regression tests for Windows.
+ * tests/scripts/features/jobserver: Windows doesn't use pipes
+ * tests/scripts/functions/shell: Don't test kill -2 on Windows
+ * tests/scripts/misc/bs-nl: Windows doesn't handle single quotes
+ * tests/scripts/misc/general3: Ditto.
+
+ * maintMakefile: Preserve comments during compilation
+
+ * function.c(abspath): Use memcpy() to avoid GCC 8.1 warnings
+
+2018-07-02 Paul Smith <psmith@nuodb.com>
+
+ Convert GNU make to use the gnulib portability library
+ Move content from glob/* and config/* into standard GNU directory
+ locations lib/* and m4/*.
+
+ Install the gnulib bootstrap script and its configuration file, and
+ create a bootstrap.bat file for Windows. Update the README.git file
+ with new requirements and instructions for building from Git.
+
+ At this point we only install the alloca, getloadavg, and FDL modules
+ from gnulib. We keep our old glob/fnmatch implementation since the
+ gnulib versions require significant amounts of infrastructure which
+ doesn't exist on Windows yet. Further work is required here.
+
+ Due to a problem with gnulib's version of getloadavg, we need to bump
+ the minimum required version of automake to 1.16.1 unfortunately.
+
+ * README.git: Update instructions
+ * NEWS: Move developer news to a separate section
+ * configure.ac: Update for use with gnulib modules
+
+ * bootstrap: Bootstrap from Git workspace (import from gnulib)
+ * bootstrap.conf: Bootstrap configuration for GNU make
+ * bootstrap.bat: Bootstrap from Git workspace for Windows
+ * gl/modules/make-glob: Support our local fnmatch/glob implementation
+
+ * config/acinclude.m4: Move to m4/
+ * config/dospaths.m4: Move to m4/
+ * glob/fnmatch.c: Move to lib/
+ * glob/fnmatch.h.in: Move to lib/
+ * glob/glob.c: Move to lib/
+ * glob/glob.h.in: Move to lib/
+
+ * Makefile.am: Update for new directories
+ * build.template: Update for new directories
+ * build_w32.bat: Update for new directories
+ * builddos.bat: Update for new directories
+ * maintMakefile: Update for new directories
+ * makefile.com: Update for new directories
+ * mk/Amiga.mk: Update for new directories
+ * mk/Posix.mk.in: Update for new directories
+ * mk/VMS.mk: Update for new directories
+ * mk/Windows32.mk: Update for new directories
+ * mk/msdosdjgpp.mk: Update for new directories
+
+ * po/LINGUAS: One language per line (needed by gnulib)
+
+ * INSTALL: Remove (obtained from gnulib)
+ * src/alloca.c: Remove (obtained from gnulib)
+ * src/getloadavg.c: Remove (obtained from gnulib)
+ * po/Makevars: Remove (created by bootstrap)
+ * config/*: Remove leftover files
+ * glob/*: Remove leftover files
+
+2018-07-01 Paul Smith <psmith@nuodb.com>
+
+ * Makefile.ami, glob/Makefile.ami: Remove obsolete files
+
+2018-07-01 Ola Olsson <ola1olsson@gmail.com>
+
+ * doc/make.texi: Updated language
+
+2018-07-01 Paul Smith <psmith@gnu.org>
+
+ * all: Update Copyright statements for 2018
+
+ * scripts/copyright-update: Maintainer's script for copyright mgmt
+
+2018-02-10 Paul Smith <psmith@gnu.org>
+
+ * build_w32.bat: Support Visual Studio 17.
+
+2017-11-19 Paul Smith <psmith@gnu.org>
+
+ * configure.ac: Support GLIBC glob interface version 2
+
+2017-11-19 Paul Smith <psmith@gnu.org>
+
+ Rework directory structure to use GNU-recommended "src" directory.
+ Move the source code (other than glob) into the "src" subdirectory.
+ Update all scripting and recommendations to support this change.
+
+ * *.c, *.h, w32/*: Move to src/
+ * configure.ac, Makefile.am, maintMakefile: Locate new source files.
+ * Basic.mk.template, mk/*: Update for new source file locations.
+ * NEWS, README.DOS.template: Update for new locations.
+ * build.template, build_w32.bat, builddos.bat: Ditto.
+ * po/POTFILES.in: Ditto
+ * tests/run_make_tests.pl, tests/scripts/features/load*: Ditto.
+ * make.1: Move to doc.
+ * mk/VMS.mk: Add support for building on VMS (hopefully).
+ * makefile.vms, prepare_w32.bat: Remove.
+ * SCOPTIONS: Update to define HAVE_CONFIG_H
+
+2017-11-18 Paul Smith <psmith@gnu.org>
+
+ * job.c: Add "command" as a known shell built-in.
+ This is not a POSIX shell built-in but it's common in UNIX shells.
+ Reported by Nick Bowler <nbowler@draconx.ca>.
+
+ * tests/scripts/features/output-sync: Revert bad change in 0c5a9f9b92a
+
+2017-11-18 Paul Smith <psmith@gnu.org>
+
+ Remove unsupported build facilities.
+ Over time the non-standard build and install systems (nmake files,
+ smake files, Visual Studio project files, etc.) have atrophied and
+ maintaining them is not worth the effort, for such a simple utility
+ as make. Remove all the non-standard build tool support and unify
+ OS-specific build rules under a basic set of (GNU make) makefiles.
+
+ Preserve the existing bootstrapping scripts (for POSIX, Windows,
+ and MS-DOS). Also the existing VMS build scripts are left unchanged:
+ I don't have enough experience with VMS to venture into this area.
+ Perhaps one of the VMS maintainers might like to determine whether
+ conversion would be appropriate.
+
+ Rather than create libraries for w32 and glob (non-POSIX), simply
+ link the object files directly to remove the complexity.
+
+ * NEWS: Update with user-facing notes.
+ * Makefile.am: Clean up to use the latest automake best practices.
+ Build Windows code directly from the root makefile to avoid recursion.
+ * README.Amiga, README.DOS.template, README.W32.template: Updated.
+ * INSTALL: Point readers at the README.git file.
+ * maintMakefile: Remove obsolete files. Create Basic.mk file.
+ * Basic.mk.template, mk/*.mk: Create basic GNU make-based makefiles.
+ * build_w32.bat: Copy Basic.mk to Makefile
+ * configure.ac: We no longer need AM_PROG_AR.
+ * dosbuild.bat: Rename to builddos.bat. Incorporate configure.bat.
+ * Makefile.DOS.template: Remove.
+ * NMakefile.template, w32/subproc/NMakefile: Remove.
+ * SMakefile.template, glob/SMakefile, glob/SCOPTIONS, make.lnk: Remove.
+ * configure.bat, glob/configure.bat: Remove.
+ * w32/Makefile.am: Remove.
+ * make_msvc_net2003.sln, make_msvc_net2003.vcproj: Remove.
+
+2017-11-11 Paul Smith <psmith@gnu.org>
+
+ * Makefile.am: Add jhelp.pl to remote test setup.
+
+2017-11-11 Paolo Bonzini <pbonzini@redhat.com>
+
+ Do not use STOP_SET for singleton compares.
+ Compare against '$' directly rather than using MAP_VARIABLE.
+ This saves ~10% for find_map_function, which is the top hotspot in
+ QEMU's no-op build. The build is sped up overall by about 1.5%
+ more (from 11.1s to 10.95s).
+
+ * read.c (find_map_function): Do not compare against singleton sets.
+
+2017-11-11 Paolo Bonzini <pbonzini@redhat.com>
+
+ Speedup parsing of functions.
+ Use the stopchar map to quickly jump over everything that is
+ not an open/close brace, an open/close parenthesis or a comma.
+
+ This saves 1% on QEMU's noop build (from 11.23s to 11.1s).
+
+ * function.c (find_next_argument, handle_function): Check
+ with STOP_SET before comparing against individual characters.
+ * main.c (initialize_stopchar_map): Initialize MAP_VARSEP
+ mappings in stopchar_map.
+ * makeint.h (MAP_VARSEP): New.
+
+2017-11-11 Paolo Bonzini <pbonzini@redhat.com>
+
+ Remove MAP_PERCENT as strchr is faster.
+ * read.c (find_percent_cached): Use strchr instead of STOP_SET
+ to find % or nul.
+ * makeint.h (MAP_PERCENT): Remove.
+ * main.c (initialize_stopchar_map): Remove.
+
+2017-11-11 Paolo Bonzini <pbonzini@redhat.com>
+
+ Use Jenkins hash.
+ This is about twice as fast as the current hash, and removes the
+ need for double hashing (improving locality of reference). The
+ hash function is based on Bob Jenkins' design, slightly adapted
+ wherever Make needs to hash NUL-terminated strings. The old hash
+ function is kept for case-insensitive hashing.
+
+ This saves 8.5% on QEMU's no-op build (from 12.87s to 11.78s).
+
+ * configure.ac: Check endianness.
+ * hash.c (rol32, jhash_mix, jhash_final, JHASH_INITVAL,
+ sum_get_unaligned_32, jhash): New.
+ * hash.h (STRING_HASH_1, STRING_N_HASH_1): Use jhash.
+ (STRING_HASH_2, STRING_N_HASH_2): Return a dummy value.
+ (STRING_N_COMPARE, return_STRING_N_COMPARE): Prefer memcmp to strncmp.
+
+2017-11-11 Paolo Bonzini <pbonzini@redhat.com>
+
+ Use strchr for simple case of find_char_unquote.
+ In most cases, find_char_unquote has a single stopchar. In that
+ case we can look for it using strchr's optimized implementation.
+
+ This saves 3.5% on QEMU's noop build (from 11.78s to 11.37s).
+
+ * read.c (find_char_unquote): Rename to find_map_unquote. Replace
+ with an implementation optimized for the case where the stopchar
+ is a singleton. Adjust all callers.
+
+2017-11-11 Paolo Bonzini <pbonzini@redhat.com>
+
+ Use strchr/memmove in collapse_continuations.
+ collapse_continuations is already using strchr to speed up the
+ common case of no backslash-newline sequence, but on modern
+ processors it is faster to scan the string twice with
+ strchr+memmove (or strlen+memmove) than to move bytes manually.
+
+ Saves about 1.5% on QEMU's no-op build (from 11.37s to 11.23s).
+
+ * misc.c (collapse_continuations): Rewrite the scanning of LINE.
+
+2017-10-31 Paul Smith <psmith@gnu.org>
+
+ * main.c (main): [SV 48274] Allow -j in makefile MAKEFLAGS variable.
+ * tests/jhelp.pl: New file to allow testing parallelism without sleep.
+ * tests/scripts/features/parallelism: Test this.
+ * tests/scripts/features/jobserver: Update tests.
+ * tests/scripts/features/output-sync: Remove useless rm command.
+
+2017-10-30 Paul Smith <psmith@gnu.org>
+
+ * job.c (child_error): Modify error message string.
+ Ensure Emacs compile-mode's next-error doesn't match target failure
+ messages. Syntax errors in makefiles are still matched.
+
+ * function.c (func_if): Check the first character of condition.
+ Reported by Rob W <robw9739@gmail.com>
+
+2017-10-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ glob: Do not assume glibc glob internals.
+ It has been proposed that glibc glob start using gl_lstat,
+ which the API allows it to do. GNU 'make' should not get in
+ the way of this. See:
+ https://sourceware.org/ml/libc-alpha/2017-09/msg00409.html
+
+ * dir.c (local_lstat): New function, like local_stat.
+ (dir_setup_glob): Use it to initialize gl_lstat too, as the API
+ requires.
+
+2017-10-30 Paul Smith <psmith@gnu.org>
+
+ Compute load from number of running processes.
+ * job.c (load_too_high): If /proc/loadavg is available, compare the
+ maximum load against the number of processes currently running. If
+ we can't parse /proc/loadavg, use the previous algorithm.
+
+ Concept and initial patch from Sven C. Dack <sven.c.dack@sky.com>
+
+2017-09-30 Eli Zaretskii <eliz@gnu.org>
+
+ Fix checking existence of directories on MS-Windows
+ * remake.c (name_mtime) [WINDOWS32]: Emulate Posix behavior of
+ 'stat' with the likes of "foo/" and "foo/.".
+
+2017-07-09 Paul Smith <psmith@gnu.org>
+
+ Update copyright statements for 2017.
+
+ Remove uses of unnecessary "register" keyword.
+
+ * variable.c (create_pattern_var): [SV 51266] Create with xcalloc().
+ Reported by Chris Metcalf <cmetcalf@mellanox.com>
+
+ [SV 51400] Only unblock fatal signals after child invocation
+ * job.c (unblock_sigs): Only unblock fatal signals not all signals.
+ (unblock_all_sigs): Unblock all signals not just fatal signals.
+ (child_execute_job): Call unblock_all_sigs() in child process.
+ * job.h: Remove unused function definitions.
+ * remote-cstms.c (start_remote_job): Call unblock_all_sigs() in
+ child process.
+ Reported by Koen Van Hoof <koen.van_hoof@nokia.com>
+
+2017-07-01 Paul Smith <psmith@gnu.org>
+
+ * function.c (shell_completed): [SV 51014] Add signal to .SHELLSTATUS
+ * tests/scripts/functions/shell: Verify that .SHELLSTATUS contains
+ a non-0 value when the shell exits due to a signal.
+
+2017-06-07 Eli Zaretskii <eliz@gnu.org>
+
+ Avoid crashes when SHELL=abcde is specified on the command line
+ * variable.c (do_variable_definition): If $SHELL was not found,
+ process "SHELL=foo" as any other variable definition. This avoids
+ segfaults when SHELL=foo is specified on the Make command line.
+ Reported by Orgad Shaneh <orgads@gmail.com>.
+
+2017-06-04 Paul Smith <psmith@gnu.org>
+
+ [SV 51159] Use a non-blocking read with pselect to avoid hangs.
+ * posixos.c (set_blocking): Set blocking on a file descriptor.
+ (jobserver_setup): Set non-blocking on the jobserver read side.
+ (jobserver_parse_auth): Ditto.
+ (jobserver_acquire_all): Set blocking to avoid a busy-wait loop.
+ (jobserver_acquire): If the non-blocking read() returns without
+ taking a token then try again.
+
+ [SV 50823] Support filenames containing '$' in MAKEFILE_LIST
+ * variable.h (enum variable_flavor: Add a new flavor for appended
+ values that shouldn't be expanded.
+ * variable.c (do_variable_definition): If given this new flavor,
+ do not expand the value before appending it.
+ * read.c (eval_makefile): Use this new flavor for MAKEFILE_LIST
+ * tests/scripts/variables/MFILE_LIST: Test filenames containing '$'.
+
+ * tests/test_driver.pl: Useful error if given an invalid test name.
+
+ * NEWS: Do not insert a space during '+=' if the value is empty.
+ * doc/make.texi (Appending): Document this behavior.
+ * variable.c (do_variable_definition): Only add a space if the variable
+ value is not empty.
+ * tests/scripts/variables/flavors: Test this behavior.
+
+2017-06-04 Enrique Olaizola <enrique_olaizola16@hotmail.com> (tiny change)
+
+ * read.c (read_all_makefiles): [SV 50909] Add MAKEFILES to strcache
+
+2017-06-04 Paul Smith <psmith@gnu.org>
+
+ * po/LINGUAS: Add support for traditional Chinese (zh_TW)
+
+ Rename output_tmpfile() to a misc function get_tmpfile()
+ * output.c: Remove output_tmpfile() and umask handling.
+ * output.h: Ditto.
+ * misc.c: Add get_tmpfile() and umask handling.
+ * makeint.h: Ditto.
+ * function.c: Rename output_tmpfile() to get_tmpfile().
+ * main.c: Ditto.
+ * vmsjobs.c: Ditto.
+
+ [SV 13651] Handle out-of-memory conditions slightly more gracefully.
+ * makeint.h: Change OUT_OF_MEM() macro to out_of_memory() function.
+ * output.h, job.h: Move FD_* macros from job.h to output.h.
+ * output.c (output_write): Write a buffer to an FD directly.
+ (out_of_memory): Use output_write() to avoid allocating more
+ memory while writing the error, and call exit() instead of die().
+ This does mean we can't translate the error string, though.
+ * misc.c (xmalloc, xcalloc, xrealloc, xstrdup, xstrndup): Call new
+ out_of_memory() rather than OUT_OF_MEM().
+ * read.c (parse_file_seq): Ditto.
+
+ Clean up close-on-exec, particularly with jobserver pipes.
+ * configure.ac: Check sys/file.h and assume fileno() always exists.
+ * output.h: Move output-specific content from job.h to output.h.
+ * os.h (fd_inherit, fd_noinherit): New functions manage FD inheritance.
+ * posixos.c (fd_inherit, fd_noinherit): Implement for POSIX systems.
+ (jobserver_setup): Force jobserver FDs to not be inherited by default.
+ (jobserver_pre_child): Enable inheritance in recursive invocations.
+ (jobserver_post_child): Disable inheritance after recursive invocations.
+ * w32/w32os.c (fd_inherit, fd_noinherit): Implement for W32 systems.
+ * job.h (CLOSE_ON_EXEC): Remove macro in deference to new fd_noinherit.
+ * function.c (func_shell_base): Convert CLOSE_ON_EXEC to fd_noinherit.
+ * job.c (child_execute_job): Ditto.
+ * output.c (setup_tmpfile): Ditto.
+ * read.c (eval_makefile): Ditto, plus remove HAVE_FILENO check.
+ * w32/include/sub_proc.h: Remove process_noinherit for fd_noinherit.
+ * w32/subproc/sub_proc.c: Ditto.
+
+ [SV 50300] Use CFLAGS value of "-O1" in POSIX mode.
+ * read.c (record_files): Use "-O1" not "-O" for CFLAGS and FFLAGS.
+ * tests/scripts/targets/POSIX: Test for the new value.
+
+ * configure.ac: [SV 50648] Detect Guile 2.2 packages.
+
+ * doc/make.texi: [SV 50304] Add missing close parenthesis.
+
+ Add test suite support to Windows
+ * main.c (main): Sanitize program name detection on Windows.
+ * makeint.h: 'program' is a const string on all platforms now.
+ * tests/run_make_tests.bat: Windows bat file to invoke tests
+ * tests/test_driver.pl: Obtain system-specific error messages.
+ (get_osname): Compute the $port_type here. Add more $osname checks
+ for different Windows Perl ports.
+ (_run_command): Rewrite the timeout capability to work properly
+ with Windows. Don't use Perl fork/exec; instead use system(1,...)
+ which allows a more reliable/proper kill operation.
+ Also, allow options to be given as a list instead of a string, to
+ allow more complex quoting of command-line arguments.
+ * tests/run_make_tests.pl (run_make_with_options): Allow options
+ to be provided as a list in addition to a simple string.
+ (set_more_defaults): Write sample makefiles and run make on them
+ instead of trying to run echo and invoking make with -f-, to avoid
+ relying on shell and echo to get basic configuration values. Also
+ create a $sh_name variable instead of hard-coding /bin/sh.
+ * tests/scripts/features/archives: Skip on Windows.
+ * tests/scripts/features/escape: Use list method for passing options.
+ * tests/scripts/features/include: Use system-specific error messages.
+ * tests/scripts/features/output-sync: "Command not found" errors
+ generate very different / odd output on Windows. This needs to be
+ addressed but for now disable these tests on Windows.
+ * tests/scripts/functions/abspath: Disable on Windows.
+ * tests/scripts/functions/file: Use system-specific error messages.
+ * tests/scripts/functions/shell: "Command not found" errors generate
+ very different / odd output on Windows. This needs to be addressed
+ but for now disable these tests on Windows.
+ * tests/scripts/misc/close_stdout: Disable on Windows.
+ * tests/scripts/options/dash-k: Use system-specific error messages.
+ * tests/scripts/options/dash-l: Disable on Windows.
+ * tests/scripts/options/eval: Use list method for passing options.
+ * tests/scripts/options/general: Skip some non-portable tests.
+ * tests/scripts/targets/ONESHELL: Skip some non-portable tests.
+ * tests/scripts/targets/POSIX: Skip some non-portable tests.
+ * tests/scripts/variables/MAKEFILES: Skip some non-portable tests.
+ * tests/scripts/variables/SHELL: Use a makefile not -f- for testing.
+
+2017-06-04 Enrique Olaizola <enrique_olaizola16@hotmail.com>
+
+ * tests/run_make_tests.pl: [SV 50902] Find Perl modules
+
+2017-01-11 Eli Zaretskii <eliz@gnu.org>
+
+ [SV 50021] Avoid infloop on MS-Windows with short scripts
+ * job.c (reap_children) [WINDOWS32]: Avoid recursive call to
+ reap_children when the argument passed to
+ map_windows32_error_to_string is negative or too large.
+
+2016-12-28 Paul Smith <psmith@gnu.org>
+
+ * main.c (switches): Add -E as an alias for --eval.
+ * make.1: Document the -E and --eval options.
+ * doc/make.texi: Document the -E option.
+ * tests/scripts/options/eval: Test the -E option and MAKEFILES.
+ * NEWS: Add information about the new option.
+
+ * main.c (switches): Add --no-silent to undo -s options.
+ * make.1: Document the new flag.
+ * doc/make.texi: Document the new flag. Remove suggestions that the
+ .SILENT special target is deprecated or should not be used.
+ * tests/scripts/options/dash-s: Test the -s and --no-silent options.
+ * NEWS: Add information about the new option.
+
+2016-12-26 Martin Dorey <martin.dorey@hds.com>
+
+ * job.c (child_execute_job): [SV 49938] Avoid spurious GCC warning.
+
+ * main.c (main): [SV 49935] Fix uninitialized variable.
+
+2016-12-26 Paul Smith <psmith@gnu.org>
+
+ [SV 40236] Handle included file open failures properly.
+ * read.c (eval_makefile): Set deps->error if we discovered any
+ error reading makefiles, and set NONEXISTENT_MTIME so we know
+ it needs to be rebuilt.
+ * main.c (main): Clean up management of makefile_mtimes.
+ * tests/scripts/features/include: Add open failure testcases.
+
+ Portability changes for the test suite.
+ * tests/test_driver.pl: Save error strings for later comparison.
+ * tests/run_make_tests.pl: Create portable commands for later use.
+ * tests/*: Use these new variables.
+
+ [SV 20513] Un-escaped # are not comments in function invocations
+ * NEWS: Document the change, as a backward-incompatible change.
+ * main.c (main): Add 'nocomment' to the .FEATURES variable.
+ * read.c (remove_comments): Skip variable references during remove.
+ (find_char_unquote): Fix comments for new STOPMAP support.
+ * tests/scripts/features/escape: Test new escape syntax.
+ * tests/scripts/functions/guile: Ditto.
+ * tests/scripts/functions/shell: Ditto.
+
+ * main.c (main): [SV 40234] Show correct error message.
+
+2016-12-26 Christoph Schulz <develop@kristov.de>
+
+ * main.c (switches): [SV 48809] Accept obsolete jobserver flag.
+
+2016-12-26 Paul Smith <psmith@gnu.org>
+
+ * read.c (get_next_mword): [SV 49865] Make fallthrough explicit.
+
+ [SV 49114] Remove support for the NO_FLOAT compile flag.
+ * makeint.h (max_load_average): Always a double.
+ * main.c (max_load_average, default_load_average): Always doubles.
+ (switches): -l option is a "floating" format.
+ (decode_switches, define_makeflags): Support "floating" format.
+ * remake.c (f_mtime): Show time skew as double.
+ * rule.c (print_rule_data_base): Show percentages as double.
+ * Makefile.ami, README.DOS.template, SMakefile.template: Remove
+ references to NO_FLOAT.
+ * SCOPTIONS, glob/SCOPTIONS: Remove NO_FLOAT settings.
+
+ [SV 45477] [SV 49115] Parse DOS/Windows drivespecs correctly.
+ * read.c (parse_file_seq) [WINDOWS32]: Only consider a colon part of
+ a path if it's in a valid Windows drivespec.
+
+2016-12-25 Paul Smith <psmith@gnu.org>
+
+ [SV 49116] Check potential null pointer dereference.
+ * w32/subproc/sub_proc.c (make_command_line): Simplify cygwin shell
+ check for correctness.
+
+2016-12-25 Jaak Ristioja <jaak@ristioja.ee>
+
+ * expand.c (variable_append): [SV 49113] Possible null ptr deref
+
+ * w32/*/dirent.*: [SV 49111] Remove unused telldir()
+
+2016-12-25 Paul Smith <psmith@gnu.org>
+
+ Add more GCC warnings to the maintainer build.
+ * arscan.c: [SV 49112] Correct TEST printf() formatting.
+ Recommended by Jaak Ristioja <jaak@ristioja.ee>
+ * hash.c: Correct fprintf() formatting.
+ * maintMakefile: Add extra GCC warning flags.
+
+ * po/Makevars, makeint.h, debug.h: Add xgettext C format flags.
+
+ * po/LINGUAS: Added Serbian translation.
+
+ * README.template: Clarify some items in the README
+
+ * doc/make.texi: [SV 48951] Fix documentation typo.
+
+ * maintMakefile: Update default GPG ID for new key.
+
+2016-12-14 Paul Smith <psmith@gnu.org>
+
+ Resolve issues discovered by static code analysis.
+ * maintMakefile: Add a rule to submit code for analysis.
+ * configure.ac: Check for availability of the umask() function.
+ * output.c (output_tmpfd, output_tmpfile): Use umask on temp files.
+ * makeint.h (PATH_VAR): Reserve an extra character for nul bytes.
+ * function.c (func_error): Initialize buffer to empty string.
+ * job.c (child_execute_job): Verify validity of fdin.
+ * main.c (main): Simplify code for makefile updating algorithm.
+ * arscan.c (ar_scan): Verify member name length before reading.
+ * read.c (readline): Cast pointer arithmetic to avoid warnings.
+ * remake.c (update_file): Remove unreachable code.
+ (name_mtime): Verify symlink name length.
+
+2016-11-12 Eli Zaretskii <eliz@gnu.org>
+
+ * NEWS: Mention the extended support for -jN on MS-Windows.
+
+2016-11-12 Marc Ullman <marc@mathworks.com>
+
+ Support more than 63 jobs on MS-Windows
+ * job.c (start_waiting_job, load_too_high):
+ * w32/w32os.c (jobserver_setup, jobserver_acquire): Abstracted out
+ MAXIMUM_WAIT_OBJECTS. Call process_table_full instead.
+ * w32/include/sub_proc.h: Update and add prototypes.
+ * w32/subproc/sub_proc.c (GMAKE_MAXIMUM_WAIT_OBJECTS): New macro.
+ (process_wait_for_multiple_objects): Drop-in replacement for Windows
+ API WaitForMultipleOjects.
+ (process_wait_for_any_private): Replaced MAXIMUM_WAIT_OBJECTS with
+ GMAKE_MAXIMUM_WAIT_OBJECTS.
+ (process_table_full): Replacement for process_used_slots.
+ (process_used_slots): Removed, as no longer needed.
+ (process_table_usable_size): Returns maximum usable size of process
+ table.
+ (process_table_actual_size): Returns actual size of process table.
+ (process_register): Added assertion.
+ (process_easy): Abstracted out MAXIMUM_WAIT_OBJECTS.
+
+2016-10-09 Eli Zaretskii <eliz@gnu.org>
+
+ Only include strings.h in MinGW builds
+ * main.c:
+ * job.c: Include strings.h only if HAVE_STRINGS_H is defined.
+
+ * config.h.W32.template (HAVE_STRINGS_H): Define only for MinGW,
+ as MSVC doesn't have this header.
+
+2016-10-06 Eli Zaretskii <eliz@gnu.org>
+
+ Update the Guile version tested with the MS-Windows build.
+
+ Avoid compiler warnings with MinGW runtime 3.22.2
+ * main.c:
+ * job.c: Include strings.h, to get the prototypes of strcasecmp
+ and strncasecmp with latest MinGW runtime versions.
+ * config.h.W32.template (HAVE_STRINGS_H): Define.
+
+2016-06-24 Paul Smith <psmith@gnu.org>
+
+ * README.W32.template: Update the build documentation.
+ * build_w32.bat: Fix issues with Visual Studio builds. Fix an error
+ that always created Debug builds. Support 32bit and 64bit builds.
+
+ * Update to pre-release version 4.2.90.
+
2016-06-10 Paul Smith <psmith@gnu.org>
GNU Make release 4.2.1.
diff --git a/INSTALL b/INSTALL
deleted file mode 100644
index 095b1eb..0000000
--- a/INSTALL
+++ /dev/null
@@ -1,231 +0,0 @@
-Installation Instructions
-*************************
-
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004 Free
-Software Foundation, Inc.
-
-This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
-
-Basic Installation
-==================
-
-These are generic installation instructions.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
- It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. (Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.)
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
- The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You only need
-`configure.ac' if you want to change it or regenerate `configure' using
-a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
-
- Running `configure' takes awhile. While running, it prints some
- messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package.
-
- 4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
-Compilers and Options
-=====================
-
-Some systems require unusual options for compilation or linking that the
-`configure' script does not know about. Run `./configure --help' for
-details on some of the pertinent environment variables.
-
- You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment. Here
-is an example:
-
- ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
-
- *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
-You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
- If you have to use a `make' that does not support the `VPATH'
-variable, you have to compile the package for one architecture at a
-time in the source code directory. After you have installed the
-package for one architecture, use `make distclean' before reconfiguring
-for another architecture.
-
-Installation Names
-==================
-
-By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc. You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PREFIX'.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-give `configure' the option `--exec-prefix=PREFIX', the package will
-use PREFIX as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-options like `--bindir=DIR' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
-Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
-There may be some features `configure' cannot figure out automatically,
-but needs to determine by the type of machine the package will run on.
-Usually, assuming the package is built to be run on the _same_
-architectures, `configure' can figure that out, but if it prints a
-message saying it cannot guess the machine type, give it the
-`--build=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
- CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
- OS KERNEL-OS
-
- See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
- If you are _building_ compiler tools for cross-compiling, you should
-use the `--target=TYPE' option to select the type of system they will
-produce code for.
-
- If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
-If you want to set default values for `configure' scripts to share, you
-can create a site shell script called `config.site' that gives default
-values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
-Variables not defined in a site shell script can be set in the
-environment passed to `configure'. However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost. In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'. For example:
-
- ./configure CC=/usr/local2/bin/gcc
-
-will cause the specified gcc to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-`configure' Invocation
-======================
-
-`configure' recognizes the following options to control how it operates.
-
-`--help'
-`-h'
- Print a summary of the options to `configure', and exit.
-
-`--version'
-`-V'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`--cache-file=FILE'
- Enable the cache: use and save the results of the tests in FILE,
- traditionally `config.cache'. FILE defaults to `/dev/null' to
- disable caching.
-
-`--config-cache'
-`-C'
- Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`configure' also accepts some other, not widely useful, options. Run
-`configure --help' for more details.
-
diff --git a/Makefile.DOS b/Makefile.DOS
deleted file mode 100644
index d05acd4..0000000
--- a/Makefile.DOS
+++ /dev/null
@@ -1,819 +0,0 @@
-# -*-Makefile-*- template for DJGPP
-# Makefile.in generated automatically by automake 1.2 from Makefile.am
-#
-# Copyright (C) 1994-2016 Free Software Foundation, Inc.
-# This file is part of GNU Make.
-#
-# GNU Make is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 3 of the License, or (at your option) any later
-# version.
-#
-# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program. If not, see <http://www.gnu.org/licenses/>.
-
-SHELL = /bin/sh
-
-srcdir = .
-VPATH = $(srcdir)
-# $DJDIR is defined automatically by DJGPP to point
-# to the root of the DJGPP installation tree.
-prefix = /dev/env/DJDIR
-exec_prefix = ${prefix}
-
-bindir = /bin
-datadir = /share
-libdir = /lib
-infodir = /info
-mandir = /man
-includedir = /include
-oldincludedir = c:/djgpp/include
-
-DESTDIR = /dev/env/DJDIR
-
-pkgdatadir = $(datadir)/make
-pkglibdir = $(libdir)/make
-pkgincludedir = $(includedir)/make
-localedir = $(datadir)/locale
-
-INSTALL = ${exec_prefix}/bin/ginstall -c
-INSTALL_PROGRAM = ${exec_prefix}/bin/ginstall -c
-INSTALL_DATA = ${exec_prefix}/bin/ginstall -c -m 644
-INSTALL_SCRIPT = ${exec_prefix}/bin/ginstall -c
-transform = s,x,x,
-
-# This will fail even if they don't have a Unix-like shell (stock DOS
-# shell doesn't know about `false'). The only difference is that they
-# get "Error -1" instead of "Error 1".
-EXIT_FAIL = false
-
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-EXEEXT = .exe
-OBJEXT = o
-
-AR = ar
-AWK = gawk
-CC = gcc
-CPP = gcc -E
-LIBOBJS =
-MAKEINFO = ${exec_prefix}/bin/makeinfo
-PACKAGE = make
-PERL = perl
-RANLIB = ranlib
-REMOTE = stub
-VERSION = 4.2.1
-
-AUTOMAKE_OPTIONS = 1.2
-
-bin_PROGRAMS = make$(EXEEXT)
-
-make_SOURCES = ar.c arscan.c commands.c default.c dir.c expand.c file.c function.c getopt.c getopt1.c guile.c implicit.c job.c load.c loadapi.c main.c misc.c posixos.c output.c read.c remake.c rule.c signame.c strcache.c variable.c version.c vpath.c hash.c remote-$(REMOTE).c
-# This should include the glob/ prefix
-libglob_a_SOURCES = glob/fnmatch.c glob/glob.c glob/fnmatch.h glob/glob.h
-make_LDADD = glob/libglob.a
-
-man_MANS = make.1
-
-INCLUDES = -I$(srcdir)/glob -DLIBDIR=\"$(prefix)$(libdir)\" -DINCLUDEDIR=\"$(prefix)$(includedir)\" -DLOCALEDIR=\"$(prefix)$(localedir)\"
-
-BUILT_SOURCES = README build.sh-in
-
-EXTRA_DIST = $(BUILT_SOURCES) $(man_MANS) README.customs remote-cstms.c make-stds.texi texinfo.tex SCOPTIONS SMakefile Makefile.ami README.Amiga config.ami amiga.c amiga.h NMakefile README.DOS configh.dos configure.bat makefile.com README.W32 build_w32.bat config.h-W32 subproc.bat make.lnk config.h-vms makefile.vms README.VMS vmsdir.h vmsfunctions.c vmsify.c gmk-default.scm gmk-default.h
-
-SUBDIRS = glob doc
-mkinstalldirs = ${exec_prefix}/bin/gmkdir -p
-CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = build.sh
-PROGRAMS = $(bin_PROGRAMS)
-
-MAKE_HOST = i386-pc-msdosdjgpp
-
-
-DEFS = -I. -I$(srcdir) -I.
-CPPFLAGS = -DHAVE_CONFIG_H
-LDFLAGS =
-LIBS =
-make_OBJECTS = ar.o arscan.o commands.o default.o dir.o expand.o file.o function.o getopt.o getopt1.o guile.o implicit.o job.o load.o loadapi.o main.o misc.o posixos.o output.o read.o remake.o rule.o signame.o strcache.o variable.o version.o vpath.o hash.o remote-$(REMOTE).o
-make_DEPENDENCIES = glob/libglob.a
-make_LDFLAGS =
-libglob_a_LIBADD =
-libglob_a_OBJECTS = fnmatch.o glob.o
-noinst_LIBRARIES = glob/libglob.a
-CFLAGS = -O2 -g
-COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
-TEXI2DVI = texi2dvi
-TEXINFO_TEX = $(srcdir)/config/texinfo.tex
-INFO_DEPS = doc/make.info
-DVIS = doc/make.dvi
-TEXINFOS = doc/make.texi
-noinst_TEXINFOS = doc/fdl.texi doc/make-stds.texi
-man1dir = $(mandir)/man1
-MANS = $(man_MANS)
-
-NROFF = nroff
-DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL Makefile.am Makefile.in NEWS acconfig.h aclocal.m4 alloca.c build.sh-in config.h-in configure configure.ac getloadavg.c
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
-TAR = gtar
-GZIP = --best
-SOURCES = $(make_SOURCES)
-OBJECTS = $(make_OBJECTS)
-HEADERS = $(wildcard $(srcdir)/*.h)
-
-default: all
-
-.SUFFIXES:
-.SUFFIXES: .c .dvi .info .o .obj .ps .texi .tex .html
-
-mostlyclean-hdr:
-
-clean-hdr:
-
-distclean-hdr:
- -rm -f config.h
-
-maintainer-clean-hdr:
-
-mostlyclean-binPROGRAMS:
-
-clean-binPROGRAMS:
- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
-
-distclean-binPROGRAMS:
-
-maintainer-clean-binPROGRAMS:
-
-install-binPROGRAMS: $(bin_PROGRAMS)
- @$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(bindir)
- @list='$(bin_PROGRAMS)'; for p in $$list; do if test -f $$p; then echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p | sed '$(transform)'`"; $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p | sed '$(transform)'`; else :; fi; done
-
-uninstall-binPROGRAMS:
- $(NORMAL_UNINSTALL)
- list='$(bin_PROGRAMS)'; for p in $$list; do rm -f $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`.exe; done
-
-.c.o:
- $(COMPILE) -c $<
-
-clean-noinstLIBRARIES:
- -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT) *$(EXEEXT) make.new core
-
-clean-compile:
-
-distclean-compile:
- -rm -f *.tab.c *_tab.c
-
-maintainer-clean-compile:
-
-make$(EXEEXT): $(make_OBJECTS) $(make_DEPENDENCIES)
- @command.com /c if exist make del make
- @command.com /c if exist make.exe del make.exe
- $(LINK) $(make_LDFLAGS) $(make_OBJECTS) $(make_LDADD) $(LIBS)
-
-# Documentation
-
-make.info: make.texi
-make.dvi: make.texi
-make.ps: make.dvi make.texi
-make.html: make.texi
-
-
-DVIPS = dvips
-
-.texi.info:
- @command.com /c if exist make.info* del make.info*
- @command.com /c if exist make.i* del make.i*
- $(MAKEINFO) -I$(srcdir) --no-split $< -o ./$@
-
-.texi:
- @command.com /c if exist make.info* del make.info*
- @command.com /c if exist make.i* del make.i*
- $(MAKEINFO) -I$(srcdir) --no-split $< -o ./$@
-
-.texi.dvi:
- TEXINPUTS="$(srcdir);$$TEXINPUTS" MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
-
-.dvi.ps:
- $(DVIPS) $< -o $@
-
-# Other documentation formats
-
-html: html-recursive
-
-.texi.html:
- @command.com /c if exist make.html* del make.html*
- $(MAKEINFO) --html -I$(srcdir) --no-split $< -o ./$@
-
-install-info-am: $(INFO_DEPS)
- @$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(infodir)
- @for file in $(INFO_DEPS); do iifile=`echo $$file | sed "s|doc/||"`; d=$(srcdir); for ifile in `cd $$d && echo $$file`; do if test -f $$d/$$ifile; then echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$iifile"; $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$iifile; else : ; fi; done; done
- @$(POST_INSTALL)
- @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then for file in $(INFO_DEPS); do iifile=`echo $$file | sed "s|doc/||"`; echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$iifile"; install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$iifile || :; done; else : ; fi
-
-uninstall-info:
- $(PRE_UNINSTALL)
- @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then ii=yes; else ii=; fi; for file in $(INFO_DEPS); do test -z $ii || install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; done
- $(NORMAL_UNINSTALL)
- for file in $(INFO_DEPS); do (cd $(DESTDIR)$(infodir) && rm -f $$file); done
-
-dist-info: $(INFO_DEPS)
- for base in $(INFO_DEPS); do d=$(srcdir); for file in `cd $$d && eval echo $$base*`; do test -f $(distdir)/$$file || ln $$d/$$file $(distdir)/$$file 2> /dev/null || cp -p $$d/$$file $(distdir)/$$file; done; done
-
-mostlyclean-aminfo:
- -rm -f $(srcdir)/doc/make.aux $(srcdir)/doc/make.cp $(srcdir)/doc/make.cps $(srcdir)/doc/make.dvi \
- $(srcdir)/doc/make.fn $(srcdir)/doc/make.fns $(srcdir)/doc/make.ky $(srcdir)/doc/make.kys \
- $(srcdir)/doc/make.ps $(srcdir)/doc/make.log $(srcdir)/doc/make.pg $(srcdir)/doc/make.toc \
- $(srcdir)/doc/make.tp $(srcdir)/doc/make.tps $(srcdir)/doc/make.vr $(srcdir)/doc/make.vrs \
- $(srcdir)/doc/make.op $(srcdir)/doc/make.tr $(srcdir)/doc/make.cv $(srcdir)/doc/make.cn \
- $(srcdir)/doc/make.html
-
-clean-aminfo:
-
-distclean-aminfo:
-
-maintainer-clean-aminfo:
- for i in $(INFO_DEPS); do rm -f $$i*; done
-
-install-man1:
- $(mkinstalldirs) $(DESTDIR)$(man1dir)
- @list='$(man1_MANS)'; \
- l2='$(man_MANS)'; for i in $$l2; do \
- case "$$i" in \
- *.1*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
- else file=$$i; fi; \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
- $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
- done
-
-uninstall-man1:
- @list='$(man1_MANS)'; \
- l2='$(man_MANS)'; for i in $$l2; do \
- case "$$i" in \
- *.1*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
- rm -f $(DESTDIR)$(man1dir)/$$inst; \
- done
-install-man: $(MANS)
- @$(NORMAL_INSTALL)
- $(MAKE) install-man1
-uninstall-man:
- @$(NORMAL_UNINSTALL)
- $(MAKE) uninstall-man1
-
-# Assume that the only thing to do in glob is to build libglob.a,
-# but do a sanity check: if $SUBDIRS will ever have more than
-# a single directory, yell bloody murder.
-all-recursive:
-ifeq ($(findstring glob, $(SUBDIRS)), glob)
- @command.com /c if not exist glob\\nul md glob
- @echo Making all in glob
- $(MAKE) -C glob -f ../Makefile INCLUDES='-I$(srcdir) -I$(srcdir)/glob' DEFS='-I.. -I$(srcdir)' VPATH=$(srcdir)/glob libglob.a
-endif
-
-$(SUBDIRS):
- command.com /c md $@
-
-libglob.a: $(libglob_a_OBJECTS)
- command.com /c if exist libglob.a del libglob.a
- $(AR) cru libglob.a $(libglob_a_OBJECTS) $(libglob_a_LIBADD)
- $(RANLIB) libglob.a
-
-mostlyclean-recursive clean-recursive distclean-recursive \
-maintainer-clean-recursive check-recursive:
-ifeq ($(words $(SUBDIRS)), 2)
- @echo Making $(shell echo $@ | sed s/-recursive//) in glob
- $(MAKE) -C glob -f ../Makefile $(shell echo $@ | sed s/-recursive//)-am
- @echo Making $(shell echo $@ | sed s/-recursive//) in doc
- $(MAKE) -C doc -f ../Makefile $(shell echo $@ | sed s/-recursive//)-am
-else
- @echo FATAL: There is more than two directory in "($(SUBDIRS))"
- @$(EXIT_FAIL)
-endif
-
-tags-in-glob: $(libglob_a_SOURCES)
- etags $(addprefix $(srcdir)/,$^) -o ./glob/TAGS
-
-tags-recursive:
-ifeq ($(words $(SUBDIRS)), 2)
- $(MAKE) tags-in-glob
-else
- @echo FATAL: There is more than two directory in "($(SUBDIRS))"
- @$(EXIT_FAIL)
-endif
-
-tags: TAGS
-
-ID: $(HEADERS) $(SOURCES)
- mkid $(srcdir)/$(SOURCES) $(srcdir)/$(libglob_a_SOURCES) ./config.h $(HEADERS)
-
-TAGS: tags-recursive $(HEADERS) $(srcdir)/$(SOURCES) config.h $(TAGS_DEPENDENCIES)
- etags -i ./glob/TAGS $(ETAGS_ARGS) $(srcdir)/$(SOURCES) ./config.h $(HEADERS)
-
-mostlyclean-tags:
-
-clean-tags:
-
-distclean-tags:
- -rm -f TAGS ID
-
-maintainer-clean-tags:
-
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-
-# This target untars the dist file and tries a VPATH configuration. Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
- rm -rf $(distdir)
- GZIP=$(GZIP) $(TAR) zxf $(distdir).tar.gz
- mkdir $(distdir)/=build
- mkdir $(distdir)/=inst
- dc_install_base=`cd $(distdir)/=inst && pwd`; cd $(distdir)/=build && ../configure --srcdir=.. --prefix=$$dc_install_base && $(MAKE) && $(MAKE) dvi && $(MAKE) check && $(MAKE) install && $(MAKE) installcheck && $(MAKE) dist
- rm -rf $(distdir)
- @echo "========================"; echo "$(distdir).tar.gz is ready for distribution"; echo "========================"
-dist: distdir
- -chmod -R a+r $(distdir)
- GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir)
- rm -rf $(distdir)
-dist-all: distdir
- -chmod -R a+r $(distdir)
- GZIP=$(GZIP) $(TAR) chozf $(distdir).tar.gz $(distdir)
- rm -rf $(distdir)
-distdir: $(DISTFILES)
- rm -rf $(distdir)
- mkdir $(distdir)
- -chmod 777 $(distdir)
- @for file in $(DISTFILES); do d=$(srcdir); test -f $(distdir)/$$file || ln $$d/$$file $(distdir)/$$file 2> /dev/null || cp -p $$d/$$file $(distdir)/$$file; done; for subdir in $(SUBDIRS); do test -d $(distdir)/$$subdir || mkdir $(distdir)/$$subdir || exit 1; chmod 777 $(distdir)/$$subdir; (cd $$subdir && $(MAKE) top_distdir=../$(top_distdir)/$$subdir distdir=../$(distdir)/$$subdir distdir) || exit 1; done
- $(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info
- $(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook
-
-info: info-recursive
-info-recursive:
-ifeq ($(findstring doc, $(SUBDIRS)), doc)
- @command.com /c if not exist doc\\nul md doc
- @echo Making all in doc
- $(MAKE) -C doc -f ../Makefile VPATH=$(srcdir)/doc make.info
-endif
-
-dvi: dvi-recursive
-dvi-recursive:
-ifeq ($(findstring doc, $(SUBDIRS)), doc)
- @command.com /c if not exist doc\\nul md doc
- @echo Making all in doc
- $(MAKE) -C doc -f ../Makefile VPATH=$(srcdir)/doc make.dvi
-endif
-
-ps: ps-recursive
-ps-recursive:
-ifeq ($(findstring doc, $(SUBDIRS)), doc)
- @command.com /c if not exist doc\\nul md doc
- @echo Making all in doc
- $(MAKE) -C doc -f ../Makefile VPATH=$(srcdir)/doc make.ps
-endif
-
-html-recursive:
-ifeq ($(findstring doc, $(SUBDIRS)), doc)
- @command.com /c if not exist doc\\nul md doc
- @echo Making all in doc
- $(MAKE) -C doc -f ../Makefile VPATH=$(srcdir)/doc make.html
-endif
-
-check: all-am check-recursive check-local
- @:
-installcheck: installcheck-recursive
-all-recursive-am: config.h
- $(MAKE) all-recursive
-
-all-am: Makefile $(PROGRAMS) config.h info
-
-install-exec-am: install-binPROGRAMS
-
-install-data-am: install-info-am
-
-uninstall-am: uninstall-binPROGRAMS uninstall-info
-
-install-exec: install-exec-recursive install-exec-am
- @$(NORMAL_INSTALL)
-
-install-data: install-data-recursive install-data-am
- @$(NORMAL_INSTALL)
-
-install-recursive uninstall-recursive:
- @:
-
-install: install-recursive install-exec-am install-data-am
- @:
-
-uninstall: uninstall-recursive uninstall-am
-
-all: all-recursive-am all-am
-
-install-strip:
- $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
-installdirs: installdirs-recursive
- $(mkinstalldirs) $(bindir) $(infodir)
-
-
-mostlyclean-generic:
- -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -rm -f Makefile $(DISTCLEANFILES)
- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
- -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-mostlyclean-am: mostlyclean-hdr mostlyclean-binPROGRAMS mostlyclean-compile mostlyclean-aminfo mostlyclean-tags mostlyclean-generic
-
-clean-am: clean-hdr clean-binPROGRAMS clean-compile clean-aminfo clean-tags clean-generic mostlyclean-am
-
-distclean-am: distclean-hdr distclean-binPROGRAMS distclean-compile distclean-aminfo distclean-tags distclean-generic clean-am
-
-maintainer-clean-am: maintainer-clean-hdr maintainer-clean-binPROGRAMS maintainer-clean-compile maintainer-clean-aminfo maintainer-clean-tags maintainer-clean-generic distclean-am
-
-mostlyclean: mostlyclean-recursive mostlyclean-am
-
-clean: clean-noinstLIBRARIES clean-recursive clean-am
-
-distclean: distclean-recursive distclean-am
- rm -f config.status
-
-maintainer-clean: maintainer-clean-recursive maintainer-clean-am
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
- rm -f config.status
-
-.PHONY: default mostlyclean-hdr distclean-hdr clean-hdr \
-maintainer-clean-hdr mostlyclean-binPROGRAMS distclean-binPROGRAMS \
-clean-binPROGRAMS maintainer-clean-binPROGRAMS uninstall-binPROGRAMS \
-install-binPROGRAMS mostlyclean-compile distclean-compile clean-compile \
-maintainer-clean-compile install-info-am uninstall-info \
-mostlyclean-aminfo distclean-aminfo clean-aminfo \
-maintainer-clean-aminfo install-data-recursive uninstall-data-recursive \
-install-exec-recursive uninstall-exec-recursive installdirs-recursive \
-uninstalldirs-recursive all-recursive check-recursive check-am \
-installcheck-recursive info-recursive dvi-recursive \
-mostlyclean-recursive distclean-recursive clean-recursive \
-maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
-distclean-tags clean-tags maintainer-clean-tags distdir \
-mostlyclean-depend distclean-depend clean-depend \
-maintainer-clean-depend info dvi check-local installcheck \
-all-recursive-am all-am install-exec-am install-data-am uninstall-am \
-install-exec install-data install uninstall all installdirs \
-mostlyclean-generic distclean-generic clean-generic \
-maintainer-clean-generic clean mostlyclean distclean maintainer-clean \
-html
-
-
-# --------------- Local DIST Section
-
-# Install the w32 subdirectory
-#
-dist-hook:
- (cd $(srcdir); \
- w32=`find w32 -follow \( -name .git -prune \) -o -type f -print`; \
- tar chf - $$w32) \
- | (cd $(distdir); tar xfBp -)
-
-# --------------- Local CHECK Section
-
-# Note: check-loadavg is NOT a prerequisite of check-local, since
-# there's no uptime utility, and the test it does doesn't make sense
-# on MSDOS anyway.
-check-local: check-shell check-regression
- @banner=" Regression PASSED: GNU Make $(VERSION) ($(MAKE_HOST)) built with $(CC) "; \
- dashes=`echo "$$banner" | sed s/./=/g`; \
- echo; \
- echo "$$dashes"; \
- echo "$$banner"; \
- echo "$$dashes"; \
- echo
-
-.PHONY: check-loadavg check-shell check-regression
-
-# > check-shell
-#
-# check-shell is designed to fail if they don't have a Unixy shell
-# installed. The test suite requires such a shell.
-check-shell:
- @echo If Make says Error -1, you do not have Unix-style shell installed
- @foo=bar.exe :
-
-# > check-loadavg
-#
-loadavg: loadavg.c config.h
- @rm -f loadavg
- $(LINK) -DTEST $(make_LDFLAGS) loadavg.c $(LIBS)
-# We copy getloadavg.c into a different file rather than compiling it
-# directly because some compilers clobber getloadavg.o in the process.
-loadavg.c: getloadavg.c
- ln $(srcdir)/getloadavg.c loadavg.c || \
- cp $(srcdir)/getloadavg.c loadavg.c
-check-loadavg: loadavg
- @echo The system uptime program believes the load average to be:
- -uptime
- @echo The GNU load average checking code believes:
- -./loadavg
-
-# > check-regression
-#
-# Look for the make test suite, and run it if found. Look in MAKE_TEST if
-# specified, or else in the srcdir or the distdir, their parents, and _their_
-# parents.
-#
-check-regression:
- @if test -f "$(srcdir)/tests/run_make_tests"; then \
- if $(PERL) -v >/dev/null 2>&1; then \
- case `cd $(srcdir); pwd` in `pwd`) : ;; \
- *) test -d tests || mkdir tests; \
- for f in run_make_tests run_make_tests.pl test_driver.pl scripts; do \
- rm -rf tests/$$f; cp -pr $(srcdir)/tests/$$f tests; \
- done ;; \
- esac; \
- echo "cd tests && $(PERL) ./run_make_tests.pl -make ../make.exe $(MAKETESTFLAGS)"; \
- cd tests && $(PERL) ./run_make_tests.pl -make ../make.exe $(MAKETESTFLAGS); \
- else \
- echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \
- fi; \
- else \
- echo "Can't find the GNU Make test suite ($(srcdir)/tests)."; \
- fi
-
-# --------------- Maintainer's Section
-
-# Note this requires GNU make. Not to worry, since it will only be included
-# in the Makefile if we're in the maintainer's environment.
-#include $(srcdir)/maintMakefile
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
-
-# --------------- DEPENDENCIES
-
-# --------------- DEPENDENCIES
-#
-
-# .deps/alloca.Po
-# dummy
-
-# .deps/ar.Po
-ar.o: ar.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h
-
-# .deps/arscan.Po
-arscan.o: arscan.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
-
-# .deps/commands.Po
-commands.o: commands.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h variable.h job.h output.h \
- commands.h
-
-# .deps/default.Po
-default.o: default.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h variable.h rule.h dep.h job.h \
- output.h \
- commands.h
-
-# .deps/dir.Po
-dir.o: dir.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- hash.h \
- filedef.h dep.h \
-
-# .deps/expand.Po
-expand.o: expand.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h job.h output.h \
- commands.h variable.h rule.h
-
-# .deps/file.Po
-file.o: file.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h job.h output.h \
- commands.h variable.h \
- debug.h
-
-# .deps/function.Po
-function.o: function.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h variable.h dep.h job.h output.h \
- commands.h debug.h
-
-# .deps/getloadavg.Po
-# dummy
-
-# .deps/getopt.Po
-getopt.o: getopt.c config.h \
-
-# .deps/getopt1.Po
-getopt1.o: getopt1.c config.h getopt.h \
-
-# .deps/guile.Po
-guile.o: guile.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- debug.h filedef.h hash.h dep.h variable.h \
- gmk-default.h
-
-# .deps/hash.Po
-hash.o: hash.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- hash.h
-
-# .deps/implicit.Po
-implicit.o: implicit.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h rule.h dep.h debug.h variable.h job.h output.h \
- commands.h
-
-# .deps/job.Po
-job.o: job.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- job.h output.h \
- debug.h filedef.h hash.h \
- commands.h variable.h os.h
-
-# .deps/load.Po
-load.o: load.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- debug.h \
- filedef.h hash.h variable.h
-
-# .deps/loadapi.Po
-loadapi.o: loadapi.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h variable.h dep.h
-
-# .deps/loadavg-getloadavg.Po
-# dummy
-
-# .deps/main.Po
-main.o: main.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- os.h \
- filedef.h hash.h dep.h variable.h job.h output.h \
- commands.h rule.h debug.h \
- getopt.h
-
-# .deps/misc.Po
-misc.o: misc.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h debug.h \
-
-# .deps/output.Po
-output.o: output.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- job.h \
- output.h \
-
-# .deps/posixos.Po
-posixos.o: posixos.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- debug.h job.h output.h os.h
-
-# .deps/read.Po
-read.o: read.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h job.h output.h \
- commands.h variable.h rule.h \
- debug.h
-
-# .deps/remake.Po
-remake.o: remake.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h job.h output.h \
- commands.h dep.h variable.h \
- debug.h
-
-# .deps/remote-cstms.Po
-# dummy
-
-# .deps/remote-stub.Po
-remote-stub.o: remote-stub.c makeint.h \
- config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h job.h output.h \
- commands.h
-
-# .deps/rule.Po
-rule.o: rule.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h job.h output.h \
- commands.h variable.h rule.h
-
-# .deps/signame.Po
-signame.o: signame.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
-
-# .deps/strcache.Po
-strcache.o: strcache.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- hash.h
-
-# .deps/variable.Po
-variable.o: variable.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h job.h output.h \
- commands.h variable.h rule.h
-
-# .deps/version.Po
-version.o: version.c config.h
-
-# .deps/vmsjobs.Po
-# dummy
-
-# .deps/vpath.Po
-vpath.o: vpath.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h variable.h
diff --git a/Makefile.am b/Makefile.am
index c88c465..8cc39c9 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,6 +1,6 @@
# This is a -*-Makefile-*-, or close enough
#
-# Copyright (C) 1997-2016 Free Software Foundation, Inc.
+# Copyright (C) 1997-2020 Free Software Foundation, Inc.
# This file is part of GNU Make.
#
# GNU Make is free software; you can redistribute it and/or modify it under
@@ -16,136 +16,121 @@
# You should have received a copy of the GNU General Public License along with
# this program. If not, see <http://www.gnu.org/licenses/>.
-AUTOMAKE_OPTIONS = dist-bzip2 silent-rules std-options
-ACLOCAL_AMFLAGS = -I config
+AUTOMAKE_OPTIONS = dist-lzip silent-rules std-options subdir-objects nostdinc
+ACLOCAL_AMFLAGS = -I m4
MAKE_HOST = @MAKE_HOST@
-# Only process if target is MS-Windows
-if WINDOWSENV
- MAYBE_W32 = w32
- W32INC = -I $(top_srcdir)/w32/include
- W32LIB = -Lw32 -lw32
- ossrc =
-else
- ossrc = posixos.c
-endif
-
-SUBDIRS = glob config po doc $(MAYBE_W32)
+SUBDIRS = lib po doc
bin_PROGRAMS = make
-include_HEADERS = gnumake.h
+include_HEADERS = src/gnumake.h
-if USE_CUSTOMS
- remote = remote-cstms.c
-else
- remote = remote-stub.c
-endif
+man_MANS = doc/make.1
-make_SOURCES = ar.c arscan.c commands.c default.c dir.c expand.c file.c \
- function.c getopt.c getopt1.c guile.c implicit.c job.c load.c \
- loadapi.c main.c misc.c $(ossrc) output.c read.c remake.c \
- rule.c signame.c strcache.c variable.c version.c vpath.c \
- hash.c $(remote)
+make_SRCS = src/ar.c src/arscan.c src/commands.c src/commands.h \
+ src/debug.h src/default.c src/dep.h src/dir.c src/expand.c \
+ src/file.c src/filedef.h src/function.c src/getopt.c \
+ src/getopt.h src/getopt1.c src/gettext.h src/guile.c \
+ src/hash.c src/hash.h src/implicit.c src/job.c src/job.h \
+ src/load.c src/loadapi.c src/main.c src/makeint.h src/misc.c \
+ src/os.h src/output.c src/output.h src/read.c src/remake.c \
+ src/rule.c src/rule.h src/signame.c src/strcache.c \
+ src/variable.c src/variable.h src/version.c src/vpath.c
-EXTRA_make_SOURCES = vmsjobs.c remote-stub.c remote-cstms.c
+w32_SRCS = src/w32/pathstuff.c src/w32/w32os.c src/w32/compat/dirent.c \
+ src/w32/compat/posixfcn.c src/w32/include/dirent.h \
+ src/w32/include/dlfcn.h src/w32/include/pathstuff.h \
+ src/w32/include/sub_proc.h src/w32/include/w32err.h \
+ src/w32/subproc/misc.c src/w32/subproc/proc.h \
+ src/w32/subproc/sub_proc.c src/w32/subproc/w32err.c
-noinst_HEADERS = commands.h dep.h filedef.h job.h makeint.h rule.h variable.h \
- debug.h getopt.h gettext.h hash.h output.h os.h
+vms_SRCS = src/vms_exit.c src/vms_export_symbol.c src/vms_progname.c \
+ src/vmsdir.h src/vmsfunctions.c src/vmsify.c
-make_LDADD = @LIBOBJS@ @ALLOCA@ $(GLOBLIB) @GETLOADAVG_LIBS@ @LIBINTL@ \
- $(GUILE_LIBS)
-# Only process if target is MS-Windows
-if WINDOWSENV
- make_LDADD += $(W32LIB)
-endif
+amiga_SRCS = src/amiga.c src/amiga.h
-man_MANS = make.1
+glob_SRCS = lib/fnmatch.c lib/fnmatch.h lib/glob.c lib/glob.h
-DEFS = -DLOCALEDIR=\"$(localedir)\" -DLIBDIR=\"$(libdir)\" -DINCLUDEDIR=\"$(includedir)\" @DEFS@
+alloca_SRCS = lib/alloca.c
-AM_CPPFLAGS = $(GLOBINC)
-AM_CFLAGS = $(GUILE_CFLAGS)
-# Only process if target is MS-Windows
-if WINDOWSENV
- AM_CPPFLAGS += $(W32INC)
-endif
+loadavg_SRCS = lib/getloadavg.c
+make_SOURCES = $(make_SRCS)
+EXTRA_make_SOURCES = $(amiga_SRCS) $(vms_SRCS)
-# Extra stuff to include in the distribution.
+make_LDADD = $(LIBOBJS) $(GUILE_LIBS) lib/libgnu.a $(GETLOADAVG_LIBS) \
+ @LIBINTL@
-EXTRA_DIST = ChangeLog README build.sh.in $(man_MANS) \
- README.customs README.OS2 \
- SCOPTIONS SMakefile \
- README.Amiga Makefile.ami config.ami make.lnk amiga.c amiga.h \
- README.DOS Makefile.DOS configure.bat dosbuild.bat configh.dos\
- README.W32 NMakefile config.h.W32 build_w32.bat subproc.bat \
- make_msvc_net2003.sln make_msvc_net2003.vcproj \
- README.VMS makefile.vms makefile.com config.h-vms \
- vmsdir.h vmsfunctions.c vmsify.c vms_exit.c vms_progname.c \
- vms_export_symbol.c vms_export_symbol_test.com \
- gmk-default.scm gmk-default.h
+localedir = $(datadir)/locale
-# This is built during configure, but behind configure's back
+AM_CPPFLAGS = -Isrc -I$(top_srcdir)/src -Ilib -I$(top_srcdir)/lib \
+ -DLIBDIR=\"$(libdir)\" -DINCLUDEDIR=\"$(includedir)\" \
+ -DLOCALEDIR=\"$(localedir)\"
-DISTCLEANFILES = build.sh
+AM_CFLAGS = $(GUILE_CFLAGS)
-# --------------- Internationalization Section
+if WINDOWSENV
+ make_SOURCES += $(w32_SRCS)
+ AM_CPPFLAGS += -I $(top_srcdir)/src/w32/include
+else
+ make_SOURCES += src/posixos.c
+endif
-localedir = $(datadir)/locale
+if USE_CUSTOMS
+ make_SOURCES += src/remote-cstms.c
+else
+ make_SOURCES += src/remote-stub.c
+endif
-# --------------- Local INSTALL Section
+# Extra stuff to include in the distribution.
-# If necessary, change the gid of the app and turn on the setgid flag.
-#
+mk_FILES = Basic.mk mk/msdosdjgpp.mk mk/Amiga.mk mk/VMS.mk mk/Windows32.mk
+# We don't need this, since the standard automake output will do.
+#mk/Posix.mk.in
-# Whether or not make needs to be installed setgid.
-# The value should be either 'true' or 'false'.
-# On many systems, the getloadavg function (used to implement the '-l'
-# switch) will not work unless make is installed setgid kmem.
-#
-inst_setgid = @NEED_SETGID@
+m4_FILES = m4/gnulib-cache.m4
-# Install make setgid to this group so it can get the load average.
-#
-inst_group = @KMEM_GROUP@
-
-install-exec-local:
- @if $(inst_setgid); then \
- app=$(DESTDIR)$(bindir)/`echo $(bin_PROGRAMS)|sed '$(transform)'`; \
- if chgrp $(inst_group) $$app && chmod g+s $$app; then \
- echo "chgrp $(inst_group) $$app && chmod g+s $$app"; \
- else \
- echo "$$app needs to be owned by group $(inst_group) and setgid;"; \
- echo "otherwise the '-l' option will probably not work."; \
- echo "You may need special privileges to complete the installation"; \
- echo "of $$app."; \
- fi; \
- else true; fi
+test_FILES = tests/run_make_tests tests/run_make_tests.bat \
+ tests/run_make_tests.pl tests/test_driver.pl \
+ tests/config-flags.pm.in tests/config_flags_pm.com \
+ tests/config-flags.pm.W32 \
+ tests/mkshadow tests/thelp.pl tests/guile.supp tests/README
+# test/scripts are added via dist-hook below.
+
+EXTRA_DIST = ChangeLog README build.sh build.cfg.in $(man_MANS) \
+ README.customs README.OS2 \
+ README.Amiga SCOPTIONS src/config.ami \
+ README.DOS builddos.bat src/configh.dos \
+ README.W32 build_w32.bat src/config.h.W32 \
+ README.VMS makefile.com src/config.h-vms src/vmsjobs.c \
+ vms_export_symbol_test.com \
+ src/gmk-default.scm src/gmk-default.h \
+ $(mk_FILES) $(m4_FILES) $(test_FILES)
# --------------- Generate the Guile default module content
-guile.$(OBJEXT): gmk-default.h
-gmk-default.h: $(srcdir)/gmk-default.scm
+src/guile.$(OBJEXT): src/gmk-default.h
+src/gmk-default.h: $(top_srcdir)/src/gmk-default.scm
(echo 'static const char *const GUILE_module_defn = " '\\ \
&& sed -e 's/;.*//' -e '/^[ \t]*$$/d' -e 's/"/\\"/g' -e 's/$$/ \\/' \
- $(srcdir)/gmk-default.scm \
- && echo '";') > $@
+ $(top_srcdir)/src/gmk-default.scm \
+ && echo '";') > src/gmk-default.h
# --------------- Local DIST Section
-# Install the w32 and tests subdirectories
+# Install the mk and tests subdirectories
#
dist-hook:
- (cd $(srcdir); \
- sub=`find w32 tests -follow \( -name .git -o -name .deps -o -name work -o -name .gitignore -o -name \*.orig -o -name \*.rej -o -name \*~ -o -name Makefile \) -prune -o -type f -print`; \
+ (cd $(top_srcdir); \
+ sub=`find tests/scripts -follow \( -name .git -o -name .deps -o -name work -o -name .gitignore -o -name \*.orig -o -name \*.rej -o -name \*~ -o -name \*.out -o -name Makefile \) -prune -o -type f -print`; \
tar chf - $$sub) \
| (cd $(distdir); tar xfBp -)
# --------------- Local CHECK Section
-check-local: check-regression check-loadavg
+check-local: check-regression
@banner=" Regression PASSED: GNU Make $(VERSION) ($(MAKE_HOST)) built with $(CC) "; \
dashes=`echo "$$banner" | sed s/./=/g`; \
echo; \
@@ -154,20 +139,6 @@ check-local: check-regression check-loadavg
echo "$$dashes"; \
echo
-.PHONY: check-loadavg check-regression
-
-check-loadavg: loadavg$(EXEEXT)
- @echo The system uptime program believes the load average to be:
- -uptime
- @echo The GNU load average checking code thinks:
- -./loadavg$(EXEEXT)
-
-# The loadavg function is invoked during "make check" to test getloadavg.
-check_PROGRAMS = loadavg
-nodist_loadavg_SOURCES = getloadavg.c
-loadavg_CPPFLAGS = -DTEST
-loadavg_LDADD = @GETLOADAVG_LIBS@
-
# > check-regression
#
# Look for the make test suite, and run it if found and we can find perl.
@@ -176,25 +147,27 @@ loadavg_LDADD = @GETLOADAVG_LIBS@
#
MAKETESTFLAGS =
+.PHONY: check-regression
+
check-regression: tests/config-flags.pm
- @if test -f '$(srcdir)/tests/run_make_tests'; then \
+ @if test -f '$(top_srcdir)/tests/run_make_tests'; then \
ulimit -n 128; \
if $(PERL) -v >/dev/null 2>&1; then \
- case `cd '$(srcdir)'; pwd` in `pwd`) : ;; \
+ case `cd '$(top_srcdir)'; pwd` in `pwd`) : ;; \
*) test -d tests || mkdir tests; \
rm -f srctests; \
- if ln -s '$(srcdir)/tests' srctests; then \
- for f in run_make_tests run_make_tests.pl test_driver.pl scripts; do \
+ if ln -s '$(top_srcdir)/tests' srctests; then \
+ for f in run_make_tests run_make_tests.pl test_driver.pl scripts jhelp.pl; do \
rm -f tests/$$f; ln -s ../srctests/$$f tests; \
done; fi ;; \
esac; \
- echo "cd tests && $(PERL) ./run_make_tests.pl -srcdir $(abs_srcdir) -make ../make$(EXEEXT) $(MAKETESTFLAGS)"; \
- cd tests && $(PERL) ./run_make_tests.pl -srcdir '$(abs_srcdir)' -make '../make$(EXEEXT)' $(MAKETESTFLAGS); \
+ echo "cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir $(abs_top_srcdir) -make ../make$(EXEEXT) $(MAKETESTFLAGS)"; \
+ cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir '$(abs_top_srcdir)' -make '../make$(EXEEXT)' $(MAKETESTFLAGS); \
else \
echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \
fi; \
else \
- echo "Can't find the GNU Make test suite ($(srcdir)/tests)."; \
+ echo "Can't find the GNU Make test suite ($(top_srcdir)/tests)."; \
fi
diff --git a/Makefile.ami b/Makefile.ami
deleted file mode 100644
index 39a9788..0000000
--- a/Makefile.ami
+++ /dev/null
@@ -1,308 +0,0 @@
-# -*-Makefile-*- for GNU make on Amiga
-#
-# NOTE: If you have no 'make' program at all to process this makefile, run
-# 'build.sh' instead.
-#
-# Copyright (C) 1995-2016 Free Software Foundation, Inc.
-# This file is part of GNU Make.
-#
-# GNU Make is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 3 of the License, or (at your option) any later
-# version.
-#
-# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program. If not, see <http://www.gnu.org/licenses/>.
-
-#
-# Makefile for GNU Make
-#
-
-CC = sc
-RM = delete
-
-CFLAGS =
-CPPFLAGS =
-LDFLAGS =
-
-# Define these for your system as follows:
-# -DNO_ARCHIVES To disable 'ar' archive support.
-# -DNO_FLOAT To avoid using floating-point numbers.
-# -DENUM_BITFIELDS If the compiler isn't GCC but groks enum foo:2.
-# Some compilers apparently accept this
-# without complaint but produce losing code,
-# so beware.
-# NeXT 1.0a uses an old version of GCC, which required -D__inline=inline.
-# See also 'config.h'.
-defines =
-
-# Which flavor of remote job execution support to use.
-# The code is found in 'remote-$(REMOTE).c'.
-REMOTE = stub
-
-# If you are using the GNU C library, or have the GNU getopt functions in
-# your C library, you can comment these out.
-GETOPT = getopt.o getopt1.o
-GETOPT_SRC = $(srcdir)getopt.c $(srcdir)getopt1.c $(srcdir)getopt.h
-
-# If you are using the GNU C library, or have the GNU glob functions in
-# your C library, you can comment this out. GNU make uses special hooks
-# into the glob functions to be more efficient (by using make's directory
-# cache for globbing), so you must use the GNU functions even if your
-# system's C library has the 1003.2 glob functions already. Also, the glob
-# functions in the AIX and HPUX C libraries are said to be buggy.
-GLOB = glob/glob.lib
-
-# If your system doesn't have alloca, or the one provided is bad, define this.
-ALLOCA = alloca.o
-ALLOCA_SRC = $(srcdir)alloca.c
-
-# If your system needs extra libraries loaded in, define them here.
-# System V probably need -lPW for alloca. HP-UX 7.0's alloca in
-# libPW.a is broken on HP9000s300 and HP9000s400 machines. Use
-# alloca.c instead on those machines.
-LOADLIBES =
-
-# Any extra object files your system needs.
-extras = amiga.o
-
-# Common prefix for machine-independent installed files.
-prefix =
-# Common prefix for machine-dependent installed files.
-exec_prefix =
-
-# Directory to install 'make' in.
-bindir = sc:c
-# Directory to find libraries in for '-lXXX'.
-libdir = lib:
-# Directory to search by default for included makefiles.
-includedir = include:
-# Directory to install the Info files in.
-infodir = doc:
-# Directory to install the man page in.
-mandir = t:
-# Number to put on the man page filename.
-manext = 1
-# Prefix to put on installed 'make' binary file name.
-binprefix =
-# Prefix to put on installed 'make' man page file name.
-manprefix = $(binprefix)
-
-# Whether or not make needs to be installed setgid.
-# The value should be either 'true' or 'false'.
-# On many systems, the getloadavg function (used to implement the '-l'
-# switch) will not work unless make is installed setgid kmem.
-install_setgid = false
-# Install make setgid to this group so it can read /dev/kmem.
-group = sys
-
-# Program to install 'make'.
-INSTALL_PROGRAM = copy
-# Program to install the man page.
-INSTALL_DATA = copy
-# Generic install program.
-INSTALL = copy
-
-# Program to format Texinfo source into Info files.
-MAKEINFO = makeinfo
-# Program to format Texinfo source into DVI files.
-TEXI2DVI = texi2dvi
-
-# Programs to make tags files.
-ETAGS = etags -w
-CTAGS = ctags -w
-
-#guile = guile.o
-
-objs = commands.o job.o dir.o file.o misc.o main.o read.o remake.o \
- rule.o implicit.o default.o variable.o expand.o function.o \
- vpath.o version.o ar.o arscan.o signame.o strcache.o hash.o \
- remote-$(REMOTE).o $(GETOPT) $(ALLOCA) $(extras) $(guile)
-
-srcs = $(srcdir)commands.c $(srcdir)job.c $(srcdir)dir.c \
- $(srcdir)file.c $(srcdir)getloadavg.c $(srcdir)misc.c \
- $(srcdir)main.c $(srcdir)read.c $(srcdir)remake.c \
- $(srcdir)rule.c $(srcdir)implicit.c $(srcdir)default.c \
- $(srcdir)variable.c $(srcdir)expand.c $(srcdir)function.c \
- $(srcdir)vpath.c $(srcdir)version.c $(srcdir)hash.c \
- $(srcdir)guile.c $(srcdir)remote-$(REMOTE).c \
- $(srcdir)ar.c $(srcdir)arscan.c $(srcdir)strcache.c \
- $(srcdir)signame.c $(srcdir)signame.h $(GETOPT_SRC) \
- $(srcdir)commands.h $(srcdir)dep.h $(srcdir)filedep.h \
- $(srcdir)job.h $(srcdir)makeint.h $(srcdir)rule.h \
- $(srcdir)variable.h $(ALLOCA_SRC) $(srcdir)config.h.in
-
-
-.SUFFIXES:
-.SUFFIXES: .o .c .h .ps .dvi .info .texinfo
-
-all: make
-info: make.info
-dvi: make.dvi
-# Some makes apparently use .PHONY as the default goal if it is before 'all'.
-.PHONY: all check info dvi
-
-make.info: make.texinfo
- $(MAKEINFO) -I$(srcdir) $(srcdir)make.texinfo -o make.info
-
-make.dvi: make.texinfo
- $(TEXI2DVI) $(srcdir)make.texinfo
-
-make.ps: make.dvi
- dvi2ps make.dvi > make.ps
-
-make: $(objs) $(GLOB)
- $(CC) Link $(LDFLAGS) $(objs) Lib $(GLOB) $(LOADLIBES) To make.new
- -delete make
- rename make.new make
-
-TMPFILE = t:Make$$
-
-$(GLOB):
- cd glob @@\
- $(MAKE) -$(MAKEFLAGS) -f Makefile
-
-# -I. is needed to find config.h in the build directory.
-OUTPUT_OPTION =
-.c.o:
- $(CC) $(defines) IDir "" IDir glob \
- $(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION)
-
-# For some losing Unix makes.
-SHELL = /bin/sh
-#@SET_MAKE@
-
-glob/libglob.a: FORCE config.h
- cd glob; $(MAKE) libglob.a
-FORCE:
-
-.PHONY: install installdirs
-install: installdirs \
- $(bindir)$(binprefix)make $(infodir)make.info \
- $(mandir)$(manprefix)make.$(manext)
-
-installdirs:
- $(SHELL) ${srcdir}/mkinstalldirs $(bindir) $(infodir) $(mandir)
-
-$(bindir)$(binprefix)make: make
- $(INSTALL_PROGRAM) make $@.new
- @if $(install_setgid); then \
- if chgrp $(group) $@.new && chmod g+s $@.new; then \
- echo "chgrp $(group) $@.new && chmod g+s $@.new"; \
- else \
- echo "$@ needs to be owned by group $(group) and setgid;"; \
- echo "otherwise the '-l' option will probably not work."; \
- echo "You may need special privileges to install $@."; \
- fi; \
- else true; fi
-# Some systems can't deal with renaming onto a running binary.
- -$(RM) $@.old
- -mv $@ $@.old
- mv $@.new $@
-
-$(infodir)make.info: make.info
- if [ -r ./make.info ]; then dir=.; else dir=$(srcdir); fi; \
- for file in $${dir}/make.info*; do \
- name="`basename $$file`"; \
- $(INSTALL_DATA) $$file \
- `echo $@ | sed "s,make.info\$$,$$name,"`; \
- done
-# Run install-info only if it exists.
-# Use 'if' instead of just prepending '-' to the
-# line so we notice real errors from install-info.
-# We use '$(SHELL) -c' because some shells do not
-# fail gracefully when there is an unknown command.
- if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
- if [ -r ./make.info ]; then dir=.; else dir=$(srcdir); fi; \
- install-info --infodir=$(infodir) $$dir/make.info; \
- else true; fi
-
-$(mandir)$(manprefix)make.$(manext): make.man
- $(INSTALL_DATA) $(srcdir)make.man $@
-
-
-loadavg: loadavg.c config.h
- $(CC) $(defines) -DTEST -I. -I$(srcdir) $(CFLAGS) $(LDFLAGS) \
- loadavg.c $(LOADLIBES) -o $@
-# We copy getloadavg.c into a different file rather than compiling it
-# directly because some compilers clobber getloadavg.o in the process.
-loadavg.c: getloadavg.c
- ln $(srcdir)getloadavg.c loadavg.c || \
- cp $(srcdir)getloadavg.c loadavg.c
-check-loadavg: loadavg
- @echo The system uptime program believes the load average to be:
- -uptime
- @echo The GNU load average checking code believes:
- ./loadavg
-check: check-loadavg
-
-
-.PHONY: clean realclean distclean mostlyclean
-clean: glob-clean
- -$(RM) make loadavg "#?.o" core make.dvi
-
-distclean: clean glob-realclean
- -$(RM) Makefile config.h config.status build.sh
- -$(RM) config.log config.cache
- -$(RM) TAGS tags
- -$(RM) make.?? make.??s make.log make.toc make.*aux
- -$(RM) loadavg.c
-
-realclean: distclean
- -$(RM) make.info*
-mostlyclean: clean
-
-.PHONY: glob-clean glob-realclean
-glob-clean glob-realclean:
- cd glob @@\
- $(MAKE) $@
-
-# This tells versions [3.59,3.63) of GNU make not to export all variables.
-.NOEXPORT:
-
-# The automatically generated dependencies below may omit config.h
-# because it is included with '#include <config.h>' rather than
-# '#include "config.h"'. So we add the explicit dependency to make sure.
-$(objs): config.h
-
-# Automatically generated dependencies will be put at the end of the file.
-
-# Automatically generated dependencies.
-commands.o: commands.c makeint.h dep.h filedef.h variable.h job.h \
- commands.h
-job.o: job.c makeint.h job.h filedef.h commands.h variable.h
-dir.o: dir.c makeint.h
-file.o: file.c makeint.h dep.h filedef.h job.h commands.h variable.h
-misc.o: misc.c makeint.h dep.h
-main.o: main.c makeint.h dep.h filedef.h variable.h job.h commands.h \
- getopt.h
-guile.o: guile.c makeint.h dep.h debug.h variable.h gmk-default.h
-read.o: read.c makeint.h dep.h filedef.h job.h commands.h variable.h \
- glob/glob.h
-remake.o: remake.c makeint.h filedef.h job.h commands.h dep.h
-rule.o: rule.c makeint.h dep.h filedef.h job.h commands.h variable.h \
- rule.h
-implicit.o: implicit.c makeint.h rule.h dep.h filedef.h
-default.o: default.c makeint.h rule.h dep.h filedef.h job.h commands.h \
- variable.h
-variable.o: variable.c makeint.h dep.h filedef.h job.h commands.h \
- variable.h
-expand.o: expand.c makeint.h filedef.h job.h commands.h variable.h
-function.o: function.c makeint.h filedef.h variable.h dep.h job.h \
- commands.h amiga.h
-vpath.o: vpath.c makeint.h filedef.h variable.h
-strcache.o: strcache.c makeint.h hash.h
-version.o: version.c
-ar.o: ar.c makeint.h filedef.h dep.h
-arscan.o: arscan.c makeint.h
-signame.o: signame.c signame.h
-remote-stub.o: remote-stub.c makeint.h filedef.h job.h commands.h
-getopt.o: getopt.c
-getopt1.o : getopt1.c getopt.h
-getloadavg.o: getloadavg.c
-amiga.o: amiga.c makeint.h variable.h amiga.h
diff --git a/Makefile.in b/Makefile.in
index 67b7616..9535058 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -16,7 +16,7 @@
# This is a -*-Makefile-*-, or close enough
#
-# Copyright (C) 1997-2016 Free Software Foundation, Inc.
+# Copyright (C) 1997-2020 Free Software Foundation, Inc.
# This file is part of GNU Make.
#
# GNU Make is free software; you can redistribute it and/or modify it under
@@ -108,63 +108,103 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = make$(EXEEXT)
-# Only process if target is MS-Windows
-@WINDOWSENV_TRUE@am__append_1 = $(W32LIB)
-# Only process if target is MS-Windows
-@WINDOWSENV_TRUE@am__append_2 = $(W32INC)
-check_PROGRAMS = loadavg$(EXEEXT)
+@WINDOWSENV_TRUE@am__append_1 = $(w32_SRCS)
+@WINDOWSENV_TRUE@am__append_2 = -I $(top_srcdir)/src/w32/include
+@WINDOWSENV_FALSE@am__append_3 = src/posixos.c
+@USE_CUSTOMS_TRUE@am__append_4 = src/remote-cstms.c
+@USE_CUSTOMS_FALSE@am__append_5 = src/remote-stub.c
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/config/dospaths.m4 \
- $(top_srcdir)/config/gettext.m4 $(top_srcdir)/config/iconv.m4 \
- $(top_srcdir)/config/intlmacosx.m4 \
- $(top_srcdir)/config/lib-ld.m4 \
- $(top_srcdir)/config/lib-link.m4 \
- $(top_srcdir)/config/lib-prefix.m4 \
- $(top_srcdir)/config/longlong.m4 $(top_srcdir)/config/nls.m4 \
- $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+ $(top_srcdir)/m4/absolute-header.m4 $(top_srcdir)/m4/access.m4 \
+ $(top_srcdir)/m4/acinclude.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/asm-underscore.m4 $(top_srcdir)/m4/close.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dospaths.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+ $(top_srcdir)/m4/eaccess.m4 $(top_srcdir)/m4/errno_h.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+ $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+ $(top_srcdir)/m4/findprog-in.m4 \
+ $(top_srcdir)/m4/getdtablesize.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getprogname.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/include_next.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+ $(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+ $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/off_t.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strerror.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_types_h.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
- $(am__configure_deps) $(include_HEADERS) $(noinst_HEADERS) \
- $(am__DIST_COMMON)
+ $(am__configure_deps) $(include_HEADERS) $(am__DIST_COMMON)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = tests/config-flags.pm
+CONFIG_HEADER = $(top_builddir)/src/config.h
+CONFIG_CLEAN_FILES = build.cfg tests/config-flags.pm
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \
"$(DESTDIR)$(includedir)"
PROGRAMS = $(bin_PROGRAMS)
-nodist_loadavg_OBJECTS = loadavg-getloadavg.$(OBJEXT)
-loadavg_OBJECTS = $(nodist_loadavg_OBJECTS)
-loadavg_DEPENDENCIES =
-am__make_SOURCES_DIST = ar.c arscan.c commands.c default.c dir.c \
- expand.c file.c function.c getopt.c getopt1.c guile.c \
- implicit.c job.c load.c loadapi.c main.c misc.c posixos.c \
- output.c read.c remake.c rule.c signame.c strcache.c \
- variable.c version.c vpath.c hash.c remote-stub.c \
- remote-cstms.c
-@WINDOWSENV_FALSE@am__objects_1 = posixos.$(OBJEXT)
-@USE_CUSTOMS_FALSE@am__objects_2 = remote-stub.$(OBJEXT)
-@USE_CUSTOMS_TRUE@am__objects_2 = remote-cstms.$(OBJEXT)
-am_make_OBJECTS = ar.$(OBJEXT) arscan.$(OBJEXT) commands.$(OBJEXT) \
- default.$(OBJEXT) dir.$(OBJEXT) expand.$(OBJEXT) \
- file.$(OBJEXT) function.$(OBJEXT) getopt.$(OBJEXT) \
- getopt1.$(OBJEXT) guile.$(OBJEXT) implicit.$(OBJEXT) \
- job.$(OBJEXT) load.$(OBJEXT) loadapi.$(OBJEXT) main.$(OBJEXT) \
- misc.$(OBJEXT) $(am__objects_1) output.$(OBJEXT) \
- read.$(OBJEXT) remake.$(OBJEXT) rule.$(OBJEXT) \
- signame.$(OBJEXT) strcache.$(OBJEXT) variable.$(OBJEXT) \
- version.$(OBJEXT) vpath.$(OBJEXT) hash.$(OBJEXT) \
- $(am__objects_2)
+am__make_SOURCES_DIST = src/ar.c src/arscan.c src/commands.c \
+ src/commands.h src/debug.h src/default.c src/dep.h src/dir.c \
+ src/expand.c src/file.c src/filedef.h src/function.c \
+ src/getopt.c src/getopt.h src/getopt1.c src/gettext.h \
+ src/guile.c src/hash.c src/hash.h src/implicit.c src/job.c \
+ src/job.h src/load.c src/loadapi.c src/main.c src/makeint.h \
+ src/misc.c src/os.h src/output.c src/output.h src/read.c \
+ src/remake.c src/rule.c src/rule.h src/signame.c \
+ src/strcache.c src/variable.c src/variable.h src/version.c \
+ src/vpath.c src/w32/pathstuff.c src/w32/w32os.c \
+ src/w32/compat/dirent.c src/w32/compat/posixfcn.c \
+ src/w32/include/dirent.h src/w32/include/dlfcn.h \
+ src/w32/include/pathstuff.h src/w32/include/sub_proc.h \
+ src/w32/include/w32err.h src/w32/subproc/misc.c \
+ src/w32/subproc/proc.h src/w32/subproc/sub_proc.c \
+ src/w32/subproc/w32err.c src/posixos.c src/remote-cstms.c \
+ src/remote-stub.c
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 = src/ar.$(OBJEXT) src/arscan.$(OBJEXT) \
+ src/commands.$(OBJEXT) src/default.$(OBJEXT) src/dir.$(OBJEXT) \
+ src/expand.$(OBJEXT) src/file.$(OBJEXT) src/function.$(OBJEXT) \
+ src/getopt.$(OBJEXT) src/getopt1.$(OBJEXT) src/guile.$(OBJEXT) \
+ src/hash.$(OBJEXT) src/implicit.$(OBJEXT) src/job.$(OBJEXT) \
+ src/load.$(OBJEXT) src/loadapi.$(OBJEXT) src/main.$(OBJEXT) \
+ src/misc.$(OBJEXT) src/output.$(OBJEXT) src/read.$(OBJEXT) \
+ src/remake.$(OBJEXT) src/rule.$(OBJEXT) src/signame.$(OBJEXT) \
+ src/strcache.$(OBJEXT) src/variable.$(OBJEXT) \
+ src/version.$(OBJEXT) src/vpath.$(OBJEXT)
+am__objects_2 = src/w32/pathstuff.$(OBJEXT) src/w32/w32os.$(OBJEXT) \
+ src/w32/compat/dirent.$(OBJEXT) \
+ src/w32/compat/posixfcn.$(OBJEXT) \
+ src/w32/subproc/misc.$(OBJEXT) \
+ src/w32/subproc/sub_proc.$(OBJEXT) \
+ src/w32/subproc/w32err.$(OBJEXT)
+@WINDOWSENV_TRUE@am__objects_3 = $(am__objects_2)
+@WINDOWSENV_FALSE@am__objects_4 = src/posixos.$(OBJEXT)
+@USE_CUSTOMS_TRUE@am__objects_5 = src/remote-cstms.$(OBJEXT)
+@USE_CUSTOMS_FALSE@am__objects_6 = src/remote-stub.$(OBJEXT)
+am_make_OBJECTS = $(am__objects_1) $(am__objects_3) $(am__objects_4) \
+ $(am__objects_5) $(am__objects_6)
make_OBJECTS = $(am_make_OBJECTS)
am__DEPENDENCIES_1 =
-@WINDOWSENV_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
-make_DEPENDENCIES = @LIBOBJS@ @ALLOCA@ $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+make_DEPENDENCIES = $(LIBOBJS) $(am__DEPENDENCIES_1) lib/libgnu.a \
+ $(am__DEPENDENCIES_1)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -177,14 +217,34 @@ AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
-DEFAULT_INCLUDES = -I.@am__isrc@
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
+DEFAULT_INCLUDES =
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = src/$(DEPDIR)/amiga.Po src/$(DEPDIR)/ar.Po \
+ src/$(DEPDIR)/arscan.Po src/$(DEPDIR)/commands.Po \
+ src/$(DEPDIR)/default.Po src/$(DEPDIR)/dir.Po \
+ src/$(DEPDIR)/expand.Po src/$(DEPDIR)/file.Po \
+ src/$(DEPDIR)/function.Po src/$(DEPDIR)/getopt.Po \
+ src/$(DEPDIR)/getopt1.Po src/$(DEPDIR)/guile.Po \
+ src/$(DEPDIR)/hash.Po src/$(DEPDIR)/implicit.Po \
+ src/$(DEPDIR)/job.Po src/$(DEPDIR)/load.Po \
+ src/$(DEPDIR)/loadapi.Po src/$(DEPDIR)/main.Po \
+ src/$(DEPDIR)/misc.Po src/$(DEPDIR)/output.Po \
+ src/$(DEPDIR)/posixos.Po src/$(DEPDIR)/read.Po \
+ src/$(DEPDIR)/remake.Po src/$(DEPDIR)/remote-cstms.Po \
+ src/$(DEPDIR)/remote-stub.Po src/$(DEPDIR)/rule.Po \
+ src/$(DEPDIR)/signame.Po src/$(DEPDIR)/strcache.Po \
+ src/$(DEPDIR)/variable.Po src/$(DEPDIR)/version.Po \
+ src/$(DEPDIR)/vms_exit.Po src/$(DEPDIR)/vms_export_symbol.Po \
+ src/$(DEPDIR)/vms_progname.Po src/$(DEPDIR)/vmsfunctions.Po \
+ src/$(DEPDIR)/vmsify.Po src/$(DEPDIR)/vpath.Po \
+ src/w32/$(DEPDIR)/pathstuff.Po src/w32/$(DEPDIR)/w32os.Po \
+ src/w32/compat/$(DEPDIR)/dirent.Po \
+ src/w32/compat/$(DEPDIR)/posixfcn.Po \
+ src/w32/subproc/$(DEPDIR)/misc.Po \
+ src/w32/subproc/$(DEPDIR)/sub_proc.Po \
+ src/w32/subproc/$(DEPDIR)/w32err.Po
am__mv = mv -f
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 =
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
@@ -197,8 +257,7 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
-SOURCES = $(nodist_loadavg_SOURCES) $(make_SOURCES) \
- $(EXTRA_make_SOURCES)
+SOURCES = $(make_SOURCES) $(EXTRA_make_SOURCES)
DIST_SOURCES = $(am__make_SOURCES_DIST) $(EXTRA_make_SOURCES)
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
ctags-recursive dvi-recursive html-recursive info-recursive \
@@ -243,7 +302,7 @@ am__uninstall_files_from_dir = { \
man1dir = $(mandir)/man1
NROFF = nroff
MANS = $(man_MANS)
-HEADERS = $(include_HEADERS) $(noinst_HEADERS)
+HEADERS = $(include_HEADERS)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
am__recursive_targets = \
@@ -251,9 +310,8 @@ am__recursive_targets = \
$(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
- cscope distdir dist dist-all distcheck
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
- $(LISP)config.h.in
+ cscope distdir distdir-am dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
@@ -273,15 +331,19 @@ am__define_uniq_tagged_files = \
ETAGS = etags
CTAGS = ctags
CSCOPE = cscope
-DIST_SUBDIRS = glob config po doc w32
-am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
- $(top_srcdir)/config/ar-lib $(top_srcdir)/config/compile \
- $(top_srcdir)/config/config.guess \
- $(top_srcdir)/config/config.rpath \
- $(top_srcdir)/config/config.sub $(top_srcdir)/config/depcomp \
- $(top_srcdir)/config/install-sh $(top_srcdir)/config/missing \
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/build.cfg.in \
+ $(top_srcdir)/build-aux/compile \
+ $(top_srcdir)/build-aux/config.guess \
+ $(top_srcdir)/build-aux/config.rpath \
+ $(top_srcdir)/build-aux/config.sub \
+ $(top_srcdir)/build-aux/depcomp \
+ $(top_srcdir)/build-aux/install-sh \
+ $(top_srcdir)/build-aux/missing $(top_srcdir)/src/config.h.in \
$(top_srcdir)/tests/config-flags.pm.in ABOUT-NLS AUTHORS \
- COPYING INSTALL NEWS README alloca.c getloadavg.c
+ COPYING NEWS README build-aux/compile build-aux/config.guess \
+ build-aux/config.rpath build-aux/config.sub build-aux/depcomp \
+ build-aux/install-sh build-aux/missing
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
@@ -317,45 +379,386 @@ am__relativize = \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
-DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.lz
GZIP_ENV = --best
-DIST_TARGETS = dist-bzip2 dist-gzip
+DIST_TARGETS = dist-lzip dist-gzip
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AM_LDFLAGS = @AM_LDFLAGS@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
AR = @AR@
+ARFLAGS = @ARFLAGS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
-DEFS = -DLOCALEDIR=\"$(localedir)\" -DLIBDIR=\"$(libdir)\" -DINCLUDEDIR=\"$(includedir)\" @DEFS@
+DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
EXEEXT = @EXEEXT@
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GLOBINC = @GLOBINC@
-GLOBLIB = @GLOBLIB@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ACCESS = @GNULIB_ACCESS@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHDIR = @GNULIB_CHDIR@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_COPY_FILE_RANGE = @GNULIB_COPY_FILE_RANGE@
+GNULIB_CREAT = @GNULIB_CREAT@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP = @GNULIB_DUP@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_EXPLICIT_BZERO = @GNULIB_EXPLICIT_BZERO@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FDATASYNC = @GNULIB_FDATASYNC@
+GNULIB_FDOPEN = @GNULIB_FDOPEN@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FFSL = @GNULIB_FFSL@
+GNULIB_FFSLL = @GNULIB_FFSLL@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETPASS = @GNULIB_GETPASS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_ISATTY = @GNULIB_ISATTY@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_OVERRIDES_WINT_T = @GNULIB_OVERRIDES_WINT_T@
+GNULIB_PCLOSE = @GNULIB_PCLOSE@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_QSORT_R = @GNULIB_QSORT_R@
+GNULIB_RANDOM = @GNULIB_RANDOM@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOCARRAY = @GNULIB_REALLOCARRAY@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLD = @GNULIB_STRTOLD@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TRUNCATE = @GNULIB_TRUNCATE@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
GREP = @GREP@
GUILE_CFLAGS = @GUILE_CFLAGS@
GUILE_LIBS = @GUILE_LIBS@
+HAVE_ALLOCA_H = @HAVE_ALLOCA_H@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_COPY_FILE_RANGE = @HAVE_COPY_FILE_RANGE@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN = @HAVE_DECL_GETLOGIN@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_INITSTATE = @HAVE_DECL_INITSTATE@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@
+HAVE_DECL_SETSTATE = @HAVE_DECL_SETSTATE@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_TRUNCATE = @HAVE_DECL_TRUNCATE@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_EXPLICIT_BZERO = @HAVE_EXPLICIT_BZERO@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FDATASYNC = @HAVE_FDATASYNC@
+HAVE_FFSL = @HAVE_FFSL@
+HAVE_FFSLL = @HAVE_FFSLL@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETPASS = @HAVE_GETPASS@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INITSTATE = @HAVE_INITSTATE@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBTOWC = @HAVE_MBTOWC@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PCLOSE = @HAVE_PCLOSE@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_POPEN = @HAVE_POPEN@
+HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PTSNAME_R = @HAVE_PTSNAME_R@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_QSORT_R = @HAVE_QSORT_R@
+HAVE_RANDOM = @HAVE_RANDOM@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALLOCARRAY = @HAVE_REALLOCARRAY@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@
+HAVE_SETSTATE = @HAVE_SETSTATE@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLD = @HAVE_STRTOLD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+HOST_CPU = @HOST_CPU@
+HOST_CPU_C_ABI = @HOST_CPU_C_ABI@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -363,12 +766,14 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INTLLIBS = @INTLLIBS@
INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-KMEM_GROUP = @KMEM_GROUP@
LDFLAGS = @LDFLAGS@
+LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
+LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
LIBICONV = @LIBICONV@
LIBINTL = @LIBINTL@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
+LIMITS_H = @LIMITS_H@
LTLIBICONV = @LTLIBICONV@
LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
@@ -378,7 +783,26 @@ MKDIR_P = @MKDIR_P@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
-NEED_SETGID = @NEED_SETGID@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_LIMITS_H = @NEXT_LIMITS_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -393,14 +817,136 @@ PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
RANLIB = @RANLIB@
REMOTE = @REMOTE@
+REPLACE_ACCESS = @REPLACE_ACCESS@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_CREAT = @REPLACE_CREAT@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_FACCESSAT = @REPLACE_FACCESSAT@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FDOPEN = @REPLACE_FDOPEN@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETPASS = @REPLACE_GETPASS@
+REPLACE_INITSTATE = @REPLACE_INITSTATE@
+REPLACE_ISATTY = @REPLACE_ISATTY@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PTSNAME = @REPLACE_PTSNAME@
+REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_QSORT_R = @REPLACE_QSORT_R@
+REPLACE_RANDOM = @REPLACE_RANDOM@
+REPLACE_RANDOM_R = @REPLACE_RANDOM_R@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_READLINKAT = @REPLACE_READLINKAT@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETSTATE = @REPLACE_SETSTATE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_STRTOLD = @REPLACE_STRTOLD@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TRUNCATE = @REPLACE_TRUNCATE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WRITE = @REPLACE_WRITE@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
STRIP = @STRIP@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
USE_NLS = @USE_NLS@
+USE_SYSTEM_GLOB = @USE_SYSTEM_GLOB@
VERSION = @VERSION@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@
+WINDOWS_STAT_INODES = @WINDOWS_STAT_INODES@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -408,7 +954,6 @@ abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
@@ -427,6 +972,11 @@ datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
@@ -438,8 +988,6 @@ infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
-
-# --------------- Internationalization Section
localedir = $(datadir)/locale
localstatedir = @localstatedir@
mandir = @mandir@
@@ -458,70 +1006,68 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = dist-bzip2 silent-rules std-options
-ACLOCAL_AMFLAGS = -I config
-
-# Only process if target is MS-Windows
-@WINDOWSENV_TRUE@MAYBE_W32 = w32
-@WINDOWSENV_TRUE@W32INC = -I $(top_srcdir)/w32/include
-@WINDOWSENV_TRUE@W32LIB = -Lw32 -lw32
-@WINDOWSENV_FALSE@ossrc = posixos.c
-@WINDOWSENV_TRUE@ossrc =
-SUBDIRS = glob config po doc $(MAYBE_W32)
-include_HEADERS = gnumake.h
-@USE_CUSTOMS_FALSE@remote = remote-stub.c
-@USE_CUSTOMS_TRUE@remote = remote-cstms.c
-make_SOURCES = ar.c arscan.c commands.c default.c dir.c expand.c file.c \
- function.c getopt.c getopt1.c guile.c implicit.c job.c load.c \
- loadapi.c main.c misc.c $(ossrc) output.c read.c remake.c \
- rule.c signame.c strcache.c variable.c version.c vpath.c \
- hash.c $(remote)
-
-EXTRA_make_SOURCES = vmsjobs.c remote-stub.c remote-cstms.c
-noinst_HEADERS = commands.h dep.h filedef.h job.h makeint.h rule.h variable.h \
- debug.h getopt.h gettext.h hash.h output.h os.h
-
-make_LDADD = @LIBOBJS@ @ALLOCA@ $(GLOBLIB) @GETLOADAVG_LIBS@ @LIBINTL@ \
- $(GUILE_LIBS) $(am__append_1)
-man_MANS = make.1
-AM_CPPFLAGS = $(GLOBINC) $(am__append_2)
+AUTOMAKE_OPTIONS = dist-lzip silent-rules std-options subdir-objects nostdinc
+ACLOCAL_AMFLAGS = -I m4
+SUBDIRS = lib po doc
+include_HEADERS = src/gnumake.h
+man_MANS = doc/make.1
+make_SRCS = src/ar.c src/arscan.c src/commands.c src/commands.h \
+ src/debug.h src/default.c src/dep.h src/dir.c src/expand.c \
+ src/file.c src/filedef.h src/function.c src/getopt.c \
+ src/getopt.h src/getopt1.c src/gettext.h src/guile.c \
+ src/hash.c src/hash.h src/implicit.c src/job.c src/job.h \
+ src/load.c src/loadapi.c src/main.c src/makeint.h src/misc.c \
+ src/os.h src/output.c src/output.h src/read.c src/remake.c \
+ src/rule.c src/rule.h src/signame.c src/strcache.c \
+ src/variable.c src/variable.h src/version.c src/vpath.c
+
+w32_SRCS = src/w32/pathstuff.c src/w32/w32os.c src/w32/compat/dirent.c \
+ src/w32/compat/posixfcn.c src/w32/include/dirent.h \
+ src/w32/include/dlfcn.h src/w32/include/pathstuff.h \
+ src/w32/include/sub_proc.h src/w32/include/w32err.h \
+ src/w32/subproc/misc.c src/w32/subproc/proc.h \
+ src/w32/subproc/sub_proc.c src/w32/subproc/w32err.c
+
+vms_SRCS = src/vms_exit.c src/vms_export_symbol.c src/vms_progname.c \
+ src/vmsdir.h src/vmsfunctions.c src/vmsify.c
+
+amiga_SRCS = src/amiga.c src/amiga.h
+glob_SRCS = lib/fnmatch.c lib/fnmatch.h lib/glob.c lib/glob.h
+alloca_SRCS = lib/alloca.c
+loadavg_SRCS = lib/getloadavg.c
+make_SOURCES = $(make_SRCS) $(am__append_1) $(am__append_3) \
+ $(am__append_4) $(am__append_5)
+EXTRA_make_SOURCES = $(amiga_SRCS) $(vms_SRCS)
+make_LDADD = $(LIBOBJS) $(GUILE_LIBS) lib/libgnu.a $(GETLOADAVG_LIBS) \
+ @LIBINTL@
+
+AM_CPPFLAGS = -Isrc -I$(top_srcdir)/src -Ilib -I$(top_srcdir)/lib \
+ -DLIBDIR=\"$(libdir)\" -DINCLUDEDIR=\"$(includedir)\" \
+ -DLOCALEDIR=\"$(localedir)\" $(am__append_2)
AM_CFLAGS = $(GUILE_CFLAGS)
# Extra stuff to include in the distribution.
-EXTRA_DIST = ChangeLog README build.sh.in $(man_MANS) \
+mk_FILES = Basic.mk mk/msdosdjgpp.mk mk/Amiga.mk mk/VMS.mk mk/Windows32.mk
+# We don't need this, since the standard automake output will do.
+#mk/Posix.mk.in
+m4_FILES = m4/gnulib-cache.m4
+test_FILES = tests/run_make_tests tests/run_make_tests.bat \
+ tests/run_make_tests.pl tests/test_driver.pl \
+ tests/config-flags.pm.in tests/config_flags_pm.com \
+ tests/config-flags.pm.W32 \
+ tests/mkshadow tests/thelp.pl tests/guile.supp tests/README
+
+# test/scripts are added via dist-hook below.
+EXTRA_DIST = ChangeLog README build.sh build.cfg.in $(man_MANS) \
README.customs README.OS2 \
- SCOPTIONS SMakefile \
- README.Amiga Makefile.ami config.ami make.lnk amiga.c amiga.h \
- README.DOS Makefile.DOS configure.bat dosbuild.bat configh.dos\
- README.W32 NMakefile config.h.W32 build_w32.bat subproc.bat \
- make_msvc_net2003.sln make_msvc_net2003.vcproj \
- README.VMS makefile.vms makefile.com config.h-vms \
- vmsdir.h vmsfunctions.c vmsify.c vms_exit.c vms_progname.c \
- vms_export_symbol.c vms_export_symbol_test.com \
- gmk-default.scm gmk-default.h
-
-
-# This is built during configure, but behind configure's back
-DISTCLEANFILES = build.sh
+ README.Amiga SCOPTIONS src/config.ami \
+ README.DOS builddos.bat src/configh.dos \
+ README.W32 build_w32.bat src/config.h.W32 \
+ README.VMS makefile.com src/config.h-vms src/vmsjobs.c \
+ vms_export_symbol_test.com \
+ src/gmk-default.scm src/gmk-default.h \
+ $(mk_FILES) $(m4_FILES) $(test_FILES)
-# --------------- Local INSTALL Section
-
-# If necessary, change the gid of the app and turn on the setgid flag.
-#
-
-# Whether or not make needs to be installed setgid.
-# The value should be either 'true' or 'false'.
-# On many systems, the getloadavg function (used to implement the '-l'
-# switch) will not work unless make is installed setgid kmem.
-#
-inst_setgid = @NEED_SETGID@
-
-# Install make setgid to this group so it can get the load average.
-#
-inst_group = @KMEM_GROUP@
-nodist_loadavg_SOURCES = getloadavg.c
-loadavg_CPPFLAGS = -DTEST
-loadavg_LDADD = @GETLOADAVG_LIBS@
# > check-regression
#
@@ -530,8 +1076,7 @@ loadavg_LDADD = @GETLOADAVG_LIBS@
# the test suite. Unfortunately the test suite itself isn't localizable yet.
#
MAKETESTFLAGS =
-all: config.h
- $(MAKE) $(AM_MAKEFLAGS) all-recursive
+all: all-recursive
.SUFFIXES:
.SUFFIXES: .c .o .obj
@@ -556,8 +1101,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -569,20 +1114,22 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
$(am__aclocal_m4_deps):
-config.h: stamp-h1
- @test -f $@ || rm -f stamp-h1
- @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
+src/config.h: src/stamp-h1
+ @test -f $@ || rm -f src/stamp-h1
+ @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) src/stamp-h1
-stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
- @rm -f stamp-h1
- cd $(top_builddir) && $(SHELL) ./config.status config.h
-$(srcdir)/config.h.in: $(am__configure_deps)
+src/stamp-h1: $(top_srcdir)/src/config.h.in $(top_builddir)/config.status
+ @rm -f src/stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status src/config.h
+$(top_srcdir)/src/config.h.in: $(am__configure_deps)
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
- rm -f stamp-h1
+ rm -f src/stamp-h1
touch $@
distclean-hdr:
- -rm -f config.h stamp-h1
+ -rm -f src/config.h src/stamp-h1
+build.cfg: $(top_builddir)/config.status $(srcdir)/build.cfg.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
tests/config-flags.pm: $(top_builddir)/config.status $(top_srcdir)/tests/config-flags.pm.in
cd $(top_builddir) && $(SHELL) ./config.status $@
install-binPROGRAMS: $(bin_PROGRAMS)
@@ -643,13 +1190,103 @@ installcheck-binPROGRAMS: $(bin_PROGRAMS)
else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
done; \
done; rm -f c$${pid}_.???; exit $$bad
-
-clean-checkPROGRAMS:
- -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
-
-loadavg$(EXEEXT): $(loadavg_OBJECTS) $(loadavg_DEPENDENCIES) $(EXTRA_loadavg_DEPENDENCIES)
- @rm -f loadavg$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(loadavg_OBJECTS) $(loadavg_LDADD) $(LIBS)
+src/$(am__dirstamp):
+ @$(MKDIR_P) src
+ @: > src/$(am__dirstamp)
+src/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/$(DEPDIR)
+ @: > src/$(DEPDIR)/$(am__dirstamp)
+src/ar.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/arscan.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/commands.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/default.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/dir.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/expand.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/file.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/function.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/getopt.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/getopt1.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/guile.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/hash.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/implicit.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/job.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/load.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/loadapi.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/main.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/misc.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/output.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/read.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/remake.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/rule.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/signame.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/strcache.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/variable.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/version.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/vpath.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/w32/$(am__dirstamp):
+ @$(MKDIR_P) src/w32
+ @: > src/w32/$(am__dirstamp)
+src/w32/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/w32/$(DEPDIR)
+ @: > src/w32/$(DEPDIR)/$(am__dirstamp)
+src/w32/pathstuff.$(OBJEXT): src/w32/$(am__dirstamp) \
+ src/w32/$(DEPDIR)/$(am__dirstamp)
+src/w32/w32os.$(OBJEXT): src/w32/$(am__dirstamp) \
+ src/w32/$(DEPDIR)/$(am__dirstamp)
+src/w32/compat/$(am__dirstamp):
+ @$(MKDIR_P) src/w32/compat
+ @: > src/w32/compat/$(am__dirstamp)
+src/w32/compat/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/w32/compat/$(DEPDIR)
+ @: > src/w32/compat/$(DEPDIR)/$(am__dirstamp)
+src/w32/compat/dirent.$(OBJEXT): src/w32/compat/$(am__dirstamp) \
+ src/w32/compat/$(DEPDIR)/$(am__dirstamp)
+src/w32/compat/posixfcn.$(OBJEXT): src/w32/compat/$(am__dirstamp) \
+ src/w32/compat/$(DEPDIR)/$(am__dirstamp)
+src/w32/subproc/$(am__dirstamp):
+ @$(MKDIR_P) src/w32/subproc
+ @: > src/w32/subproc/$(am__dirstamp)
+src/w32/subproc/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/w32/subproc/$(DEPDIR)
+ @: > src/w32/subproc/$(DEPDIR)/$(am__dirstamp)
+src/w32/subproc/misc.$(OBJEXT): src/w32/subproc/$(am__dirstamp) \
+ src/w32/subproc/$(DEPDIR)/$(am__dirstamp)
+src/w32/subproc/sub_proc.$(OBJEXT): src/w32/subproc/$(am__dirstamp) \
+ src/w32/subproc/$(DEPDIR)/$(am__dirstamp)
+src/w32/subproc/w32err.$(OBJEXT): src/w32/subproc/$(am__dirstamp) \
+ src/w32/subproc/$(DEPDIR)/$(am__dirstamp)
+src/posixos.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/remote-cstms.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/remote-stub.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/amiga.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
+src/vms_exit.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/vms_export_symbol.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/vms_progname.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/vmsfunctions.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
+src/vmsify.$(OBJEXT): src/$(am__dirstamp) \
+ src/$(DEPDIR)/$(am__dirstamp)
make$(EXEEXT): $(make_OBJECTS) $(make_DEPENDENCIES) $(EXTRA_make_DEPENDENCIES)
@rm -f make$(EXEEXT)
@@ -657,72 +1294,79 @@ make$(EXEEXT): $(make_OBJECTS) $(make_DEPENDENCIES) $(EXTRA_make_DEPENDENCIES)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
+ -rm -f src/*.$(OBJEXT)
+ -rm -f src/w32/*.$(OBJEXT)
+ -rm -f src/w32/compat/*.$(OBJEXT)
+ -rm -f src/w32/subproc/*.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/alloca.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getloadavg.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ar.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arscan.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/commands.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/default.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dir.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/expand.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/function.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/guile.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/implicit.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/job.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/load.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loadapi.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loadavg-getloadavg.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/output.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/posixos.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/read.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remake.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-cstms.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remote-stub.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rule.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signame.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strcache.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/variable.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vmsjobs.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vpath.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/amiga.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ar.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/arscan.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/commands.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/default.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/dir.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/expand.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/file.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/function.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/getopt.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/getopt1.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/guile.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/hash.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/implicit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/job.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/load.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/loadapi.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/main.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/misc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/output.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/posixos.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/read.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/remake.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/remote-cstms.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/remote-stub.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/rule.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/signame.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/strcache.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/variable.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/version.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vms_exit.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vms_export_symbol.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vms_progname.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vmsfunctions.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vmsify.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vpath.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/w32/$(DEPDIR)/pathstuff.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/w32/$(DEPDIR)/w32os.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/w32/compat/$(DEPDIR)/dirent.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/w32/compat/$(DEPDIR)/posixfcn.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/w32/subproc/$(DEPDIR)/misc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/w32/subproc/$(DEPDIR)/sub_proc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@src/w32/subproc/$(DEPDIR)/w32err.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+ @$(MKDIR_P) $(@D)
+ @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-loadavg-getloadavg.o: getloadavg.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loadavg_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT loadavg-getloadavg.o -MD -MP -MF $(DEPDIR)/loadavg-getloadavg.Tpo -c -o loadavg-getloadavg.o `test -f 'getloadavg.c' || echo '$(srcdir)/'`getloadavg.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/loadavg-getloadavg.Tpo $(DEPDIR)/loadavg-getloadavg.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getloadavg.c' object='loadavg-getloadavg.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loadavg_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o loadavg-getloadavg.o `test -f 'getloadavg.c' || echo '$(srcdir)/'`getloadavg.c
-
-loadavg-getloadavg.obj: getloadavg.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loadavg_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT loadavg-getloadavg.obj -MD -MP -MF $(DEPDIR)/loadavg-getloadavg.Tpo -c -o loadavg-getloadavg.obj `if test -f 'getloadavg.c'; then $(CYGPATH_W) 'getloadavg.c'; else $(CYGPATH_W) '$(srcdir)/getloadavg.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/loadavg-getloadavg.Tpo $(DEPDIR)/loadavg-getloadavg.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getloadavg.c' object='loadavg-getloadavg.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(loadavg_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o loadavg-getloadavg.obj `if test -f 'getloadavg.c'; then $(CYGPATH_W) 'getloadavg.c'; else $(CYGPATH_W) '$(srcdir)/getloadavg.c'; fi`
install-man1: $(man_MANS)
@$(NORMAL_INSTALL)
@list1=''; \
@@ -894,7 +1538,10 @@ distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
$(am__remove_distdir)
test -d "$(distdir)" || mkdir "$(distdir)"
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -962,12 +1609,12 @@ distdir: $(DISTFILES)
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r "$(distdir)"
dist-gzip: distdir
- tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
$(am__post_remove_distdir)
+
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
$(am__post_remove_distdir)
-
dist-lzip: distdir
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
$(am__post_remove_distdir)
@@ -987,7 +1634,7 @@ dist-shar: distdir
@echo WARNING: "Support for shar distribution archives is" \
"deprecated." >&2
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
- shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
$(am__post_remove_distdir)
dist-zip: distdir
@@ -1005,7 +1652,7 @@ dist dist-all:
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
- GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lz*) \
@@ -1015,7 +1662,7 @@ distcheck: dist
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
- GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
@@ -1085,10 +1732,9 @@ distcleancheck: distclean
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
- $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
$(MAKE) $(AM_MAKEFLAGS) check-local
check: check-recursive
-all-am: Makefile $(PROGRAMS) $(MANS) $(HEADERS) config.h
+all-am: Makefile $(PROGRAMS) $(MANS) $(HEADERS)
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(includedir)"; do \
@@ -1120,19 +1766,67 @@ clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
- -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+ -rm -f src/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/$(am__dirstamp)
+ -rm -f src/w32/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/w32/$(am__dirstamp)
+ -rm -f src/w32/compat/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/w32/compat/$(am__dirstamp)
+ -rm -f src/w32/subproc/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/w32/subproc/$(am__dirstamp)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
-clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
- mostlyclean-am
+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -rf $(DEPDIR) ./$(DEPDIR)
+ -rm -f src/$(DEPDIR)/amiga.Po
+ -rm -f src/$(DEPDIR)/ar.Po
+ -rm -f src/$(DEPDIR)/arscan.Po
+ -rm -f src/$(DEPDIR)/commands.Po
+ -rm -f src/$(DEPDIR)/default.Po
+ -rm -f src/$(DEPDIR)/dir.Po
+ -rm -f src/$(DEPDIR)/expand.Po
+ -rm -f src/$(DEPDIR)/file.Po
+ -rm -f src/$(DEPDIR)/function.Po
+ -rm -f src/$(DEPDIR)/getopt.Po
+ -rm -f src/$(DEPDIR)/getopt1.Po
+ -rm -f src/$(DEPDIR)/guile.Po
+ -rm -f src/$(DEPDIR)/hash.Po
+ -rm -f src/$(DEPDIR)/implicit.Po
+ -rm -f src/$(DEPDIR)/job.Po
+ -rm -f src/$(DEPDIR)/load.Po
+ -rm -f src/$(DEPDIR)/loadapi.Po
+ -rm -f src/$(DEPDIR)/main.Po
+ -rm -f src/$(DEPDIR)/misc.Po
+ -rm -f src/$(DEPDIR)/output.Po
+ -rm -f src/$(DEPDIR)/posixos.Po
+ -rm -f src/$(DEPDIR)/read.Po
+ -rm -f src/$(DEPDIR)/remake.Po
+ -rm -f src/$(DEPDIR)/remote-cstms.Po
+ -rm -f src/$(DEPDIR)/remote-stub.Po
+ -rm -f src/$(DEPDIR)/rule.Po
+ -rm -f src/$(DEPDIR)/signame.Po
+ -rm -f src/$(DEPDIR)/strcache.Po
+ -rm -f src/$(DEPDIR)/variable.Po
+ -rm -f src/$(DEPDIR)/version.Po
+ -rm -f src/$(DEPDIR)/vms_exit.Po
+ -rm -f src/$(DEPDIR)/vms_export_symbol.Po
+ -rm -f src/$(DEPDIR)/vms_progname.Po
+ -rm -f src/$(DEPDIR)/vmsfunctions.Po
+ -rm -f src/$(DEPDIR)/vmsify.Po
+ -rm -f src/$(DEPDIR)/vpath.Po
+ -rm -f src/w32/$(DEPDIR)/pathstuff.Po
+ -rm -f src/w32/$(DEPDIR)/w32os.Po
+ -rm -f src/w32/compat/$(DEPDIR)/dirent.Po
+ -rm -f src/w32/compat/$(DEPDIR)/posixfcn.Po
+ -rm -f src/w32/subproc/$(DEPDIR)/misc.Po
+ -rm -f src/w32/subproc/$(DEPDIR)/sub_proc.Po
+ -rm -f src/w32/subproc/$(DEPDIR)/w32err.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-hdr distclean-tags
@@ -1155,7 +1849,7 @@ install-dvi: install-dvi-recursive
install-dvi-am:
-install-exec-am: install-binPROGRAMS install-exec-local
+install-exec-am: install-binPROGRAMS
install-html: install-html-recursive
@@ -1180,7 +1874,49 @@ installcheck-am: installcheck-binPROGRAMS
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
- -rm -rf $(DEPDIR) ./$(DEPDIR)
+ -rm -f src/$(DEPDIR)/amiga.Po
+ -rm -f src/$(DEPDIR)/ar.Po
+ -rm -f src/$(DEPDIR)/arscan.Po
+ -rm -f src/$(DEPDIR)/commands.Po
+ -rm -f src/$(DEPDIR)/default.Po
+ -rm -f src/$(DEPDIR)/dir.Po
+ -rm -f src/$(DEPDIR)/expand.Po
+ -rm -f src/$(DEPDIR)/file.Po
+ -rm -f src/$(DEPDIR)/function.Po
+ -rm -f src/$(DEPDIR)/getopt.Po
+ -rm -f src/$(DEPDIR)/getopt1.Po
+ -rm -f src/$(DEPDIR)/guile.Po
+ -rm -f src/$(DEPDIR)/hash.Po
+ -rm -f src/$(DEPDIR)/implicit.Po
+ -rm -f src/$(DEPDIR)/job.Po
+ -rm -f src/$(DEPDIR)/load.Po
+ -rm -f src/$(DEPDIR)/loadapi.Po
+ -rm -f src/$(DEPDIR)/main.Po
+ -rm -f src/$(DEPDIR)/misc.Po
+ -rm -f src/$(DEPDIR)/output.Po
+ -rm -f src/$(DEPDIR)/posixos.Po
+ -rm -f src/$(DEPDIR)/read.Po
+ -rm -f src/$(DEPDIR)/remake.Po
+ -rm -f src/$(DEPDIR)/remote-cstms.Po
+ -rm -f src/$(DEPDIR)/remote-stub.Po
+ -rm -f src/$(DEPDIR)/rule.Po
+ -rm -f src/$(DEPDIR)/signame.Po
+ -rm -f src/$(DEPDIR)/strcache.Po
+ -rm -f src/$(DEPDIR)/variable.Po
+ -rm -f src/$(DEPDIR)/version.Po
+ -rm -f src/$(DEPDIR)/vms_exit.Po
+ -rm -f src/$(DEPDIR)/vms_export_symbol.Po
+ -rm -f src/$(DEPDIR)/vms_progname.Po
+ -rm -f src/$(DEPDIR)/vmsfunctions.Po
+ -rm -f src/$(DEPDIR)/vmsify.Po
+ -rm -f src/$(DEPDIR)/vpath.Po
+ -rm -f src/w32/$(DEPDIR)/pathstuff.Po
+ -rm -f src/w32/$(DEPDIR)/w32os.Po
+ -rm -f src/w32/compat/$(DEPDIR)/dirent.Po
+ -rm -f src/w32/compat/$(DEPDIR)/posixfcn.Po
+ -rm -f src/w32/subproc/$(DEPDIR)/misc.Po
+ -rm -f src/w32/subproc/$(DEPDIR)/sub_proc.Po
+ -rm -f src/w32/subproc/$(DEPDIR)/w32err.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
@@ -1201,11 +1937,11 @@ uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \
uninstall-man: uninstall-man1
-.MAKE: $(am__recursive_targets) all check-am install-am install-strip
+.MAKE: $(am__recursive_targets) check-am install-am install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
- am--refresh check check-am check-local clean clean-binPROGRAMS \
- clean-checkPROGRAMS clean-cscope clean-generic cscope \
+ am--depfiles am--refresh check check-am check-local clean \
+ clean-binPROGRAMS clean-cscope clean-generic cscope \
cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \
dist-zip distcheck distclean distclean-compile \
@@ -1213,55 +1949,41 @@ uninstall-man: uninstall-man1
distdir distuninstallcheck dvi dvi-am html html-am info \
info-am install install-am install-binPROGRAMS install-data \
install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-exec-local install-html \
- install-html-am install-includeHEADERS install-info \
- install-info-am install-man install-man1 install-pdf \
- install-pdf-am install-ps install-ps-am install-strip \
- installcheck installcheck-am installcheck-binPROGRAMS \
- installdirs installdirs-am maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
- uninstall-am uninstall-binPROGRAMS uninstall-includeHEADERS \
- uninstall-man uninstall-man1
+ install-exec-am install-html install-html-am \
+ install-includeHEADERS install-info install-info-am \
+ install-man install-man1 install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installcheck-binPROGRAMS installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \
+ uninstall-includeHEADERS uninstall-man uninstall-man1
.PRECIOUS: Makefile
-install-exec-local:
- @if $(inst_setgid); then \
- app=$(DESTDIR)$(bindir)/`echo $(bin_PROGRAMS)|sed '$(transform)'`; \
- if chgrp $(inst_group) $$app && chmod g+s $$app; then \
- echo "chgrp $(inst_group) $$app && chmod g+s $$app"; \
- else \
- echo "$$app needs to be owned by group $(inst_group) and setgid;"; \
- echo "otherwise the '-l' option will probably not work."; \
- echo "You may need special privileges to complete the installation"; \
- echo "of $$app."; \
- fi; \
- else true; fi
-
# --------------- Generate the Guile default module content
-guile.$(OBJEXT): gmk-default.h
-gmk-default.h: $(srcdir)/gmk-default.scm
+src/guile.$(OBJEXT): src/gmk-default.h
+src/gmk-default.h: $(top_srcdir)/src/gmk-default.scm
(echo 'static const char *const GUILE_module_defn = " '\\ \
&& sed -e 's/;.*//' -e '/^[ \t]*$$/d' -e 's/"/\\"/g' -e 's/$$/ \\/' \
- $(srcdir)/gmk-default.scm \
- && echo '";') > $@
+ $(top_srcdir)/src/gmk-default.scm \
+ && echo '";') > src/gmk-default.h
# --------------- Local DIST Section
-# Install the w32 and tests subdirectories
+# Install the mk and tests subdirectories
#
dist-hook:
- (cd $(srcdir); \
- sub=`find w32 tests -follow \( -name .git -o -name .deps -o -name work -o -name .gitignore -o -name \*.orig -o -name \*.rej -o -name \*~ -o -name Makefile \) -prune -o -type f -print`; \
+ (cd $(top_srcdir); \
+ sub=`find tests/scripts -follow \( -name .git -o -name .deps -o -name work -o -name .gitignore -o -name \*.orig -o -name \*.rej -o -name \*~ -o -name \*.out -o -name Makefile \) -prune -o -type f -print`; \
tar chf - $$sub) \
| (cd $(distdir); tar xfBp -)
# --------------- Local CHECK Section
-check-local: check-regression check-loadavg
+check-local: check-regression
@banner=" Regression PASSED: GNU Make $(VERSION) ($(MAKE_HOST)) built with $(CC) "; \
dashes=`echo "$$banner" | sed s/./=/g`; \
echo; \
@@ -1270,33 +1992,27 @@ check-local: check-regression check-loadavg
echo "$$dashes"; \
echo
-.PHONY: check-loadavg check-regression
-
-check-loadavg: loadavg$(EXEEXT)
- @echo The system uptime program believes the load average to be:
- -uptime
- @echo The GNU load average checking code thinks:
- -./loadavg$(EXEEXT)
+.PHONY: check-regression
check-regression: tests/config-flags.pm
- @if test -f '$(srcdir)/tests/run_make_tests'; then \
+ @if test -f '$(top_srcdir)/tests/run_make_tests'; then \
ulimit -n 128; \
if $(PERL) -v >/dev/null 2>&1; then \
- case `cd '$(srcdir)'; pwd` in `pwd`) : ;; \
+ case `cd '$(top_srcdir)'; pwd` in `pwd`) : ;; \
*) test -d tests || mkdir tests; \
rm -f srctests; \
- if ln -s '$(srcdir)/tests' srctests; then \
- for f in run_make_tests run_make_tests.pl test_driver.pl scripts; do \
+ if ln -s '$(top_srcdir)/tests' srctests; then \
+ for f in run_make_tests run_make_tests.pl test_driver.pl scripts jhelp.pl; do \
rm -f tests/$$f; ln -s ../srctests/$$f tests; \
done; fi ;; \
esac; \
- echo "cd tests && $(PERL) ./run_make_tests.pl -srcdir $(abs_srcdir) -make ../make$(EXEEXT) $(MAKETESTFLAGS)"; \
- cd tests && $(PERL) ./run_make_tests.pl -srcdir '$(abs_srcdir)' -make '../make$(EXEEXT)' $(MAKETESTFLAGS); \
+ echo "cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir $(abs_top_srcdir) -make ../make$(EXEEXT) $(MAKETESTFLAGS)"; \
+ cd tests && $(PERL) $(PERLFLAGS) ./run_make_tests.pl -srcdir '$(abs_top_srcdir)' -make '../make$(EXEEXT)' $(MAKETESTFLAGS); \
else \
echo "Can't find a working Perl ($(PERL)); the test suite requires Perl."; \
fi; \
else \
- echo "Can't find the GNU Make test suite ($(srcdir)/tests)."; \
+ echo "Can't find the GNU Make test suite ($(top_srcdir)/tests)."; \
fi
# --------------- Maintainer's Section
diff --git a/NEWS b/NEWS
index 0b04245..e884df1 100644
--- a/NEWS
+++ b/NEWS
@@ -1,19 +1,114 @@
GNU make NEWS -*-indented-text-*-
History of user-visible changes.
- 10 June 2016
+ 19 January 2020
See the end of this file for copyrights and conditions.
-All changes mentioned here are more fully described in the GNU make
-manual, which is contained in this distribution as the file doc/make.texi.
+All user-visible changes are more fully described in the GNU make manual,
+which is contained in this distribution as the file doc/make.texi.
See the README file and the GNU make manual for instructions for
reporting bugs.
+Version 4.3 (19 Jan 2020)
+
+A complete list of bugs fixed in this version is available here:
+
+https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=108&set=custom
+
+* WARNING: Backward-incompatibility!
+ Number signs (#) appearing inside a macro reference or function invocation
+ no longer introduce comments and should not be escaped with backslashes:
+ thus a call such as:
+ foo := $(shell echo '#')
+ is legal. Previously the number sign needed to be escaped, for example:
+ foo := $(shell echo '\#')
+ Now this latter will resolve to "\#". If you want to write makefiles
+ portable to both versions, assign the number sign to a variable:
+ H := \#
+ foo := $(shell echo '$H')
+ This was claimed to be fixed in 3.81, but wasn't, for some reason.
+ To detect this change search for 'nocomment' in the .FEATURES variable.
+
+* WARNING: Backward-incompatibility!
+ Previously appending using '+=' to an empty variable would result in a value
+ starting with a space. Now the initial space is only added if the variable
+ already contains some value. Similarly, appending an empty string does not
+ add a trailing space.
+
+* NOTE: Deprecated behavior.
+ Contrary to the documentation, suffix rules with prerequisites are being
+ treated BOTH as simple targets AND as pattern rules. Further, the
+ prerequisites are ignored by the pattern rules. POSIX specifies that in
+ order to be a suffix rule there can be no prerequisites defined. In this
+ release if POSIX mode is enabled then rules with prerequisites cannot be
+ suffix rules. If POSIX mode is not enabled then the previous behavior is
+ preserved (a pattern rule with no extra prerequisites is created) AND a
+ warning about this behavior is generated:
+ warning: ignoring prerequisites on suffix rule definition
+ The POSIX behavior will be adopted as the only behavior in a future release
+ of GNU make so please resolve any warnings.
+
+* New feature: Grouped explicit targets
+ Pattern rules have always had the ability to generate multiple targets with
+ a single invocation of the recipe. It's now possible to declare that an
+ explicit rule generates multiple targets with a single invocation. To use
+ this, replace the ":" token with "&:" in the rule. To detect this feature
+ search for 'grouped-target' in the .FEATURES special variable.
+ Implementation contributed by Kaz Kylheku <kaz@kylheku.com>
+
+* New feature: .EXTRA_PREREQS variable
+ Words in this variable are considered prerequisites of targets but they are
+ not added to any of the automatic variable values when expanding the
+ recipe. This variable can either be global (applies to all targets) or
+ a target-specific variable. To detect this feature search for 'extra-prereqs'
+ in the .FEATURES special variable.
+ Implementation contributed by Christof Warlich <cwarlich@gmx.de>
+
+* Makefiles can now specify the '-j' option in their MAKEFLAGS variable and
+ this will cause make to enable that parallelism mode.
+
+* GNU make will now use posix_spawn() on systems where it is available.
+ If you prefer to use fork/exec even on systems where posix_spawn() is
+ present, you can use the --disable-posix-spawn option to configure.
+ Implementation contributed by Aron Barath <baratharon@caesar.elte.hu>
+
+* Error messages printed when invoking non-existent commands have been cleaned
+ up and made consistent.
+
+* The previous limit of 63 jobs under -jN on MS-Windows is now
+ increased to 4095. That limit includes the subprocess started by
+ the $(shell) function.
+
+* A new option --no-silent has been added, that cancels the effect of the
+ -s/--silent/--quiet flag.
+
+* A new option -E has been added as a short alias for --eval.
+
+* All wildcard expansion within GNU make, including $(wildcard ...), will sort
+ the results. See https://savannah.gnu.org/bugs/index.php?52076
+
+* Interoperate with newer GNU libc and musl C runtime libraries.
+
+* Performance improvements provided by Paolo Bonzini <pbonzini@redhat.com>
+
+GNU make Developer News
+
+* Import the GNU standard bootstrap script to replace the hand-rolled
+ "make update" method for building code from a GNU make Git repository.
+
+* Rework the source distribution to move source files into the src/*
+ subdirectory. This aligns with modern best practices in GNU.
+
+* Replace local portability code with Gnulib content. Unfortunately due to a
+ problem with Gnulib support for getloadavg, this forces a requirement on
+ Automake 1.16 or above in order to build from Git. See README.git.
+
+
Version 4.2.1 (10 Jun 2016)
A complete list of bugs fixed in this version is available here:
-h
-ttp://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=107&set=custom
+
+https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=107&set=custom
This release is a bug-fix release.
@@ -22,7 +117,7 @@ Version 4.2 (22 May 2016)
A complete list of bugs fixed in this version is available here:
-http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=106&set=custom
+https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=106&set=custom
* New variable: $(.SHELLSTATUS) is set to the exit status of the last != or
$(shell ...) function invoked in this instance of make. This will be "0" if
@@ -61,7 +156,7 @@ Version 4.1 (05 Oct 2014)
A complete list of bugs fixed in this version is available here:
-http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=105&set=custom
+https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=105&set=custom
* New variables: $(MAKE_TERMOUT) and $(MAKE_TERMERR) are set to non-empty
values if stdout or stderr, respectively, are believed to be writing to a
@@ -109,7 +204,7 @@ Version 4.0 (09 Oct 2013)
A complete list of bugs fixed in this version is available here:
-http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=101&set=custom
+https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=101&set=custom
* WARNING: Backward-incompatibility!
If .POSIX is specified, then make adheres to the POSIX backslash/newline
@@ -213,7 +308,7 @@ Version 3.82 (28 Jul 2010)
A complete list of bugs fixed in this version is available here:
-http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set=custom
+https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set=custom
* Compiling GNU make now requires a conforming ISO C 1989 compiler and
standard runtime library.
@@ -378,7 +473,7 @@ Version 3.81 (01 Apr 2006)
might have caused the target to rebuild. Starting with the _next_
release of GNU make, '$?' will contain all prerequisites that caused
the target to be considered out of date.
- See http://savannah.gnu.org/bugs/?16051
+ See https://savannah.gnu.org/bugs/?16051
* WARNING: Backward-incompatibility!
GNU make now implements a generic "second expansion" feature on the
@@ -502,7 +597,7 @@ Version 3.81 (01 Apr 2006)
A complete list of bugs fixed in this version is available here:
- http://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=103
+ https://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=103
Version 3.80 (03 Oct 2002)
@@ -620,7 +715,7 @@ Version 3.80 (03 Oct 2002)
A complete list of bugs fixed in this version is available here:
- http://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=102
+ https://savannah.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=102
Version 3.79.1 (23 Jun 2000)
@@ -1524,7 +1619,7 @@ Version 3.05
(Changes from versions 1 through 3.05 were never recorded. Sorry.)
-------------------------------------------------------------------------------
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/NMakefile b/NMakefile
deleted file mode 100644
index 8bd55fe..0000000
--- a/NMakefile
+++ /dev/null
@@ -1,364 +0,0 @@
-# -*-Makefile-*- to build GNU make with nmake
-#
-# NOTE: If you have no 'make' program at all to process this makefile,
-# run 'build_w32.bat' instead.
-#
-# Copyright (C) 1996-2016 Free Software Foundation, Inc.
-# This file is part of GNU Make.
-#
-# GNU Make is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 3 of the License, or (at your option) any later
-# version.
-#
-# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program. If not, see <http://www.gnu.org/licenses/>.
-
-LINK = link
-CC = cl
-MAKE = nmake
-
-OUTDIR=.
-MAKEFILE=NMakefile
-SUBPROC_MAKEFILE=NMakefile
-
-CFLAGS_any = /nologo /MT /W4 /GX /Zi /YX /I . /I glob /I w32/include /D WIN32 /D WINDOWS32 /D _CONSOLE /D HAVE_CONFIG_H
-CFLAGS_debug = $(CFLAGS_any) /Od /D DEBUG /D _DEBUG /FR.\WinDebug/ /Fp.\WinDebug/make.pch /Fo.\WinDebug/ /Fd.\WinDebug/make.pdb
-CFLAGS_release = $(CFLAGS_any) /O2 /D NDEBUG /FR.\WinRel/ /Fp.\WinRel/make.pch /Fo.\WinRel/
-
-LDFLAGS_debug = w32\subproc\WinDebug\subproc.lib /NOLOGO /SUBSYSTEM:console\
- /STACK:0x400000 /INCREMENTAL:no /PDB:WinDebug/make.pdb /OUT:WinDebug/make.exe /DEBUG
-LDFLAGS_release = w32\subproc\WinRel\subproc.lib /NOLOGO /SUBSYSTEM:console\
- /STACK:0x400000 /INCREMENTAL:no /OUT:WinRel/make.exe
-
-all: config.h subproc Release Debug
-
-#
-# Make sure we build the subproc library first. It has it's own
-# makefile. To be portable to Windows 95, we put the instructions
-# on how to build the library into a batch file. On NT, we could
-# simply have done foo && bar && dog, but this doesn't port.
-#
-subproc: w32/subproc/WinDebug/subproc.lib w32/subproc/WinRel/subproc.lib
-
-w32/subproc/WinDebug/subproc.lib w32/subproc/WinRel/subproc.lib: w32/subproc/misc.c w32/subproc/sub_proc.c w32/subproc/w32err.c
- subproc.bat $(SUBPROC_MAKEFILE) $(MAKE)
- if exist WinDebug\make.exe erase WinDebug\make.exe
- if exist WinRel\make.exe erase WinRel\make.exe
-
-config.h: config.h.W32
- copy $? $@
-
-Release:
- $(MAKE) /f $(MAKEFILE) LDFLAGS="$(LDFLAGS_release)" CFLAGS="$(CFLAGS_release)" OUTDIR=WinRel WinRel/make.exe
-Debug:
- $(MAKE) /f $(MAKEFILE) LDFLAGS="$(LDFLAGS_debug)" CFLAGS="$(CFLAGS_debug)" OUTDIR=WinDebug WinDebug/make.exe
-
-clean:
- if exist WinDebug\nul rmdir /s /q WinDebug
- if exist WinRel\nul rmdir /s /q WinRel
- if exist w32\subproc\WinDebug\nul rmdir /s /q w32\subproc\WinDebug
- if exist w32\subproc\WinRel\nul rmdir /s /q w32\subproc\WinRel
- if exist config.h erase config.h
- erase *.pdb
-
-$(OUTDIR):
- if not exist .\$@\nul mkdir .\$@
-
-LIBS = kernel32.lib user32.lib advapi32.lib
-
-guile = $(OUTDIR)/guile.obj
-
-OBJS = \
- $(OUTDIR)/ar.obj \
- $(OUTDIR)/arscan.obj \
- $(OUTDIR)/commands.obj \
- $(OUTDIR)/default.obj \
- $(OUTDIR)/dir.obj \
- $(OUTDIR)/expand.obj \
- $(OUTDIR)/file.obj \
- $(OUTDIR)/function.obj \
- $(OUTDIR)/getloadavg.obj \
- $(OUTDIR)/getopt.obj \
- $(OUTDIR)/getopt1.obj \
- $(OUTDIR)/hash.obj \
- $(OUTDIR)/implicit.obj \
- $(OUTDIR)/job.obj \
- $(OUTDIR)/load.obj \
- $(OUTDIR)/main.obj \
- $(OUTDIR)/misc.obj \
- $(OUTDIR)/output.obj \
- $(OUTDIR)/read.obj \
- $(OUTDIR)/remake.obj \
- $(OUTDIR)/remote-stub.obj \
- $(OUTDIR)/rule.obj \
- $(OUTDIR)/signame.obj \
- $(OUTDIR)/strcache.obj \
- $(OUTDIR)/variable.obj \
- $(OUTDIR)/version.obj \
- $(OUTDIR)/vpath.obj \
- $(OUTDIR)/glob.obj \
- $(OUTDIR)/fnmatch.obj \
- $(OUTDIR)/dirent.obj \
- $(OUTDIR)/pathstuff.obj \
- $(OUTDIR)/posixfcn.obj \
- $(OUTDIR)/w32os.obj \
- $(guile)
-
-$(OUTDIR)/make.exe: $(OUTDIR) $(OBJS)
- $(LINK) @<<
- $(LDFLAGS) $(LIBS) $(OBJS)
-<<
-
-.c{$(OUTDIR)}.obj:
- $(CC) $(CFLAGS) /c $<
-
-$(OUTDIR)/glob.obj : glob/glob.c
- $(CC) $(CFLAGS) /c $?
-$(OUTDIR)/fnmatch.obj : glob/fnmatch.c
- $(CC) $(CFLAGS) /c $?
-$(OUTDIR)/dirent.obj : w32/compat/dirent.c
- $(CC) $(CFLAGS) /c $?
-$(OUTDIR)/posixfcn.obj : w32/compat/posixfcn.c
- $(CC) $(CFLAGS) /c $?
-$(OUTDIR)/pathstuff.obj : w32/pathstuff.c
- $(CC) $(CFLAGS) /c $?
-$(OUTDIR)/w32os.obj : w32/w32os.c
- $(CC) $(CFLAGS) /c $?
-
-# --------------- DEPENDENCIES
-#
-
-# .deps/alloca.Po
-# dummy
-
-# .deps/ar.Po
-$(OUTDIR)/ar.obj: ar.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h
-
-# .deps/arscan.Po
-$(OUTDIR)/arscan.obj: arscan.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
-
-# .deps/commands.Po
-$(OUTDIR)/commands.obj: commands.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h variable.h job.h output.h \
- commands.h
-
-# .deps/default.Po
-$(OUTDIR)/default.obj: default.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h variable.h rule.h dep.h job.h \
- output.h \
- commands.h
-
-# .deps/dir.Po
-$(OUTDIR)/dir.obj: dir.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- hash.h \
- filedef.h dep.h \
-
-# .deps/expand.Po
-$(OUTDIR)/expand.obj: expand.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h job.h output.h \
- commands.h variable.h rule.h
-
-# .deps/file.Po
-$(OUTDIR)/file.obj: file.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h job.h output.h \
- commands.h variable.h \
- debug.h
-
-# .deps/function.Po
-$(OUTDIR)/function.obj: function.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h variable.h dep.h job.h output.h \
- commands.h debug.h
-
-# .deps/getloadavg.Po
-# dummy
-
-# .deps/getopt.Po
-$(OUTDIR)/getopt.obj: getopt.c config.h \
-
-# .deps/getopt1.Po
-$(OUTDIR)/getopt1.obj: getopt1.c config.h getopt.h \
-
-# .deps/guile.Po
-$(OUTDIR)/guile.obj: guile.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- debug.h filedef.h hash.h dep.h variable.h \
- gmk-default.h
-
-# .deps/hash.Po
-$(OUTDIR)/hash.obj: hash.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- hash.h
-
-# .deps/implicit.Po
-$(OUTDIR)/implicit.obj: implicit.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h rule.h dep.h debug.h variable.h job.h output.h \
- commands.h
-
-# .deps/job.Po
-$(OUTDIR)/job.obj: job.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- job.h output.h \
- debug.h filedef.h hash.h \
- commands.h variable.h os.h
-
-# .deps/load.Po
-$(OUTDIR)/load.obj: load.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- debug.h \
- filedef.h hash.h variable.h
-
-# .deps/loadapi.Po
-$(OUTDIR)/loadapi.obj: loadapi.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h variable.h dep.h
-
-# .deps/loadavg-getloadavg.Po
-# dummy
-
-# .deps/main.Po
-$(OUTDIR)/main.obj: main.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- os.h \
- filedef.h hash.h dep.h variable.h job.h output.h \
- commands.h rule.h debug.h \
- getopt.h
-
-# .deps/misc.Po
-$(OUTDIR)/misc.obj: misc.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h debug.h \
-
-# .deps/output.Po
-$(OUTDIR)/output.obj: output.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- job.h \
- output.h \
-
-# .deps/posixos.Po
-$(OUTDIR)/posixos.obj: posixos.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- debug.h job.h output.h os.h
-
-# .deps/read.Po
-$(OUTDIR)/read.obj: read.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h job.h output.h \
- commands.h variable.h rule.h \
- debug.h
-
-# .deps/remake.Po
-$(OUTDIR)/remake.obj: remake.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h job.h output.h \
- commands.h dep.h variable.h \
- debug.h
-
-# .deps/remote-cstms.Po
-# dummy
-
-# .deps/remote-stub.Po
-$(OUTDIR)/remote-stub.obj: remote-stub.c makeint.h \
- config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h job.h output.h \
- commands.h
-
-# .deps/rule.Po
-$(OUTDIR)/rule.obj: rule.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h job.h output.h \
- commands.h variable.h rule.h
-
-# .deps/signame.Po
-$(OUTDIR)/signame.obj: signame.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
-
-# .deps/strcache.Po
-$(OUTDIR)/strcache.obj: strcache.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- hash.h
-
-# .deps/variable.Po
-$(OUTDIR)/variable.obj: variable.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h job.h output.h \
- commands.h variable.h rule.h
-
-# .deps/version.Po
-$(OUTDIR)/version.obj: version.c config.h
-
-# .deps/vmsjobs.Po
-# dummy
-
-# .deps/vpath.Po
-$(OUTDIR)/vpath.obj: vpath.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h variable.h
diff --git a/README b/README
index 88630da..9449748 100644
--- a/README
+++ b/README
@@ -1,23 +1,27 @@
-This directory contains the 4.2.1 release of GNU Make.
+This directory contains the 4.3 release of GNU Make.
See the file NEWS for the user-visible changes from previous releases.
In addition, there have been bugs fixed.
-Please check the system-specific notes below for any caveats related to
-your operating system.
+Please check the system-specific notes below for any caveats related to your
+operating system.
-For general building and installation instructions, see the file INSTALL.
+If you are trying to build GNU make from a Git clone rather than a downloaded
+source distribution, see the README.git file for instructions.
-If you need to build GNU Make and have no other 'make' program to use,
-you can use the shell script 'build.sh' instead. To do this, first run
-'configure' as described in INSTALL. Then, instead of typing 'make' to
-build the program, type 'sh build.sh'. This should compile the program
-in the current directory. Then you will have a Make program that you can
-use for './make install', or whatever else.
+For source distribution building and installation instructions, see the file
+INSTALL.
-Some systems' Make programs are broken and cannot process the Makefile for
-GNU Make. If you get errors from your system's Make when building GNU
-Make, try using 'build.sh' instead.
+If you need to build GNU Make and have no other 'make' program to use, you can
+use the shell script 'build.sh' instead. To do this, first run 'configure' as
+described in INSTALL. Then, instead of typing 'make' to build the program,
+type 'sh build.sh'. This should compile the program in the current directory.
+Then you will have a Make program that you can use for './make install', or
+whatever else.
+
+Some systems' Make programs cannot process the Makefile for GNU Make. If you
+get errors from your system's Make when building GNU Make, try using
+'build.sh' instead.
GNU Make is free software. See the file COPYING for copying conditions.
@@ -85,18 +89,19 @@ If you need help using GNU make, try these forums:
Git Access
----------
-The GNU make source repository is available via Git from the
-GNU Savannah Git server; look here for details:
+The GNU make source repository is available via Git from the GNU Savannah Git
+server; look here for details:
http://savannah.gnu.org/git/?group=make
-Please note: you won't be able to build GNU make from Git without
-installing appropriate maintainer's tools, such as GNU m4, automake,
-autoconf, Perl, GNU make, and GCC. See the README.git file for hints on
-how to build GNU make once these tools are available. We make no
-guarantees about the contents or quality of the latest code in the Git
-repository: it is not unheard of for code that is known to be broken to
-be checked in. Use at your own risk.
+Please note: you won't be able to build GNU make from Git without installing
+appropriate maintainer's tools, such as GNU m4, automake, autoconf, Perl, GNU
+make, and GCC.
+
+See the README.git file for instructions on how to build GNU make once these
+tools are available. We make no guarantees about the contents or quality of
+the latest code in the Git repository: it is not unheard of for code that is
+known to be broken to be checked in. Use at your own risk.
System-specific Notes
@@ -155,6 +160,11 @@ Ports
of DJGPP; see the WWW page http://www.delorie.com/djgpp/ for more
information.
+ The Cygwin project maintains its own port of GNU make. That port may have
+ patches which are not present in this version. If you are using Cygwin
+ you should use their version of GNU make, and if you have questions about
+ it you should start by asking on those mailing lists and forums.
+
Please note there are two _separate_ ports of GNU make for Microsoft
systems: a native Windows tool built with (for example) MSVC or Cygwin,
and a DOS-based tool built with DJGPP. Please be sure you are looking
@@ -162,7 +172,7 @@ at the right README!
-------------------------------------------------------------------------------
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/README.Amiga b/README.Amiga
index 68d3ea7..b941da3 100644
--- a/README.Amiga
+++ b/README.Amiga
@@ -42,15 +42,18 @@ place). You have to use "$(wildcard src/*.c)" instead.
COMPILING FROM SCRATCH
----------------------
-To recompile, you need SAS/C 6.51. make itself is not necessary, there
-is an smakefile.
+To recompile, you need SAS/C 6.51.
-1. Copy config.ami to config.h
-2. If you use make to compile, copy Makefile.ami to Makefile and
- glob/Makefile.ami to glob/Makefile. Copy make into the current
- directory.
+As of GNU make 4.3, the build environment has been cleaned up and alternate
+make files (including smakefiles) have been removed. If you have an existing
+version of GNU make available you _should_ be able to run:
-3. Run smake/make
+ make -f Basic.mk
+
+However this is untested.
+
+If you have an Amiga system and would like to collaborate on getting
+bootstrapping to work properly please contact bug-make@gnu.org.
INSTALLATION
@@ -61,7 +64,7 @@ If you plan to use recursive makes, install make resident:
-------------------------------------------------------------------------------
-Copyright (C) 1995-2016 Free Software Foundation, Inc.
+Copyright (C) 1995-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/README.DOS b/README.DOS
index 5419d3d..fbb563e 100644
--- a/README.DOS
+++ b/README.DOS
@@ -27,8 +27,8 @@ New (since 3.74) DOS-specific features:
8. Can be built without (a previous version of) Make.
9. The build process requires only standard tools. (Optional
- targets like "install:" and "clean:" still need additional
- programs, though, see below.)
+ targets like "check:" still need additional programs, though,
+ see below.)
10. Beginning with v3.78, the test suite works in the DJGPP
environment (requires Perl and auxiliary tools; see below).
@@ -55,78 +55,34 @@ To build from sources:
either DJTAR (which is part of the DJGPP development
environment), or the DJGPP port of GNU Tar.
- 2. Invoke the 'configure.bat' batch file.
+ 2. If you have a working Make already, you can run:
- If you are building Make in-place, i.e. in the same directory
- where its sources are kept, just type "configure.bat" and press
- [Enter]. Otherwise, you need to supply the path to the source
- directory as an argument to the batch file, like this:
+ make -f Basic.mk
- c:\djgpp\gnu\make-4.2.1\configure.bat c:/djgpp/gnu/make-4.2.1
+ 3. If you don't have a working Make already you can bootstrap one
+ by running:
- Note the forward slashes in the source path argument: you MUST
- use them here.
+ .\builddos.bat
- 3. If configure.bat doesn't find a working Make, it will suggest to
- use the 'dosbuild.bat' batch file to build Make. Either do as it
- suggests or install another Make program (a pre-compiled binary
- should be available from the usual DJGPP sites) and rerun
- configure.bat.
-
- 4. If you will need to run Make on machines without an FPU, you
- might consider building a version of Make which doesn't issue
- floating-point instructions (they don't help much on MSDOS
- anyway). To this end, edit the Makefile created by
- configure.bat and add -DNO_FLOAT to the value of CPPFLAGS.
-
- 5. Invoke Make.
-
- If you are building from outside of the source directory, you
+ 4. If you are building from outside of the source directory, you
need to tell Make where the sources are, like this:
- make srcdir=c:/djgpp/gnu/make-4.2.1
-
- (configure.bat will tell you this when it finishes). You MUST
- use a full, not relative, name of the source directory here, or
- else Make might fail.
-
- 6. After Make finishes, if you have a Unix-style shell installed,
- you can use the 'install' target to install the package. You
- will also need GNU Fileutils and GNU Sed for this (they should
- be available from the DJGPP sites).
-
- By default, GNU make will install into your DJGPP installation
- area. If you wish to use a different directory, override the
- DESTDIR variable when invoking "make install", like this:
-
- make install DESTDIR=c:/other/dir
+ make -f c:/djgpp/gnu/make/Basic.mk SRCDIR=c:/djgpp/gnu/make
- This causes the make executable to be placed in c:/other/dir/bin,
- the man pages in c:/other/dir/man, etc.
+ or:
- Without a Unix-style shell, you will have to install programs
- and the docs manually. Copy make.exe to a directory on your
- PATH, make.i* info files to your Info directory, and update the
- file 'dir' in your Info directory by adding the following item
- to the main menu:
+ c:/djgpp/gnu/make/builddos.bat c:/djgpp/gnu/make
- * Make: (make.info). The GNU make utility.
-
- If you have the 'install-info' program (from the GNU Texinfo
- package), it will do that for you if you invoke it like this:
-
- install-info --info-dir=c:/djgpp/info c:/djgpp/info/make.info
-
- (If your Info directory is other than C:\DJGPP\INFO, change this
- command accordingly.)
-
- 7. The 'clean' targets also require Unix-style shell, and GNU Sed
- and 'rm' programs (the latter from Fileutils).
-
- 8. To run the test suite, type "make check". This requires a Unix
+ 5. To run the test suite, type "make check". This requires a Unix
shell (I used the DJGPP port of Bash 2.03), Perl, Sed, Fileutils
and Sh-utils.
+ 6. To install copy make.exe to the preferred location.
+
+ Since GNU make 4.3, support for customized platform installations
+ has been removed. If you'd like to collaborate on reinstating
+ these capabilities, contact bug-make@gnu.org.
+
Notes:
-----
@@ -324,7 +280,7 @@ Bug reports:
-------------------------------------------------------------------------------
-Copyright (C) 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/README.OS2 b/README.OS2
index 0ce81b4..54450d9 100644
--- a/README.OS2
+++ b/README.OS2
@@ -160,7 +160,7 @@ from the make source tree.
-------------------------------------------------------------------------------
-Copyright (C) 2003-2016 Free Software Foundation, Inc.
+Copyright (C) 2003-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/README.W32 b/README.W32
index 1bdce48..fe88a77 100644
--- a/README.W32
+++ b/README.W32
@@ -5,16 +5,15 @@ It has also been used on Windows 95/98/NT, and on OS/2.
It builds with the MinGW port of GCC (tested with GCC 3.4.2, 4.8.1,
and 4.9.3).
-It also builds with MSVC 2.x, 4.x, 5.x, 6.x, 2003, and 14 (2015) as
-well as with .NET 7.x and .NET 2003.
+It also builds with MSVC 2.x, 4.x, 5.x, 6.x, 2005, 2008, 2010, 2012,
+2013, and 2015 as well as with .NET 7.x and .NET 2003.
-As of version 4.0, a build with Guile is supported (tested with Guile
-2.0.3). To build with Guile, you will need, in addition to Guile
-itself, its dependency libraries and the pkg-config program. The
-latter is used to figure out which compilation and link switches and
-libraries need to be mentioned on the compiler command lines to
-correctly link with Guile. A Windows port of pkg-config can be found
-on ezwinports site:
+Building with Guile is supported (tested with Guile 2.0.x). To build
+with Guile, you will need, in addition to Guile itself, its dependency
+libraries and the pkg-config program. The latter is used to figure out
+which compilation and link switches and libraries need to be mentioned
+on the compiler command lines to correctly link with Guile. A Windows
+port of pkg-config can be found on ezwinports site:
http://sourceforge.net/projects/ezwinports/
@@ -42,59 +41,116 @@ Do this first, regardless of the build method you choose:
case, while Makefile rules are written for lower-case versions.)
-Using make_msvc_net2003.vcproj
-------------------------------
-
- 2. Open make_msvc_net2003.vcproj in MSVS71 or MSVC71 or any compatible IDE,
- then build this project as usual. There's also a solution file for
- Studio 2003.
-
-
Building with (MinGW-)GCC using build_w32.bat
---------------------------------------------
2. Open a W32 command prompt for your installed (MinGW-)GCC, setup a
correct PATH and other environment variables for it, then execute ...
- build_w32.bat gcc
+ .\build_w32.bat gcc
This produces gnumake.exe in the GccRel directory.
+
If you want a version of GNU make built with debugging enabled,
- add the --debug option.
+ add the --debug option. Output goes into the GccDebug directory.
The batch file will probe for Guile installation, and will build
gnumake.exe with Guile if it finds it. If you have Guile
installed, but want to build Make without Guile support, type
- build_w32.bat --without-guile gcc
+ .\build_w32.bat --without-guile gcc
+
+
+Building with (MSVC++-)cl using build_w32.bat
+---------------------------------------------
+
+ 2. Open a command shell, then execute ...
+
+ .\build_w32.bat
+ This produces a 64bit Release build of gnumake.exe in .\WinRel, using
+ the compiler found on the %Path%. If no compiler is found, the batch
+ file will probe your system and choose the newest MSVC version it can
+ find.
-Building with (MSVC++-)cl using build_w32.bat or NMakefile
-----------------------------------------------------------
+ If you want a 32bit version of GNU make, add the --x86 option.
- 2. Open a W32 command prompt for your installed (MSVC++-)cl, setup a
- correct PATH and other environment variables for it (usually via
- executing vcvars32.bat or vsvars32.bat from the cl-installation,
- e.g. "%VS71COMNTOOLS%vsvars32.bat"; or using a corresponding start
- menue entry from the cl-installation), then execute EITHER ...
+ If you want a Debug build of GNU make, add the --debug option. Output
+ will go into the .\WinDebug directory.
- build_w32.bat
+ The batch file will probe for Guile installation, and will build
+ gnumake.exe with Guile if it finds it. If Guile is installed,
+ but you prefer to build GNU make without Guile support, add the
+ --without-guile option.
+
+
+Building with (MinGW-)GCC using GNU make
+----------------------------------------
+
+ 2. If you already have a version of GNU make available you can use it
+ to build this version. Open a W32 command prompt for your installed
+ (MinGW-)GCC, setup a correct PATH and other environment variables
+ for it, then execute ...
+
+ make -f Basic.mk TOOLCHAIN=gcc
- This produces gnumake.exe in the WinRel directory.
+ This produces GccRel\gnumake.exe.
If you want a version of GNU make built with debugging enabled,
- add the --debug option.
+ add the TARGET_TYPE=debug option:
- ... OR ...
+ make -f Basic.mk TOOLCHAIN=gcc TARGET_TYPE=debug
- nmake /f NMakefile
+ The makefile doesn't support Guile integration. Use build_w32.bat
+ if you want to build with Guile support.
- (this produces WinDebug/make.exe and WinRel/make.exe).
- The batch file will probe for Guile installation, and will build
- gnumake.exe with Guile if it finds it. If you have Guile
- installed, but want to build Make without Guile support, type
+Building with (MSVC++-)cl using GNU make
+----------------------------------------
+
+ 2. If you already have a version of GNU make available you can use it
+ to build this version. Open a W32 command prompt for your installed
+ (MSVC++-)cl, setup a correct PATH and other environment variables
+ for it (usually via executing vcvars32.bat or vsvars32.bat from the
+ cl-installation, or using a corresponding start menu entry from the
+ cl-installation), then execute ...
+
+ make -f Basic.mk
+
+ This produces an optimized WinRel/gnumake.exe.
+ If you want a version of GNU make built with debugging enabled,
+ add the TARGET_TYPE=debug option:
+
+ make -f Basic.mk TARGET_TYPE=debug
+
+ The makefile doesn't support Guile integration. Use build_w32.bat
+ if you want to build with Guile support.
+
+
+Running the test suite
+----------------------
+
+ 3. You will need an installation of Perl. Be sure to use a relatively
+ modern version: older versions will sometimes throw spurious errors.
+
+ To run the suite after building using GNU make, use:
+
+ make -f Basic.mk check
+
+ Alternatively if you'd like to run tests by hand, use:
+
+ cd tests
+ .\run_make_tests.bat -make <path-to-make>
+
+ I've found <path-to-make> seems to want forward-slashes in the path.
+ For example if building with .\build_w32.bat non-debug, use:
+
+ cd tests
+ .\run_make_tests.bat -make ../WinRel/gnumake.exe
+
+ I've tested this with the MSYS2 shell and POSIX tools installation
+ that you get by installing Git for Windows.
+
- build_w32.bat --without-guile
-------------------
-- Notes/Caveats --
@@ -152,10 +208,8 @@ GNU make and brain-dead shells (BATCH_MODE_ONLY_SHELL):
Support for parallel builds
- Parallel builds (-jN) are supported in this port, with 1
- limitation: The number of concurrent processes has a hard
- limit of 64, due to the way this port implements waiting for
- its subprocesses.
+ Parallel builds (-jN) are supported in this port. The number of
+ concurrent processes has a hard limit of 4095.
GNU make and Cygnus GNU Windows32 tools:
@@ -209,13 +263,6 @@ GNU make handling of drive letters in pathnames (PATH, vpath, VPATH):
both Unix and Windows systems, then no ifdef'ing will be
necessary in the makefile source.
-GNU make test suite:
-
- I verified all functionality with a slightly modified version
- of make-test-4.2.1 (modifications to get test suite to run
- on Windows NT). All tests pass in an environment that includes
- sh.exe. Tests were performed on both Windows NT and Windows 95.
-
Pathnames and white space:
Unlike Unix, Windows 95/NT systems encourage pathnames which
@@ -298,7 +345,7 @@ Bug reports:
is described in the GNU make manual and the base README.
-------------------------------------------------------------------------------
-Copyright (C) 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/README.customs b/README.customs
index 67e1252..a62e003 100644
--- a/README.customs
+++ b/README.customs
@@ -96,7 +96,7 @@ SunOS 4.1.x:
-------------------------------------------------------------------------------
-Copyright (C) 1998-2016 Free Software Foundation, Inc.
+Copyright (C) 1998-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/SCOPTIONS b/SCOPTIONS
index f89daae..758f82f 100644
--- a/SCOPTIONS
+++ b/SCOPTIONS
@@ -3,10 +3,10 @@ OPTIMIZE
NOVERSION
OPTIMIZERTIME
OPTIMIZERALIAS
+DEFINE HAVE_CONFIG_H
DEFINE INCLUDEDIR="include:"
DEFINE LIBDIR="lib:"
DEFINE NO_ALLOCA
-DEFINE NO_FLOAT
DEFINE NO_ARCHIVES
IGNORE=161
IGNORE=100
diff --git a/SMakefile b/SMakefile
deleted file mode 100644
index 159d489..0000000
--- a/SMakefile
+++ /dev/null
@@ -1,450 +0,0 @@
-# -*-Makefile-*- for building GNU make with smake
-#
-# NOTE: If you have no 'make' program at all to process this makefile,
-# run 'build.sh' instead.
-#
-# Copyright (C) 1995-2016 Free Software Foundation, Inc.
-# This file is part of GNU Make.
-#
-# GNU Make is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 3 of the License, or (at your option) any later
-# version.
-#
-# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program. If not, see <http://www.gnu.org/licenses/>.
-
-#
-# Makefile for GNU Make
-#
-
-# Ultrix 2.2 make doesn't expand the value of VPATH.
-VPATH = /make-4.2.1/
-# This must repeat the value, because configure will remove 'VPATH = .'.
-srcdir = /make-4.2.1/
-
-CC = sc
-RM = delete
-MAKE = smake
-
-CFLAGS =
-CPPFLAGS =
-LDFLAGS =
-
-# Define these for your system as follows:
-# -DNO_ARCHIVES To disable 'ar' archive support.
-# -DNO_FLOAT To avoid using floating-point numbers.
-# -DENUM_BITFIELDS If the compiler isn't GCC but groks enum foo:2.
-# Some compilers apparently accept this
-# without complaint but produce losing code,
-# so beware.
-# NeXT 1.0a uses an old version of GCC, which required -D__inline=inline.
-# See also 'config.h'.
-defines =
-
-# Which flavor of remote job execution support to use.
-# The code is found in 'remote-$(REMOTE).c'.
-REMOTE = stub
-
-# If you are using the GNU C library, or have the GNU getopt functions in
-# your C library, you can comment these out.
-GETOPT = getopt.o getopt1.o
-GETOPT_SRC = $(srcdir)getopt.c $(srcdir)getopt1.c $(srcdir)getopt.h
-
-# If you are using the GNU C library, or have the GNU glob functions in
-# your C library, you can comment this out. GNU make uses special hooks
-# into the glob functions to be more efficient (by using make's directory
-# cache for globbing), so you must use the GNU functions even if your
-# system's C library has the 1003.2 glob functions already. Also, the glob
-# functions in the AIX and HPUX C libraries are said to be buggy.
-GLOB = Lib glob/glob.lib
-
-# If your system doesn't have alloca, or the one provided is bad, define this.
-ALLOCA = alloca.o
-ALLOCA_SRC = $(srcdir)alloca.c
-
-# If your system needs extra libraries loaded in, define them here.
-# System V probably need -lPW for alloca. HP-UX 7.0's alloca in
-# libPW.a is broken on HP9000s300 and HP9000s400 machines. Use
-# alloca.c instead on those machines.
-LOADLIBES =
-
-# Any extra object files your system needs.
-extras = amiga.o
-
-# Common prefix for machine-independent installed files.
-prefix =
-# Common prefix for machine-dependent installed files.
-exec_prefix =
-
-# Directory to install 'make' in.
-bindir = sc:c
-# Directory to find libraries in for '-lXXX'.
-libdir = lib:
-# Directory to search by default for included makefiles.
-includedir = include:
-# Directory to install the Info files in.
-infodir = doc:
-# Directory to install the man page in.
-mandir = t:
-# Number to put on the man page filename.
-manext = 1
-# Prefix to put on installed 'make' binary file name.
-binprefix =
-# Prefix to put on installed 'make' man page file name.
-manprefix = $(binprefix)
-
-# Whether or not make needs to be installed setgid.
-# The value should be either 'true' or 'false'.
-# On many systems, the getloadavg function (used to implement the '-l'
-# switch) will not work unless make is installed setgid kmem.
-install_setgid = false
-# Install make setgid to this group so it can read /dev/kmem.
-group = sys
-
-# Program to install 'make'.
-INSTALL_PROGRAM = copy
-# Program to install the man page.
-INSTALL_DATA = copy
-# Generic install program.
-INSTALL = copy
-
-# Program to format Texinfo source into Info files.
-MAKEINFO = makeinfo
-# Program to format Texinfo source into DVI files.
-TEXI2DVI = texi2dvi
-
-# Programs to make tags files.
-ETAGS = etags -w
-CTAGS = ctags -w
-
-#guile = guile.o
-
-objs = commands.o job.o dir.o file.o misc.o main.o read.o remake.o \
- rule.o implicit.o default.o variable.o expand.o function.o \
- vpath.o version.o ar.o arscan.o signame.o strcache.o hash.o \
- output.o remote-$(REMOTE).o $(GLOB) $(GETOPT) $(ALLOCA) \
- $(extras) $(guile)
-
-srcs = $(srcdir)commands.c $(srcdir)job.c $(srcdir)dir.c \
- $(srcdir)file.c $(srcdir)getloadavg.c $(srcdir)misc.c \
- $(srcdir)main.c $(srcdir)read.c $(srcdir)remake.c \
- $(srcdir)rule.c $(srcdir)implicit.c $(srcdir)default.c \
- $(srcdir)variable.c $(srcdir)expand.c $(srcdir)function.c \
- $(srcdir)vpath.c $(srcdir)version.c $(srcdir)hash.c \
- $(srcdir)guile.c $(srcdir)remote-$(REMOTE).c \
- $(srcdir)ar.c $(srcdir)arscan.c $(srcdir)strcache.c \
- $(srcdir)signame.c $(srcdir)signame.h $(GETOPT_SRC) \
- $(srcdir)commands.h $(srcdir)dep.h $(srcdir)file.h \
- $(srcdir)job.h $(srcdir)makeint.h $(srcdir)rule.h \
- $(srcdir)output.c $(srcdir)output.h \
- $(srcdir)variable.h $(ALLOCA_SRC) $(srcdir)config.h.in
-
-
-.SUFFIXES:
-.SUFFIXES: .o .c .h .ps .dvi .info .texinfo
-
-all: make
-info: make.info
-dvi: make.dvi
-# Some makes apparently use .PHONY as the default goal if it is before 'all'.
-.PHONY: all check info dvi
-
-make.info: make.texinfo
- $(MAKEINFO) -I$(srcdir) $(srcdir)make.texinfo -o make.info
-
-make.dvi: make.texinfo
- $(TEXI2DVI) $(srcdir)make.texinfo
-
-make.ps: make.dvi
- dvi2ps make.dvi > make.ps
-
-make: $(objs) glob/glob.lib
- $(CC) Link $(LDFLAGS) $(objs) $(LOADLIBES) To make.new
- -delete quiet make
- rename make.new make
-
-# -I. is needed to find config.h in the build directory.
-.c.o:
- $(CC) $(defines) IDir "" IDir $(srcdir)glob \
- $(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION)
-
-glob/glob.lib:
- execute <<
- cd glob
- smake
-<
-
-tagsrcs = $(srcs) $(srcdir)remote-*.c
-TAGS: $(tagsrcs)
- $(ETAGS) $(tagsrcs)
-tags: $(tagsrcs)
- $(CTAGS) $(tagsrcs)
-
-.PHONY: install installdirs
-install:
- copy make sc:c
-
-loadavg: loadavg.c config.h
- $(CC) $(defines) -DTEST -I. -I$(srcdir) $(CFLAGS) $(LDFLAGS) \
- loadavg.c $(LOADLIBES) -o $@
-
-clean: glob-clean
- -$(RM) -f make loadavg *.o core make.dvi
-
-distclean: clean glob-realclean
- -$(RM) -f Makefile config.h config.status build.sh
- -$(RM) -f config.log config.cache
- -$(RM) -f TAGS tags
- -$(RM) -f make.?? make.??s make.log make.toc make.*aux
- -$(RM) -f loadavg.c
-
-realclean: distclean
- -$(RM) -f make.info*
-
-mostlyclean: clean
-
-.PHONY: glob-clean glob-realclean
-
-glob-clean glob-realclean:
- execute <<
- cd glob
- smake $@
-<
-
-# --------------- DEPENDENCIES
-#
-
-# .deps/alloca.Po
-# dummy
-
-# .deps/ar.Po
-ar.o: ar.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h
-
-# .deps/arscan.Po
-arscan.o: arscan.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
-
-# .deps/commands.Po
-commands.o: commands.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h variable.h job.h output.h \
- commands.h
-
-# .deps/default.Po
-default.o: default.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h variable.h rule.h dep.h job.h \
- output.h \
- commands.h
-
-# .deps/dir.Po
-dir.o: dir.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- hash.h \
- filedef.h dep.h \
-
-# .deps/expand.Po
-expand.o: expand.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h job.h output.h \
- commands.h variable.h rule.h
-
-# .deps/file.Po
-file.o: file.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h job.h output.h \
- commands.h variable.h \
- debug.h
-
-# .deps/function.Po
-function.o: function.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h variable.h dep.h job.h output.h \
- commands.h debug.h
-
-# .deps/getloadavg.Po
-# dummy
-
-# .deps/getopt.Po
-getopt.o: getopt.c config.h \
-
-# .deps/getopt1.Po
-getopt1.o: getopt1.c config.h getopt.h \
-
-# .deps/guile.Po
-guile.o: guile.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- debug.h filedef.h hash.h dep.h variable.h \
- gmk-default.h
-
-# .deps/hash.Po
-hash.o: hash.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- hash.h
-
-# .deps/implicit.Po
-implicit.o: implicit.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h rule.h dep.h debug.h variable.h job.h output.h \
- commands.h
-
-# .deps/job.Po
-job.o: job.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- job.h output.h \
- debug.h filedef.h hash.h \
- commands.h variable.h os.h
-
-# .deps/load.Po
-load.o: load.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- debug.h \
- filedef.h hash.h variable.h
-
-# .deps/loadapi.Po
-loadapi.o: loadapi.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h variable.h dep.h
-
-# .deps/loadavg-getloadavg.Po
-# dummy
-
-# .deps/main.Po
-main.o: main.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- os.h \
- filedef.h hash.h dep.h variable.h job.h output.h \
- commands.h rule.h debug.h \
- getopt.h
-
-# .deps/misc.Po
-misc.o: misc.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h debug.h \
-
-# .deps/output.Po
-output.o: output.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- job.h \
- output.h \
-
-# .deps/posixos.Po
-posixos.o: posixos.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- debug.h job.h output.h os.h
-
-# .deps/read.Po
-read.o: read.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h job.h output.h \
- commands.h variable.h rule.h \
- debug.h
-
-# .deps/remake.Po
-remake.o: remake.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h job.h output.h \
- commands.h dep.h variable.h \
- debug.h
-
-# .deps/remote-cstms.Po
-# dummy
-
-# .deps/remote-stub.Po
-remote-stub.o: remote-stub.c makeint.h \
- config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h job.h output.h \
- commands.h
-
-# .deps/rule.Po
-rule.o: rule.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h job.h output.h \
- commands.h variable.h rule.h
-
-# .deps/signame.Po
-signame.o: signame.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
-
-# .deps/strcache.Po
-strcache.o: strcache.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- hash.h
-
-# .deps/variable.Po
-variable.o: variable.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h dep.h job.h output.h \
- commands.h variable.h rule.h
-
-# .deps/version.Po
-version.o: version.c config.h
-
-# .deps/vmsjobs.Po
-# dummy
-
-# .deps/vpath.Po
-vpath.o: vpath.c makeint.h config.h \
- gnumake.h \
- getopt.h \
- gettext.h \
- filedef.h hash.h variable.h
diff --git a/aclocal.m4 b/aclocal.m4
index 5389934..3296947 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.15 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -296,7 +296,7 @@ AS_VAR_COPY([$1], [pkg_cv_][$1])
AS_VAR_IF([$1], [""], [$5], [$4])dnl
])dnl PKG_CHECK_VAR
-# Copyright (C) 2002-2014 Free Software Foundation, Inc.
+# Copyright (C) 2002-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -308,10 +308,10 @@ AS_VAR_IF([$1], [""], [$5], [$4])dnl
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.15'
+[am__api_version='1.16'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.15], [],
+m4_if([$1], [1.16.1], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -327,74 +327,14 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.15])dnl
+[AM_AUTOMAKE_VERSION([1.16.1])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
-# Copyright (C) 2011-2014 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# AM_PROG_AR([ACT-IF-FAIL])
-# -------------------------
-# Try to determine the archiver interface, and trigger the ar-lib wrapper
-# if it is needed. If the detection of archiver interface fails, run
-# ACT-IF-FAIL (default is to abort configure with a proper error message).
-AC_DEFUN([AM_PROG_AR],
-[AC_BEFORE([$0], [LT_INIT])dnl
-AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl
-AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([ar-lib])dnl
-AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false])
-: ${AR=ar}
-
-AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface],
- [AC_LANG_PUSH([C])
- am_cv_ar_interface=ar
- AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])],
- [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
- AC_TRY_EVAL([am_ar_try])
- if test "$ac_status" -eq 0; then
- am_cv_ar_interface=ar
- else
- am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD'
- AC_TRY_EVAL([am_ar_try])
- if test "$ac_status" -eq 0; then
- am_cv_ar_interface=lib
- else
- am_cv_ar_interface=unknown
- fi
- fi
- rm -f conftest.lib libconftest.a
- ])
- AC_LANG_POP([C])])
-
-case $am_cv_ar_interface in
-ar)
- ;;
-lib)
- # Microsoft lib, so override with the ar-lib wrapper script.
- # FIXME: It is wrong to rewrite AR.
- # But if we don't then we get into trouble of one sort or another.
- # A longer-term fix would be to have automake use am__AR in this case,
- # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something
- # similar.
- AR="$am_aux_dir/ar-lib $AR"
- ;;
-unknown)
- m4_default([$1],
- [AC_MSG_ERROR([could not determine $AR interface])])
- ;;
-esac
-AC_SUBST([AR])dnl
-])
-
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -446,7 +386,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd`
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+# Copyright (C) 1997-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -477,7 +417,7 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -668,13 +608,12 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
@@ -682,49 +621,41 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
# Older Autoconf quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval
# if we detect the quoting.
- case $CONFIG_FILES in
- *\'*) eval set x "$CONFIG_FILES" ;;
- *) set x $CONFIG_FILES ;;
- esac
+ # TODO: see whether this extra hack can be removed once we start
+ # requiring Autoconf 2.70 or later.
+ AS_CASE([$CONFIG_FILES],
+ [*\'*], [eval set x "$CONFIG_FILES"],
+ [*], [set x $CONFIG_FILES])
shift
- for mf
+ # Used to flag and report bootstrapping failures.
+ am_rc=0
+ for am_mf
do
# Strip MF so we end up with the name of the file.
- mf=`echo "$mf" | sed -e 's/:.*$//'`
- # Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named 'Makefile.in', but
- # some people rename them; so instead we look at the file content.
- # Grep'ing the first line is not enough: some people post-process
- # each Makefile.in and add a new line on top of each file to say so.
- # Grep'ing the whole file is not good either: AIX grep has a line
+ am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile which includes
+ # dependency-tracking related rules and includes.
+ # Grep'ing the whole file directly is not great: AIX grep has a line
# limit of 2048, but all sed's we know have understand at least 4000.
- if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
- dirpart=`AS_DIRNAME("$mf")`
- else
- continue
- fi
- # Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running 'make'.
- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
- test -z "$DEPDIR" && continue
- am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "$am__include" && continue
- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # Find all dependency output files, they are included files with
- # $(DEPDIR) in their names. We invoke sed twice because it is the
- # simplest approach to changing $(DEPDIR) to its actual value in the
- # expansion.
- for file in `sed -n "
- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
- # Make sure the directory exists.
- test -f "$dirpart/$file" && continue
- fdir=`AS_DIRNAME(["$file"])`
- AS_MKDIR_P([$dirpart/$fdir])
- # echo "creating $dirpart/$file"
- echo '# dummy' > "$dirpart/$file"
- done
+ sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+ || continue
+ am_dirpart=`AS_DIRNAME(["$am_mf"])`
+ am_filepart=`AS_BASENAME(["$am_mf"])`
+ AM_RUN_LOG([cd "$am_dirpart" \
+ && sed -e '/# am--include-marker/d' "$am_filepart" \
+ | $MAKE -f - am--depfiles]) || am_rc=$?
done
+ if test $am_rc -ne 0; then
+ AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
+ for automatic dependency tracking. Try re-running configure with the
+ '--disable-dependency-tracking' option to at least be able to build
+ the package (albeit without support for automatic dependency tracking).])
+ fi
+ AS_UNSET([am_dirpart])
+ AS_UNSET([am_filepart])
+ AS_UNSET([am_mf])
+ AS_UNSET([am_rc])
+ rm -f conftest-deps.mk
}
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
@@ -733,17 +664,16 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
# -----------------------------
# This macro should only be invoked once -- use via AC_REQUIRE.
#
-# This code is only required when automatic dependency tracking
-# is enabled. FIXME. This creates each '.P' file that we will
-# need in order to bootstrap the dependency handling code.
+# This code is only required when automatic dependency tracking is enabled.
+# This creates each '.Po' and '.Plo' makefile fragment that we'll need in
+# order to bootstrap the dependency handling code.
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AC_CONFIG_COMMANDS([depfiles],
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
- [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
+ [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])])
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -767,7 +697,7 @@ fi], [AC_MSG_RESULT([no])])
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -854,8 +784,8 @@ AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
# For better backward compatibility. To be removed once Automake 1.9.x
# dies out for good. For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
# We need awk for the "check" target (and possibly the TAP driver). The
# system "awk" is bad on some platforms.
@@ -922,7 +852,7 @@ END
Aborting the configuration process, to ensure you take notice of the issue.
You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
+that behaves properly: <https://www.gnu.org/software/coreutils/>.
If you want to complete the configuration process using your problematic
'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
@@ -964,7 +894,7 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -985,7 +915,7 @@ if test x"${install_sh+set}" != xset; then
fi
AC_SUBST([install_sh])])
-# Copyright (C) 2003-2014 Free Software Foundation, Inc.
+# Copyright (C) 2003-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1006,7 +936,7 @@ AC_SUBST([am__leading_dot])])
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1014,49 +944,42 @@ AC_SUBST([am__leading_dot])])
# AM_MAKE_INCLUDE()
# -----------------
-# Check to see how make treats includes.
+# Check whether make has an 'include' directive that can support all
+# the idioms we need for our automatic dependency tracking code.
AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
+[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive])
+cat > confinc.mk << 'END'
am__doit:
- @echo this is the am__doit target
+ @echo this is the am__doit target >confinc.out
.PHONY: am__doit
END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
am__include="#"
am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
- am__include=include
- am__quote=
- _am_result=GNU
- ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
- echo '.include "confinc"' > confmf
- case `$am_make -s -f confmf 2> /dev/null` in #(
- *the\ am__doit\ target*)
- am__include=.include
- am__quote="\""
- _am_result=BSD
- ;;
- esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+ AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out])
+ AS_CASE([$?:`cat confinc.out 2>/dev/null`],
+ ['0:this is the am__doit target'],
+ [AS_CASE([$s],
+ [BSD], [am__include='.include' am__quote='"'],
+ [am__include='include' am__quote=''])])
+ if test "$am__include" != "#"; then
+ _am_result="yes ($s style)"
+ break
+ fi
+done
+rm -f confinc.* confmf.*
+AC_MSG_RESULT([${_am_result}])
+AC_SUBST([am__include])])
+AC_SUBST([am__quote])])
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997-2014 Free Software Foundation, Inc.
+# Copyright (C) 1997-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1095,7 +1018,7 @@ fi
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1124,7 +1047,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1171,7 +1094,7 @@ AC_LANG_POP([C])])
# For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1190,7 +1113,7 @@ AC_DEFUN([AM_RUN_LOG],
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1271,7 +1194,7 @@ AC_CONFIG_COMMANDS_PRE(
rm -f conftest.file
])
-# Copyright (C) 2009-2014 Free Software Foundation, Inc.
+# Copyright (C) 2009-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1331,7 +1254,7 @@ AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
-# Copyright (C) 2001-2014 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1359,7 +1282,7 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006-2014 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1378,7 +1301,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004-2014 Free Software Foundation, Inc.
+# Copyright (C) 2004-2018 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -1509,15 +1432,62 @@ AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
-m4_include([config/dospaths.m4])
-m4_include([config/gettext.m4])
-m4_include([config/iconv.m4])
-m4_include([config/intlmacosx.m4])
-m4_include([config/lib-ld.m4])
-m4_include([config/lib-link.m4])
-m4_include([config/lib-prefix.m4])
-m4_include([config/longlong.m4])
-m4_include([config/nls.m4])
-m4_include([config/po.m4])
-m4_include([config/progtest.m4])
-m4_include([acinclude.m4])
+m4_include([m4/00gnulib.m4])
+m4_include([m4/absolute-header.m4])
+m4_include([m4/access.m4])
+m4_include([m4/acinclude.m4])
+m4_include([m4/alloca.m4])
+m4_include([m4/asm-underscore.m4])
+m4_include([m4/close.m4])
+m4_include([m4/dirname.m4])
+m4_include([m4/dospaths.m4])
+m4_include([m4/double-slash-root.m4])
+m4_include([m4/dup2.m4])
+m4_include([m4/eaccess.m4])
+m4_include([m4/errno_h.m4])
+m4_include([m4/error.m4])
+m4_include([m4/extensions.m4])
+m4_include([m4/extern-inline.m4])
+m4_include([m4/fcntl-o.m4])
+m4_include([m4/fcntl.m4])
+m4_include([m4/fcntl_h.m4])
+m4_include([m4/findprog-in.m4])
+m4_include([m4/getdtablesize.m4])
+m4_include([m4/getloadavg.m4])
+m4_include([m4/getprogname.m4])
+m4_include([m4/gettext.m4])
+m4_include([m4/gnulib-common.m4])
+m4_include([m4/gnulib-comp.m4])
+m4_include([m4/host-cpu-c-abi.m4])
+m4_include([m4/iconv.m4])
+m4_include([m4/include_next.m4])
+m4_include([m4/intlmacosx.m4])
+m4_include([m4/lib-ld.m4])
+m4_include([m4/lib-link.m4])
+m4_include([m4/lib-prefix.m4])
+m4_include([m4/limits-h.m4])
+m4_include([m4/longlong.m4])
+m4_include([m4/malloc.m4])
+m4_include([m4/msvc-inval.m4])
+m4_include([m4/msvc-nothrow.m4])
+m4_include([m4/multiarch.m4])
+m4_include([m4/nls.m4])
+m4_include([m4/off_t.m4])
+m4_include([m4/po.m4])
+m4_include([m4/progtest.m4])
+m4_include([m4/ssize_t.m4])
+m4_include([m4/stdbool.m4])
+m4_include([m4/stddef_h.m4])
+m4_include([m4/stdint.m4])
+m4_include([m4/stdio_h.m4])
+m4_include([m4/stdlib_h.m4])
+m4_include([m4/stpcpy.m4])
+m4_include([m4/strerror.m4])
+m4_include([m4/string_h.m4])
+m4_include([m4/sys_socket_h.m4])
+m4_include([m4/sys_types_h.m4])
+m4_include([m4/unistd_h.m4])
+m4_include([m4/warn-on-use.m4])
+m4_include([m4/wchar_t.m4])
+m4_include([m4/wint_t.m4])
+m4_include([m4/xalloc.m4])
diff --git a/config/compile b/build-aux/compile
index a85b723..99e5052 100755
--- a/config/compile
+++ b/build-aux/compile
@@ -1,9 +1,9 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
-scriptversion=2012-10-14.11; # UTC
+scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
@@ -17,7 +17,7 @@ scriptversion=2012-10-14.11; # UTC
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -255,7 +255,8 @@ EOF
echo "compile $scriptversion"
exit $?
;;
- cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+ cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
+ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
func_cl_wrapper "$@" # Doesn't return...
;;
esac
@@ -339,9 +340,9 @@ exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
diff --git a/config/config.guess b/build-aux/config.guess
index c4bd827..95b16c7 100644..100755
--- a/config/config.guess
+++ b/build-aux/config.guess
@@ -1,8 +1,8 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2016 Free Software Foundation, Inc.
+# Copyright 1992-2019 Free Software Foundation, Inc.
-timestamp='2016-05-15'
+timestamp='2019-12-21'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@ timestamp='2016-05-15'
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -27,7 +27,7 @@ timestamp='2016-05-15'
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
#
# Please send patches to <config-patches@gnu.org>.
@@ -39,7 +39,7 @@ Usage: $0 [OPTION]
Output the configuration name of the system \`$me' is run on.
-Operation modes:
+Options:
-h, --help print this help, then exit
-t, --time-stamp print date of last modification, then exit
-v, --version print version number, then exit
@@ -50,7 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2016 Free Software Foundation, Inc.
+Copyright 1992-2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -84,8 +84,6 @@ if test $# != 0; then
exit 1
fi
-trap 'exit 1' 1 2 15
-
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
# temporary files to be created and, as you can see below, it is a
@@ -96,34 +94,40 @@ trap 'exit 1' 1 2 15
# Portable tmp directory creation inspired by the Autoconf team.
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int x;" > $dummy.c ;
- for c in cc gcc c89 c99 ; do
- if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$c"; break ;
- fi ;
- done ;
- if test x"$CC_FOR_BUILD" = x ; then
- CC_FOR_BUILD=no_compiler_found ;
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
+tmp=
+# shellcheck disable=SC2172
+trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
+
+set_cc_for_build() {
+ # prevent multiple calls if $tmp is already set
+ test "$tmp" && return 0
+ : "${TMPDIR=/tmp}"
+ # shellcheck disable=SC2039
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
+ dummy=$tmp/dummy
+ case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
+ ,,) echo "int x;" > "$dummy.c"
+ for driver in cc gcc c89 c99 ; do
+ if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$driver"
+ break
+ fi
+ done
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+ esac
+}
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+if test -f /.attbin/uname ; then
PATH=$PATH:/.attbin ; export PATH
fi
@@ -132,14 +136,14 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-case "${UNAME_SYSTEM}" in
+case "$UNAME_SYSTEM" in
Linux|GNU|GNU/*)
# If the system lacks a compiler, then just pick glibc.
# We could probably try harder.
LIBC=gnu
- eval $set_cc_for_build
- cat <<-EOF > $dummy.c
+ set_cc_for_build
+ cat <<-EOF > "$dummy.c"
#include <features.h>
#if defined(__UCLIBC__)
LIBC=uclibc
@@ -149,13 +153,20 @@ Linux|GNU|GNU/*)
LIBC=gnu
#endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+ eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
+
+ # If ldd exists, use it to detect musl libc.
+ if command -v ldd >/dev/null && \
+ ldd --version 2>&1 | grep -q ^musl
+ then
+ LIBC=musl
+ fi
;;
esac
# Note: order is significant - the case branches are not exclusive.
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
@@ -169,30 +180,30 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# portion of the name. We always set it to "unknown".
sysctl="sysctl -n hw.machine_arch"
UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
- /sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || \
+ "/sbin/$sysctl" 2>/dev/null || \
+ "/usr/sbin/$sysctl" 2>/dev/null || \
echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
+ case "$UNAME_MACHINE_ARCH" in
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;;
earmv*)
- arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
- endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
- machine=${arch}${endian}-unknown
+ arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+ endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
+ machine="${arch}${endian}"-unknown
;;
- *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
esac
# The Operating System including object format, if it has switched
# to ELF recently (or will in the future) and ABI.
- case "${UNAME_MACHINE_ARCH}" in
+ case "$UNAME_MACHINE_ARCH" in
earm*)
os=netbsdelf
;;
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
- eval $set_cc_for_build
+ set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__
then
@@ -208,10 +219,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
;;
esac
# Determine ABI tags.
- case "${UNAME_MACHINE_ARCH}" in
+ case "$UNAME_MACHINE_ARCH" in
earm*)
expr='s/^earmv[0-9]/-eabi/;s/eb$//'
- abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
+ abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
;;
esac
# The OS release
@@ -219,45 +230,60 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# thus, need a distinct triplet. However, they do not need
# kernel version information, so it can be replaced with a
# suitable tag, in the style of linux-gnu.
- case "${UNAME_VERSION}" in
+ case "$UNAME_VERSION" in
Debian*)
release='-gnu'
;;
*)
- release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
+ release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
;;
esac
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}${abi}"
+ echo "$machine-${os}${release}${abi-}"
exit ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+ echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
exit ;;
*:LibertyBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
+ exit ;;
+ *:MidnightBSD:*:*)
+ echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
exit ;;
*:ekkoBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
exit ;;
*:SolidBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
+ exit ;;
+ *:OS108:*:*)
+ echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"
exit ;;
macppc:MirBSD:*:*)
- echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
exit ;;
*:MirBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
exit ;;
*:Sortix:*:*)
- echo ${UNAME_MACHINE}-unknown-sortix
+ echo "$UNAME_MACHINE"-unknown-sortix
+ exit ;;
+ *:Twizzler:*:*)
+ echo "$UNAME_MACHINE"-unknown-twizzler
+ exit ;;
+ *:Redox:*:*)
+ echo "$UNAME_MACHINE"-unknown-redox
+ exit ;;
+ mips:OSF1:*.*)
+ echo mips-dec-osf1
exit ;;
alpha:OSF1:*:*)
case $UNAME_RELEASE in
@@ -310,28 +336,19 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+ echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
exitcode=$?
trap '' 0
exit $exitcode ;;
- Alpha\ *:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # Should we change UNAME_MACHINE based on the output of uname instead
- # of the specific Alpha model?
- echo alpha-pc-interix
- exit ;;
- 21064:Windows_NT:50:3)
- echo alpha-dec-winnt3.5
- exit ;;
Amiga*:UNIX_System_V:4.0:*)
echo m68k-unknown-sysv4
exit ;;
*:[Aa]miga[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-amigaos
+ echo "$UNAME_MACHINE"-unknown-amigaos
exit ;;
*:[Mm]orph[Oo][Ss]:*:*)
- echo ${UNAME_MACHINE}-unknown-morphos
+ echo "$UNAME_MACHINE"-unknown-morphos
exit ;;
*:OS/390:*:*)
echo i370-ibm-openedition
@@ -343,7 +360,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
echo powerpc-ibm-os400
exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix${UNAME_RELEASE}
+ echo arm-acorn-riscix"$UNAME_RELEASE"
exit ;;
arm*:riscos:*:*|arm*:RISCOS:*:*)
echo arm-unknown-riscos
@@ -370,19 +387,19 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
sparc) echo sparc-icl-nx7; exit ;;
esac ;;
s390x:SunOS:*:*)
- echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
exit ;;
sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
exit ;;
i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
- echo i386-pc-auroraux${UNAME_RELEASE}
+ echo i386-pc-auroraux"$UNAME_RELEASE"
exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
- eval $set_cc_for_build
+ set_cc_for_build
SUN_ARCH=i386
# If there is a compiler, see if it is configured for 64-bit objects.
# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
@@ -395,13 +412,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
SUN_ARCH=x86_64
fi
fi
- echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
sun4*:SunOS:*:*)
case "`/usr/bin/arch -k`" in
@@ -410,25 +427,25 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
;;
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
exit ;;
sun3*:SunOS:*:*)
- echo m68k-sun-sunos${UNAME_RELEASE}
+ echo m68k-sun-sunos"$UNAME_RELEASE"
exit ;;
sun*:*:4.2BSD:*)
UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
- test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3
+ test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
case "`/bin/arch`" in
sun3)
- echo m68k-sun-sunos${UNAME_RELEASE}
+ echo m68k-sun-sunos"$UNAME_RELEASE"
;;
sun4)
- echo sparc-sun-sunos${UNAME_RELEASE}
+ echo sparc-sun-sunos"$UNAME_RELEASE"
;;
esac
exit ;;
aushp:SunOS:*:*)
- echo sparc-auspex-sunos${UNAME_RELEASE}
+ echo sparc-auspex-sunos"$UNAME_RELEASE"
exit ;;
# The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not
@@ -439,44 +456,44 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint"$UNAME_RELEASE"
exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint"$UNAME_RELEASE"
exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint"$UNAME_RELEASE"
exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
+ echo m68k-milan-mint"$UNAME_RELEASE"
exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
+ echo m68k-hades-mint"$UNAME_RELEASE"
exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
+ echo m68k-unknown-mint"$UNAME_RELEASE"
exit ;;
m68k:machten:*:*)
- echo m68k-apple-machten${UNAME_RELEASE}
+ echo m68k-apple-machten"$UNAME_RELEASE"
exit ;;
powerpc:machten:*:*)
- echo powerpc-apple-machten${UNAME_RELEASE}
+ echo powerpc-apple-machten"$UNAME_RELEASE"
exit ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
exit ;;
RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix${UNAME_RELEASE}
+ echo mips-dec-ultrix"$UNAME_RELEASE"
exit ;;
VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix${UNAME_RELEASE}
+ echo vax-dec-ultrix"$UNAME_RELEASE"
exit ;;
2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix${UNAME_RELEASE}
+ echo clipper-intergraph-clix"$UNAME_RELEASE"
exit ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
#ifdef __cplusplus
#include <stdio.h> /* for printf() prototype */
int main (int argc, char *argv[]) {
@@ -485,23 +502,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
#endif
#if defined (host_mips) && defined (MIPSEB)
#if defined (SYSTYPE_SYSV)
- printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_SVR4)
- printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
- printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
#endif
#endif
exit (-1);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c &&
- dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
- SYSTEM_NAME=`$dummy $dummyarg` &&
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
+ dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
{ echo "$SYSTEM_NAME"; exit; }
- echo mips-mips-riscos${UNAME_RELEASE}
+ echo mips-mips-riscos"$UNAME_RELEASE"
exit ;;
Motorola:PowerMAX_OS:*:*)
echo powerpc-motorola-powermax
@@ -527,17 +544,17 @@ EOF
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
+ if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
+ [ "$TARGET_BINARY_INTERFACE"x = x ]
then
- echo m88k-dg-dgux${UNAME_RELEASE}
+ echo m88k-dg-dgux"$UNAME_RELEASE"
else
- echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ echo m88k-dg-dguxbcs"$UNAME_RELEASE"
fi
else
- echo i586-dg-dgux${UNAME_RELEASE}
+ echo i586-dg-dgux"$UNAME_RELEASE"
fi
exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
@@ -554,7 +571,7 @@ EOF
echo m68k-tektronix-bsd
exit ;;
*:IRIX*:*:*)
- echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
exit ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
@@ -566,14 +583,14 @@ EOF
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
fi
- echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
exit ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
#include <sys/systemcfg.h>
main()
@@ -584,7 +601,7 @@ EOF
exit(0);
}
EOF
- if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
then
echo "$SYSTEM_NAME"
else
@@ -598,7 +615,7 @@ EOF
exit ;;
*:AIX:*:[4567])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
- if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
@@ -607,18 +624,18 @@ EOF
IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
fi
- echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
exit ;;
*:AIX:*:*)
echo rs6000-ibm-aix
exit ;;
- ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
echo romp-ibm-bsd4.4
exit ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to
exit ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
echo rs6000-bull-bosx
@@ -633,28 +650,28 @@ EOF
echo m68k-hp-bsd4.4
exit ;;
9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- case "${UNAME_MACHINE}" in
- 9000/31? ) HP_ARCH=m68000 ;;
- 9000/[34]?? ) HP_ARCH=m68k ;;
+ HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+ case "$UNAME_MACHINE" in
+ 9000/31?) HP_ARCH=m68000 ;;
+ 9000/[34]??) HP_ARCH=m68k ;;
9000/[678][0-9][0-9])
if [ -x /usr/bin/getconf ]; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
+ case "$sc_cpu_version" in
523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
+ case "$sc_kernel_bits" in
32) HP_ARCH=hppa2.0n ;;
64) HP_ARCH=hppa2.0w ;;
'') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
esac ;;
esac
fi
- if [ "${HP_ARCH}" = "" ]; then
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ if [ "$HP_ARCH" = "" ]; then
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
#define _HPUX_SOURCE
#include <stdlib.h>
@@ -687,13 +704,13 @@ EOF
exit (0);
}
EOF
- (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
- if [ ${HP_ARCH} = hppa2.0w ]
+ if [ "$HP_ARCH" = hppa2.0w ]
then
- eval $set_cc_for_build
+ set_cc_for_build
# hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
# 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
@@ -712,15 +729,15 @@ EOF
HP_ARCH=hppa64
fi
fi
- echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
exit ;;
ia64:HP-UX:*:*)
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
- echo ia64-hp-hpux${HPUX_REV}
+ HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux"$HPUX_REV"
exit ;;
3050*:HI-UX:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
#include <unistd.h>
int
main ()
@@ -745,11 +762,11 @@ EOF
exit (0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
{ echo "$SYSTEM_NAME"; exit; }
echo unknown-hitachi-hiuxwe2
exit ;;
- 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
echo hppa1.1-hp-bsd
exit ;;
9000/8??:4.3bsd:*:*)
@@ -758,7 +775,7 @@ EOF
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
echo hppa1.0-hp-mpeix
exit ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
echo hppa1.1-hp-osf
exit ;;
hp8??:OSF1:*:*)
@@ -766,9 +783,9 @@ EOF
exit ;;
i*86:OSF1:*:*)
if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
+ echo "$UNAME_MACHINE"-unknown-osf1mk
else
- echo ${UNAME_MACHINE}-unknown-osf1
+ echo "$UNAME_MACHINE"-unknown-osf1
fi
exit ;;
parisc*:Lites*:*:*)
@@ -793,130 +810,123 @@ EOF
echo c4-convex-bsd
exit ;;
CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*[A-Z]90:*:*:*)
- echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-e 's/\.[^.]*$/.X/'
exit ;;
CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
CRAY*SV1:*:*:*)
- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
*:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
5000:UNIX_System_V:4.*:*)
FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
+ FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
exit ;;
sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi${UNAME_RELEASE}
+ echo sparc-unknown-bsdi"$UNAME_RELEASE"
exit ;;
*:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
+ exit ;;
+ arm:FreeBSD:*:*)
+ UNAME_PROCESSOR=`uname -p`
+ set_cc_for_build
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
+ else
+ echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
+ fi
exit ;;
*:FreeBSD:*:*)
UNAME_PROCESSOR=`/usr/bin/uname -p`
- case ${UNAME_PROCESSOR} in
+ case "$UNAME_PROCESSOR" in
amd64)
- echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- *)
- echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ UNAME_PROCESSOR=x86_64 ;;
+ i386)
+ UNAME_PROCESSOR=i586 ;;
esac
+ echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
exit ;;
i*:CYGWIN*:*)
- echo ${UNAME_MACHINE}-pc-cygwin
+ echo "$UNAME_MACHINE"-pc-cygwin
exit ;;
*:MINGW64*:*)
- echo ${UNAME_MACHINE}-pc-mingw64
+ echo "$UNAME_MACHINE"-pc-mingw64
exit ;;
*:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
+ echo "$UNAME_MACHINE"-pc-mingw32
exit ;;
*:MSYS*:*)
- echo ${UNAME_MACHINE}-pc-msys
- exit ;;
- i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
+ echo "$UNAME_MACHINE"-pc-msys
exit ;;
i*:PW*:*)
- echo ${UNAME_MACHINE}-pc-pw32
+ echo "$UNAME_MACHINE"-pc-pw32
exit ;;
*:Interix*:*)
- case ${UNAME_MACHINE} in
+ case "$UNAME_MACHINE" in
x86)
- echo i586-pc-interix${UNAME_RELEASE}
+ echo i586-pc-interix"$UNAME_RELEASE"
exit ;;
authenticamd | genuineintel | EM64T)
- echo x86_64-unknown-interix${UNAME_RELEASE}
+ echo x86_64-unknown-interix"$UNAME_RELEASE"
exit ;;
IA64)
- echo ia64-unknown-interix${UNAME_RELEASE}
+ echo ia64-unknown-interix"$UNAME_RELEASE"
exit ;;
esac ;;
- [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
- echo i${UNAME_MACHINE}-pc-mks
- exit ;;
- 8664:Windows_NT:*)
- echo x86_64-pc-mks
- exit ;;
- i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
- # How do we know it's Interix rather than the generic POSIX subsystem?
- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
- # UNAME_MACHINE based on the output of uname instead of i386?
- echo i586-pc-interix
- exit ;;
i*:UWIN*:*)
- echo ${UNAME_MACHINE}-pc-uwin
+ echo "$UNAME_MACHINE"-pc-uwin
exit ;;
amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
- echo x86_64-unknown-cygwin
- exit ;;
- p*:CYGWIN*:*)
- echo powerpcle-unknown-cygwin
+ echo x86_64-pc-cygwin
exit ;;
prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
exit ;;
*:GNU:*:*)
# the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+ echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
exit ;;
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
+ *:Minix:*:*)
+ echo "$UNAME_MACHINE"-unknown-minix
exit ;;
aarch64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
EV5) UNAME_MACHINE=alphaev5 ;;
EV56) UNAME_MACHINE=alphaev56 ;;
PCA56) UNAME_MACHINE=alphapca56 ;;
@@ -927,134 +937,168 @@ EOF
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
arc:Linux:*:* | arceb:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
arm*:Linux:*:*)
- eval $set_cc_for_build
+ set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
else
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
fi
fi
exit ;;
avr32*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
cris:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
exit ;;
crisv32:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
exit ;;
e2k:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
frv:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
hexagon:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
i*86:Linux:*:*)
- echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
exit ;;
ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
k1om:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ set_cc_for_build
+ IS_GLIBC=0
+ test x"${LIBC}" = xgnu && IS_GLIBC=1
+ sed 's/^ //' << EOF > "$dummy.c"
#undef CPU
- #undef ${UNAME_MACHINE}
- #undef ${UNAME_MACHINE}el
+ #undef mips
+ #undef mipsel
+ #undef mips64
+ #undef mips64el
+ #if ${IS_GLIBC} && defined(_ABI64)
+ LIBCABI=gnuabi64
+ #else
+ #if ${IS_GLIBC} && defined(_ABIN32)
+ LIBCABI=gnuabin32
+ #else
+ LIBCABI=${LIBC}
+ #endif
+ #endif
+
+ #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa64r6
+ #else
+ #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa32r6
+ #else
+ #if defined(__mips64)
+ CPU=mips64
+ #else
+ CPU=mips
+ #endif
+ #endif
+ #endif
+
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=${UNAME_MACHINE}el
+ MIPS_ENDIAN=el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=${UNAME_MACHINE}
+ MIPS_ENDIAN=
#else
- CPU=
+ MIPS_ENDIAN=
#endif
#endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+ eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`"
+ test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
;;
+ mips64el:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ exit ;;
openrisc*:Linux:*:*)
- echo or1k-unknown-linux-${LIBC}
+ echo or1k-unknown-linux-"$LIBC"
exit ;;
or32:Linux:*:* | or1k*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
padre:Linux:*:*)
- echo sparc-unknown-linux-${LIBC}
+ echo sparc-unknown-linux-"$LIBC"
exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-${LIBC}
+ echo hppa64-unknown-linux-"$LIBC"
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
- PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
- *) echo hppa-unknown-linux-${LIBC} ;;
+ PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
+ PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
+ *) echo hppa-unknown-linux-"$LIBC" ;;
esac
exit ;;
ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-${LIBC}
+ echo powerpc64-unknown-linux-"$LIBC"
exit ;;
ppc:Linux:*:*)
- echo powerpc-unknown-linux-${LIBC}
+ echo powerpc-unknown-linux-"$LIBC"
exit ;;
ppc64le:Linux:*:*)
- echo powerpc64le-unknown-linux-${LIBC}
+ echo powerpc64le-unknown-linux-"$LIBC"
exit ;;
ppcle:Linux:*:*)
- echo powerpcle-unknown-linux-${LIBC}
+ echo powerpcle-unknown-linux-"$LIBC"
+ exit ;;
+ riscv32:Linux:*:* | riscv64:Linux:*:*)
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+ echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
tile*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+ echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
exit ;;
x86_64:Linux:*:*)
- echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
exit ;;
xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1068,34 +1112,34 @@ EOF
# I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
exit ;;
i*86:OS/2:*:*)
# If we were able to find `uname', then EMX Unix compatibility
# is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
+ echo "$UNAME_MACHINE"-pc-os2-emx
exit ;;
i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
+ echo "$UNAME_MACHINE"-unknown-stop
exit ;;
i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
+ echo "$UNAME_MACHINE"-unknown-atheos
exit ;;
i*86:syllable:*:*)
- echo ${UNAME_MACHINE}-pc-syllable
+ echo "$UNAME_MACHINE"-pc-syllable
exit ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
+ echo i386-unknown-lynxos"$UNAME_RELEASE"
exit ;;
i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ echo "$UNAME_MACHINE"-pc-msdosdjgpp
exit ;;
- i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
- UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ i*86:*:4.*:*)
+ UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
fi
exit ;;
i*86:*:5:[678]*)
@@ -1105,12 +1149,12 @@ EOF
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
- echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
exit ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
elif /bin/uname -X 2>/dev/null >/dev/null ; then
UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
@@ -1120,9 +1164,9 @@ EOF
&& UNAME_MACHINE=i686
(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
&& UNAME_MACHINE=i686
- echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
else
- echo ${UNAME_MACHINE}-pc-sysv32
+ echo "$UNAME_MACHINE"-pc-sysv32
fi
exit ;;
pc:*:*:*)
@@ -1142,9 +1186,9 @@ EOF
exit ;;
i860:*:4.*:*) # i860-SVR4
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4
fi
exit ;;
mini*:CTIX:SYS*5:*)
@@ -1164,9 +1208,9 @@ EOF
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4; exit; } ;;
@@ -1175,28 +1219,28 @@ EOF
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos${UNAME_RELEASE}
+ echo m68k-unknown-lynxos"$UNAME_RELEASE"
exit ;;
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
exit ;;
TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos${UNAME_RELEASE}
+ echo sparc-unknown-lynxos"$UNAME_RELEASE"
exit ;;
rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ echo rs6000-unknown-lynxos"$UNAME_RELEASE"
exit ;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
- echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ echo powerpc-unknown-lynxos"$UNAME_RELEASE"
exit ;;
SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv${UNAME_RELEASE}
+ echo mips-dde-sysv"$UNAME_RELEASE"
exit ;;
RM*:ReliantUNIX-*:*:*)
echo mips-sni-sysv4
@@ -1207,7 +1251,7 @@ EOF
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
+ echo "$UNAME_MACHINE"-sni-sysv4
else
echo ns32k-sni-sysv
fi
@@ -1227,23 +1271,23 @@ EOF
exit ;;
i*86:VOS:*:*)
# From Paul.Green@stratus.com.
- echo ${UNAME_MACHINE}-stratus-vos
+ echo "$UNAME_MACHINE"-stratus-vos
exit ;;
*:VOS:*:*)
# From Paul.Green@stratus.com.
echo hppa1.1-stratus-vos
exit ;;
mc68*:A/UX:*:*)
- echo m68k-apple-aux${UNAME_RELEASE}
+ echo m68k-apple-aux"$UNAME_RELEASE"
exit ;;
news*:NEWS-OS:6*:*)
echo mips-sony-newsos6
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
+ echo mips-nec-sysv"$UNAME_RELEASE"
else
- echo mips-unknown-sysv${UNAME_RELEASE}
+ echo mips-unknown-sysv"$UNAME_RELEASE"
fi
exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
@@ -1262,60 +1306,68 @@ EOF
echo x86_64-unknown-haiku
exit ;;
SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux${UNAME_RELEASE}
+ echo sx4-nec-superux"$UNAME_RELEASE"
exit ;;
SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux${UNAME_RELEASE}
+ echo sx5-nec-superux"$UNAME_RELEASE"
exit ;;
SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux${UNAME_RELEASE}
+ echo sx6-nec-superux"$UNAME_RELEASE"
exit ;;
SX-7:SUPER-UX:*:*)
- echo sx7-nec-superux${UNAME_RELEASE}
+ echo sx7-nec-superux"$UNAME_RELEASE"
exit ;;
SX-8:SUPER-UX:*:*)
- echo sx8-nec-superux${UNAME_RELEASE}
+ echo sx8-nec-superux"$UNAME_RELEASE"
exit ;;
SX-8R:SUPER-UX:*:*)
- echo sx8r-nec-superux${UNAME_RELEASE}
+ echo sx8r-nec-superux"$UNAME_RELEASE"
exit ;;
SX-ACE:SUPER-UX:*:*)
- echo sxace-nec-superux${UNAME_RELEASE}
+ echo sxace-nec-superux"$UNAME_RELEASE"
exit ;;
Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ echo powerpc-apple-rhapsody"$UNAME_RELEASE"
exit ;;
*:Rhapsody:*:*)
- echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
exit ;;
*:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- eval $set_cc_for_build
- if test "$UNAME_PROCESSOR" = unknown ; then
- UNAME_PROCESSOR=powerpc
+ UNAME_PROCESSOR=`uname -p`
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ if command -v xcode-select > /dev/null 2> /dev/null && \
+ ! xcode-select --print-path > /dev/null 2> /dev/null ; then
+ # Avoid executing cc if there is no toolchain installed as
+ # cc will be a stub that puts up a graphical alert
+ # prompting the user to install developer tools.
+ CC_FOR_BUILD=no_compiler_found
+ else
+ set_cc_for_build
fi
- if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
- if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- case $UNAME_PROCESSOR in
- i386) UNAME_PROCESSOR=x86_64 ;;
- powerpc) UNAME_PROCESSOR=powerpc64 ;;
- esac
- fi
+ if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_PPC >/dev/null
+ then
+ UNAME_PROCESSOR=powerpc
fi
elif test "$UNAME_PROCESSOR" = i386 ; then
- # Avoid executing cc on OS X 10.9, as it ships with a stub
- # that puts up a graphical alert prompting to install
- # developer tools. Any system running Mac OS X 10.7 or
- # later (Darwin 11 and later) is required to have a 64-bit
- # processor. This is not true of the ARM version of Darwin
- # that Apple uses in portable devices.
- UNAME_PROCESSOR=x86_64
+ # uname -m returns i386 or x86_64
+ UNAME_PROCESSOR=$UNAME_MACHINE
fi
- echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
@@ -1323,19 +1375,25 @@ EOF
UNAME_PROCESSOR=i386
UNAME_MACHINE=pc
fi
- echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
exit ;;
*:QNX:*:4*)
echo i386-pc-qnx
exit ;;
- NEO-?:NONSTOP_KERNEL:*:*)
- echo neo-tandem-nsk${UNAME_RELEASE}
+ NEO-*:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk"$UNAME_RELEASE"
exit ;;
NSE-*:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk${UNAME_RELEASE}
+ echo nse-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ NSR-*:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk"$UNAME_RELEASE"
+ exit ;;
+ NSV-*:NONSTOP_KERNEL:*:*)
+ echo nsv-tandem-nsk"$UNAME_RELEASE"
exit ;;
- NSR-?:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk${UNAME_RELEASE}
+ NSX-*:NONSTOP_KERNEL:*:*)
+ echo nsx-tandem-nsk"$UNAME_RELEASE"
exit ;;
*:NonStop-UX:*:*)
echo mips-compaq-nonstopux
@@ -1344,18 +1402,19 @@ EOF
echo bs2000-siemens-sysv
exit ;;
DS/*:UNIX_System_V:*:*)
- echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
exit ;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
# operating systems.
+ # shellcheck disable=SC2154
if test "$cputype" = 386; then
UNAME_MACHINE=i386
else
UNAME_MACHINE="$cputype"
fi
- echo ${UNAME_MACHINE}-unknown-plan9
+ echo "$UNAME_MACHINE"-unknown-plan9
exit ;;
*:TOPS-10:*:*)
echo pdp10-unknown-tops10
@@ -1376,14 +1435,14 @@ EOF
echo pdp10-unknown-its
exit ;;
SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
+ echo mips-sei-seiux"$UNAME_RELEASE"
exit ;;
*:DragonFly:*:*)
- echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
exit ;;
*:*VMS:*:*)
UNAME_MACHINE=`(uname -p) 2>/dev/null`
- case "${UNAME_MACHINE}" in
+ case "$UNAME_MACHINE" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
V*) echo vax-dec-vms ; exit ;;
@@ -1392,32 +1451,184 @@ EOF
echo i386-pc-xenix
exit ;;
i*86:skyos:*:*)
- echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'`
+ echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
exit ;;
i*86:rdos:*:*)
- echo ${UNAME_MACHINE}-pc-rdos
+ echo "$UNAME_MACHINE"-pc-rdos
exit ;;
i*86:AROS:*:*)
- echo ${UNAME_MACHINE}-pc-aros
+ echo "$UNAME_MACHINE"-pc-aros
exit ;;
x86_64:VMkernel:*:*)
- echo ${UNAME_MACHINE}-unknown-esx
+ echo "$UNAME_MACHINE"-unknown-esx
exit ;;
amd64:Isilon\ OneFS:*:*)
echo x86_64-unknown-onefs
exit ;;
+ *:Unleashed:*:*)
+ echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
+ exit ;;
+esac
+
+# No uname command or uname output not recognized.
+set_cc_for_build
+cat > "$dummy.c" <<EOF
+#ifdef _SEQUENT_
+#include <sys/types.h>
+#include <sys/utsname.h>
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#include <signal.h>
+#if defined(_SIZE_T_) || defined(SIGLOST)
+#include <sys/utsname.h>
+#endif
+#endif
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+#endif
+
+#if defined (vax)
+#if !defined (ultrix)
+#include <sys/param.h>
+#if defined (BSD)
+#if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+#else
+#if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#endif
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#else
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname un;
+ uname (&un);
+ printf ("vax-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("vax-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname *un;
+ uname (&un);
+ printf ("mips-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("mips-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
+
+echo "$0: unable to guess system type" >&2
+
+case "$UNAME_MACHINE:$UNAME_SYSTEM" in
+ mips:Linux | mips64:Linux)
+ # If we got here on MIPS GNU/Linux, output extra information.
+ cat >&2 <<EOF
+
+NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
+the system type. Please install a C compiler and try again.
+EOF
+ ;;
esac
cat >&2 <<EOF
-$0: unable to guess system type
This script (version $timestamp), has failed to recognize the
-operating system you are using. If your script is old, overwrite
-config.guess and config.sub with the latest versions from:
+operating system you are using. If your script is old, overwrite *all*
+copies of config.guess and config.sub with the latest versions from:
- http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+ https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
and
- http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+ https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
If $0 has already been updated, send the following data and any
information you think might be pertinent to config-patches@gnu.org to
@@ -1440,16 +1651,16 @@ hostinfo = `(hostinfo) 2>/dev/null`
/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
+UNAME_MACHINE = "$UNAME_MACHINE"
+UNAME_RELEASE = "$UNAME_RELEASE"
+UNAME_SYSTEM = "$UNAME_SYSTEM"
+UNAME_VERSION = "$UNAME_VERSION"
EOF
exit 1
# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
diff --git a/config/config.rpath b/build-aux/config.rpath
index b625621..b625621 100755
--- a/config/config.rpath
+++ b/build-aux/config.rpath
diff --git a/build-aux/config.sub b/build-aux/config.sub
new file mode 100755
index 0000000..0f2234c
--- /dev/null
+++ b/build-aux/config.sub
@@ -0,0 +1,1793 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright 1992-2019 Free Software Foundation, Inc.
+
+timestamp='2019-06-30'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+
+
+# Please send patches to <config-patches@gnu.org>.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
+
+Canonicalize a configuration name.
+
+Options:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright 1992-2019 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo "$1"
+ exit ;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Split fields of configuration type
+# shellcheck disable=SC2162
+IFS="-" read field1 field2 field3 field4 <<EOF
+$1
+EOF
+
+# Separate into logical components for further validation
+case $1 in
+ *-*-*-*-*)
+ echo Invalid configuration \`"$1"\': more than four components >&2
+ exit 1
+ ;;
+ *-*-*-*)
+ basic_machine=$field1-$field2
+ os=$field3-$field4
+ ;;
+ *-*-*)
+ # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
+ # parts
+ maybe_os=$field2-$field3
+ case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
+ | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
+ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
+ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
+ | storm-chaos* | os2-emx* | rtmk-nova*)
+ basic_machine=$field1
+ os=$maybe_os
+ ;;
+ android-linux)
+ basic_machine=$field1-unknown
+ os=linux-android
+ ;;
+ *)
+ basic_machine=$field1-$field2
+ os=$field3
+ ;;
+ esac
+ ;;
+ *-*)
+ # A lone config we happen to match not fitting any pattern
+ case $field1-$field2 in
+ decstation-3100)
+ basic_machine=mips-dec
+ os=
+ ;;
+ *-*)
+ # Second component is usually, but not always the OS
+ case $field2 in
+ # Prevent following clause from handling this valid os
+ sun*os*)
+ basic_machine=$field1
+ os=$field2
+ ;;
+ # Manufacturers
+ dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
+ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
+ | unicom* | ibm* | next | hp | isi* | apollo | altos* \
+ | convergent* | ncr* | news | 32* | 3600* | 3100* \
+ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
+ | ultra | tti* | harris | dolphin | highlevel | gould \
+ | cbm | ns | masscomp | apple | axis | knuth | cray \
+ | microblaze* | sim | cisco \
+ | oki | wec | wrs | winbond)
+ basic_machine=$field1-$field2
+ os=
+ ;;
+ *)
+ basic_machine=$field1
+ os=$field2
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ *)
+ # Convert single-component short-hands not valid as part of
+ # multi-component configurations.
+ case $field1 in
+ 386bsd)
+ basic_machine=i386-pc
+ os=bsd
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=udi
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=scout
+ ;;
+ alliant)
+ basic_machine=fx80-alliant
+ os=
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ os=
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=bsd
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=sysv
+ ;;
+ amiga)
+ basic_machine=m68k-unknown
+ os=
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=bsd
+ ;;
+ aros)
+ basic_machine=i386-pc
+ os=aros
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=dynix
+ ;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=linux
+ ;;
+ cegcc)
+ basic_machine=arm-unknown
+ os=cegcc
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=bsd
+ ;;
+ cray)
+ basic_machine=j90-cray
+ os=unicos
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ os=
+ ;;
+ da30)
+ basic_machine=m68k-da30
+ os=
+ ;;
+ decstation | pmax | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ os=
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=sysv3
+ ;;
+ dicos)
+ basic_machine=i686-pc
+ os=dicos
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=msdosdjgpp
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=ebmon
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=ose
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=go32
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=sysv3
+ ;;
+ hp300 | hp300hpux)
+ basic_machine=m68k-hp
+ os=hpux
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=bsd
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=proelf
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=mach
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=sysv
+ ;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=linux
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=sysv
+ ;;
+ mingw64)
+ basic_machine=x86_64-pc
+ os=mingw64
+ ;;
+ mingw32)
+ basic_machine=i686-pc
+ os=mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=mingw32ce
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=morphos
+ ;;
+ moxiebox)
+ basic_machine=moxie-unknown
+ os=moxiebox
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=msdos
+ ;;
+ msys)
+ basic_machine=i686-pc
+ os=msys
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=mvs
+ ;;
+ nacl)
+ basic_machine=le32-unknown
+ os=nacl
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-pc
+ os=netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=sysv
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=nonstopux
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=os68k
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=osf
+ ;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=linux
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=pw32
+ ;;
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ os=rdos
+ ;;
+ rdos32)
+ basic_machine=i386-pc
+ os=rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=coff
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=udi
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ os=
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=sysv2
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ os=
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ os=
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=sunos4
+ ;;
+ sun3)
+ basic_machine=m68k-sun
+ os=
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=sunos4
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ os=
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=solaris2
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ os=
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=unicos
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=tops20
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=vms
+ ;;
+ vsta)
+ basic_machine=i386-pc
+ os=vsta
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=vxworks
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ os=mingw32
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=unicos
+ ;;
+ *)
+ basic_machine=$1
+ os=
+ ;;
+ esac
+ ;;
+esac
+
+# Decode 1-component or ad-hoc basic machines
+case $basic_machine in
+ # Here we handle the default manufacturer of certain CPU types. It is in
+ # some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ cpu=hppa1.1
+ vendor=winbond
+ ;;
+ op50n)
+ cpu=hppa1.1
+ vendor=oki
+ ;;
+ op60c)
+ cpu=hppa1.1
+ vendor=oki
+ ;;
+ ibm*)
+ cpu=i370
+ vendor=ibm
+ ;;
+ orion105)
+ cpu=clipper
+ vendor=highlevel
+ ;;
+ mac | mpw | mac-mpw)
+ cpu=m68k
+ vendor=apple
+ ;;
+ pmac | pmac-mpw)
+ cpu=powerpc
+ vendor=apple
+ ;;
+
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ cpu=m68000
+ vendor=att
+ ;;
+ 3b*)
+ cpu=we32k
+ vendor=att
+ ;;
+ bluegene*)
+ cpu=powerpc
+ vendor=ibm
+ os=cnk
+ ;;
+ decsystem10* | dec10*)
+ cpu=pdp10
+ vendor=dec
+ os=tops10
+ ;;
+ decsystem20* | dec20*)
+ cpu=pdp10
+ vendor=dec
+ os=tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ cpu=m68k
+ vendor=motorola
+ ;;
+ dpx2*)
+ cpu=m68k
+ vendor=bull
+ os=sysv3
+ ;;
+ encore | umax | mmax)
+ cpu=ns32k
+ vendor=encore
+ ;;
+ elxsi)
+ cpu=elxsi
+ vendor=elxsi
+ os=${os:-bsd}
+ ;;
+ fx2800)
+ cpu=i860
+ vendor=alliant
+ ;;
+ genix)
+ cpu=ns32k
+ vendor=ns
+ ;;
+ h3050r* | hiux*)
+ cpu=hppa1.1
+ vendor=hitachi
+ os=hiuxwe2
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ cpu=hppa1.0
+ vendor=hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ cpu=m68000
+ vendor=hp
+ ;;
+ hp9k3[2-9][0-9])
+ cpu=m68k
+ vendor=hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ cpu=hppa1.0
+ vendor=hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ cpu=hppa1.1
+ vendor=hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ cpu=hppa1.1
+ vendor=hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ cpu=hppa1.1
+ vendor=hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ cpu=hppa1.1
+ vendor=hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ cpu=hppa1.0
+ vendor=hp
+ ;;
+ i*86v32)
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ os=sysv32
+ ;;
+ i*86v4*)
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ os=sysv4
+ ;;
+ i*86v)
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ os=sysv
+ ;;
+ i*86sol2)
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ vendor=pc
+ os=solaris2
+ ;;
+ j90 | j90-cray)
+ cpu=j90
+ vendor=cray
+ os=${os:-unicos}
+ ;;
+ iris | iris4d)
+ cpu=mips
+ vendor=sgi
+ case $os in
+ irix*)
+ ;;
+ *)
+ os=irix4
+ ;;
+ esac
+ ;;
+ miniframe)
+ cpu=m68000
+ vendor=convergent
+ ;;
+ *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ cpu=m68k
+ vendor=atari
+ os=mint
+ ;;
+ news-3600 | risc-news)
+ cpu=mips
+ vendor=sony
+ os=newsos
+ ;;
+ next | m*-next)
+ cpu=m68k
+ vendor=next
+ case $os in
+ openstep*)
+ ;;
+ nextstep*)
+ ;;
+ ns2*)
+ os=nextstep2
+ ;;
+ *)
+ os=nextstep3
+ ;;
+ esac
+ ;;
+ np1)
+ cpu=np1
+ vendor=gould
+ ;;
+ op50n-* | op60c-*)
+ cpu=hppa1.1
+ vendor=oki
+ os=proelf
+ ;;
+ pa-hitachi)
+ cpu=hppa1.1
+ vendor=hitachi
+ os=hiuxwe2
+ ;;
+ pbd)
+ cpu=sparc
+ vendor=tti
+ ;;
+ pbb)
+ cpu=m68k
+ vendor=tti
+ ;;
+ pc532)
+ cpu=ns32k
+ vendor=pc532
+ ;;
+ pn)
+ cpu=pn
+ vendor=gould
+ ;;
+ power)
+ cpu=power
+ vendor=ibm
+ ;;
+ ps2)
+ cpu=i386
+ vendor=ibm
+ ;;
+ rm[46]00)
+ cpu=mips
+ vendor=siemens
+ ;;
+ rtpc | rtpc-*)
+ cpu=romp
+ vendor=ibm
+ ;;
+ sde)
+ cpu=mipsisa32
+ vendor=sde
+ os=${os:-elf}
+ ;;
+ simso-wrs)
+ cpu=sparclite
+ vendor=wrs
+ os=vxworks
+ ;;
+ tower | tower-32)
+ cpu=m68k
+ vendor=ncr
+ ;;
+ vpp*|vx|vx-*)
+ cpu=f301
+ vendor=fujitsu
+ ;;
+ w65)
+ cpu=w65
+ vendor=wdc
+ ;;
+ w89k-*)
+ cpu=hppa1.1
+ vendor=winbond
+ os=proelf
+ ;;
+ none)
+ cpu=none
+ vendor=none
+ ;;
+ leon|leon[3-9])
+ cpu=sparc
+ vendor=$basic_machine
+ ;;
+ leon-*|leon[3-9]-*)
+ cpu=sparc
+ vendor=`echo "$basic_machine" | sed 's/-.*//'`
+ ;;
+
+ *-*)
+ # shellcheck disable=SC2162
+ IFS="-" read cpu vendor <<EOF
+$basic_machine
+EOF
+ ;;
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ cpu=$basic_machine
+ vendor=pc
+ ;;
+ # These rules are duplicated from below for sake of the special case above;
+ # i.e. things that normalized to x86 arches should also default to "pc"
+ pc98)
+ cpu=i386
+ vendor=pc
+ ;;
+ x64 | amd64)
+ cpu=x86_64
+ vendor=pc
+ ;;
+ # Recognize the basic CPU types without company name.
+ *)
+ cpu=$basic_machine
+ vendor=unknown
+ ;;
+esac
+
+unset -v basic_machine
+
+# Decode basic machines in the full and proper CPU-Company form.
+case $cpu-$vendor in
+ # Here we handle the default manufacturer of certain CPU types in canonical form. It is in
+ # some cases the only manufacturer, in others, it is the most popular.
+ craynv-unknown)
+ vendor=cray
+ os=${os:-unicosmp}
+ ;;
+ c90-unknown | c90-cray)
+ vendor=cray
+ os=${os:-unicos}
+ ;;
+ fx80-unknown)
+ vendor=alliant
+ ;;
+ romp-unknown)
+ vendor=ibm
+ ;;
+ mmix-unknown)
+ vendor=knuth
+ ;;
+ microblaze-unknown | microblazeel-unknown)
+ vendor=xilinx
+ ;;
+ rs6000-unknown)
+ vendor=ibm
+ ;;
+ vax-unknown)
+ vendor=dec
+ ;;
+ pdp11-unknown)
+ vendor=dec
+ ;;
+ we32k-unknown)
+ vendor=att
+ ;;
+ cydra-unknown)
+ vendor=cydrome
+ ;;
+ i370-ibm*)
+ vendor=ibm
+ ;;
+ orion-unknown)
+ vendor=highlevel
+ ;;
+ xps-unknown | xps100-unknown)
+ cpu=xps100
+ vendor=honeywell
+ ;;
+
+ # Here we normalize CPU types with a missing or matching vendor
+ dpx20-unknown | dpx20-bull)
+ cpu=rs6000
+ vendor=bull
+ os=${os:-bosx}
+ ;;
+
+ # Here we normalize CPU types irrespective of the vendor
+ amd64-*)
+ cpu=x86_64
+ ;;
+ blackfin-*)
+ cpu=bfin
+ os=linux
+ ;;
+ c54x-*)
+ cpu=tic54x
+ ;;
+ c55x-*)
+ cpu=tic55x
+ ;;
+ c6x-*)
+ cpu=tic6x
+ ;;
+ e500v[12]-*)
+ cpu=powerpc
+ os=$os"spe"
+ ;;
+ mips3*-*)
+ cpu=mips64
+ ;;
+ ms1-*)
+ cpu=mt
+ ;;
+ m68knommu-*)
+ cpu=m68k
+ os=linux
+ ;;
+ m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
+ cpu=s12z
+ ;;
+ openrisc-*)
+ cpu=or32
+ ;;
+ parisc-*)
+ cpu=hppa
+ os=linux
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ cpu=i586
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+ cpu=i686
+ ;;
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ cpu=i686
+ ;;
+ pentium4-*)
+ cpu=i786
+ ;;
+ pc98-*)
+ cpu=i386
+ ;;
+ ppc-* | ppcbe-*)
+ cpu=powerpc
+ ;;
+ ppcle-* | powerpclittle-*)
+ cpu=powerpcle
+ ;;
+ ppc64-*)
+ cpu=powerpc64
+ ;;
+ ppc64le-* | powerpc64little-*)
+ cpu=powerpc64le
+ ;;
+ sb1-*)
+ cpu=mipsisa64sb1
+ ;;
+ sb1el-*)
+ cpu=mipsisa64sb1el
+ ;;
+ sh5e[lb]-*)
+ cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
+ ;;
+ spur-*)
+ cpu=spur
+ ;;
+ strongarm-* | thumb-*)
+ cpu=arm
+ ;;
+ tx39-*)
+ cpu=mipstx39
+ ;;
+ tx39el-*)
+ cpu=mipstx39el
+ ;;
+ x64-*)
+ cpu=x86_64
+ ;;
+ xscale-* | xscalee[bl]-*)
+ cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
+ ;;
+
+ # Recognize the canonical CPU Types that limit and/or modify the
+ # company names they are paired with.
+ cr16-*)
+ os=${os:-elf}
+ ;;
+ crisv32-* | etraxfs*-*)
+ cpu=crisv32
+ vendor=axis
+ ;;
+ cris-* | etrax*-*)
+ cpu=cris
+ vendor=axis
+ ;;
+ crx-*)
+ os=${os:-elf}
+ ;;
+ neo-tandem)
+ cpu=neo
+ vendor=tandem
+ ;;
+ nse-tandem)
+ cpu=nse
+ vendor=tandem
+ ;;
+ nsr-tandem)
+ cpu=nsr
+ vendor=tandem
+ ;;
+ nsv-tandem)
+ cpu=nsv
+ vendor=tandem
+ ;;
+ nsx-tandem)
+ cpu=nsx
+ vendor=tandem
+ ;;
+ s390-*)
+ cpu=s390
+ vendor=ibm
+ ;;
+ s390x-*)
+ cpu=s390x
+ vendor=ibm
+ ;;
+ tile*-*)
+ os=${os:-linux-gnu}
+ ;;
+
+ *)
+ # Recognize the canonical CPU types that are allowed with any
+ # company name.
+ case $cpu in
+ 1750a | 580 \
+ | a29k \
+ | aarch64 | aarch64_be \
+ | abacus \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
+ | alphapca5[67] | alpha64pca5[67] \
+ | am33_2.0 \
+ | amdgcn \
+ | arc | arceb \
+ | arm | arm[lb]e | arme[lb] | armv* \
+ | avr | avr32 \
+ | asmjs \
+ | ba \
+ | be32 | be64 \
+ | bfin | bpf | bs2000 \
+ | c[123]* | c30 | [cjt]90 | c4x \
+ | c8051 | clipper | craynv | csky | cydra \
+ | d10v | d30v | dlx | dsp16xx \
+ | e2k | elxsi | epiphany \
+ | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
+ | h8300 | h8500 \
+ | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
+ | i370 | i*86 | i860 | i960 | ia16 | ia64 \
+ | ip2k | iq2000 \
+ | k1om \
+ | le32 | le64 \
+ | lm32 \
+ | m32c | m32r | m32rle \
+ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64eb | mips64el \
+ | mips64octeon | mips64octeonel \
+ | mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa32r6 | mipsisa32r6el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64r6 | mipsisa64r6el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
+ | mipstx39 | mipstx39el \
+ | mmix \
+ | mn10200 | mn10300 \
+ | moxie \
+ | mt \
+ | msp430 \
+ | nds32 | nds32le | nds32be \
+ | nfp \
+ | nios | nios2 | nios2eb | nios2el \
+ | none | np1 | ns16k | ns32k | nvptx \
+ | open8 \
+ | or1k* \
+ | or32 \
+ | orion \
+ | picochip \
+ | pdp10 | pdp11 | pj | pjl | pn | power \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
+ | pru \
+ | pyramid \
+ | riscv | riscv32 | riscv64 \
+ | rl78 | romp | rs6000 | rx \
+ | score \
+ | sh | shl \
+ | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
+ | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
+ | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
+ | spu \
+ | tahoe \
+ | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
+ | tron \
+ | ubicom32 \
+ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
+ | vax \
+ | visium \
+ | w65 \
+ | wasm32 | wasm64 \
+ | we32k \
+ | x86 | x86_64 | xc16x | xgate | xps100 \
+ | xstormy16 | xtensa* \
+ | ymp \
+ | z8k | z80)
+ ;;
+
+ *)
+ echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
+ exit 1
+ ;;
+ esac
+ ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $vendor in
+ digital*)
+ vendor=dec
+ ;;
+ commodore*)
+ vendor=cbm
+ ;;
+ *)
+ ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x$os != x ]
+then
+case $os in
+ # First match some system type aliases that might get confused
+ # with valid system types.
+ # solaris* is a basic system type, with this one exception.
+ auroraux)
+ os=auroraux
+ ;;
+ bluegene*)
+ os=cnk
+ ;;
+ solaris1 | solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ ;;
+ solaris)
+ os=solaris2
+ ;;
+ unixware*)
+ os=sysv4.2uw
+ ;;
+ gnu/linux*)
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ ;;
+ # es1800 is here to avoid being matched by es* (a different OS)
+ es1800*)
+ os=ose
+ ;;
+ # Some version numbers need modification
+ chorusos*)
+ os=chorusos
+ ;;
+ isc)
+ os=isc2.2
+ ;;
+ sco6)
+ os=sco5v6
+ ;;
+ sco5)
+ os=sco3.2v5
+ ;;
+ sco4)
+ os=sco3.2v4
+ ;;
+ sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ ;;
+ sco3.2v[4-9]* | sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ ;;
+ scout)
+ # Don't match below
+ ;;
+ sco*)
+ os=sco3.2v2
+ ;;
+ psos*)
+ os=psos
+ ;;
+ # Now accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST end in a * to match a version number.
+ # sysv* is not here because it comes later, after sysvr4.
+ gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
+ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
+ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
+ | sym* | kopensolaris* | plan9* \
+ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
+ | aos* | aros* | cloudabi* | sortix* | twizzler* \
+ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
+ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
+ | knetbsd* | mirbsd* | netbsd* \
+ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
+ | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
+ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
+ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+ | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
+ | chorusrdb* | cegcc* | glidix* \
+ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+ | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
+ | linux-newlib* | linux-musl* | linux-uclibc* \
+ | uxpv* | beos* | mpeix* | udk* | moxiebox* \
+ | interix* | uwin* | mks* | rhapsody* | darwin* \
+ | openstep* | oskit* | conix* | pw32* | nonstopux* \
+ | storm-chaos* | tops10* | tenex* | tops20* | its* \
+ | os2* | vos* | palmos* | uclinux* | nucleus* \
+ | morphos* | superux* | rtmk* | windiss* \
+ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
+ | skyos* | haiku* | rdos* | toppers* | drops* | es* \
+ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
+ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
+ | nsk* | powerunix)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ qnx*)
+ case $cpu in
+ x86 | i*86)
+ ;;
+ *)
+ os=nto-$os
+ ;;
+ esac
+ ;;
+ hiux*)
+ os=hiuxwe2
+ ;;
+ nto-qnx*)
+ ;;
+ nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ sim | xray | os68k* | v88r* \
+ | windows* | osx | abug | netware* | os9* \
+ | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
+ ;;
+ linux-dietlibc)
+ os=linux-dietlibc
+ ;;
+ linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ lynx*178)
+ os=lynxos178
+ ;;
+ lynx*5)
+ os=lynxos5
+ ;;
+ lynx*)
+ os=lynxos
+ ;;
+ mac*)
+ os=`echo "$os" | sed -e 's|mac|macos|'`
+ ;;
+ opened*)
+ os=openedition
+ ;;
+ os400*)
+ os=os400
+ ;;
+ sunos5*)
+ os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
+ ;;
+ sunos6*)
+ os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
+ ;;
+ wince*)
+ os=wince
+ ;;
+ utek*)
+ os=bsd
+ ;;
+ dynix*)
+ os=bsd
+ ;;
+ acis*)
+ os=aos
+ ;;
+ atheos*)
+ os=atheos
+ ;;
+ syllable*)
+ os=syllable
+ ;;
+ 386bsd)
+ os=bsd
+ ;;
+ ctix* | uts*)
+ os=sysv
+ ;;
+ nova*)
+ os=rtmk-nova
+ ;;
+ ns2)
+ os=nextstep2
+ ;;
+ # Preserve the version number of sinix5.
+ sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+ ;;
+ sinix*)
+ os=sysv4
+ ;;
+ tpf*)
+ os=tpf
+ ;;
+ triton*)
+ os=sysv3
+ ;;
+ oss*)
+ os=sysv3
+ ;;
+ svr4*)
+ os=sysv4
+ ;;
+ svr3)
+ os=sysv3
+ ;;
+ sysvr4)
+ os=sysv4
+ ;;
+ # This must come after sysvr4.
+ sysv*)
+ ;;
+ ose*)
+ os=ose
+ ;;
+ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+ os=mint
+ ;;
+ zvmoe)
+ os=zvmoe
+ ;;
+ dicos*)
+ os=dicos
+ ;;
+ pikeos*)
+ # Until real need of OS specific support for
+ # particular features comes up, bare metal
+ # configurations are quite functional.
+ case $cpu in
+ arm*)
+ os=eabi
+ ;;
+ *)
+ os=elf
+ ;;
+ esac
+ ;;
+ nacl*)
+ ;;
+ ios)
+ ;;
+ none)
+ ;;
+ *-eabi)
+ ;;
+ *)
+ echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $cpu-$vendor in
+ score-*)
+ os=elf
+ ;;
+ spu-*)
+ os=elf
+ ;;
+ *-acorn)
+ os=riscix1.2
+ ;;
+ arm*-rebel)
+ os=linux
+ ;;
+ arm*-semi)
+ os=aout
+ ;;
+ c4x-* | tic4x-*)
+ os=coff
+ ;;
+ c8051-*)
+ os=elf
+ ;;
+ clipper-intergraph)
+ os=clix
+ ;;
+ hexagon-*)
+ os=elf
+ ;;
+ tic54x-*)
+ os=coff
+ ;;
+ tic55x-*)
+ os=coff
+ ;;
+ tic6x-*)
+ os=coff
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=tops20
+ ;;
+ pdp11-*)
+ os=none
+ ;;
+ *-dec | vax-*)
+ os=ultrix4.2
+ ;;
+ m68*-apollo)
+ os=domain
+ ;;
+ i386-sun)
+ os=sunos4.0.2
+ ;;
+ m68000-sun)
+ os=sunos3
+ ;;
+ m68*-cisco)
+ os=aout
+ ;;
+ mep-*)
+ os=elf
+ ;;
+ mips*-cisco)
+ os=elf
+ ;;
+ mips*-*)
+ os=elf
+ ;;
+ or32-*)
+ os=coff
+ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=sysv3
+ ;;
+ sparc-* | *-sun)
+ os=sunos4.1.1
+ ;;
+ pru-*)
+ os=elf
+ ;;
+ *-be)
+ os=beos
+ ;;
+ *-ibm)
+ os=aix
+ ;;
+ *-knuth)
+ os=mmixware
+ ;;
+ *-wec)
+ os=proelf
+ ;;
+ *-winbond)
+ os=proelf
+ ;;
+ *-oki)
+ os=proelf
+ ;;
+ *-hp)
+ os=hpux
+ ;;
+ *-hitachi)
+ os=hiux
+ ;;
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+ os=sysv
+ ;;
+ *-cbm)
+ os=amigaos
+ ;;
+ *-dg)
+ os=dgux
+ ;;
+ *-dolphin)
+ os=sysv3
+ ;;
+ m68k-ccur)
+ os=rtu
+ ;;
+ m88k-omron*)
+ os=luna
+ ;;
+ *-next)
+ os=nextstep
+ ;;
+ *-sequent)
+ os=ptx
+ ;;
+ *-crds)
+ os=unos
+ ;;
+ *-ns)
+ os=genix
+ ;;
+ i370-*)
+ os=mvs
+ ;;
+ *-gould)
+ os=sysv
+ ;;
+ *-highlevel)
+ os=bsd
+ ;;
+ *-encore)
+ os=bsd
+ ;;
+ *-sgi)
+ os=irix
+ ;;
+ *-siemens)
+ os=sysv4
+ ;;
+ *-masscomp)
+ os=rtu
+ ;;
+ f30[01]-fujitsu | f700-fujitsu)
+ os=uxpv
+ ;;
+ *-rom68k)
+ os=coff
+ ;;
+ *-*bug)
+ os=coff
+ ;;
+ *-apple)
+ os=macos
+ ;;
+ *-atari*)
+ os=mint
+ ;;
+ *-wrs)
+ os=vxworks
+ ;;
+ *)
+ os=none
+ ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer. We pick the logical manufacturer.
+case $vendor in
+ unknown)
+ case $os in
+ riscix*)
+ vendor=acorn
+ ;;
+ sunos*)
+ vendor=sun
+ ;;
+ cnk*|-aix*)
+ vendor=ibm
+ ;;
+ beos*)
+ vendor=be
+ ;;
+ hpux*)
+ vendor=hp
+ ;;
+ mpeix*)
+ vendor=hp
+ ;;
+ hiux*)
+ vendor=hitachi
+ ;;
+ unos*)
+ vendor=crds
+ ;;
+ dgux*)
+ vendor=dg
+ ;;
+ luna*)
+ vendor=omron
+ ;;
+ genix*)
+ vendor=ns
+ ;;
+ clix*)
+ vendor=intergraph
+ ;;
+ mvs* | opened*)
+ vendor=ibm
+ ;;
+ os400*)
+ vendor=ibm
+ ;;
+ ptx*)
+ vendor=sequent
+ ;;
+ tpf*)
+ vendor=ibm
+ ;;
+ vxsim* | vxworks* | windiss*)
+ vendor=wrs
+ ;;
+ aux*)
+ vendor=apple
+ ;;
+ hms*)
+ vendor=hitachi
+ ;;
+ mpw* | macos*)
+ vendor=apple
+ ;;
+ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+ vendor=atari
+ ;;
+ vos*)
+ vendor=stratus
+ ;;
+ esac
+ ;;
+esac
+
+echo "$cpu-$vendor-$os"
+exit
+
+# Local variables:
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/config/depcomp b/build-aux/depcomp
index fc98710..3f27387 100755
--- a/config/depcomp
+++ b/build-aux/depcomp
@@ -1,9 +1,9 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2013-05-30.07; # UTC
+scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Copyright (C) 1999-2019 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@ scriptversion=2013-05-30.07; # UTC
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -783,9 +783,9 @@ exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
diff --git a/config/install-sh b/build-aux/install-sh
index 59990a1..20d8b2e 100755
--- a/config/install-sh
+++ b/build-aux/install-sh
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2014-09-12.12; # UTC
+scriptversion=2018-03-11.20; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -271,15 +271,18 @@ do
fi
dst=$dst_arg
- # If destination is a directory, append the input filename; won't work
- # if double slashes aren't ignored.
+ # If destination is a directory, append the input filename.
if test -d "$dst"; then
if test "$is_target_a_directory" = never; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
- dst=$dstdir/`basename "$src"`
+ dstbase=`basename "$src"`
+ case $dst in
+ */) dst=$dst$dstbase;;
+ *) dst=$dst/$dstbase;;
+ esac
dstdir_status=0
else
dstdir=`dirname "$dst"`
@@ -288,6 +291,11 @@ do
fi
fi
+ case $dstdir in
+ */) dstdirslash=$dstdir;;
+ *) dstdirslash=$dstdir/;;
+ esac
+
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
@@ -324,14 +332,16 @@ do
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
- # $RANDOM is not portable (e.g. dash); use it when possible to
- # lower collision chance
+ # Note that $RANDOM variable is not portable (e.g. dash); Use it
+ # here however when possible just to lower collision chance.
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+
trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
- # As "mkdir -p" follows symlinks and we work in /tmp possibly; so
- # create the $tmpdir first (and fail if unsuccessful) to make sure
- # that nobody tries to guess the $tmpdir name.
+ # Because "mkdir -p" follows existing symlinks and we likely work
+ # directly in world-writeable /tmp, make sure that the '$tmpdir'
+ # directory is successfully created first before we actually test
+ # 'mkdir -p' feature.
if (umask $mkdir_umask &&
$mkdirprog $mkdir_mode "$tmpdir" &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
@@ -434,14 +444,25 @@ do
else
# Make a couple of temp file names in the proper directory.
- dsttmp=$dstdir/_inst.$$_
- rmtmp=$dstdir/_rm.$$_
+ dsttmp=${dstdirslash}_inst.$$_
+ rmtmp=${dstdirslash}_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
- (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+ (umask $cp_umask &&
+ { test -z "$stripcmd" || {
+ # Create $dsttmp read-write so that cp doesn't create it read-only,
+ # which would cause strip to fail.
+ if test -z "$doit"; then
+ : >"$dsttmp" # No need to fork-exec 'touch'.
+ else
+ $doit touch "$dsttmp"
+ fi
+ }
+ } &&
+ $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
@@ -500,9 +521,9 @@ do
done
# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
diff --git a/config/mdate-sh b/build-aux/mdate-sh
index 9e2c0c9..79687f7 100755
--- a/config/mdate-sh
+++ b/build-aux/mdate-sh
@@ -1,9 +1,9 @@
#!/bin/sh
# Get modification time of a file or directory and pretty-print it.
-scriptversion=2015-04-09.19; # UTC
+scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1995-2014 Free Software Foundation, Inc.
+# Copyright (C) 1995-2019 Free Software Foundation, Inc.
# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
#
# This program is free software; you can redistribute it and/or modify
@@ -17,7 +17,7 @@ scriptversion=2015-04-09.19; # UTC
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -74,8 +74,8 @@ export LC_ALL
LC_TIME=C
export LC_TIME
-# Use UTC to get reproducible result
-TZ=UTC
+# Use UTC to get reproducible result.
+TZ=UTC0
export TZ
# GNU ls changes its time format in response to the TIME_STYLE
@@ -220,9 +220,9 @@ echo $day $month $year
# Local Variables:
# mode: shell-script
# sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
diff --git a/config/missing b/build-aux/missing
index f62bbae..625aeb1 100755
--- a/config/missing
+++ b/build-aux/missing
@@ -1,9 +1,9 @@
#! /bin/sh
# Common wrapper for a few potentially missing GNU programs.
-scriptversion=2013-10-28.13; # UTC
+scriptversion=2018-03-07.03; # UTC
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
@@ -17,7 +17,7 @@ scriptversion=2013-10-28.13; # UTC
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@@ -101,9 +101,9 @@ else
exit $st
fi
-perl_URL=http://www.perl.org/
-flex_URL=http://flex.sourceforge.net/
-gnu_software_URL=http://www.gnu.org/software
+perl_URL=https://www.perl.org/
+flex_URL=https://github.com/westes/flex
+gnu_software_URL=https://www.gnu.org/software
program_details ()
{
@@ -207,9 +207,9 @@ give_advice "$1" | sed -e '1s/^/WARNING: /' \
exit $st
# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
diff --git a/config/texinfo.tex b/build-aux/texinfo.tex
index e60dd17..1ea515b 100644
--- a/config/texinfo.tex
+++ b/build-aux/texinfo.tex
@@ -1,14 +1,11 @@
% texinfo.tex -- TeX macros to handle Texinfo files.
-%
+%
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2016-06-07.21}
+\def\texinfoversion{2019-09-24.13}
%
-% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-% 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016
-% Free Software Foundation, Inc.
+% Copyright 1985, 1986, 1988, 1990-2019 Free Software Foundation, Inc.
%
% This texinfo.tex file is free software: you can redistribute it and/or
% modify it under the terms of the GNU General Public License as
@@ -21,7 +18,7 @@
% General Public License for more details.
%
% You should have received a copy of the GNU General Public License
-% along with this program. If not, see <http://www.gnu.org/licenses/>.
+% along with this program. If not, see <https://www.gnu.org/licenses/>.
%
% As a special exception, when this file is read by TeX when processing
% a Texinfo source document, you may use the result without
@@ -30,9 +27,9 @@
%
% Please try the latest version of texinfo.tex before submitting bug
% reports; you can get the latest version from:
-% http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or
-% http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or
-% http://www.gnu.org/software/texinfo/ (the Texinfo home page)
+% https://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or
+% https://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or
+% https://www.gnu.org/software/texinfo/ (the Texinfo home page)
% The texinfo.tex in any given distribution could well be out
% of date, so if that's what you're using, please check.
%
@@ -56,7 +53,7 @@
% extent. You can get the existing language-specific files from the
% full Texinfo distribution.
%
-% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
+% The GNU Texinfo home page is https://www.gnu.org/software/texinfo.
\message{Loading texinfo [version \texinfoversion]:}
@@ -165,6 +162,9 @@
% Give the space character the catcode for a space.
\def\spaceisspace{\catcode`\ =10\relax}
+% Likewise for ^^M, the end of line character.
+\def\endlineisspace{\catcode13=10\relax}
+
\chardef\dashChar = `\-
\chardef\slashChar = `\/
\chardef\underChar = `\_
@@ -218,7 +218,7 @@
% @errormsg{MSG}. Do the index-like expansions on MSG, but if things
% aren't perfect, it's not the end of the world, being an error message,
% after all.
-%
+%
\def\errormsg{\begingroup \indexnofonts \doerrormsg}
\def\doerrormsg#1{\errmessage{#1}}
@@ -241,17 +241,7 @@
%
\def\finalout{\overfullrule=0pt }
-% Do @cropmarks to get crop marks.
-%
-\newif\ifcropmarks
-\let\cropmarks = \cropmarkstrue
-%
-% Dimensions to add cropmarks at corners.
-% Added by P. A. MacKay, 12 Nov. 1986
-%
\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
-\newdimen\cornerlong \cornerlong=1pc
-\newdimen\cornerthick \cornerthick=.3pt
\newdimen\topandbottommargin \topandbottommargin=.75in
% Output a mark which sets \thischapter, \thissection and \thiscolor.
@@ -267,8 +257,8 @@
% \domark is called twice inside \chapmacro, to add one
% mark before the section break, and one after.
-% In the second call \prevchapterdefs is the same as \lastchapterdefs,
-% and \prevsectiondefs is the same as \lastsectiondefs.
+% In the second call \prevchapterdefs is the same as \currentchapterdefs,
+% and \prevsectiondefs is the same as \currentsectiondefs.
% Then if the page is not broken at the mark, some of the previous
% section appears on the page, and we can get the name of this section
% from \firstmark for @everyheadingmarks top.
@@ -276,11 +266,11 @@
%
% See page 260 of The TeXbook.
\def\domark{%
- \toks0=\expandafter{\lastchapterdefs}%
- \toks2=\expandafter{\lastsectiondefs}%
+ \toks0=\expandafter{\currentchapterdefs}%
+ \toks2=\expandafter{\currentsectiondefs}%
\toks4=\expandafter{\prevchapterdefs}%
\toks6=\expandafter{\prevsectiondefs}%
- \toks8=\expandafter{\lastcolordefs}%
+ \toks8=\expandafter{\currentcolordefs}%
\mark{%
\the\toks0 \the\toks2 % 0: marks for @everyheadingmarks top
\noexpand\or \the\toks4 \the\toks6 % 1: for @everyheadingmarks bottom
@@ -297,19 +287,19 @@
% @setcolor (or @url, or @link, etc.) between @contents and the very
% first @chapter.
\def\gettopheadingmarks{%
- \ifcase0\topmark\fi
+ \ifcase0\the\savedtopmark\fi
\ifx\thischapter\empty \ifcase0\firstmark\fi \fi
}
\def\getbottomheadingmarks{\ifcase1\botmark\fi}
-\def\getcolormarks{\ifcase2\topmark\fi}
+\def\getcolormarks{\ifcase2\the\savedtopmark\fi}
% Avoid "undefined control sequence" errors.
-\def\lastchapterdefs{}
-\def\lastsectiondefs{}
-\def\lastsection{}
+\def\currentchapterdefs{}
+\def\currentsectiondefs{}
+\def\currentsection{}
\def\prevchapterdefs{}
\def\prevsectiondefs{}
-\def\lastcolordefs{}
+\def\currentcolordefs{}
% Margin to add to right of even pages, to left of odd pages.
\newdimen\bindingoffset
@@ -319,50 +309,75 @@
% Main output routine.
%
\chardef\PAGE = 255
-\output = {\onepageout{\pagecontents\PAGE}}
+\newtoks\defaultoutput
+\defaultoutput = {\savetopmark\onepageout{\pagecontents\PAGE}}
+\output=\expandafter{\the\defaultoutput}
\newbox\headlinebox
\newbox\footlinebox
+% When outputting the double column layout for indices, an output routine
+% is run several times, which hides the original value of \topmark. This
+% can lead to a page heading being output and duplicating the chapter heading
+% of the index. Hence, save the contents of \topmark at the beginning of
+% the output routine. The saved contents are valid until we actually
+% \shipout a page.
+%
+% (We used to run a short output routine to actually set \topmark and
+% \firstmark to the right values, but if this was called with an empty page
+% containing whatsits for writing index entries, the whatsits would be thrown
+% away and the index auxiliary file would remain empty.)
+%
+\newtoks\savedtopmark
+\newif\iftopmarksaved
+\topmarksavedtrue
+\def\savetopmark{%
+ \iftopmarksaved\else
+ \global\savedtopmark=\expandafter{\topmark}%
+ \global\topmarksavedtrue
+ \fi
+}
+
% \onepageout takes a vbox as an argument.
-% \shipout a vbox for a single page, adding an optional header, footer,
-% cropmarks, and footnote. This also causes index entries for this page
-% to be written to the auxiliary files.
+% \shipout a vbox for a single page, adding an optional header, footer
+% and footnote. This also causes index entries for this page to be written
+% to the auxiliary files.
%
\def\onepageout#1{%
- \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
+ \hoffset=\normaloffset
%
\ifodd\pageno \advance\hoffset by \bindingoffset
\else \advance\hoffset by -\bindingoffset\fi
%
- % Common context changes for both heading and footing.
- % Do this outside of the \shipout so @code etc. will be expanded in
- % the headline as they should be, not taken literally (outputting ''code).
- \def\commmonheadfootline{\let\hsize=\txipagewidth \texinfochars}
- %
% Retrieve the information for the headings from the marks in the page,
% and call Plain TeX's \makeheadline and \makefootline, which use the
% values in \headline and \footline.
%
% This is used to check if we are on the first page of a chapter.
- \ifcase1\topmark\fi
+ \ifcase1\the\savedtopmark\fi
\let\prevchaptername\thischaptername
\ifcase0\firstmark\fi
\let\curchaptername\thischaptername
%
\ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
- \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
%
\ifx\curchaptername\prevchaptername
\let\thischapterheading\thischapter
\else
% \thischapterheading is the same as \thischapter except it is blank
- % for the first page of a chapter. This is to prevent the chapter name
+ % for the first page of a chapter. This is to prevent the chapter name
% being shown twice.
\def\thischapterheading{}%
\fi
%
+ % Common context changes for both heading and footing.
+ % Do this outside of the \shipout so @code etc. will be expanded in
+ % the headline as they should be, not taken literally (outputting ''code).
+ \def\commmonheadfootline{\let\hsize=\txipagewidth \texinfochars}
+ %
\global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}%
+ %
+ \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
\global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}%
%
{%
@@ -371,37 +386,12 @@
% take effect in \write's, yet the group defined by the \vbox ends
% before the \shipout runs.
%
- \indexdummies % don't expand commands in the output.
- \normalturnoffactive % \ in index entries must not stay \, e.g., if
- % the page break happens to be in the middle of an example.
- % We don't want .vr (or whatever) entries like this:
- % \entry{{\indexbackslash }acronym}{32}{\code {\acronym}}
- % "\acronym" won't work when it's read back in;
- % it needs to be
- % {\code {{\backslashcurfont }acronym}
+ \atdummies % don't expand commands in the output.
+ \turnoffactive
\shipout\vbox{%
% Do this early so pdf references go to the beginning of the page.
\ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
%
- \ifcropmarks \vbox to \outervsize\bgroup
- \hsize = \outerhsize
- \vskip-\topandbottommargin
- \vtop to0pt{%
- \line{\ewtop\hfil\ewtop}%
- \nointerlineskip
- \line{%
- \vbox{\moveleft\cornerthick\nstop}%
- \hfill
- \vbox{\moveright\cornerthick\nstop}%
- }%
- \vss}%
- \vskip\topandbottommargin
- \line\bgroup
- \hfil % center the page within the outer (page) hsize.
- \ifodd\pageno\hskip\bindingoffset\fi
- \vbox\bgroup
- \fi
- %
\unvbox\headlinebox
\pagebody{#1}%
\ifdim\ht\footlinebox > 0pt
@@ -412,24 +402,9 @@
\unvbox\footlinebox
\fi
%
- \ifcropmarks
- \egroup % end of \vbox\bgroup
- \hfil\egroup % end of (centering) \line\bgroup
- \vskip\topandbottommargin plus1fill minus1fill
- \boxmaxdepth = \cornerthick
- \vbox to0pt{\vss
- \line{%
- \vbox{\moveleft\cornerthick\nsbot}%
- \hfill
- \vbox{\moveright\cornerthick\nsbot}%
- }%
- \nointerlineskip
- \line{\ewbot\hfil\ewbot}%
- }%
- \egroup % \vbox from first cropmarks clause
- \fi
- }% end of \shipout\vbox
- }% end of group with \indexdummies
+ }%
+ }%
+ \global\topmarksavedfalse
\advancepageno
\ifnum\outputpenalty>-20000 \else\dosupereject\fi
}
@@ -448,17 +423,6 @@
\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
}
-% Here are the rules for the cropmarks. Note that they are
-% offset so that the space between them is truly \outerhsize or \outervsize
-% (P. A. MacKay, 12 November, 1986)
-%
-\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
-\def\nstop{\vbox
- {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
-\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
-\def\nsbot{\vbox
- {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
-
% Argument parsing
@@ -484,11 +448,10 @@
}%
}
-% First remove any @comment, then any @c comment. Also remove a @texinfoc
-% comment (see \scanmacro for details). Pass the result on to \argcheckspaces.
+% First remove any @comment, then any @c comment. Pass the result on to
+% \argcheckspaces.
\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
-\def\argremovec#1\c#2\ArgTerm{\argremovetexinfoc #1\texinfoc\ArgTerm}
-\def\argremovetexinfoc#1\texinfoc#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
+\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
%
@@ -862,36 +825,6 @@ where each line of input produces a line of output.}
\temp
}
-% @| inserts a changebar to the left of the current line. It should
-% surround any changed text. This approach does *not* work if the
-% change spans more than two lines of output. To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change). This command
-% is not documented, not supported, and doesn't work.
-%
-\def\|{%
- % \vadjust can only be used in horizontal mode.
- \leavevmode
- %
- % Append this vertical mode material after the current line in the output.
- \vadjust{%
- % We want to insert a rule with the height and depth of the current
- % leading; that is exactly what \strutbox is supposed to record.
- \vskip-\baselineskip
- %
- % \vadjust-items are inserted at the left edge of the type. So
- % the \llap here moves out into the left-hand margin.
- \llap{%
- %
- % For a thicker or thinner bar, change the `1pt'.
- \vrule height\baselineskip width1pt
- %
- % This is the space between the bar and the text.
- \hskip 12pt
- }%
- }%
-}
-
% @include FILE -- \input text of FILE.
%
\def\include{\parseargusing\filenamecatcodes\includezzz}
@@ -980,21 +913,14 @@ where each line of input produces a line of output.}
% @comment ...line which is ignored...
% @c is the same as @comment
% @ignore ... @end ignore is another way to write a comment
-%
-\def\comment{\begingroup \catcode`\^^M=\active%
-\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other\commentxxx}%
-{\catcode`\^^M=\active%
-\gdef\commentxxx#1^^M{\endgroup%
-\futurelet\nexttoken\commentxxxx}%
-\gdef\commentxxxx{\ifx\nexttoken\aftermacro\expandafter\comment\fi}%
-}
\def\c{\begingroup \catcode`\^^M=\active%
\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
\cxxx}
{\catcode`\^^M=\active \gdef\cxxx#1^^M{\endgroup}}
-% See comment in \scanmacro about why the definitions of @c and @comment differ
+%
+\let\comment\c
% @paragraphindent NCHARS
% We'll use ems for NCHARS, close enough.
@@ -1108,9 +1034,14 @@ where each line of input produces a line of output.}
% For LuaTeX
%
+\newif\iftxiuseunicodedestname
+\txiuseunicodedestnamefalse % For pdfTeX etc.
+
\ifx\luatexversion\thisisundefined
\else
- % Escape PDF strings UTF-8 to UTF-16
+ % Use Unicode destination names
+ \txiuseunicodedestnametrue
+ % Escape PDF strings with converting UTF-16 from UTF-8
\begingroup
\catcode`\%=12
\directlua{
@@ -1121,7 +1052,7 @@ where each line of input produces a line of output.}
tex.sprint(
string.format(string.char(0x5c) .. string.char(0x25) .. '03o' ..
string.char(0x5c) .. string.char(0x25) .. '03o',
- (c / 256), (c % 256)))
+ math.floor(c / 256), math.floor(c % 256)))
else
c = c - 0x10000
local c_hi = c / 1024 + 0xd800
@@ -1131,14 +1062,35 @@ where each line of input produces a line of output.}
string.char(0x5c) .. string.char(0x25) .. '03o' ..
string.char(0x5c) .. string.char(0x25) .. '03o' ..
string.char(0x5c) .. string.char(0x25) .. '03o',
- (c_hi / 256), (c_hi % 256),
- (c_lo / 256), (c_lo % 256)))
+ math.floor(c_hi / 256), math.floor(c_hi % 256),
+ math.floor(c_lo / 256), math.floor(c_lo % 256)))
+ end
+ end
+ end
+ }
+ \endgroup
+ \def\pdfescapestrutfsixteen#1{\directlua{UTF16oct('\luaescapestring{#1}')}}
+ % Escape PDF strings without converting
+ \begingroup
+ \directlua{
+ function PDFescstr(str)
+ for c in string.bytes(str) do
+ if c <= 0x20 or c >= 0x80 or c == 0x28 or c == 0x29 or c == 0x5c then
+ tex.sprint(-2,
+ string.format(string.char(0x5c) .. string.char(0x25) .. '03o',
+ c))
+ else
+ tex.sprint(-2, string.char(c))
end
end
end
}
+ % The -2 in the arguments here gives all the input to TeX catcode 12
+ % (other) or 10 (space), preventing undefined control sequence errors. See
+ % https://lists.gnu.org/archive/html/bug-texinfo/2019-08/msg00031.html
+ %
\endgroup
- \def\pdfescapestring#1{\directlua{UTF16oct('\luaescapestring{#1}')}}
+ \def\pdfescapestring#1{\directlua{PDFescstr('\luaescapestring{#1}')}}
\ifnum\luatexversion>84
% For LuaTeX >= 0.85
\def\pdfdest{\pdfextension dest}
@@ -1175,11 +1127,21 @@ where each line of input produces a line of output.}
\fi
\fi
+\newif\ifpdforxetex
+\pdforxetexfalse
+\ifpdf
+ \pdforxetextrue
+\fi
+\ifx\XeTeXrevision\thisisundefined\else
+ \pdforxetextrue
+\fi
+
+
% PDF uses PostScript string constants for the names of xref targets,
% for display in the outlines, and in other places. Thus, we have to
% double any backslashes. Otherwise, a name like "\node" will be
% interpreted as a newline (\n), followed by o, d, e. Not good.
-%
+%
% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
% related messages. The final outcome is that it is up to the TeX user
% to double the backslashes and otherwise make the string valid, so
@@ -1199,6 +1161,14 @@ where each line of input produces a line of output.}
\xdef#1{\pdfescapestring{#1}}%
\fi
}
+\def\txiescapepdfutfsixteen#1{%
+ \ifx\pdfescapestrutfsixteen\thisisundefined
+ % No UTF-16 converting macro available.
+ \txiescapepdf{#1}%
+ \else
+ \xdef#1{\pdfescapestrutfsixteen{#1}}%
+ \fi
+}
\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
with PDF output, and none of those formats could be found. (.eps cannot
@@ -1223,7 +1193,7 @@ output) for that.)}
% Set color, and create a mark which defines \thiscolor accordingly,
% so that \makeheadline knows which color to restore.
\def\setcolor#1{%
- \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
+ \xdef\currentcolordefs{\gdef\noexpand\thiscolor{#1}}%
\domark
\pdfsetcolor{#1}%
}
@@ -1231,7 +1201,7 @@ output) for that.)}
\def\maincolor{\rgbBlack}
\pdfsetcolor{\maincolor}
\edef\thiscolor{\maincolor}
- \def\lastcolordefs{}
+ \def\currentcolordefs{}
%
\def\makefootline{%
\baselineskip24pt
@@ -1308,19 +1278,77 @@ output) for that.)}
\pdfrefximage \pdflastximage
\fi}
%
- \def\pdfmkdest#1{{%
+ \def\setpdfdestname#1{{%
% We have to set dummies so commands such as @code, and characters
% such as \, aren't expanded when present in a section title.
\indexnofonts
\makevalueexpandable
\turnoffactive
- % Use ASCII approximations in destination names.
- \passthroughcharsfalse
+ \iftxiuseunicodedestname
+ \ifx \declaredencoding \latone
+ % Pass through Latin-1 characters.
+ % LuaTeX with byte wise I/O converts Latin-1 characters to Unicode.
+ \else
+ \ifx \declaredencoding \utfeight
+ % Pass through Unicode characters.
+ \else
+ % Use ASCII approximations in destination names.
+ \passthroughcharsfalse
+ \fi
+ \fi
+ \else
+ % Use ASCII approximations in destination names.
+ \passthroughcharsfalse
+ \fi
\def\pdfdestname{#1}%
\txiescapepdf\pdfdestname
- \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
}}
%
+ \def\setpdfoutlinetext#1{{%
+ \indexnofonts
+ \makevalueexpandable
+ \turnoffactive
+ \ifx \declaredencoding \latone
+ % The PDF format can use an extended form of Latin-1 in bookmark
+ % strings. See Appendix D of the PDF Reference, Sixth Edition, for
+ % the "PDFDocEncoding".
+ \passthroughcharstrue
+ % Pass through Latin-1 characters.
+ % LuaTeX: Convert to Unicode
+ % pdfTeX: Use Latin-1 as PDFDocEncoding
+ \def\pdfoutlinetext{#1}%
+ \else
+ \ifx \declaredencoding \utfeight
+ \ifx\luatexversion\thisisundefined
+ % For pdfTeX with UTF-8.
+ % TODO: the PDF format can use UTF-16 in bookmark strings,
+ % but the code for this isn't done yet.
+ % Use ASCII approximations.
+ \passthroughcharsfalse
+ \def\pdfoutlinetext{#1}%
+ \else
+ % For LuaTeX with UTF-8.
+ % Pass through Unicode characters for title texts.
+ \passthroughcharstrue
+ \def\pdfoutlinetext{#1}%
+ \fi
+ \else
+ % For non-Latin-1 or non-UTF-8 encodings.
+ % Use ASCII approximations.
+ \passthroughcharsfalse
+ \def\pdfoutlinetext{#1}%
+ \fi
+ \fi
+ % LuaTeX: Convert to UTF-16
+ % pdfTeX: Use Latin-1 as PDFDocEncoding
+ \txiescapepdfutfsixteen\pdfoutlinetext
+ }}
+ %
+ \def\pdfmkdest#1{%
+ \setpdfdestname{#1}%
+ \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+ }
+ %
% used to mark target names; must be expandable.
\def\pdfmkpgn#1{#1}
%
@@ -1348,36 +1376,13 @@ output) for that.)}
% page number. We could generate a destination for the section
% text in the case where a section has no node, but it doesn't
% seem worth the trouble, since most documents are normally structured.
- {
- \ifx\luatexversion\thisisundefined \else
- \turnoffactive % LuaTeX can use Unicode strings for PDF
- \fi
- \edef\pdfoutlinedest{#3}%
- \ifx\pdfoutlinedest\empty
- \def\pdfoutlinedest{#4}%
- \else
- \txiescapepdf\pdfoutlinedest
- \fi
- %
- % Also escape PDF chars in the display string.
- \bgroup
- \ifx \declaredencoding \latone
- % The PDF format can use an extended form of Latin-1 in bookmark
- % strings. See Appendix D of the PDF Reference, Sixth Edition, for
- % the "PDFDocEncoding".
- \passthroughcharstrue
- \fi
- \ifx \declaredencoding \utfeight
- % TODO: the PDF format can use UTF-16 in bookmark strings, but the
- % code for this isn't done yet.
- \fi
- \globaldefs=1
- \edef\pdfoutlinetext{#1}%
- \txiescapepdf\pdfoutlinetext
- \egroup
- %
- \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
- }
+ \setpdfoutlinetext{#1}
+ \setpdfdestname{#3}
+ \ifx\pdfdestname\empty
+ \def\pdfdestname{#4}%
+ \fi
+ %
+ \pdfoutline goto name{\pdfmkpgn{\pdfdestname}}#2{\pdfoutlinetext}%
}
%
\def\pdfmakeoutlines{%
@@ -1441,7 +1446,7 @@ output) for that.)}
% their "best" equivalent, based on the @documentencoding. Too
% much work for too little return. Just use the ASCII equivalents
% we use for the index sort strings.
- %
+ %
\indexnofonts
\setupdatafile
% We can have normal brace characters in the PDF outlines, unlike
@@ -1497,6 +1502,9 @@ output) for that.)}
\startlink attr{/Border [0 0 0]}%
user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
\endgroup}
+ % \pdfgettoks - Surround page numbers in #1 with @pdflink. #1 may
+ % be a simple number, or a list of numbers in the case of an index
+ % entry.
\def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
\def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
\def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
@@ -1535,71 +1543,132 @@ output) for that.)}
%
% For XeTeX
%
-\newif\iftxiuseunicodedestname
\ifx\XeTeXrevision\thisisundefined
\else
%
% XeTeX version check
%
- \ifnum\strcmp{\the\XeTeXversion\XeTeXrevision}{0.99995}>-1
- % XeTeX 0.99995+ contains xdvipdfmx 20160307+.
- % It can handle Unicode destination name for PDF.
+ \ifnum\strcmp{\the\XeTeXversion\XeTeXrevision}{0.99996}>-1
+ % TeX Live 2016 contains XeTeX 0.99996 and xdvipdfmx 20160307.
+ % It can use the `dvipdfmx:config' special (from TeX Live SVN r40941).
+ % For avoiding PDF destination name replacement, we use this special
+ % instead of xdvipdfmx's command line option `-C 0x0010'.
+ \special{dvipdfmx:config C 0x0010}
+ % XeTeX 0.99995+ comes with xdvipdfmx 20160307+.
+ % It can handle Unicode destination names for PDF.
\txiuseunicodedestnametrue
\else
- % XeTeX < 0.99995 can not handle Unicode destination name for PDF
- % because xdvipdfmx 20150315 has UTF-16 convert issue.
- % It fixed by xdvipdfmx 20160106 (TeX Live SVN r39753).
+ % XeTeX < 0.99996 (TeX Live < 2016) cannot use the
+ % `dvipdfmx:config' special.
+ % So for avoiding PDF destination name replacement,
+ % xdvipdfmx's command line option `-C 0x0010' is necessary.
+ %
+ % XeTeX < 0.99995 can not handle Unicode destination names for PDF
+ % because xdvipdfmx 20150315 has a UTF-16 conversion issue.
+ % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753).
\txiuseunicodedestnamefalse
\fi
%
+ % Color support
+ %
+ \def\rgbDarkRed{0.50 0.09 0.12}
+ \def\rgbBlack{0 0 0}
+ %
+ \def\pdfsetcolor#1{\special{pdf:scolor [#1]}}
+ %
+ % Set color, and create a mark which defines \thiscolor accordingly,
+ % so that \makeheadline knows which color to restore.
+ \def\setcolor#1{%
+ \xdef\currentcolordefs{\gdef\noexpand\thiscolor{#1}}%
+ \domark
+ \pdfsetcolor{#1}%
+ }
+ %
+ \def\maincolor{\rgbBlack}
+ \pdfsetcolor{\maincolor}
+ \edef\thiscolor{\maincolor}
+ \def\currentcolordefs{}
+ %
+ \def\makefootline{%
+ \baselineskip24pt
+ \line{\pdfsetcolor{\maincolor}\the\footline}%
+ }
+ %
+ \def\makeheadline{%
+ \vbox to 0pt{%
+ \vskip-22.5pt
+ \line{%
+ \vbox to8.5pt{}%
+ % Extract \thiscolor definition from the marks.
+ \getcolormarks
+ % Typeset the headline with \maincolor, then restore the color.
+ \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
+ }%
+ \vss
+ }%
+ \nointerlineskip
+ }
+ %
% PDF outline support
%
- % Emulate the primitive of pdfTeX
+ % Emulate pdfTeX primitive
\def\pdfdest name#1 xyz{%
- \special{pdf:dest (name#1) [@thispage /XYZ @xpos @ypos]}%
+ \special{pdf:dest (#1) [@thispage /XYZ @xpos @ypos null]}%
}
- \def\pdfmkdest#1{{%
+ %
+ \def\setpdfdestname#1{{%
% We have to set dummies so commands such as @code, and characters
% such as \, aren't expanded when present in a section title.
\indexnofonts
+ \makevalueexpandable
+ \turnoffactive
\iftxiuseunicodedestname
- \def\pdfdestname{#1}% Pass through Unicode characters.
+ % Pass through Unicode characters.
\else
- \edef\pdfdestname{#1}% Replace Unicode characters to ASCII.
+ % Use ASCII approximations in destination names.
+ \passthroughcharsfalse
\fi
- \turnoffactive
- \makevalueexpandable
+ \def\pdfdestname{#1}%
\txiescapepdf\pdfdestname
- \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
}}
%
+ \def\setpdfoutlinetext#1{{%
+ \turnoffactive
+ % Always use Unicode characters in title texts.
+ \def\pdfoutlinetext{#1}%
+ % For XeTeX, xdvipdfmx converts to UTF-16.
+ % So we do not convert.
+ \txiescapepdf\pdfoutlinetext
+ }}
+ %
+ \def\pdfmkdest#1{%
+ \setpdfdestname{#1}%
+ \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+ }
+ %
+ % by default, use black for everything.
+ \def\urlcolor{\rgbBlack}
+ \def\linkcolor{\rgbBlack}
+ \def\endlink{\setcolor{\maincolor}\pdfendlink}
+ %
\def\dopdfoutline#1#2#3#4{%
- \iftxiuseunicodedestname
- \def\pdfoutlinedest{#3}% Pass through Unicode characters.
- \else
- \edef\pdfoutlinedest{#3}% Replace Unicode characters to ASCII.
- \fi
- \ifx\pdfoutlinedest\empty
- \def\pdfoutlinedest{#4}%
+ \setpdfoutlinetext{#1}
+ \setpdfdestname{#3}
+ \ifx\pdfdestname\empty
+ \def\pdfdestname{#4}%
\fi
- {
- \turnoffactive
- \txiescapepdf\pdfoutlinedest
- \edef\pdfoutlinetext{#1}%
- \txiescapepdf\pdfoutlinetext
- %
- \special{pdf:out [-] #2 << /Title (\pdfoutlinetext) /A
- << /S /GoTo /D (name\pdfoutlinedest) >> >> }%
- }
+ %
+ \special{pdf:out [-] #2 << /Title (\pdfoutlinetext) /A
+ << /S /GoTo /D (\pdfdestname) >> >> }%
}
%
\def\pdfmakeoutlines{%
\begingroup
%
- % In the case of XeTeX, counts of subentries is not necesary.
- % Therefore, read toc only once.
+ % For XeTeX, counts of subentries are not necessary.
+ % Therefore, we read toc only once.
%
- % We use the node names as the destinations.
+ % We use node names as destinations.
\def\partentry##1##2##3##4{}% ignore parts in the outlines
\def\numchapentry##1##2##3##4{%
\dopdfoutline{##1}{1}{##3}{##4}}%
@@ -1619,7 +1688,7 @@ output) for that.)}
\let\unnsubsecentry\numsubsecentry%
\let\unnsubsubsecentry\numsubsubsecentry%
%
- % In the case of XeTeX, xdvipdfmx converts strings to UTF-16.
+ % For XeTeX, xdvipdfmx converts strings to UTF-16.
% Therefore, the encoding and the language may not be considered.
%
\indexnofonts
@@ -1641,9 +1710,9 @@ output) for that.)}
\special{pdf:docview << /PageMode /UseOutlines >> }
% ``\special{pdf:tounicode ...}'' is not necessary
% because xdvipdfmx converts strings from UTF-8 to UTF-16 without it.
- % However, due to UTF-16 convert issue of xdvipdfmx 20150315,
- % ``\special{pdf:dest ...}'' can not handle non-ASCII strings.
- % It fixed by xdvipdfmx 20160106 (TeX Live SVN r39753).
+ % However, due to a UTF-16 conversion issue of xdvipdfmx 20150315,
+ % ``\special{pdf:dest ...}'' cannot handle non-ASCII strings.
+ % It is fixed by xdvipdfmx 20160106 (TeX Live SVN r39753).
%
\def\skipspaces#1{\def\PP{#1}\def\D{|}%
\ifx\PP\D\let\nextsp\relax
@@ -1703,7 +1772,7 @@ output) for that.)}
{\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
\def\pdflink#1{%
\special{pdf:bann << /Border [0 0 0]
- /Type /Annot /Subtype /Link /A << /S /GoTo /D (name#1) >> >>}%
+ /Type /Annot /Subtype /Link /A << /S /GoTo /D (#1) >> >>}%
\setcolor{\linkcolor}#1\endlink}
\def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
%
@@ -1715,7 +1784,7 @@ output) for that.)}
\def\xeteximagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
\def\xeteximageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
%
- % XeTeX (and the PDF format) support .pdf, .png, .jpg (among
+ % XeTeX (and the PDF format) supports .pdf, .png, .jpg (among
% others). Let's try in that order, PDF first since if
% someone has a scalable image, presumably better to use that than a
% bitmap.
@@ -1759,40 +1828,9 @@ output) for that.)}
}
\fi
-\message{fonts,}
-
-% Change the current font style to #1, remembering it in \curfontstyle.
-% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
-% italics, not bold italics.
-%
-\def\setfontstyle#1{%
- \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
- \csname ten#1\endcsname % change the current font
-}
-% Select #1 fonts with the current style.
%
-\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
-
-\def\rm{\fam=0 \setfontstyle{rm}}
-\def\it{\fam=\itfam \setfontstyle{it}}
-\def\sl{\fam=\slfam \setfontstyle{sl}}
-\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
-\def\tt{\fam=\ttfam \setfontstyle{tt}}
-
-% Unfortunately, we have to override this for titles and the like, since
-% in those cases "rm" is bold. Sigh.
-\def\rmisbold{\rm\def\curfontstyle{bf}}
-
-% Texinfo sort of supports the sans serif font style, which plain TeX does not.
-% So we set up a \sf.
-\newfam\sffam
-\def\sf{\fam=\sffam \setfontstyle{sf}}
-\let\li = \sf % Sometimes we call it \li, not \sf.
-
-% We don't need math for this font style.
-\def\ttsl{\setfontstyle{ttsl}}
-
+\message{fonts,}
% Set the baselineskip to #1, and the lineskip and strut size
% correspondingly. There is no deep meaning behind these magic numbers
@@ -2141,10 +2179,10 @@ end
% A few fonts for @defun names and args.
\setfont\defbf\bfshape{10}{\magstep1}{OT1}
\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
-\setfont\defsl\slshape{10}{\magstep1}{OT1TT}
+\setfont\defsl\slshape{10}{\magstep1}{OT1}
\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf
-\let\tenttsl=\defttsl \let\tensl=\defsl \bf}
+\def\df{\let\ttfont=\deftt \let\bffont = \defbf
+\let\ttslfont=\defttsl \let\slfont=\defsl \bf}
% Fonts for indices, footnotes, small examples (9pt).
\def\smallnominalsize{9pt}
@@ -2174,6 +2212,20 @@ end
\font\smallersy=cmsy8
\def\smallerecsize{0800}
+% Fonts for math mode superscripts (7pt).
+\def\sevennominalsize{7pt}
+\setfont\sevenrm\rmshape{7}{1000}{OT1}
+\setfont\seventt\ttshape{10}{700}{OT1TT}
+\setfont\sevenbf\bfshape{10}{700}{OT1}
+\setfont\sevenit\itshape{7}{1000}{OT1IT}
+\setfont\sevensl\slshape{10}{700}{OT1}
+\setfont\sevensf\sfshape{10}{700}{OT1}
+\setfont\sevensc\scshape{10}{700}{OT1}
+\setfont\seventtsl\ttslshape{10}{700}{OT1TT}
+\font\seveni=cmmi7
+\font\sevensy=cmsy7
+\def\sevenecsize{0700}
+
% Fonts for title page (20.4pt):
\def\titlenominalsize{20pt}
\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
@@ -2231,7 +2283,7 @@ end
\font\ssecsy=cmsy10 scaled 1315
\def\ssececsize{1200}
-% Reduced fonts for @acro in text (10pt).
+% Reduced fonts for @acronym in text (10pt).
\def\reducednominalsize{10pt}
\setfont\reducedrm\rmshape{10}{1000}{OT1}
\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
@@ -2275,10 +2327,10 @@ end
% A few fonts for @defun names and args.
\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
-\setfont\defsl\slshape{10}{\magstephalf}{OT1TT}
+\setfont\defsl\slshape{10}{\magstephalf}{OT1}
\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf
-\let\tensl=\defsl \let\tenttsl=\defttsl \bf}
+\def\df{\let\ttfont=\deftt \let\bffont = \defbf
+\let\slfont=\defsl \let\ttslfont=\defttsl \bf}
% Fonts for indices, footnotes, small examples (9pt).
\def\smallnominalsize{9pt}
@@ -2308,6 +2360,20 @@ end
\font\smallersy=cmsy8
\def\smallerecsize{0800}
+% Fonts for math mode superscripts (7pt).
+\def\sevennominalsize{7pt}
+\setfont\sevenrm\rmshape{7}{1000}{OT1}
+\setfont\seventt\ttshape{10}{700}{OT1TT}
+\setfont\sevenbf\bfshape{10}{700}{OT1}
+\setfont\sevenit\itshape{7}{1000}{OT1IT}
+\setfont\sevensl\slshape{10}{700}{OT1}
+\setfont\sevensf\sfshape{10}{700}{OT1}
+\setfont\sevensc\scshape{10}{700}{OT1}
+\setfont\seventtsl\ttslshape{10}{700}{OT1TT}
+\font\seveni=cmmi7
+\font\sevensy=cmsy7
+\def\sevenecsize{0700}
+
% Fonts for title page (20.4pt):
\def\titlenominalsize{20pt}
\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
@@ -2364,7 +2430,7 @@ end
\font\ssecsy=cmsy10
\def\ssececsize{1000}
-% Reduced fonts for @acro in text (9pt).
+% Reduced fonts for @acronym in text (9pt).
\def\reducednominalsize{9pt}
\setfont\reducedrm\rmshape{9}{1000}{OT1}
\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
@@ -2384,6 +2450,12 @@ end
\rm
} % end of 10pt text font size definitions, \definetextfontsizex
+% Fonts for short table of contents.
+\setfont\shortcontrm\rmshape{12}{1000}{OT1}
+\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}{OT1}
+\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
+
% We provide the user-level command
% @fonttextsize 10
@@ -2410,20 +2482,57 @@ end
\endgroup
}
+%
+% Change the current font style to #1, remembering it in \curfontstyle.
+% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
+% italics, not bold italics.
+%
+\def\setfontstyle#1{%
+ \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
+ \csname #1font\endcsname % change the current font
+}
+
+\def\rm{\fam=0 \setfontstyle{rm}}
+\def\it{\fam=\itfam \setfontstyle{it}}
+\def\sl{\fam=\slfam \setfontstyle{sl}}
+\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
+\def\tt{\fam=\ttfam \setfontstyle{tt}}
+
+% Texinfo sort of supports the sans serif font style, which plain TeX does not.
+% So we set up a \sf.
+\newfam\sffam
+\def\sf{\fam=\sffam \setfontstyle{sf}}
+
+% We don't need math for this font style.
+\def\ttsl{\setfontstyle{ttsl}}
+
+
% In order for the font changes to affect most math symbols and letters,
-% we have to define the \textfont of the standard families. We don't
-% bother to reset \scriptfont and \scriptscriptfont; awaiting user need.
+% we have to define the \textfont of the standard families.
+% We don't bother to reset \scriptscriptfont; awaiting user need.
%
\def\resetmathfonts{%
- \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
- \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
- \textfont\ttfam=\tentt \textfont\sffam=\tensf
+ \textfont0=\rmfont \textfont1=\ifont \textfont2=\syfont
+ \textfont\itfam=\itfont \textfont\slfam=\slfont \textfont\bffam=\bffont
+ \textfont\ttfam=\ttfont \textfont\sffam=\sffont
+ %
+ % Fonts for superscript. Note that the 7pt fonts are used regardless
+ % of the current font size.
+ \scriptfont0=\sevenrm \scriptfont1=\seveni \scriptfont2=\sevensy
+ \scriptfont\itfam=\sevenit \scriptfont\slfam=\sevensl
+ \scriptfont\bffam=\sevenbf \scriptfont\ttfam=\seventt
+ \scriptfont\sffam=\sevensf
}
-% The font-changing commands redefine the meanings of \tenSTYLE, instead
-% of just \STYLE. We do this because \STYLE needs to also set the
-% current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire
-% \tenSTYLE to set the current font.
+%
+
+% The font-changing commands (all called \...fonts) redefine the meanings
+% of \STYLEfont, instead of just \STYLE. We do this because \STYLE needs
+% to also set the current \fam for math mode. Our \STYLE (e.g., \rm)
+% commands hardwire \STYLEfont to set the current font.
+%
+% The fonts used for \ifont are for "math italics" (\itfont is for italics
+% in regular text). \syfont is also used in math mode only.
%
% Each font-changing command also sets the names \lsize (one size lower)
% and \lllsize (three sizes lower). These relative commands are used
@@ -2431,78 +2540,63 @@ end
%
% This all needs generalizing, badly.
%
-\def\textfonts{%
- \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
- \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
- \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
- \let\tenttsl=\textttsl
- \def\curfontsize{text}%
- \def\lsize{reduced}\def\lllsize{smaller}%
- \resetmathfonts \setleading{\textleading}}
-\def\titlefonts{%
- \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
- \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
- \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
- \let\tenttsl=\titlettsl
- \def\curfontsize{title}%
- \def\lsize{chap}\def\lllsize{subsec}%
- \resetmathfonts \setleading{27pt}}
-\def\titlefont#1{{\titlefonts\rmisbold #1}}
-\def\chapfonts{%
- \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
- \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
- \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
- \let\tenttsl=\chapttsl
- \def\curfontsize{chap}%
- \def\lsize{sec}\def\lllsize{text}%
- \resetmathfonts \setleading{19pt}}
-\def\secfonts{%
- \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
- \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
- \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
- \let\tenttsl=\secttsl
- \def\curfontsize{sec}%
- \def\lsize{subsec}\def\lllsize{reduced}%
- \resetmathfonts \setleading{17pt}}
-\def\subsecfonts{%
- \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
- \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
- \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
- \let\tenttsl=\ssecttsl
- \def\curfontsize{ssec}%
- \def\lsize{text}\def\lllsize{small}%
- \resetmathfonts \setleading{15pt}}
-\let\subsubsecfonts = \subsecfonts
-\def\reducedfonts{%
- \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
- \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
- \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
- \let\tenttsl=\reducedttsl
- \def\curfontsize{reduced}%
- \def\lsize{small}\def\lllsize{smaller}%
- \resetmathfonts \setleading{10.5pt}}
-\def\smallfonts{%
- \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
- \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
- \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
- \let\tenttsl=\smallttsl
- \def\curfontsize{small}%
- \def\lsize{smaller}\def\lllsize{smaller}%
- \resetmathfonts \setleading{10.5pt}}
-\def\smallerfonts{%
- \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
- \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
- \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
- \let\tenttsl=\smallerttsl
- \def\curfontsize{smaller}%
- \def\lsize{smaller}\def\lllsize{smaller}%
- \resetmathfonts \setleading{9.5pt}}
-% Fonts for short table of contents.
-\setfont\shortcontrm\rmshape{12}{1000}{OT1}
-\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12
-\setfont\shortcontsl\slshape{12}{1000}{OT1}
-\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
+\def\assignfonts#1{%
+ \expandafter\let\expandafter\rmfont\csname #1rm\endcsname
+ \expandafter\let\expandafter\itfont\csname #1it\endcsname
+ \expandafter\let\expandafter\slfont\csname #1sl\endcsname
+ \expandafter\let\expandafter\bffont\csname #1bf\endcsname
+ \expandafter\let\expandafter\ttfont\csname #1tt\endcsname
+ \expandafter\let\expandafter\smallcaps\csname #1sc\endcsname
+ \expandafter\let\expandafter\sffont \csname #1sf\endcsname
+ \expandafter\let\expandafter\ifont \csname #1i\endcsname
+ \expandafter\let\expandafter\syfont \csname #1sy\endcsname
+ \expandafter\let\expandafter\ttslfont\csname #1ttsl\endcsname
+}
+
+\newif\ifrmisbold
+
+% Select smaller font size with the current style. Used to change font size
+% in, e.g., the LaTeX logo and acronyms. If we are using bold fonts for
+% normal roman text, also use bold fonts for roman text in the smaller size.
+\def\switchtolllsize{%
+ \expandafter\assignfonts\expandafter{\lllsize}%
+ \ifrmisbold
+ \let\rmfont\bffont
+ \fi
+ \csname\curfontstyle\endcsname
+}%
+
+\def\switchtolsize{%
+ \expandafter\assignfonts\expandafter{\lsize}%
+ \ifrmisbold
+ \let\rmfont\bffont
+ \fi
+ \csname\curfontstyle\endcsname
+}%
+
+\def\definefontsetatsize#1#2#3#4#5{%
+\expandafter\def\csname #1fonts\endcsname{%
+ \def\curfontsize{#1}%
+ \def\lsize{#2}\def\lllsize{#3}%
+ \csname rmisbold#5\endcsname
+ \assignfonts{#1}%
+ \resetmathfonts
+ \setleading{#4}%
+}}
+
+\definefontsetatsize{text} {reduced}{smaller}{\textleading}{false}
+\definefontsetatsize{title} {chap} {subsec} {27pt} {true}
+\definefontsetatsize{chap} {sec} {text} {19pt} {true}
+\definefontsetatsize{sec} {subsec} {reduced}{17pt} {true}
+\definefontsetatsize{ssec} {text} {small} {15pt} {true}
+\definefontsetatsize{reduced}{small} {smaller}{10.5pt}{false}
+\definefontsetatsize{small} {smaller}{smaller}{10.5pt}{false}
+\definefontsetatsize{smaller}{smaller}{smaller}{9.5pt} {false}
+
+\def\titlefont#1{{\titlefonts\rm #1}}
+\let\subsecfonts = \ssecfonts
+\let\subsubsecfonts = \ssecfonts
% Define these just so they can be easily changed for other fonts.
\def\angleleft{$\langle$}
@@ -2540,26 +2634,11 @@ end
% Markup style infrastructure. \defmarkupstylesetup\INITMACRO will
% define and register \INITMACRO to be called on markup style changes.
% \INITMACRO can check \currentmarkupstyle for the innermost
-% style and the set of \ifmarkupSTYLE switches for all styles
-% currently in effect.
-\newif\ifmarkupvar
-\newif\ifmarkupsamp
-\newif\ifmarkupkey
-%\newif\ifmarkupfile % @file == @samp.
-%\newif\ifmarkupoption % @option == @samp.
-\newif\ifmarkupcode
-\newif\ifmarkupkbd
-%\newif\ifmarkupenv % @env == @code.
-%\newif\ifmarkupcommand % @command == @code.
-\newif\ifmarkuptex % @tex (and part of @math, for now).
-\newif\ifmarkupexample
-\newif\ifmarkupverb
-\newif\ifmarkupverbatim
+% style.
\let\currentmarkupstyle\empty
\def\setupmarkupstyle#1{%
- \csname markup#1true\endcsname
\def\currentmarkupstyle{#1}%
\markupstylesetup
}
@@ -2621,11 +2700,15 @@ end
% lilypond developers report. xpdf does work with the regular 0x27.
%
\def\codequoteright{%
- \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
- \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
- '%
+ \ifmonospace
+ \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
+ \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
+ '%
+ \else \char'15 \fi
\else \char'15 \fi
- \else \char'15 \fi
+ \else
+ '%
+ \fi
}
%
% and a similar option for the left quote char vs. a grave accent.
@@ -2633,17 +2716,21 @@ end
% the code environments to do likewise.
%
\def\codequoteleft{%
- \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
- \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
- % [Knuth] pp. 380,381,391
- % \relax disables Spanish ligatures ?` and !` of \tt font.
- \relax`%
+ \ifmonospace
+ \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
+ \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
+ % [Knuth] pp. 380,381,391
+ % \relax disables Spanish ligatures ?` and !` of \tt font.
+ \relax`%
+ \else \char'22 \fi
\else \char'22 \fi
- \else \char'22 \fi
+ \else
+ \relax`%
+ \fi
}
% Commands to set the quote options.
-%
+%
\parseargdef\codequoteundirected{%
\def\temp{#1}%
\ifx\temp\onword
@@ -2684,7 +2771,7 @@ end
% If we are in a monospaced environment, however, 1) always use \ttsl,
% and 2) do not add an italic correction.
\def\dosmartslant#1#2{%
- \ifusingtt
+ \ifusingtt
{{\ttsl #2}\let\next=\relax}%
{\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
\next
@@ -2763,7 +2850,7 @@ end
% @t, explicit typewriter.
\def\t#1{%
- {\tt \rawbackslash \plainfrenchspacing #1}%
+ {\tt \plainfrenchspacing #1}%
\null
}
@@ -2790,7 +2877,6 @@ end
% Turn off hyphenation.
\nohyphenation
%
- \rawbackslash
\plainfrenchspacing
#1%
}%
@@ -2832,14 +2918,14 @@ end
\gdef\codedash{\futurelet\next\codedashfinish}
\gdef\codedashfinish{%
\normaldash % always output the dash character itself.
- %
+ %
% Now, output a discretionary to allow a line break, unless
% (a) the next character is a -, or
% (b) the preceding character is a -.
% E.g., given --posix, we do not want to allow a break after either -.
% Given --foo-bar, we do want to allow a break between the - and the b.
\ifx\next\codedash \else
- \ifx\codedashprev\codedash
+ \ifx\codedashprev\codedash
\else \discretionary{}{}{}\fi
\fi
% we need the space after the = for the case when \next itself is a
@@ -2921,7 +3007,7 @@ end
% For pdfTeX and LuaTeX
\ifurefurlonlylink
% PDF plus option to not display url, show just arg
- \unhbox0
+ \unhbox0
\else
% PDF, normally display both arg and url for consistency,
% visibility, if the pdf is eventually used to print, etc.
@@ -2934,7 +3020,7 @@ end
% For XeTeX
\ifurefurlonlylink
% PDF plus option to not display url, show just arg
- \unhbox0
+ \unhbox0
\else
% PDF, normally display both arg and url for consistency,
% visibility, if the pdf is eventually used to print, etc.
@@ -2977,41 +3063,33 @@ end
\global\def/{\normalslash}
}
-% we put a little stretch before and after the breakable chars, to help
-% line breaking of long url's. The unequal skips make look better in
-% cmtt at least, especially for dots.
-\def\urefprestretchamount{.13em}
-\def\urefpoststretchamount{.1em}
-\def\urefprestretch{\urefprebreak \hskip0pt plus\urefprestretchamount\relax}
-\def\urefpoststretch{\urefpostbreak \hskip0pt plus\urefprestretchamount\relax}
-%
-\def\urefcodeamp{\urefprestretch \&\urefpoststretch}
-\def\urefcodedot{\urefprestretch .\urefpoststretch}
-\def\urefcodehash{\urefprestretch \#\urefpoststretch}
-\def\urefcodequest{\urefprestretch ?\urefpoststretch}
+\def\urefcodeamp{\urefprebreak \&\urefpostbreak}
+\def\urefcodedot{\urefprebreak .\urefpostbreak}
+\def\urefcodehash{\urefprebreak \#\urefpostbreak}
+\def\urefcodequest{\urefprebreak ?\urefpostbreak}
\def\urefcodeslash{\futurelet\next\urefcodeslashfinish}
{
\catcode`\/=\active
\global\def\urefcodeslashfinish{%
- \urefprestretch \slashChar
+ \urefprebreak \slashChar
% Allow line break only after the final / in a sequence of
% slashes, to avoid line break between the slashes in http://.
- \ifx\next/\else \urefpoststretch \fi
+ \ifx\next/\else \urefpostbreak \fi
}
}
-% One more complication: by default we'll break after the special
-% characters, but some people like to break before the special chars, so
-% allow that. Also allow no breaking at all, for manual control.
-%
+% By default we'll break after the special characters, but some people like to
+% break before the special chars, so allow that. Also allow no breaking at
+% all, for manual control.
+%
\parseargdef\urefbreakstyle{%
\def\txiarg{#1}%
\ifx\txiarg\wordnone
\def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak}
\else\ifx\txiarg\wordbefore
- \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak}
+ \def\urefprebreak{\urefallowbreak}\def\urefpostbreak{\nobreak}
\else\ifx\txiarg\wordafter
- \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak}
+ \def\urefprebreak{\nobreak}\def\urefpostbreak{\urefallowbreak}
\else
\errhelp = \EMsimple
\errmessage{Unknown @urefbreakstyle setting `\txiarg'}%
@@ -3021,6 +3099,19 @@ end
\def\wordbefore{before}
\def\wordnone{none}
+% Allow a ragged right output to aid breaking long URL's. There can
+% be a break at the \allowbreak with no extra glue (if the existing stretch in
+% the line is sufficent), a break at the \penalty100 with extra glue added
+% at the end of the line, or no break at all here.
+% Changing the value of the penalty and/or the amount of stretch affects how
+% preferrable one choice is over the other.
+\def\urefallowbreak{%
+ \allowbreak
+ \hskip 0pt plus 4 em\relax
+ \penalty100
+ \hskip 0pt plus -4 em\relax
+}
+
\urefbreakstyle after
% @url synonym for @uref, since that's how everyone uses it.
@@ -3031,7 +3122,7 @@ end
% So now @email is just like @uref, unless we are pdf.
%
%\def\email#1{\angleleft{\tt #1}\angleright}
-\ifpdf
+\ifpdforxetex
\def\email#1{\doemail#1,,\finish}
\def\doemail#1,#2,#3\finish{\begingroup
\unsepspaces
@@ -3041,18 +3132,7 @@ end
\endlink
\endgroup}
\else
- \ifx\XeTeXrevision\thisisundefined
- \let\email=\uref
- \else
- \def\email#1{\doemail#1,,\finish}
- \def\doemail#1,#2,#3\finish{\begingroup
- \unsepspaces
- \pdfurl{mailto:#1}%
- \setbox0 = \hbox{\ignorespaces #2}%
- \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
- \endlink
- \endgroup}
- \fi
+ \let\email=\uref
\fi
% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
@@ -3127,7 +3207,7 @@ end
%
\def\acronym#1{\doacronym #1,,\finish}
\def\doacronym#1,#2,#3\finish{%
- {\selectfonts\lsize #1}%
+ {\switchtolsize #1}%
\def\temp{#2}%
\ifx\temp\empty \else
\space ({\unsepspaces \ignorespaces \temp \unskip})%
@@ -3220,15 +3300,15 @@ end
% fix it (significant additions to font machinery) until someone notices.
%
\def\sub{\ifmmode \expandafter\sb \else \expandafter\finishsub\fi}
-\def\finishsub#1{$\sb{\hbox{\selectfonts\lllsize #1}}$}%
+\def\finishsub#1{$\sb{\hbox{\switchtolllsize #1}}$}%
%
\def\sup{\ifmmode \expandafter\ptexsp \else \expandafter\finishsup\fi}
-\def\finishsup#1{$\ptexsp{\hbox{\selectfonts\lllsize #1}}$}%
+\def\finishsup#1{$\ptexsp{\hbox{\switchtolllsize #1}}$}%
% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
% except specified as a normal braced arg, so no newlines to worry about.
-%
+%
\def\outfmtnametex{tex}
%
\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
@@ -3236,7 +3316,7 @@ end
\def\inlinefmtname{#1}%
\ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
}
-%
+%
% @inlinefmtifelse{FMTNAME,THEN-TEXT,ELSE-TEXT} expands THEN-TEXT if
% FMTNAME is tex, else ELSE-TEXT.
\long\def\inlinefmtifelse#1{\doinlinefmtifelse #1,,,\finish}
@@ -3252,7 +3332,7 @@ end
% *right* brace they would have to use a command anyway, so they may as
% well use a command to get a left brace too. We could re-use the
% delimiter character idea from \verb, but it seems like overkill.
-%
+%
\long\def\inlineraw{\tex \doinlineraw}
\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
\def\doinlinerawtwo#1,#2,\finish{%
@@ -3287,23 +3367,10 @@ end
\let\atchar=\@
% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
-% Unless we're in typewriter, use \ecfont because the CM text fonts do
-% not have braces, and we don't want to switch into math.
-\def\mylbrace{{\ifmonospace\char123\else\ensuremath\lbrace\fi}}
-\def\myrbrace{{\ifmonospace\char125\else\ensuremath\rbrace\fi}}
-\let\{=\mylbrace \let\lbracechar=\{
-\let\}=\myrbrace \let\rbracechar=\}
-\begingroup
- % Definitions to produce \{ and \} commands for indices,
- % and @{ and @} for the aux/toc files.
- \catcode`\{ = \other \catcode`\} = \other
- \catcode`\[ = 1 \catcode`\] = 2
- \catcode`\! = 0 \catcode`\\ = \other
- !gdef!lbracecmd[\{]%
- !gdef!rbracecmd[\}]%
- !gdef!lbraceatcmd[@{]%
- !gdef!rbraceatcmd[@}]%
-!endgroup
+\def\lbracechar{{\ifmonospace\char123\else\ensuremath\lbrace\fi}}
+\def\rbracechar{{\ifmonospace\char125\else\ensuremath\rbrace\fi}}
+\let\{=\lbracechar
+\let\}=\rbracechar
% @comma{} to avoid , parsing problems.
\let\comma = ,
@@ -3321,8 +3388,8 @@ end
% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
\def\questiondown{?`}
\def\exclamdown{!`}
-\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
-\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+\def\ordf{\leavevmode\raise1ex\hbox{\switchtolllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\switchtolllsize \underbar{o}}}
% Dotless i and dotless j, used for accents.
\def\imacro{i}
@@ -3351,12 +3418,12 @@ end
{\setbox0=\hbox{T}%
\vbox to \ht0{\hbox{%
\ifx\textnominalsize\xwordpt
- % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX.
+ % for 10pt running text, lllsize (8pt) is too small for the A in LaTeX.
% Revert to plain's \scriptsize, which is 7pt.
\count255=\the\fam $\fam\count255 \scriptstyle A$%
\else
% For 11pt, we can use our lllsize.
- \selectfonts\lllsize A%
+ \switchtolllsize A%
\fi
}%
\vss
@@ -3422,7 +3489,7 @@ end
%
\newbox\errorbox
%
-{\tentt \global\dimen0 = 3em}% Width of the box.
+{\ttfont \global\dimen0 = 3em}% Width of the box.
\dimen2 = .55pt % Thickness of rules
% The text. (`r' is open on the right, `e' somewhat less so on the left.)
\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
@@ -3542,7 +3609,7 @@ end
% for non-CM glyphs. That is ec* for regular text and tc* for the text
% companion symbols (LaTeX TS1 encoding). Both are part of the ec
% package and follow the same conventions.
-%
+%
\def\ecfont{\etcfont{e}}
\def\tcfont{\etcfont{t}}
%
@@ -3573,7 +3640,7 @@ end
% Adapted from the plain.tex definition of \copyright.
%
\def\registeredsymbol{%
- $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
+ $^{{\ooalign{\hfil\raise.07ex\hbox{\switchtolllsize R}%
\hfil\crcr\Orb}}%
}$%
}
@@ -3614,7 +3681,7 @@ end
after the title page.}}%
\def\setshortcontentsaftertitlepage{%
\errmessage{@setshortcontentsaftertitlepage has been removed as a Texinfo
- command; move your @shortcontents and @contents commands if you
+ command; move your @shortcontents and @contents commands if you
want the contents after the title page.}}%
\parseargdef\shorttitlepage{%
@@ -3667,12 +3734,11 @@ end
% Settings used for typesetting titles: no hyphenation, no indentation,
% don't worry much about spacing, ragged right. This should be used
-% inside a \vbox, and fonts need to be set appropriately first. Because
-% it is always used for titles, nothing else, we call \rmisbold. \par
-% should be specified before the end of the \vbox, since a vbox is a group.
-%
+% inside a \vbox, and fonts need to be set appropriately first. \par should
+% be specified before the end of the \vbox, since a vbox is a group.
+%
\def\raggedtitlesettings{%
- \rmisbold
+ \rm
\hyphenpenalty=10000
\parindent=0pt
\tolerance=5000
@@ -3681,7 +3747,7 @@ end
% Macros to be used within @titlepage:
-\let\subtitlerm=\tenrm
+\let\subtitlerm=\rmfont
\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
\parseargdef\title{%
@@ -3707,7 +3773,7 @@ end
\else
\checkenv\titlepage
\ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
- {\secfonts\rmisbold \leftline{#1}}%
+ {\secfonts\rm \leftline{#1}}%
\fi
}
@@ -4293,7 +4359,7 @@ end
}
% multitable-only commands.
-%
+%
% @headitem starts a heading row, which we typeset in bold. Assignments
% have to be global since we are inside the implicit group of an
% alignment entry. \everycr below resets \everytab so we don't have to
@@ -4600,19 +4666,6 @@ end
}
}
-% We have this subroutine so that we can handle at least some @value's
-% properly in indexes (we call \makevalueexpandable in \indexdummies).
-% The command has to be fully expandable (if the variable is set), since
-% the result winds up in the index file. This means that if the
-% variable's value contains other Texinfo commands, it's almost certain
-% it will fail (although perhaps we could fix that with sufficient work
-% to do a one-level expansion on the result, instead of complete).
-%
-% Unfortunately, this has the consequence that when _ is in the *value*
-% of an @set, it does not print properly in the roman fonts (get the cmr
-% dot accent at position 126 instead). No fix comes to mind, and it's
-% been this way since 2003 or earlier, so just ignore it.
-%
\def\expandablevalue#1{%
\expandafter\ifx\csname SET#1\endcsname\relax
{[No value for ``#1'']}%
@@ -4625,13 +4678,13 @@ end
% Like \expandablevalue, but completely expandable (the \message in the
% definition above operates at the execution level of TeX). Used when
% writing to auxiliary files, due to the expansion that \write does.
-% If flag is undefined, pass through an unexpanded @value command: maybe it
+% If flag is undefined, pass through an unexpanded @value command: maybe it
% will be set by the time it is read back in.
%
% NB flag names containing - or _ may not work here.
\def\dummyvalue#1{%
\expandafter\ifx\csname SET#1\endcsname\relax
- \noexpand\value{#1}%
+ \string\value{#1}%
\else
\csname SET#1\endcsname
\fi
@@ -4641,7 +4694,7 @@ end
% if possible, otherwise sort late.
\def\indexnofontsvalue#1{%
\expandafter\ifx\csname SET#1\endcsname\relax
- ZZZZZZZ
+ ZZZZZZZ%
\else
\csname SET#1\endcsname
\fi
@@ -4649,7 +4702,7 @@ end
% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
% with @set.
-%
+%
% To get the special treatment we need for `@end ifset,' we call
% \makecond and then redefine.
%
@@ -4682,7 +4735,7 @@ end
% without the @) is in fact defined. We can only feasibly check at the
% TeX level, so something like `mathcode' is going to considered
% defined even though it is not a Texinfo command.
-%
+%
\makecond{ifcommanddefined}
\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}}
%
@@ -4771,14 +4824,7 @@ end
% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
% #3 the target index (bar).
\def\dosynindex#1#2#3{%
- % Only do \closeout if we haven't already done it, else we'll end up
- % closing the target index.
- \expandafter \ifx\csname donesynindex#2\endcsname \relax
- % The \closeout helps reduce unnecessary open files; the limit on the
- % Acorn RISC OS is a mere 16 files.
- \expandafter\closeout\csname#2indfile\endcsname
- \expandafter\let\csname donesynindex#2\endcsname = 1
- \fi
+ \requireopenindexfile{#3}%
% redefine \fooindfile:
\expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
\expandafter\let\csname#2indfile\endcsname=\temp
@@ -4797,40 +4843,16 @@ end
\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx}
\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}}
-
-% Used when writing an index entry out to an index file to prevent
-% expansion of Texinfo commands that can appear in an index entry.
-%
-\def\indexdummies{%
- \escapechar = `\\ % use backslash in output files.
- \def\@{@}% change to @@ when we switch to @ as escape char in index files.
- \def\ {\realbackslash\space }%
- %
- % Need these unexpandable (because we define \tt as a dummy)
- % definitions when @{ or @} appear in index entry text. Also, more
- % complicated, when \tex is in effect and \{ is a \delimiter again.
- % We can't use \lbracecmd and \rbracecmd because texindex assumes
- % braces and backslashes are used only as delimiters. Perhaps we
- % should use @lbracechar and @rbracechar?
- \def\{{{\tt\char123}}%
- \def\}{{\tt\char125}}%
- %
- % Do the redefinitions.
- \definedummies
-}
-% Used for the aux and toc files, where @ is the escape character.
-%
-% For the aux and toc files, @ is the escape character. So we want to
-% redefine everything using @ as the escape character (instead of
-% \realbackslash, still used for index files). When everything uses @,
-% this will be simpler.
+% Used for the aux, toc and index files to prevent expansion of Texinfo
+% commands.
%
\def\atdummies{%
- \def\@{@@}%
- \def\ {@ }%
- \let\{ = \lbraceatcmd
- \let\} = \rbraceatcmd
+ \definedummyletter\@%
+ \definedummyletter\ %
+ \definedummyletter\{%
+ \definedummyletter\}%
+ \definedummyletter\&%
%
% Do the redefinitions.
\definedummies
@@ -4854,8 +4876,7 @@ end
\def\definedummyletter#1{\def#1{\string#1}}%
\let\definedummyaccent\definedummyletter
-% Called from \indexdummies and \atdummies, to effectively prevent
-% the expansion of commands.
+% Called from \atdummies to prevent the expansion of commands.
%
\def\definedummies{%
%
@@ -4902,7 +4923,10 @@ end
\definedummyword\TeX
%
% Assorted special characters.
+ \definedummyword\ampchar
+ \definedummyword\atchar
\definedummyword\arrow
+ \definedummyword\backslashchar
\definedummyword\bullet
\definedummyword\comma
\definedummyword\copyright
@@ -4939,6 +4963,8 @@ end
\definedummyword\sup
\definedummyword\textdegree
%
+ \definedummyword\subentry
+ %
% We want to disable all macros so that they are not expanded by \write.
\macrolist
\let\value\dummyvalue
@@ -5019,11 +5045,10 @@ end
\commondummyword\xref
}
-% For testing: output @{ and @} in index sort strings as \{ and \}.
-\newif\ifusebracesinindexes
-
\let\indexlbrace\relax
\let\indexrbrace\relax
+\let\indexatchar\relax
+\let\indexbackslash\relax
{\catcode`\@=0
\catcode`\\=13
@@ -5057,10 +5082,8 @@ end
}
\gdef\indexnonalnumreappear{%
- \useindexbackslash
\let-\normaldash
\let<\normalless
- \def\@{@}%
}
}
@@ -5118,37 +5141,40 @@ end
\def\LaTeX{LaTeX}%
\def\TeX{TeX}%
%
- % Assorted special characters.
- % (The following {} will end up in the sort string, but that's ok.)
- \def\arrow{->}%
- \def\bullet{bullet}%
- \def\comma{,}%
- \def\copyright{copyright}%
- \def\dots{...}%
- \def\enddots{...}%
- \def\equiv{==}%
- \def\error{error}%
- \def\euro{euro}%
- \def\expansion{==>}%
- \def\geq{>=}%
- \def\guillemetleft{<<}%
- \def\guillemetright{>>}%
- \def\guilsinglleft{<}%
- \def\guilsinglright{>}%
- \def\leq{<=}%
- \def\minus{-}%
- \def\point{.}%
- \def\pounds{pounds}%
- \def\print{-|}%
- \def\quotedblbase{"}%
- \def\quotedblleft{"}%
- \def\quotedblright{"}%
- \def\quoteleft{`}%
- \def\quoteright{'}%
- \def\quotesinglbase{,}%
- \def\registeredsymbol{R}%
- \def\result{=>}%
- \def\textdegree{o}%
+ % Assorted special characters. \defglyph gives the control sequence a
+ % definition that removes the {} that follows its use.
+ \defglyph\atchar{@}%
+ \defglyph\arrow{->}%
+ \defglyph\bullet{bullet}%
+ \defglyph\comma{,}%
+ \defglyph\copyright{copyright}%
+ \defglyph\dots{...}%
+ \defglyph\enddots{...}%
+ \defglyph\equiv{==}%
+ \defglyph\error{error}%
+ \defglyph\euro{euro}%
+ \defglyph\expansion{==>}%
+ \defglyph\geq{>=}%
+ \defglyph\guillemetleft{<<}%
+ \defglyph\guillemetright{>>}%
+ \defglyph\guilsinglleft{<}%
+ \defglyph\guilsinglright{>}%
+ \defglyph\leq{<=}%
+ \defglyph\lbracechar{\{}%
+ \defglyph\minus{-}%
+ \defglyph\point{.}%
+ \defglyph\pounds{pounds}%
+ \defglyph\print{-|}%
+ \defglyph\quotedblbase{"}%
+ \defglyph\quotedblleft{"}%
+ \defglyph\quotedblright{"}%
+ \defglyph\quoteleft{`}%
+ \defglyph\quoteright{'}%
+ \defglyph\quotesinglbase{,}%
+ \defglyph\rbracechar{\}}%
+ \defglyph\registeredsymbol{R}%
+ \defglyph\result{=>}%
+ \defglyph\textdegree{o}%
%
% We need to get rid of all macros, leaving only the arguments (if present).
% Of course this is not nearly correct, but it is the best we can do for now.
@@ -5163,40 +5189,21 @@ end
\macrolist
\let\value\indexnofontsvalue
}
+\def\defglyph#1#2{\def#1##1{#2}} % see above
-
-\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
-% Most index entries go through here, but \dosubind is the general case.
% #1 is the index name, #2 is the entry text.
-\def\doind#1#2{\dosubind{#1}{#2}{}}
-
-% There is also \dosubind {index}{topic}{subtopic}
-% which makes an entry in a two-level index such as the operation index.
-% TODO: Two-level index? Operation index?
-
-% Workhorse for all indexes.
-% #1 is name of index, #2 is stuff to put there, #3 is subentry --
-% empty if called from \doind, as we usually are (the main exception
-% is with most defuns, which call us directly).
-%
-\def\dosubind#1#2#3{%
+\def\doind#1#2{%
\iflinks
{%
- \requireopenindexfile{#1}%
- % Store the main index entry text (including the third arg).
- \toks0 = {#2}%
- % If third arg is present, precede it with a space.
- \def\thirdarg{#3}%
- \ifx\thirdarg\empty \else
- \toks0 = \expandafter{\the\toks0 \space #3}%
- \fi
%
+ \requireopenindexfile{#1}%
\edef\writeto{\csname#1indfile\endcsname}%
%
- \safewhatsit\dosubindwrite
+ \def\indextext{#2}%
+ \safewhatsit\doindwrite
}%
\fi
}
@@ -5211,28 +5218,14 @@ end
\ifx\suffix\indexisfl\def\suffix{f1}\fi
% Open the file
\immediate\openout\csname#1indfile\endcsname \jobname.\suffix
- % Using \immediate above here prevents an object entering into the current
+ % Using \immediate above here prevents an object entering into the current
% box, which could confound checks such as those in \safewhatsit for
% preceding skips.
\typeout{Writing index file \jobname.\suffix}%
\fi}
\def\indexisfl{fl}
-% Output \ as {\indexbackslash}, because \ is an escape character in
-% the index files.
-\let\indexbackslash=\relax
-{\catcode`\@=0 \catcode`\\=\active
- @gdef@useindexbackslash{@def\{{@indexbackslash}}}
-}
-
-% Definition for writing index entry text.
-\def\sortas#1{\ignorespaces}%
-
-% Definition for writing index entry sort key. Should occur at the at
-% the beginning of the index entry, like
-% @cindex @sortas{september} \september
-% The \ignorespaces takes care of following space, but there's no way
-% to remove space before it.
+% Definition for writing index entry sort key.
{
\catcode`\-=13
\gdef\indexwritesortas{%
@@ -5243,51 +5236,150 @@ end
\xdef\indexsortkey{#1}\endgroup}
}
+\def\indexwriteseealso#1{
+ \gdef\pagenumbertext{\string\seealso{#1}}%
+}
+\def\indexwriteseeentry#1{
+ \gdef\pagenumbertext{\string\seeentry{#1}}%
+}
-% Write the entry in \toks0 to the index file.
+% The default definitions
+\def\sortas#1{}%
+\def\seealso#1{\i{\putwordSeeAlso}\ #1}% for sorted index file only
+\def\putwordSeeAlso{See also}
+\def\seeentry#1{\i{\putwordSee}\ #1}% for sorted index file only
+
+
+% Given index entry text like "aaa @subentry bbb @sortas{ZZZ}":
+% * Set \bracedtext to "{aaa}{bbb}"
+% * Set \fullindexsortkey to "aaa @subentry ZZZ"
+% * If @seealso occurs, set \pagenumbertext
%
-\def\dosubindwrite{%
- % Put the index entry in the margin if desired.
- \ifx\SETmarginindex\relax\else
- \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
+\def\splitindexentry#1{%
+ \gdef\fullindexsortkey{}%
+ \xdef\bracedtext{}%
+ \def\sep{}%
+ \def\seealso##1{}%
+ \def\seeentry##1{}%
+ \expandafter\doindexsegment#1\subentry\finish\subentry
+}
+
+% append the results from the next segment
+\def\doindexsegment#1\subentry{%
+ \def\segment{#1}%
+ \ifx\segment\isfinish
+ \else
+ %
+ % Fully expand the segment, throwing away any @sortas directives, and
+ % trim spaces.
+ \edef\trimmed{\segment}%
+ \edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}%
+ %
+ \xdef\bracedtext{\bracedtext{\trimmed}}%
+ %
+ % Get the string to sort by. Process the segment with all
+ % font commands turned off.
+ \bgroup
+ \let\sortas\indexwritesortas
+ \let\seealso\indexwriteseealso
+ \let\seeentry\indexwriteseeentry
+ \indexnofonts
+ % The braces around the commands are recognized by texindex.
+ \def\lbracechar{{\string\indexlbrace}}%
+ \def\rbracechar{{\string\indexrbrace}}%
+ \let\{=\lbracechar
+ \let\}=\rbracechar
+ \def\@{{\string\indexatchar}}%
+ \def\atchar##1{\@}%
+ \def\backslashchar{{\string\indexbackslash}}%
+ \uccode`\~=`\\ \uppercase{\let~\backslashchar}%
+ %
+ \let\indexsortkey\empty
+ \global\let\pagenumbertext\empty
+ % Execute the segment and throw away the typeset output. This executes
+ % any @sortas or @seealso commands in this segment.
+ \setbox\dummybox = \hbox{\segment}%
+ \ifx\indexsortkey\empty{%
+ \indexnonalnumdisappear
+ \xdef\trimmed{\segment}%
+ \xdef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}%
+ \xdef\indexsortkey{\trimmed}%
+ \ifx\indexsortkey\empty\xdef\indexsortkey{ }\fi
+ }\fi
+ %
+ % Append to \fullindexsortkey.
+ \edef\tmp{\gdef\noexpand\fullindexsortkey{%
+ \fullindexsortkey\sep\indexsortkey}}%
+ \tmp
+ \egroup
+ \def\sep{\subentry}%
+ %
+ \expandafter\doindexsegment
\fi
+}
+\def\isfinish{\finish}%
+\newbox\dummybox % used above
+
+\let\subentry\relax
+
+% Use \ instead of @ in index files. To support old texi2dvi and texindex.
+% This works without changing the escape character used in the toc or aux
+% files because the index entries are fully expanded here, and \string uses
+% the current value of \escapechar.
+\def\escapeisbackslash{\escapechar=`\\}
+
+% Use \ in index files by default. texi2dvi didn't support @ as the escape
+% character (as it checked for "\entry" in the files, and not "@entry"). When
+% the new version of texi2dvi has had a chance to become more prevalent, then
+% the escape character can change back to @ again. This should be an easy
+% change to make now because both @ and \ are only used as escape characters in
+% index files, never standing for themselves.
+%
+\set txiindexescapeisbackslash
+
+% Write the entry in \indextext to the index file.
+%
+\def\doindwrite{%
+ \maybemarginindex
%
- % Remember, we are within a group.
- \indexdummies % Must do this here, since \bf, etc expand at this stage
- \useindexbackslash % \indexbackslash isn't defined now so it will be output
- % as is; and it will print as backslash.
- % The braces around \indexbrace are recognized by texindex.
- %
- % Get the string to sort by, by processing the index entry with all
- % font commands turned off.
- {\indexnofonts
- \def\lbracechar{{\indexlbrace}}%
- \def\rbracechar{{\indexrbrace}}%
- \let\{=\lbracechar
- \let\}=\rbracechar
- \indexnonalnumdisappear
- \xdef\indexsortkey{}%
- \let\sortas=\indexwritesortas
- \edef\temp{\the\toks0}%
- \setbox\dummybox = \hbox{\temp}% Make sure to execute any \sortas
- \ifx\indexsortkey\empty
- \xdef\indexsortkey{\temp}%
- \ifx\indexsortkey\empty\xdef\indexsortkey{ }\fi
- \fi
- }%
+ \atdummies
+ %
+ \expandafter\ifx\csname SETtxiindexescapeisbackslash\endcsname\relax\else
+ \escapeisbackslash
+ \fi
+ %
+ % For texindex which always views { and } as separators.
+ \def\{{\lbracechar{}}%
+ \def\}{\rbracechar{}}%
+ \uccode`\~=`\\ \uppercase{\def~{\backslashchar{}}}%
+ %
+ % Split the entry into primary entry and any subentries, and get the index
+ % sort key.
+ \splitindexentry\indextext
%
% Set up the complete index entry, with both the sort key and
% the original text, including any font commands. We write
% three arguments to \entry to the .?? file (four in the
% subentry case), texindex reduces to two when writing the .??s
% sorted result.
+ %
\edef\temp{%
\write\writeto{%
- \string\entry{\indexsortkey}{\noexpand\folio}{\the\toks0}}%
+ \string\entry{\fullindexsortkey}%
+ {\ifx\pagenumbertext\empty\noexpand\folio\else\pagenumbertext\fi}%
+ \bracedtext}%
}%
\temp
}
-\newbox\dummybox % used above
+
+% Put the index entry in the margin if desired (undocumented).
+\def\maybemarginindex{%
+ \ifx\SETmarginindex\relax\else
+ \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \relax\indextext}}%
+ \fi
+}
+\let\SETmarginindex=\relax
+
% Take care of unwanted page breaks/skips around a whatsit:
%
@@ -5375,9 +5467,14 @@ end
% \entry {topic}{pagelist}
% for a topic that is used without subtopics
% \primary {topic}
+% \entry {topic}{}
% for the beginning of a topic that is used with subtopics
% \secondary {subtopic}{pagelist}
% for each subtopic.
+% \secondary {subtopic}{}
+% for a subtopic with sub-subtopics
+% \tertiary {subtopic}{subsubtopic}{pagelist}
+% for each sub-subtopic.
% Define the user-accessible indexing commands
% @findex, @vindex, @kindex, @cindex.
@@ -5389,11 +5486,6 @@ end
\def\tindex {\tpindex}
\def\pindex {\pgindex}
-\def\cindexsub {\begingroup\obeylines\cindexsub}
-{\obeylines %
-\gdef\cindexsub "#1" #2^^M{\endgroup %
-\dosubind{cp}{#2}{#1}}}
-
% Define the macros used in formatting output of the sorted index material.
% @printindex causes a particular index (the ??s file) to get printed.
@@ -5407,14 +5499,10 @@ end
\plainfrenchspacing
\everypar = {}% don't want the \kern\-parindent from indentation suppression.
%
- % See if the index file exists and is nonempty.
- % Change catcode of @ here so that if the index file contains
- % \initial {@}
- % as its first line, TeX doesn't complain about mismatched braces
- % (because it thinks @} is a control sequence).
- \catcode`\@ = 11
% See comment in \requireopenindexfile.
\def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi
+ %
+ % See if the index file exists and is nonempty.
\openin 1 \jobname.\indexname s
\ifeof 1
% \enddoublecolumns gets confused if there is no text in the index,
@@ -5424,8 +5512,6 @@ end
\putwordIndexNonexistent
\typeout{No file \jobname.\indexname s.}%
\else
- \catcode`\\ = 0
- %
% If the index file exists but is empty, then \openin leaves \ifeof
% false. We have to make TeX try to read something from the file, so
% it can discover if there is anything in it.
@@ -5433,41 +5519,51 @@ end
\ifeof 1
\putwordIndexIsEmpty
\else
- % Index files are almost Texinfo source, but we use \ as the escape
- % character. It would be better to use @, but that's too big a change
- % to make right now.
- \def\indexbackslash{\ttbackslash}%
- \let\indexlbrace\{ % Likewise, set these sequences for braces
- \let\indexrbrace\} % used in the sort key.
- \begindoublecolumns
- \let\entryorphanpenalty=\indexorphanpenalty
- %
- % Read input from the index file line by line.
- \loopdo
- \ifeof1
- \let\firsttoken\relax
- \else
- \read 1 to \nextline
- \edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}%
- \act
- \fi
- \thisline
- %
- \ifeof1\else
- \let\thisline\nextline
- \repeat
- %%
- \enddoublecolumns
+ \expandafter\printindexzz\thisline\relax\relax\finish%
\fi
\fi
\closein 1
\endgroup}
-\def\getfirsttoken#1{\expandafter\getfirsttokenx#1\endfirsttoken}
-\long\def\getfirsttokenx#1#2\endfirsttoken{\noexpand#1}
-
-\def\loopdo#1\repeat{\def\body{#1}\loopdoxxx}
-\def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next}
+% If the index file starts with a backslash, forgo reading the index
+% file altogether. If somebody upgrades texinfo.tex they may still have
+% old index files using \ as the escape character. Reading this would
+% at best lead to typesetting garbage, at worst a TeX syntax error.
+\def\printindexzz#1#2\finish{%
+ \expandafter\ifx\csname SETtxiindexescapeisbackslash\endcsname\relax
+ \uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1
+ \expandafter\ifx\csname SETtxiskipindexfileswithbackslash\endcsname\relax
+\errmessage{%
+ERROR: A sorted index file in an obsolete format was skipped.
+To fix this problem, please upgrade your version of 'texi2dvi'
+or 'texi2pdf' to that at <https://ftp.gnu.org/gnu/texinfo>.
+If you are using an old version of 'texindex' (part of the Texinfo
+distribution), you may also need to upgrade to a newer version (at least 6.0).
+You may be able to typeset the index if you run
+'texindex \jobname.\indexname' yourself.
+You could also try setting the 'txiindexescapeisbackslash' flag by
+running a command like
+'texi2dvi -t "@set txiindexescapeisbackslash" \jobname.texi'. If you do
+this, Texinfo will try to use index files in the old format.
+If you continue to have problems, deleting the index files and starting again
+might help (with 'rm \jobname.?? \jobname.??s')%
+}%
+ \else
+ (Skipped sorted index file in obsolete format)
+ \fi
+ \else
+ \begindoublecolumns
+ \input \jobname.\indexname s
+ \enddoublecolumns
+ \fi
+ \else
+ \begindoublecolumns
+ \catcode`\\=0\relax
+ \catcode`\@=12\relax
+ \input \jobname.\indexname s
+ \enddoublecolumns
+ \fi
+}
% These macros are used by the sorted index file itself.
% Change them to control the appearance of the index.
@@ -5476,12 +5572,19 @@ end
\catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13
\catcode`\$=3
\gdef\initialglyphs{%
+ % special control sequences used in the index sort key
+ \let\indexlbrace\{%
+ \let\indexrbrace\}%
+ \let\indexatchar\@%
+ \def\indexbackslash{\math{\backslash}}%
+ %
% Some changes for non-alphabetic characters. Using the glyphs from the
% math fonts looks more consistent than the typewriter font used elsewhere
% for these characters.
- \def\indexbackslash{\math{\backslash}}%
- \let\\=\indexbackslash
+ \uccode`\~=`\\ \uppercase{\def~{\math{\backslash}}}
%
+ % In case @\ is used for backslash
+ \uppercase{\let\\=~}
% Can't get bold backslash so don't use bold forward slash
\catcode`\/=13
\def/{{\secrmnotbold \normalslash}}%
@@ -5511,7 +5614,7 @@ end
% bottom of a column to reduce an increase in inter-line spacing.
\nobreak
\vskip 0pt plus 5\baselineskip
- \penalty -300
+ \penalty -300
\vskip 0pt plus -5\baselineskip
%
% Typeset the initial. Making this add up to a whole number of
@@ -5554,10 +5657,6 @@ end
\def\*{\unskip\space\ignorespaces}%
\def\entrybreak{\hfil\break}% An undocumented command
%
- % A bit of stretch before each entry for the benefit of balancing
- % columns.
- \vskip 0pt plus0.5pt
- %
% Swallow the left brace of the text (first parameter):
\afterassignment\doentry
\let\temp =
@@ -5577,47 +5676,35 @@ end
\gdef\finishentry#1{%
\egroup % end box A
\dimen@ = \wd\boxA % Length of text of entry
- \global\setbox\boxA=\hbox\bgroup\unhbox\boxA
- % #1 is the page number.
- %
- % Get the width of the page numbers, and only use
- % leaders if they are present.
- \global\setbox\boxB = \hbox{#1}%
- \ifdim\wd\boxB = 0pt
- \null\nobreak\hfill\ %
- \else
- %
- \null\nobreak\indexdotfill % Have leaders before the page number.
+ \global\setbox\boxA=\hbox\bgroup
+ \unhbox\boxA
+ % #1 is the page number.
%
- \ifpdf
- \pdfgettoks#1.%
- \bgroup\let\domark\relax
- \hskip\skip\thinshrinkable\the\toksA
- \egroup
- % The redefinion of \domark stops marks being added in \pdflink to
- % preserve coloured links across page boundaries. Otherwise the marks
- % would get in the way of \lastbox in \insertindexentrybox.
+ % Get the width of the page numbers, and only use
+ % leaders if they are present.
+ \global\setbox\boxB = \hbox{#1}%
+ \ifdim\wd\boxB = 0pt
+ \null\nobreak\hfill\ %
\else
- \ifx\XeTeXrevision\thisisundefined
- \hskip\skip\thinshrinkable #1%
- \else
+ %
+ \null\nobreak\indexdotfill % Have leaders before the page number.
+ %
+ \ifpdforxetex
\pdfgettoks#1.%
- \bgroup\let\domark\relax
- \hskip\skip\thinshrinkable\the\toksA
- \egroup
+ \hskip\skip\thinshrinkable\the\toksA
+ \else
+ \hskip\skip\thinshrinkable #1%
\fi
\fi
- \fi
\egroup % end \boxA
\ifdim\wd\boxB = 0pt
- \global\setbox\entryindexbox=\vbox{\unhbox\boxA}%
- \else
- \global\setbox\entryindexbox=\vbox\bgroup
- \prevdepth=\entrylinedepth
- \noindent
+ \noindent\unhbox\boxA\par
+ \nobreak
+ \else\bgroup
% We want the text of the entries to be aligned to the left, and the
% page numbers to be aligned to the right.
%
+ \parindent = 0pt
\advance\leftskip by 0pt plus 1fil
\advance\leftskip by 0pt plus -1fill
\rightskip = 0pt plus -1fil
@@ -5626,8 +5713,6 @@ end
% if the list of page numbers is long, to be aligned to the right.
\parfillskip=0pt plus -1fill
%
- \hangindent=1em
- %
\advance\rightskip by \entryrightmargin
% Determine how far we can stretch into the margin.
% This allows, e.g., "Appendix H GNU Free Documentation License" to
@@ -5645,19 +5730,27 @@ end
\advance\dimen@ii by 1\dimen@i
\ifdim\wd\boxA > \dimen@ii % If the entry doesn't fit in one line
\ifdim\dimen@ > 0.8\dimen@ii % due to long index text
- \dimen@ = 0.7\dimen@ % Try to split the text roughly evenly
+ % Try to split the text roughly evenly. \dimen@ will be the length of
+ % the first line.
+ \dimen@ = 0.7\dimen@
\dimen@ii = \hsize
- \advance \dimen@ii by -1em
\ifnum\dimen@>\dimen@ii
- % If the entry is too long, use the whole line
+ % If the entry is too long (for example, if it needs more than
+ % two lines), use all the space in the first line.
\dimen@ = \dimen@ii
\fi
\advance\leftskip by 0pt plus 1fill % ragged right
\advance \dimen@ by 1\rightskip
- \parshape = 2 0pt \dimen@ 1em \dimen@ii
- % Ideally we'd add a finite glue at the end of the first line only, but
- % TeX doesn't seem to provide a way to do such a thing.
+ \parshape = 2 0pt \dimen@ 0em \dimen@ii
+ % Ideally we'd add a finite glue at the end of the first line only,
+ % instead of using \parshape with explicit line lengths, but TeX
+ % doesn't seem to provide a way to do such a thing.
+ %
+ % Indent all lines but the first one.
+ \advance\leftskip by 1em
+ \advance\parindent by -1em
\fi\fi
+ \indent % start paragraph
\unhbox\boxA
%
% Do not prefer a separate line ending with a hyphen to fewer lines.
@@ -5673,54 +5766,11 @@ end
\egroup % The \vbox
\fi
\endgroup
- % delay text of entry until after penalty
- \bgroup\aftergroup\insertindexentrybox
- \entryorphanpenalty
}}
\newskip\thinshrinkable
\skip\thinshrinkable=.15em minus .15em
-\newbox\entryindexbox
-\def\insertindexentrybox{%
- \copy\entryindexbox
- % The following gets the depth of the last box. This is for even
- % line spacing when entries span several lines.
- \setbox\dummybox\vbox{%
- \unvbox\entryindexbox
- \nointerlineskip
- \lastbox
- \global\entrylinedepth=\prevdepth
- }%
- % Note that we couldn't simply \unvbox\entryindexbox followed by
- % \nointerlineskip\lastbox to remove the last box and then reinstate it,
- % because this resets how far the box has been \moveleft'ed to 0. \unvbox
- % doesn't affect \prevdepth either.
-}
-\newdimen\entrylinedepth
-
-% Default is no penalty
-\let\entryorphanpenalty\egroup
-
-% Used from \printindex. \firsttoken should be the first token
-% after the \entry. If it's not another \entry, we are at the last
-% line of a group of index entries, so insert a penalty to discourage
-% orphaned index entries.
-\long\def\indexorphanpenalty{%
- \def\isentry{\entry}%
- \ifx\firsttoken\isentry
- \else
- \unskip\penalty 9000
- % The \unskip here stops breaking before the glue. It relies on the
- % \vskip above being there, otherwise there is an error
- % "You can't use `\unskip' in vertical mode". There has to be glue
- % in the current vertical list that hasn't been added to the
- % "current page". See Chapter 24 of the TeXbook. This contradicts
- % Section 8.3.7 in "TeX by Topic," though.
- \fi
- \egroup % now comes the box added with \aftergroup
-}
-
% Like plain.tex's \dotfill, except uses up at least 1 em.
% The filll stretch here overpowers both the fil and fill stretch to push
% the page number to the right.
@@ -5730,24 +5780,15 @@ end
\def\primary #1{\line{#1\hfil}}
-\newskip\secondaryindent \secondaryindent=0.5cm
-\def\secondary#1#2{{%
- \parfillskip=0in
- \parskip=0in
- \hangindent=1in
- \hangafter=1
- \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
- \ifpdf
- \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
- \else
- \ifx\XeTeXrevision\thisisundefined
- #2
- \else
- \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
- \fi
- \fi
- \par
-}}
+\def\secondary{\indententry{0.5cm}}
+\def\tertiary{\indententry{1cm}}
+
+\def\indententry#1#2#3{%
+ \bgroup
+ \leftskip=#1
+ \entry{#2}{#3}%
+ \egroup
+}
% Define two-column mode, which we use to typeset indexes.
% Adapted from the TeXbook, page 416, which is to say,
@@ -5756,30 +5797,6 @@ end
\newbox\partialpage
\newdimen\doublecolumnhsize
-\newdimen\doublecolumntopgap
-\doublecolumntopgap = 0pt
-
-% Use inside an output routine to save \topmark and \firstmark
-\def\savemarks{%
- \global\savedtopmark=\expandafter{\topmark }%
- \global\savedfirstmark=\expandafter{\firstmark }%
-}
-\newtoks\savedtopmark
-\newtoks\savedfirstmark
-
-% Set \topmark and \firstmark for next time \output runs.
-% Can't be run from withinside \output (because any material
-% added while an output routine is active, including
-% penalties, is saved for after it finishes). The page so far
-% should be empty, otherwise what's on it will be thrown away.
-\def\restoremarks{%
- \mark{\the\savedtopmark}%
- \bgroup\output = {%
- \setbox\dummybox=\box\PAGE
- }abc\eject\egroup
- % "abc" because output routine doesn't fire for a completely empty page.
- \mark{\the\savedfirstmark}%
-}
\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
% If not much space left on page, start a new page.
@@ -5787,32 +5804,15 @@ end
%
% Grab any single-column material above us.
\output = {%
- %
- % Here is a possibility not foreseen in manmac: if we accumulate a
- % whole lot of material, we might end up calling this \output
- % routine twice in a row (see the doublecol-lose test, which is
- % essentially a couple of indexes with @setchapternewpage off). In
- % that case we just ship out what is in \partialpage with the normal
- % output routine. Generally, \partialpage will be empty when this
- % runs and this will be a no-op. See the indexspread.tex test case.
- \ifvoid\partialpage \else
- \onepageout{\pagecontents\partialpage}%
- \fi
+ \savetopmark
%
\global\setbox\partialpage = \vbox{%
% Unvbox the main output page.
\unvbox\PAGE
\kern-\topskip \kern\baselineskip
}%
- \savemarks
}%
\eject % run that output routine to set \partialpage
- \restoremarks
- %
- % We recover the two marks that the last output routine saved in order
- % to propagate the information in marks added around a chapter heading,
- % which could be otherwise be lost by the time the final page is output.
- %
%
% Use the double-column output routine for subsequent pages.
\output = {\doublecolumnout}%
@@ -5838,14 +5838,14 @@ end
\divide\doublecolumnhsize by 2
\hsize = \doublecolumnhsize
%
- % Double the \vsize as well. (We don't need a separate register here,
- % since nobody clobbers \vsize.)
- \global\doublecolumntopgap = \topskip
- \global\advance\doublecolumntopgap by -1\baselineskip
- \advance\vsize by -1\doublecolumntopgap
+ % Get the available space for the double columns -- the normal
+ % (undoubled) page height minus any material left over from the
+ % previous page.
+ \advance\vsize by -\ht\partialpage
\vsize = 2\vsize
- \topskip=0pt
- \global\entrylinedepth=0pt\relax
+ %
+ % For the benefit of balancing columns
+ \advance\baselineskip by 0pt plus 0.5pt
}
% The double-column output routine for all double-column pages except
@@ -5853,18 +5853,16 @@ end
%
\def\doublecolumnout{%
%
+ \savetopmark
\splittopskip=\topskip \splitmaxdepth=\maxdepth
- % Get the available space for the double columns -- the normal
- % (undoubled) page height minus any material left over from the
- % previous page.
\dimen@ = \vsize
\divide\dimen@ by 2
- \advance\dimen@ by -\ht\partialpage
%
% box0 will be the left-hand column, box2 the right.
- \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
- \onepageout\pagesofar
- \unvbox255
+ \setbox0=\vsplit\PAGE to\dimen@ \setbox2=\vsplit\PAGE to\dimen@
+ \global\advance\vsize by 2\ht\partialpage
+ \onepageout\pagesofar % empty except for the first time we are called
+ \unvbox\PAGE
\penalty\outputpenalty
}
%
@@ -5875,13 +5873,11 @@ end
%
\hsize = \doublecolumnhsize
\wd0=\hsize \wd2=\hsize
- \vbox{%
- \vskip\doublecolumntopgap
- \hbox to\txipagewidth{\box0\hfil\box2}}%
+ \hbox to\txipagewidth{\box0\hfil\box2}%
}
-% Finished with with double columns.
+% Finished with double columns.
\def\enddoublecolumns{%
% The following penalty ensures that the page builder is exercised
% _before_ we change the output routine. This is necessary in the
@@ -5913,73 +5909,87 @@ end
%
\output = {%
% Split the last of the double-column material.
- \savemarks
+ \savetopmark
\balancecolumns
- %
+ }%
+ \eject % call the \output just set
+ \ifdim\pagetotal=0pt
% Having called \balancecolumns once, we do not
% want to call it again. Therefore, reset \output to its normal
% definition right away.
- \global\output = {\onepageout{\pagecontents\PAGE}}%
- }%
- \eject
- \endgroup % started in \begindoublecolumns
- \restoremarks
- % Leave the double-column material on the current page, no automatic
- % page break.
- \box\balancedcolumns
- %
- % \pagegoal was set to the doubled \vsize above, since we restarted
- % the current page. We're now back to normal single-column
- % typesetting, so reset \pagegoal to the normal \vsize (after the
- % \endgroup where \vsize got restored).
- \pagegoal = \vsize
+ \global\output=\expandafter{\the\defaultoutput}
+ %
+ \endgroup % started in \begindoublecolumns
+ % Leave the double-column material on the current page, no automatic
+ % page break.
+ \box\balancedcolumns
+ %
+ % \pagegoal was set to the doubled \vsize above, since we restarted
+ % the current page. We're now back to normal single-column
+ % typesetting, so reset \pagegoal to the normal \vsize.
+ \global\vsize = \txipageheight %
+ \pagegoal = \txipageheight %
+ \else
+ % We had some left-over material. This might happen when \doublecolumnout
+ % is called in \balancecolumns. Try again.
+ \expandafter\enddoublecolumns
+ \fi
}
\newbox\balancedcolumns
\setbox\balancedcolumns=\vbox{shouldnt see this}%
%
-% Only called for the last of the double column material. \doublecolumnout
+% Only called for the last of the double column material. \doublecolumnout
% does the others.
\def\balancecolumns{%
- \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
+ \setbox0 = \vbox{\unvbox\PAGE}% like \box255 but more efficient, see p.120.
\dimen@ = \ht0
- \advance\dimen@ by \topskip
- \advance\dimen@ by-\baselineskip
- \ifdim\dimen@<14\baselineskip
+ \ifdim\dimen@<7\baselineskip
% Don't split a short final column in two.
\setbox2=\vbox{}%
+ \global\setbox\balancedcolumns=\vbox{\pagesofar}%
\else
+ % double the leading vertical space
+ \advance\dimen@ by \topskip
+ \advance\dimen@ by-\baselineskip
\divide\dimen@ by 2 % target to split to
\dimen@ii = \dimen@
\splittopskip = \topskip
- % Loop until the second column is no higher than the first
+ % Loop until left column is at least as high as the right column.
{%
\vbadness = 10000
\loop
\global\setbox3 = \copy0
\global\setbox1 = \vsplit3 to \dimen@
- % Remove glue from bottom of first column to
- % make sure it is higher than the second.
- \global\setbox1 = \vbox{\unvbox1\unpenalty\unskip}%
- \ifdim\ht3>\ht1
+ \ifdim\ht1<\ht3
\global\advance\dimen@ by 1pt
\repeat
}%
- \multiply\dimen@ii by 4
- \divide\dimen@ii by 5
- \ifdim\ht3<\dimen@ii
- % Column heights are too different, so don't make their bottoms
- % flush with each other. The glue at the end of the second column
- % allows a second column to stretch, reducing the difference in
- % height between the two.
- \setbox0=\vbox to\dimen@{\unvbox1\vfill}%
- \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}%
+ % Now the left column is in box 1, and the right column in box 3.
+ %
+ % Check whether the left column has come out higher than the page itself.
+ % (Note that we have doubled \vsize for the double columns, so
+ % the actual height of the page is 0.5\vsize).
+ \ifdim2\ht1>\vsize
+ % It appears that we have been called upon to balance too much material.
+ % Output some of it with \doublecolumnout, leaving the rest on the page.
+ \setbox\PAGE=\box0
+ \doublecolumnout
\else
- \setbox0=\vbox to\dimen@{\unvbox1}%
- \setbox2=\vbox to\dimen@{\unvbox3}%
+ % Compare the heights of the two columns.
+ \ifdim4\ht1>5\ht3
+ % Column heights are too different, so don't make their bottoms
+ % flush with each other.
+ \setbox2=\vbox to \ht1 {\unvbox3\vfill}%
+ \setbox0=\vbox to \ht1 {\unvbox1\vfill}%
+ \else
+ % Make column bottoms flush with each other.
+ \setbox2=\vbox to\ht1{\unvbox3\unskip}%
+ \setbox0=\vbox to\ht1{\unvbox1\unskip}%
+ \fi
+ \global\setbox\balancedcolumns=\vbox{\pagesofar}%
\fi
\fi
%
- \global\setbox\balancedcolumns=\vbox{\pagesofar}%
}
\catcode`\@ = \other
@@ -5994,7 +6004,7 @@ end
\null
\vskip.3\vsize % move it down on the page a bit
\begingroup
- \noindent \titlefonts\rmisbold #1\par % the text
+ \noindent \titlefonts\rm #1\par % the text
\let\lastnode=\empty % no node to associate with
\writetocentry{part}{#1}{}% but put it in the toc
\headingsoff % no headline or footline on the part page
@@ -6075,11 +6085,9 @@ end
% @raisesections: treat @section as chapter, @subsection as section, etc.
\def\raisesections{\global\advance\secbase by -1}
-\let\up=\raisesections % original BFox name
% @lowersections: treat @chapter as section, @section as subsection, etc.
\def\lowersections{\global\advance\secbase by 1}
-\let\down=\lowersections % original BFox name
% we only have subsub.
\chardef\maxseclevel = 3
@@ -6255,7 +6263,7 @@ end
\let\top\unnumbered
% Sections.
-%
+%
\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
\def\seczzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
@@ -6278,7 +6286,7 @@ end
}
% Subsections.
-%
+%
% normally calls numberedsubseczzz:
\outer\parseargdef\numberedsubsec{\numhead2{#1}}
\def\numberedsubseczzz#1{%
@@ -6303,7 +6311,7 @@ end
}
% Subsubsections.
-%
+%
% normally numberedsubsubseczzz:
\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
\def\numberedsubsubseczzz#1{%
@@ -6424,27 +6432,22 @@ end
\expandafter\ifx\thisenv\titlepage\else
\checkenv{}% chapters, etc., should not start inside an environment.
\fi
- % FIXME: \chapmacro is currently called from inside \titlepage when
- % \setcontentsaftertitlepage to print the "Table of Contents" heading, but
- % this should probably be done by \sectionheading with an option to print
- % in chapter size.
- %
% Insert the first mark before the heading break (see notes for \domark).
- \let\prevchapterdefs=\lastchapterdefs
- \let\prevsectiondefs=\lastsectiondefs
- \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
+ \let\prevchapterdefs=\currentchapterdefs
+ \let\prevsectiondefs=\currentsectiondefs
+ \gdef\currentsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
\gdef\thissection{}}%
%
\def\temptype{#2}%
\ifx\temptype\Ynothingkeyword
- \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+ \gdef\currentchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
\gdef\thischapter{\thischaptername}}%
\else\ifx\temptype\Yomitfromtockeyword
- \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
+ \gdef\currentchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
\gdef\thischapter{}}%
\else\ifx\temptype\Yappendixkeyword
\toks0={#1}%
- \xdef\lastchapterdefs{%
+ \xdef\currentchapterdefs{%
\gdef\noexpand\thischaptername{\the\toks0}%
\gdef\noexpand\thischapternum{\appendixletter}%
% \noexpand\putwordAppendix avoids expanding indigestible
@@ -6455,7 +6458,7 @@ end
}%
\else
\toks0={#1}%
- \xdef\lastchapterdefs{%
+ \xdef\currentchapterdefs{%
\gdef\noexpand\thischaptername{\the\toks0}%
\gdef\noexpand\thischapternum{\the\chapno}%
% \noexpand\putwordChapter avoids expanding indigestible
@@ -6475,18 +6478,18 @@ end
%
% Now the second mark, after the heading break. No break points
% between here and the heading.
- \let\prevchapterdefs=\lastchapterdefs
- \let\prevsectiondefs=\lastsectiondefs
+ \let\prevchapterdefs=\currentchapterdefs
+ \let\prevsectiondefs=\currentsectiondefs
\domark
%
{%
- \chapfonts \rmisbold
+ \chapfonts \rm
\let\footnote=\errfootnoteheading % give better error message
%
- % Have to define \lastsection before calling \donoderef, because the
+ % Have to define \currentsection before calling \donoderef, because the
% xref code eventually uses it. On the other hand, it has to be called
% after \pchapsepmacro, or the headline will change too soon.
- \gdef\lastsection{#1}%
+ \gdef\currentsection{#1}%
%
% Only insert the separating space if we have a chapter/appendix
% number, and don't print the unnumbered ``number''.
@@ -6572,13 +6575,13 @@ end
\let\footnote=\errfootnoteheading
%
% Switch to the right set of fonts.
- \csname #2fonts\endcsname \rmisbold
+ \csname #2fonts\endcsname \rm
%
% Insert first mark before the heading break (see notes for \domark).
- \let\prevsectiondefs=\lastsectiondefs
+ \let\prevsectiondefs=\currentsectiondefs
\ifx\temptype\Ynothingkeyword
\ifx\sectionlevel\seckeyword
- \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
+ \gdef\currentsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
\gdef\thissection{\thissectionname}}%
\fi
\else\ifx\temptype\Yomitfromtockeyword
@@ -6586,7 +6589,7 @@ end
\else\ifx\temptype\Yappendixkeyword
\ifx\sectionlevel\seckeyword
\toks0={#1}%
- \xdef\lastsectiondefs{%
+ \xdef\currentsectiondefs{%
\gdef\noexpand\thissectionname{\the\toks0}%
\gdef\noexpand\thissectionnum{#4}%
% \noexpand\putwordSection avoids expanding indigestible
@@ -6599,7 +6602,7 @@ end
\else
\ifx\sectionlevel\seckeyword
\toks0={#1}%
- \xdef\lastsectiondefs{%
+ \xdef\currentsectiondefs{%
\gdef\noexpand\thissectionname{\the\toks0}%
\gdef\noexpand\thissectionnum{#4}%
% \noexpand\putwordSection avoids expanding indigestible
@@ -6625,28 +6628,28 @@ end
%
% Now the second mark, after the heading break. No break points
% between here and the heading.
- \global\let\prevsectiondefs=\lastsectiondefs
+ \global\let\prevsectiondefs=\currentsectiondefs
\domark
%
% Only insert the space after the number if we have a section number.
\ifx\temptype\Ynothingkeyword
\setbox0 = \hbox{}%
\def\toctype{unn}%
- \gdef\lastsection{#1}%
+ \gdef\currentsection{#1}%
\else\ifx\temptype\Yomitfromtockeyword
% for @headings -- no section number, don't include in toc,
- % and don't redefine \lastsection.
+ % and don't redefine \currentsection.
\setbox0 = \hbox{}%
\def\toctype{omit}%
\let\sectionlevel=\empty
\else\ifx\temptype\Yappendixkeyword
\setbox0 = \hbox{#4\enspace}%
\def\toctype{app}%
- \gdef\lastsection{#1}%
+ \gdef\currentsection{#1}%
\else
\setbox0 = \hbox{#4\enspace}%
\def\toctype{num}%
- \gdef\lastsection{#1}%
+ \gdef\currentsection{#1}%
\fi\fi\fi
%
% Write the toc entry (before \donoderef). See comments in \chapmacro.
@@ -6736,13 +6739,8 @@ end
% 1 and 2 (the page numbers aren't printed), and so are the first
% two pages of the document. Thus, we'd have two destinations named
% `1', and two named `2'.
- \ifpdf
+ \ifpdforxetex
\global\pdfmakepagedesttrue
- \else
- \ifx\XeTeXrevision\thisisundefined
- \else
- \global\pdfmakepagedesttrue
- \fi
\fi
}
@@ -6886,7 +6884,15 @@ end
% exist, with an empty box. Let's hope all the numbers have the same width.
% Also ignore the page number, which is conventionally not printed.
\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}}
-\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}}
+\def\partentry#1#2#3#4{%
+ % Add stretch and a bonus for breaking the page before the part heading.
+ % This reduces the chance of the page being broken immediately after the
+ % part heading, before a following chapter heading.
+ \vskip 0pt plus 5\baselineskip
+ \penalty-300
+ \vskip 0pt plus -5\baselineskip
+ \dochapentry{\numeralbox\labelspace#1}{}%
+}
%
% Parts, in the short toc.
\def\shortpartentry#1#2#3#4{%
@@ -7097,11 +7103,7 @@ end
% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
% environment contents.
-\font\circle=lcircle10
-\newdimen\circthick
-\newdimen\cartouter\newdimen\cartinner
-\newskip\normbskip\newskip\normpskip\newskip\normlskip
-\circthick=\fontdimen8\circle
+
%
\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
\def\ctr{{\hskip 6pt\circle\char'010}}
@@ -7116,7 +7118,18 @@ end
%
\newskip\lskip\newskip\rskip
+% only require the font if @cartouche is actually used
+\def\cartouchefontdefs{%
+ \font\circle=lcircle10\relax
+ \circthick=\fontdimen8\circle
+}
+\newdimen\circthick
+\newdimen\cartouter\newdimen\cartinner
+\newskip\normbskip\newskip\normpskip\newskip\normlskip
+
+
\envdef\cartouche{%
+ \cartouchefontdefs
\ifhmode\par\fi % can't be in the midst of a paragraph.
\startsavinginserts
\lskip=\leftskip \rskip=\rightskip
@@ -7295,13 +7308,9 @@ end
% @raggedright does more-or-less normal line breaking but no right
-% justification. From plain.tex. Don't stretch around special
-% characters in urls in this environment, since the stretch at the right
-% should be enough.
+% justification. From plain.tex.
\envdef\raggedright{%
\rightskip0pt plus2.4em \spaceskip.3333em \xspaceskip.5em\relax
- \def\urefprestretchamount{0pt}%
- \def\urefpoststretchamount{0pt}%
}
\let\Eraggedright\par
@@ -7360,7 +7369,7 @@ end
% @indentedblock is like @quotation, but indents only on the left and
% has no optional argument.
-%
+%
\makedispenvdef{indentedblock}{\indentedblockstart}
%
\def\indentedblockstart{%
@@ -7463,7 +7472,7 @@ end
\nonfillstart
\tt % easiest (and conventionally used) font for verbatim
% The \leavevmode here is for blank lines. Otherwise, we would
- % never \starttabox and the \egroup would end verbatim mode.
+ % never \starttabbox and the \egroup would end verbatim mode.
\def\par{\leavevmode\egroup\box\verbbox\endgraf}%
\tabexpand
\setupmarkupstyle{verbatim}%
@@ -7526,9 +7535,12 @@ end
{%
\makevalueexpandable
\setupverbatim
- \indexnofonts % Allow `@@' and other weird things in file names.
- \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
- \input #1
+ {%
+ \indexnofonts % Allow `@@' and other weird things in file names.
+ \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
+ \edef\tmp{\noexpand\input #1 }
+ \expandafter
+ }\tmp
\afterenvbreak
}%
}
@@ -7657,7 +7669,7 @@ end
% @deftypefnnewline on|off says whether the return type of typed functions
% are printed on their own line. This affects @deftypefn, @deftypefun,
% @deftypeop, and @deftypemethod.
-%
+%
\parseargdef\deftypefnnewline{%
\def\temp{#1}%
\ifx\temp\onword
@@ -7673,6 +7685,21 @@ end
\fi\fi
}
+% \dosubind {index}{topic}{subtopic}
+%
+% If SUBTOPIC is present, precede it with a space, and call \doind.
+% (At some time during the 20th century, this made a two-level entry in an
+% index such as the operation index. Nobody seemed to notice the change in
+% behaviour though.)
+\def\dosubind#1#2#3{%
+ \def\thirdarg{#3}%
+ \ifx\thirdarg\empty
+ \doind{#1}{#2}%
+ \else
+ \doind{#1}{#2\space#3}%
+ \fi
+}
+
% Untyped functions:
% @deffn category name args
@@ -7687,7 +7714,6 @@ end
% \deffngeneral {subind}category name args
%
\def\deffngeneral#1#2 #3 #4\endheader{%
- % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
\dosubind{fn}{\code{#3}}{#1}%
\defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
}
@@ -7838,14 +7864,14 @@ end
\tclose{\temp}% typeset the return type
\ifrettypeownline
% put return type on its own line; prohibit line break following:
- \hfil\vadjust{\nobreak}\break
+ \hfil\vadjust{\nobreak}\break
\else
\space % type on same line, so just followed by a space
\fi
\fi % no return type
#3% output function name
}%
- {\rm\enskip}% hskip 0.5 em of \tenrm
+ {\rm\enskip}% hskip 0.5 em of \rmfont
%
\boldbrax
% arguments will be output next, if any.
@@ -7894,6 +7920,7 @@ end
\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
\gdef\magicamp{\let&=\amprm}
}
+\let\ampchar\&
\newcount\parencount
@@ -7974,44 +8001,18 @@ end
}
\fi
-\let\aftermacroxxx\relax
-\def\aftermacro{\aftermacroxxx}
-
-% alias because \c means cedilla in @tex or @math
-\let\texinfoc=\c
-
-\newcount\savedcatcodeone
-\newcount\savedcatcodetwo
-
% Used at the time of macro expansion.
% Argument is macro body with arguments substituted
\def\scanmacro#1{%
\newlinechar`\^^M
\def\xeatspaces{\eatspaces}%
%
- % Temporarily undo catcode changes of \printindex. Set catcode of @ to
- % 0 so that @-commands in macro expansions aren't printed literally when
- % formatting an index file, where \ is used as the escape character.
- \savedcatcodeone=\catcode`\@
- \savedcatcodetwo=\catcode`\\
- \catcode`\@=0
- \catcode`\\=\active
- %
% Process the macro body under the current catcode regime.
- \scantokens{#1@texinfoc}\aftermacro%
- %
- \catcode`\@=\savedcatcodeone
- \catcode`\\=\savedcatcodetwo
+ \scantokens{#1@comment}%
%
- % The \texinfoc is to remove the \newlinechar added by \scantokens, and
- % can be noticed by \parsearg.
- % The \aftermacro allows a \comment at the end of the macro definition
- % to duplicate itself past the final \newlinechar added by \scantokens:
- % this is used in the definition of \group to comment out a newline. We
- % don't do the same for \c to support Texinfo files with macros that ended
- % with a @c, which should no longer be necessary.
- % We avoid surrounding the call to \scantokens with \bgroup and \egroup
- % to allow macros to open or close groups themselves.
+ % The \comment is to remove the \newlinechar added by \scantokens, and
+ % can be noticed by \parsearg. Note \c isn't used because this means cedilla
+ % in math mode.
}
% Used for copying and captions
@@ -8024,7 +8025,7 @@ end
\newif\ifrecursive % Is it recursive?
% List of all defined macros in the form
-% \definedummyword\macro1\definedummyword\macro2...
+% \commondummyword\macro1\commondummyword\macro2...
% Currently is also contains all @aliases; the list can be split
% if there is a need.
\def\macrolist{}
@@ -8032,7 +8033,7 @@ end
% Add the macro to \macrolist
\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
\def\addtomacrolistxxx#1{%
- \toks0 = \expandafter{\macrolist\definedummyword#1}%
+ \toks0 = \expandafter{\macrolist\commondummyword#1}%
\xdef\macrolist{\the\toks0}%
}
@@ -8112,12 +8113,14 @@ end
\def\macroargctxt{%
\scanctxt
\catcode`\ =\active
+ \catcode`\@=\other
\catcode`\^^M=\other
\catcode`\\=\active
}
\def\macrolineargctxt{% used for whole-line arguments without braces
\scanctxt
+ \catcode`\@=\other
\catcode`\{=\other
\catcode`\}=\other
}
@@ -8173,7 +8176,7 @@ end
% Remove the macro name from \macrolist:
\begingroup
\expandafter\let\csname#1\endcsname \relax
- \let\definedummyword\unmacrodo
+ \let\commondummyword\unmacrodo
\xdef\macrolist{\macrolist}%
\endgroup
\else
@@ -8188,7 +8191,7 @@ end
\ifx #1\relax
% remove this
\else
- \noexpand\definedummyword \noexpand#1%
+ \noexpand\commondummyword \noexpand#1%
\fi
}
@@ -8209,7 +8212,7 @@ end
% list to some hook where the argument is to be expanded. If there are
% less than 10 arguments that hook is to be replaced by ##N where N
% is the position in that list, that is to say the macro arguments are to be
-% defined `a la TeX in the macro body.
+% defined `a la TeX in the macro body.
%
% That gets used by \mbodybackslash (above).
%
@@ -8240,8 +8243,8 @@ end
%
% Read recursive and nonrecursive macro bodies. (They're different since
% rec and nonrec macros end differently.)
-%
-% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro
+%
+% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro
% body to be transformed.
% Set \macrobody to the body of the macro, and call \defmacro.
%
@@ -8275,7 +8278,7 @@ end
% twice the \macarg.BLAH macros does not cost too much processing power.
\def\parsemmanyargdef@@#1,{%
\if#1;\let\next=\relax
- \else
+ \else
\let\next=\parsemmanyargdef@@
\edef\tempb{\eatspaces{#1}}%
\expandafter\def\expandafter\tempa
@@ -8360,7 +8363,7 @@ end
% Replace arguments by their values in the macro body, and place the result
% in macro \@tempa.
-%
+%
\def\macvalstoargs@{%
% To do this we use the property that token registers that are \the'ed
% within an \edef expand only once. So we are going to place all argument
@@ -8384,9 +8387,9 @@ end
\expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
}
-% Define the named-macro outside of this group and then close this group.
-%
-\def\macargexpandinbody@{%
+% Define the named-macro outside of this group and then close this group.
+%
+\def\macargexpandinbody@{%
\expandafter
\endgroup
\macargdeflist@
@@ -8424,7 +8427,7 @@ end
}
% Trailing missing arguments are set to empty.
-%
+%
\def\setemptyargvalues@{%
\ifx\paramlist\nilm@
\let\next\macargexpandinbody@
@@ -8463,8 +8466,7 @@ end
% its parameters, looking like "\xeatspaces{\hash 1}".
% \paramno is the number of parameters
% \paramlist is a TeX parameter text, e.g. "#1,#2,#3,"
-% There are eight cases: recursive and nonrecursive macros of zero, one,
-% up to nine, and many arguments.
+% There are four cases: macros of zero, one, up to nine, and many arguments.
% \xdef is used so that macro definitions will survive the file
% they're defined in: @include reads the file inside a group.
%
@@ -8479,91 +8481,55 @@ end
\else
\let\xeatspaces\relax % suppress expansion
\fi
- \ifrecursive %%%%%%%%%%%%%% Recursive %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \ifcase\paramno
- % 0
- \expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\scanmacro{\macrobody}}%
- \or % 1
+ \ifcase\paramno
+ % 0
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup
+ \noexpand\spaceisspace
+ \noexpand\endlineisspace
+ \noexpand\expandafter % skip any whitespace after the macro name.
+ \expandafter\noexpand\csname\the\macname @@@\endcsname}%
+ \expandafter\xdef\csname\the\macname @@@\endcsname{%
+ \egroup
+ \noexpand\scanmacro{\macrobody}}%
+ \or % 1
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup
+ \noexpand\braceorline
+ \expandafter\noexpand\csname\the\macname @@@\endcsname}%
+ \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
+ \egroup
+ \noexpand\scanmacro{\macrobody}%
+ }%
+ \else % at most 9
+ \ifnum\paramno<10\relax
+ % @MACNAME sets the context for reading the macro argument
+ % @MACNAME@@ gets the argument, processes backslashes and appends a
+ % comma.
+ % @MACNAME@@@ removes braces surrounding the argument list.
+ % @MACNAME@@@@ scans the macro body with arguments substituted.
\expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup
- \noexpand\braceorline
- \expandafter\noexpand\csname\the\macname @@@\endcsname}%
+ \bgroup
+ \noexpand\expandafter % This \expandafter skip any spaces after the
+ \noexpand\macroargctxt % macro before we change the catcode of space.
+ \noexpand\expandafter
+ \expandafter\noexpand\csname\the\macname @@\endcsname}%
+ \expandafter\xdef\csname\the\macname @@\endcsname##1{%
+ \noexpand\passargtomacro
+ \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}%
\expandafter\xdef\csname\the\macname @@@\endcsname##1{%
- \egroup
- \noexpand\scanmacro{\macrobody}%
- }%
- \else
- \ifnum\paramno<10\relax % at most 9
- % See non-recursive section below for comments
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup
- \noexpand\expandafter
- \noexpand\macroargctxt
- \noexpand\expandafter
- \expandafter\noexpand\csname\the\macname @@\endcsname}%
- \expandafter\xdef\csname\the\macname @@\endcsname##1{%
- \noexpand\passargtomacro
- \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}%
- \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
- \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname @@@@\endcsname\paramlist{%
- \egroup\noexpand\scanmacro{\macrobody}}%
- \else % 10 or more
- \expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\getargvals@{\the\macname}{\argl}%
- }%
- \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody
- \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
- \fi
- \fi
- \else %%%%%%%%%%%%%%%%%%%%%% Non-recursive %%%%%%%%%%%%%%%%%%%%%%%%%%
- \ifcase\paramno
- % 0
- \expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\scanmacro{\macrobody}}%
- \or % 1
+ \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname @@@@\endcsname\paramlist{%
+ \egroup\noexpand\scanmacro{\macrobody}}%
+ \else % 10 or more:
\expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup
- \noexpand\braceorline
- \expandafter\noexpand\csname\the\macname @@@\endcsname}%
- \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
- \egroup
- \noexpand\scanmacro{\macrobody}%
- }%
- \else % at most 9
- \ifnum\paramno<10\relax
- % @MACNAME sets the context for reading the macro argument
- % @MACNAME@@ gets the argument, processes backslashes and appends a
- % comma.
- % @MACNAME@@@ removes braces surrounding the argument list.
- % @MACNAME@@@@ scans the macro body with arguments substituted.
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup
- \noexpand\expandafter % This \expandafter skip any spaces after the
- \noexpand\macroargctxt % macro before we change the catcode of space.
- \noexpand\expandafter
- \expandafter\noexpand\csname\the\macname @@\endcsname}%
- \expandafter\xdef\csname\the\macname @@\endcsname##1{%
- \noexpand\passargtomacro
- \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}%
- \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
- \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname @@@@\endcsname\paramlist{%
- \egroup\noexpand\scanmacro{\macrobody}}%
- \else % 10 or more:
- \expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\getargvals@{\the\macname}{\argl}%
- }%
- \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody
- \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
- \fi
+ \noexpand\getargvals@{\the\macname}{\argl}%
+ }%
+ \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody
+ \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
\fi
\fi}
@@ -8582,11 +8548,11 @@ end
% Call #1 with a list of tokens #2, with any doubled backslashes in #2
% compressed to one.
%
-% This implementation works by expansion, and not execution (so we cannot use
-% \def or similar). This reduces the risk of this failing in contexts where
-% complete expansion is done with no execution (for example, in writing out to
+% This implementation works by expansion, and not execution (so we cannot use
+% \def or similar). This reduces the risk of this failing in contexts where
+% complete expansion is done with no execution (for example, in writing out to
% an auxiliary file for an index entry).
-%
+%
% State is kept in the input stream: the argument passed to
% @look_ahead, @gobble_and_check_finish and @add_segment is
%
@@ -8608,11 +8574,11 @@ end
% #3 - NEXT_TOKEN
% #4 used to look ahead
%
-% If the next token is not a backslash, process the rest of the argument;
+% If the next token is not a backslash, process the rest of the argument;
% otherwise, remove the next token.
@gdef@look_ahead#1!#2#3#4{%
@ifx#4\%
- @expandafter@gobble_and_check_finish
+ @expandafter@gobble_and_check_finish
@else
@expandafter@add_segment
@fi#1!{#2}#4#4%
@@ -8636,9 +8602,9 @@ end
% #3 - NEXT_TOKEN
% #4 is input stream until next backslash
%
-% Input stream is either at the start of the argument, or just after a
-% backslash sequence, either a lone backslash, or a doubled backslash.
-% NEXT_TOKEN contains the first token in the input stream: if it is \finish,
+% Input stream is either at the start of the argument, or just after a
+% backslash sequence, either a lone backslash, or a doubled backslash.
+% NEXT_TOKEN contains the first token in the input stream: if it is \finish,
% finish; otherwise, append to ARG_RESULT the segment of the argument up until
% the next backslash. PENDING_BACKSLASH contains a backslash to represent
% a backslash just before the start of the input stream that has not been
@@ -8650,13 +8616,13 @@ end
% append the pending backslash to the result, followed by the next segment
@expandafter@is_fi@look_ahead#1#2#4!{\}@fi
% this @fi is discarded by @look_ahead.
- % we can't get rid of it with \expandafter because we don't know how
+ % we can't get rid of it with \expandafter because we don't know how
% long #4 is.
}
% #1 - THE_MACRO
% #2 - ARG_RESULT
-% #3 discards the res of the conditional in @add_segment, and @is_fi ends the
+% #3 discards the res of the conditional in @add_segment, and @is_fi ends the
% conditional.
@gdef@call_the_macro#1#2!#3@fi{@is_fi #1{#2}}
@@ -8668,7 +8634,7 @@ end
% for reading the argument (slightly different in the two cases). Then,
% to read the argument, in the whole-line case, it then calls the regular
% \parsearg MAC; in the lbrace case, it calls \passargtomacro MAC.
-%
+%
\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
\def\braceorlinexxx{%
\ifx\nchar\bgroup
@@ -8718,9 +8684,29 @@ end
% also remove a trailing comma, in case of something like this:
% @node Help-Cross, , , Cross-refs
\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
-\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
+\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}\omittopnode}
+
+% Used so that the @top node doesn't have to be wrapped in an @ifnottex
+% conditional.
+% \doignore goes to more effort to skip nested conditionals but we don't need
+% that here.
+\def\omittopnode{%
+ \ifx\lastnode\wordTop
+ \expandafter\ignorenode\fi
+}
+\def\wordTop{Top}
+
+% Until the next @node or @bye command, divert output to a box that is not
+% output.
+\def\ignorenode{\setbox\dummybox\vbox\bgroup\def\node{\egroup\node}%
+\ignorenodebye
+}
+
+{\let\bye\relax
+\gdef\ignorenodebye{\let\bye\ignorenodebyedef}
+\gdef\ignorenodebyedef{\egroup(`Top' node ignored)\bye}}
+% The redefinition of \bye here is because it is declared \outer
-\let\nwnode=\node
\let\lastnode=\empty
% Write a cross-reference definition for the current node. #1 is the
@@ -8743,7 +8729,7 @@ end
% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
% anchor), which consists of three parts:
-% 1) NAME-title - the current sectioning name taken from \lastsection,
+% 1) NAME-title - the current sectioning name taken from \currentsection,
% or the anchor name.
% 2) NAME-snt - section number and type, passed as the SNT arg, or
% empty for anchors.
@@ -8765,7 +8751,7 @@ end
\write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
##1}{##2}}% these are parameters of \writexrdef
}%
- \toks0 = \expandafter{\lastsection}%
+ \toks0 = \expandafter{\currentsection}%
\immediate \writexrdef{title}{\the\toks0 }%
\immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
\safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
@@ -8777,7 +8763,7 @@ end
% automatically in xrefs, if the third arg is not explicitly specified.
% This was provided as a "secret" @set xref-automatic-section-title
% variable, now it's official.
-%
+%
\parseargdef\xrefautomaticsectiontitle{%
\def\temp{#1}%
\ifx\temp\onword
@@ -8793,7 +8779,7 @@ end
\fi\fi
}
-%
+%
% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
% the node name, #2 the name of the Info cross-reference, #3 the printed
% node name, #4 the name of the Info file, #5 the name of the printed
@@ -8853,8 +8839,8 @@ end
\ifpdf
% For pdfTeX and LuaTeX
{\indexnofonts
- \turnoffactive
\makevalueexpandable
+ \turnoffactive
% This expands tokens, so do it after making catcode changes, so _
% etc. don't get their TeX definitions. This ignores all spaces in
% #4, including (wrongly) those in the middle of the filename.
@@ -8862,19 +8848,18 @@ end
%
% This (wrongly) does not take account of leading or trailing
% spaces in #1, which should be ignored.
- \edef\pdfxrefdest{#1}%
- \ifx\pdfxrefdest\empty
- \def\pdfxrefdest{Top}% no empty targets
- \else
- \txiescapepdf\pdfxrefdest % escape PDF special chars
+ \setpdfdestname{#1}%
+ %
+ \ifx\pdfdestname\empty
+ \def\pdfdestname{Top}% no empty targets
\fi
%
\leavevmode
\startlink attr{/Border [0 0 0]}%
\ifnum\filenamelength>0
- goto file{\the\filename.pdf} name{\pdfxrefdest}%
+ goto file{\the\filename.pdf} name{\pdfdestname}%
\else
- goto name{\pdfmkpgn{\pdfxrefdest}}%
+ goto name{\pdfmkpgn{\pdfdestname}}%
\fi
}%
\setcolor{\linkcolor}%
@@ -8883,8 +8868,8 @@ end
\else
% For XeTeX
{\indexnofonts
- \turnoffactive
\makevalueexpandable
+ \turnoffactive
% This expands tokens, so do it after making catcode changes, so _
% etc. don't get their TeX definitions. This ignores all spaces in
% #4, including (wrongly) those in the middle of the filename.
@@ -8892,29 +8877,27 @@ end
%
% This (wrongly) does not take account of leading or trailing
% spaces in #1, which should be ignored.
- \iftxiuseunicodedestname
- \def\pdfxrefdest{#1}% Pass through Unicode characters.
- \else
- \edef\pdfxrefdest{#1}% Replace Unicode characters to ASCII.
- \fi
- \ifx\pdfxrefdest\empty
- \def\pdfxrefdest{Top}% no empty targets
- \else
- \txiescapepdf\pdfxrefdest % escape PDF special chars
+ \setpdfdestname{#1}%
+ %
+ \ifx\pdfdestname\empty
+ \def\pdfdestname{Top}% no empty targets
\fi
%
\leavevmode
\ifnum\filenamelength>0
- % By the default settings,
+ % With default settings,
% XeTeX (xdvipdfmx) replaces link destination names with integers.
% In this case, the replaced destination names of
- % remote PDF cannot be known. In order to avoid replacement,
- % you can use commandline option `-C 0x0010' for xdvipdfmx.
+ % remote PDFs are no longer known. In order to avoid a replacement,
+ % you can use xdvipdfmx's command line option `-C 0x0010'.
+ % If you use XeTeX 0.99996+ (TeX Live 2016+),
+ % this command line option is no longer necessary
+ % because we can use the `dvipdfmx:config' special.
\special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A
- << /S /GoToR /F (\the\filename.pdf) /D (name\pdfxrefdest) >> >>}%
+ << /S /GoToR /F (\the\filename.pdf) /D (\pdfdestname) >> >>}%
\else
\special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A
- << /S /GoTo /D (name\pdfxrefdest) >> >>}%
+ << /S /GoTo /D (\pdfdestname) >> >>}%
\fi
}%
\setcolor{\linkcolor}%
@@ -8949,24 +8932,24 @@ end
\fi
\else
% node/anchor (non-float) references.
- %
+ %
% If we use \unhbox to print the node names, TeX does not insert
% empty discretionaries after hyphens, which means that it will not
% find a line break at a hyphen in a node names. Since some manuals
% are best written with fairly long node names, containing hyphens,
% this is a loss. Therefore, we give the text of the node name
% again, so it is as if TeX is seeing it for the first time.
- %
+ %
\ifdim \wd\printedmanualbox > 0pt
% Cross-manual reference with a printed manual name.
- %
+ %
\crossmanualxref{\cite{\printedmanual\unskip}}%
%
\else\ifdim \wd\infofilenamebox > 0pt
% Cross-manual reference with only an info filename (arg 4), no
% printed manual name (arg 5). This is essentially the same as
% the case above; we output the filename, since we have nothing else.
- %
+ %
\crossmanualxref{\code{\infofilename\unskip}}%
%
\else
@@ -9006,20 +8989,20 @@ end
\endgroup}
% Output a cross-manual xref to #1. Used just above (twice).
-%
+%
% Only include the text "Section ``foo'' in" if the foo is neither
% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply
% "see The Foo Manual", the idea being to refer to the whole manual.
-%
+%
% But, this being TeX, we can't easily compare our node name against the
% string "Top" while ignoring the possible spaces before and after in
% the input. By adding the arbitrary 7sp below, we make it much less
% likely that a real node name would have the same width as "Top" (e.g.,
% in a monospaced font). Hopefully it will never happen in practice.
-%
+%
% For the same basic reason, we retypeset the "Top" at every
% reference, since the current font is indeterminate.
-%
+%
\def\crossmanualxref#1{%
\setbox\toprefbox = \hbox{Top\kern7sp}%
\setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
@@ -9066,7 +9049,7 @@ end
\fi\fi\fi
}
-% \refx{NAME}{SUFFIX} - reference a cross-reference string named NAME. SUFFIX
+% \refx{NAME}{SUFFIX} - reference a cross-reference string named NAME. SUFFIX
% is output afterwards if non-empty.
\def\refx#1#2{%
\requireauxfile
@@ -9098,9 +9081,9 @@ end
#2% Output the suffix in any case.
}
-% This is the macro invoked by entries in the aux file. Define a control
-% sequence for a cross-reference target (we prepend XR to the control sequence
-% name to avoid collisions). The value is the page number. If this is a float
+% This is the macro invoked by entries in the aux file. Define a control
+% sequence for a cross-reference target (we prepend XR to the control sequence
+% name to avoid collisions). The value is the page number. If this is a float
% type, we have more work to do.
%
\def\xrdef#1#2{%
@@ -9113,7 +9096,13 @@ end
\xdef\safexrefname{#1}%
}%
%
- \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
+ \bgroup
+ \expandafter\gdef\csname XR\safexrefname\endcsname{#2}%
+ \egroup
+ % We put the \gdef inside a group to avoid the definitions building up on
+ % TeX's save stack, which can cause it to run out of space for aux files with
+ % thousands of lines. \gdef doesn't use the save stack, but \csname does
+ % when it defines an unknown control sequence as \relax.
%
% Was that xref control sequence that we just defined for a float?
\expandafter\iffloat\csname XR\safexrefname\endcsname
@@ -9192,19 +9181,6 @@ end
\catcode`\^^]=\other
\catcode`\^^^=\other
\catcode`\^^_=\other
- % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
- % in xref tags, i.e., node names. But since ^^e4 notation isn't
- % supported in the main text, it doesn't seem desirable. Furthermore,
- % that is not enough: for node names that actually contain a ^
- % character, we would end up writing a line like this: 'xrdef {'hat
- % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
- % argument, and \hat is not an expandable control sequence. It could
- % all be worked out, but why? Either we support ^^ or we don't.
- %
- % The other change necessary for this was to define \auxhat:
- % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
- % and then to call \auxhat in \setq.
- %
\catcode`\^=\other
%
% Special characters. Should be turned off anyway, but...
@@ -9222,14 +9198,7 @@ end
\catcode`\%=\other
\catcode`+=\other % avoid \+ for paranoia even though we've turned it off
%
- % This is to support \ in node names and titles, since the \
- % characters end up in a \csname. It's easier than
- % leaving it active and making its active definition an actual \
- % character. What I don't understand is why it works in the *value*
- % of the xrdef. Seems like it should be a catcode12 \, and that
- % should not typeset properly. But it works, so I'm moving on for
- % now. --karl, 15jan04.
- \catcode`\\=\other
+ \catcode`\\=\active
%
% @ is our escape character in .aux files, and we need braces.
\catcode`\{=1
@@ -9419,7 +9388,7 @@ end
\newif\ifwarnednoepsf
\newhelp\noepsfhelp{epsf.tex must be installed for images to
work. It is also included in the Texinfo distribution, or you can get
- it from ftp://tug.org/tex/epsf.tex.}
+ it from https://ctan.org/texarchive/macros/texinfo/texinfo/doc/epsf.tex.}
%
\def\image#1{%
\ifx\epsfbox\thisisundefined
@@ -9492,7 +9461,7 @@ end
%
\ifimagevmode
\medskip % space after a standalone image
- \fi
+ \fi
\ifx\centersub\centerV \egroup \fi
\endgroup}
@@ -9560,13 +9529,13 @@ end
\global\advance\floatno by 1
%
{%
- % This magic value for \lastsection is output by \setref as the
+ % This magic value for \currentsection is output by \setref as the
% XREFLABEL-title value. \xrefX uses it to distinguish float
% labels (which have a completely different output format) from
% node and anchor labels. And \xrdef uses it to construct the
% lists of floats.
%
- \edef\lastsection{\floatmagic=\safefloattype}%
+ \edef\currentsection{\floatmagic=\safefloattype}%
\setref{\floatlabel}{Yfloat}%
}%
\fi
@@ -9689,7 +9658,7 @@ end
% #1 is the control sequence we are passed; we expand into a conditional
% which is true if #1 represents a float ref. That is, the magic
-% \lastsection value which we \setref above.
+% \currentsection value which we \setref above.
%
\def\iffloat#1{\expandafter\doiffloat#1==\finish}
%
@@ -9821,9 +9790,9 @@ directory should work if nowhere else does.}
\global\righthyphenmin = #3\relax
}
-% XeTeX and LuaTeX can handle native Unicode.
-% Their default I/O is UTF-8 sequence instead of byte-wise.
-% Other TeX engine (pdfTeX etc.) I/O is byte-wise.
+% XeTeX and LuaTeX can handle Unicode natively.
+% Their default I/O uses UTF-8 sequences instead of a byte-wise operation.
+% Other TeX engines' I/O (pdfTeX, etc.) is byte-wise.
%
\newif\iftxinativeunicodecapable
\newif\iftxiusebytewiseio
@@ -9947,14 +9916,15 @@ directory should work if nowhere else does.}
%
\else \ifx \declaredencoding \utfeight
\iftxinativeunicodecapable
- % For native Unicode (XeTeX and LuaTeX)
+ % For native Unicode handling (XeTeX and LuaTeX)
\nativeunicodechardefs
\else
- % For UTF-8 byte sequence (TeX, eTeX and pdfTeX)
+ % For treating UTF-8 as byte sequences (TeX, eTeX and pdfTeX)
\setnonasciicharscatcode\active
% since we already invoked \utfeightchardefs at the top level
- % (below), do not re-invoke it, then our check for duplicated
- % definitions triggers. Making non-ascii chars active is enough.
+ % (below), do not re-invoke it, otherwise our check for duplicated
+ % definitions gets triggered. Making non-ascii chars active is
+ % sufficient.
\fi
%
\else
@@ -9965,6 +9935,18 @@ directory should work if nowhere else does.}
\fi % latone
\fi % lattwo
\fi % ascii
+ %
+ \ifx\XeTeXrevision\thisisundefined
+ \else
+ \ifx \declaredencoding \utfeight
+ \else
+ \ifx \declaredencoding \ascii
+ \else
+ \message{Warning: XeTeX with non-UTF-8 encodings cannot handle %
+ non-ASCII characters in auxiliary files.}%
+ \fi
+ \fi
+ \fi
}
% emacs-page
@@ -9996,18 +9978,18 @@ directory should work if nowhere else does.}
\gdefchar^^a0{\tie}
\gdefchar^^a1{\exclamdown}
\gdefchar^^a2{{\tcfont \char162}} % cent
- \gdefchar^^a3{\pounds}
+ \gdefchar^^a3{\pounds{}}
\gdefchar^^a4{{\tcfont \char164}} % currency
\gdefchar^^a5{{\tcfont \char165}} % yen
\gdefchar^^a6{{\tcfont \char166}} % broken bar
\gdefchar^^a7{\S}
\gdefchar^^a8{\"{}}
- \gdefchar^^a9{\copyright}
+ \gdefchar^^a9{\copyright{}}
\gdefchar^^aa{\ordf}
- \gdefchar^^ab{\guillemetleft}
+ \gdefchar^^ab{\guillemetleft{}}
\gdefchar^^ac{\ensuremath\lnot}
\gdefchar^^ad{\-}
- \gdefchar^^ae{\registeredsymbol}
+ \gdefchar^^ae{\registeredsymbol{}}
\gdefchar^^af{\={}}
%
\gdefchar^^b0{\textdegree}
@@ -10021,7 +10003,7 @@ directory should work if nowhere else does.}
\gdefchar^^b8{\cedilla\ }
\gdefchar^^b9{$^1$}
\gdefchar^^ba{\ordm}
- \gdefchar^^bb{\guillemetright}
+ \gdefchar^^bb{\guillemetright{}}
\gdefchar^^bc{$1\over4$}
\gdefchar^^bd{$1\over2$}
\gdefchar^^be{$3\over4$}
@@ -10101,7 +10083,7 @@ directory should work if nowhere else does.}
% Encoding is almost identical to Latin1.
\latonechardefs
%
- \gdefchar^^a4{\euro}
+ \gdefchar^^a4{\euro{}}
\gdefchar^^a6{\v S}
\gdefchar^^a8{\v s}
\gdefchar^^b4{\v Z}
@@ -10130,7 +10112,7 @@ directory should work if nowhere else does.}
\gdefchar^^ae{\v Z}
\gdefchar^^af{\dotaccent Z}
%
- \gdefchar^^b0{\textdegree}
+ \gdefchar^^b0{\textdegree{}}
\gdefchar^^b1{\ogonek{a}}
\gdefchar^^b2{\ogonek{ }}
\gdefchar^^b3{\l}
@@ -10302,14 +10284,15 @@ directory should work if nowhere else does.}
\def\U#1{%
\expandafter\ifx\csname uni:#1\endcsname \relax
\iftxinativeunicodecapable
- % Any Unicode characters can be used by native Unicode.
- % However, if the font does not have the glyph, the letter will miss.
+ % All Unicode characters can be used if native Unicode handling is
+ % active. However, if the font does not have the glyph,
+ % letters are missing.
\begingroup
\uccode`\.="#1\relax
\uppercase{.}
\endgroup
\else
- \errhelp = \EMsimple
+ \errhelp = \EMsimple
\errmessage{Unicode character U+#1 not supported, sorry}%
\fi
\else
@@ -10326,9 +10309,9 @@ directory should work if nowhere else does.}
\def\UTFviiiFourOctetsName#1#2#3#4{%
\csname u8:#1\string #2\string #3\string #4\endcsname}%
-% For UTF-8 byte sequence (TeX, e-TeX and pdfTeX)
-% Definition macro to replace the Unicode character
-% Definition macro that is used by @U command
+% For UTF-8 byte sequences (TeX, e-TeX and pdfTeX),
+% provide a definition macro to replace a Unicode character;
+% this gets used by the @U command
%
\begingroup
\catcode`\"=12
@@ -10342,7 +10325,7 @@ directory should work if nowhere else does.}
\countUTFz = "#1\relax
\begingroup
\parseXMLCharref
-
+
% Give \u8:... its definition. The sequence of seven \expandafter's
% expands after the \gdef three times, e.g.
%
@@ -10354,7 +10337,7 @@ directory should work if nowhere else does.}
\expandafter\expandafter
\expandafter\expandafter
\expandafter\gdef \UTFviiiTmp{#2}%
- %
+ %
\expandafter\ifx\csname uni:#1\endcsname \relax \else
\message{Internal error, already defined: #1}%
\fi
@@ -10393,7 +10376,7 @@ directory should work if nowhere else does.}
\divide\countUTFz by 64
\countUTFy = \countUTFz % Save to be the future value of \countUTFz.
\multiply\countUTFz by 64
-
+
% \countUTFz is now \countUTFx with the last 5 bits cleared. Subtract
% in order to get the last five bits.
\advance\countUTFx by -\countUTFz
@@ -10416,8 +10399,8 @@ directory should work if nowhere else does.}
\uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
\endgroup
-% For native Unicode (XeTeX and LuaTeX)
-% Definition macro that is set catcode other non global
+% For native Unicode handling (XeTeX and LuaTeX),
+% provide a definition macro that sets a catcode to `other' non-globally
%
\def\DeclareUnicodeCharacterNativeOther#1#2{%
\catcode"#1=\other
@@ -10428,7 +10411,7 @@ directory should work if nowhere else does.}
% U+0080..U+00FF = https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)
% U+0100..U+017F = https://en.wikipedia.org/wiki/Latin_Extended-A
% U+0180..U+024F = https://en.wikipedia.org/wiki/Latin_Extended-B
-%
+%
% Many of our renditions are less than wonderful, and all the missing
% characters are available somewhere. Loading the necessary fonts
% awaits user request. We can't truly support Unicode without
@@ -10441,18 +10424,18 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{00A0}{\tie}%
\DeclareUnicodeCharacter{00A1}{\exclamdown}%
\DeclareUnicodeCharacter{00A2}{{\tcfont \char162}}% 0242=cent
- \DeclareUnicodeCharacter{00A3}{\pounds}%
+ \DeclareUnicodeCharacter{00A3}{\pounds{}}%
\DeclareUnicodeCharacter{00A4}{{\tcfont \char164}}% 0244=currency
\DeclareUnicodeCharacter{00A5}{{\tcfont \char165}}% 0245=yen
\DeclareUnicodeCharacter{00A6}{{\tcfont \char166}}% 0246=brokenbar
\DeclareUnicodeCharacter{00A7}{\S}%
\DeclareUnicodeCharacter{00A8}{\"{ }}%
- \DeclareUnicodeCharacter{00A9}{\copyright}%
+ \DeclareUnicodeCharacter{00A9}{\copyright{}}%
\DeclareUnicodeCharacter{00AA}{\ordf}%
- \DeclareUnicodeCharacter{00AB}{\guillemetleft}%
+ \DeclareUnicodeCharacter{00AB}{\guillemetleft{}}%
\DeclareUnicodeCharacter{00AC}{\ensuremath\lnot}%
\DeclareUnicodeCharacter{00AD}{\-}%
- \DeclareUnicodeCharacter{00AE}{\registeredsymbol}%
+ \DeclareUnicodeCharacter{00AE}{\registeredsymbol{}}%
\DeclareUnicodeCharacter{00AF}{\={ }}%
%
\DeclareUnicodeCharacter{00B0}{\ringaccent{ }}%
@@ -10466,7 +10449,7 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{00B8}{\cedilla{ }}%
\DeclareUnicodeCharacter{00B9}{$^1$}%
\DeclareUnicodeCharacter{00BA}{\ordm}%
- \DeclareUnicodeCharacter{00BB}{\guillemetright}%
+ \DeclareUnicodeCharacter{00BB}{\guillemetright{}}%
\DeclareUnicodeCharacter{00BC}{$1\over4$}%
\DeclareUnicodeCharacter{00BD}{$1\over2$}%
\DeclareUnicodeCharacter{00BE}{$3\over4$}%
@@ -10938,36 +10921,36 @@ directory should work if nowhere else does.}
% Punctuation
\DeclareUnicodeCharacter{2013}{--}%
\DeclareUnicodeCharacter{2014}{---}%
- \DeclareUnicodeCharacter{2018}{\quoteleft}%
- \DeclareUnicodeCharacter{2019}{\quoteright}%
- \DeclareUnicodeCharacter{201A}{\quotesinglbase}%
- \DeclareUnicodeCharacter{201C}{\quotedblleft}%
- \DeclareUnicodeCharacter{201D}{\quotedblright}%
- \DeclareUnicodeCharacter{201E}{\quotedblbase}%
+ \DeclareUnicodeCharacter{2018}{\quoteleft{}}%
+ \DeclareUnicodeCharacter{2019}{\quoteright{}}%
+ \DeclareUnicodeCharacter{201A}{\quotesinglbase{}}%
+ \DeclareUnicodeCharacter{201C}{\quotedblleft{}}%
+ \DeclareUnicodeCharacter{201D}{\quotedblright{}}%
+ \DeclareUnicodeCharacter{201E}{\quotedblbase{}}%
\DeclareUnicodeCharacter{2020}{\ensuremath\dagger}%
\DeclareUnicodeCharacter{2021}{\ensuremath\ddagger}%
- \DeclareUnicodeCharacter{2022}{\bullet}%
+ \DeclareUnicodeCharacter{2022}{\bullet{}}%
\DeclareUnicodeCharacter{202F}{\thinspace}%
- \DeclareUnicodeCharacter{2026}{\dots}%
- \DeclareUnicodeCharacter{2039}{\guilsinglleft}%
- \DeclareUnicodeCharacter{203A}{\guilsinglright}%
+ \DeclareUnicodeCharacter{2026}{\dots{}}%
+ \DeclareUnicodeCharacter{2039}{\guilsinglleft{}}%
+ \DeclareUnicodeCharacter{203A}{\guilsinglright{}}%
%
- \DeclareUnicodeCharacter{20AC}{\euro}%
+ \DeclareUnicodeCharacter{20AC}{\euro{}}%
%
- \DeclareUnicodeCharacter{2192}{\expansion}%
- \DeclareUnicodeCharacter{21D2}{\result}%
+ \DeclareUnicodeCharacter{2192}{\expansion{}}%
+ \DeclareUnicodeCharacter{21D2}{\result{}}%
%
% Mathematical symbols
\DeclareUnicodeCharacter{2200}{\ensuremath\forall}%
\DeclareUnicodeCharacter{2203}{\ensuremath\exists}%
\DeclareUnicodeCharacter{2208}{\ensuremath\in}%
- \DeclareUnicodeCharacter{2212}{\minus}%
+ \DeclareUnicodeCharacter{2212}{\minus{}}%
\DeclareUnicodeCharacter{2217}{\ast}%
\DeclareUnicodeCharacter{221E}{\ensuremath\infty}%
\DeclareUnicodeCharacter{2225}{\ensuremath\parallel}%
\DeclareUnicodeCharacter{2227}{\ensuremath\wedge}%
\DeclareUnicodeCharacter{2229}{\ensuremath\cap}%
- \DeclareUnicodeCharacter{2261}{\equiv}%
+ \DeclareUnicodeCharacter{2261}{\equiv{}}%
\DeclareUnicodeCharacter{2264}{\ensuremath\leq}%
\DeclareUnicodeCharacter{2265}{\ensuremath\geq}%
\DeclareUnicodeCharacter{2282}{\ensuremath\subset}%
@@ -10980,7 +10963,6 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{2113}{\ensuremath\ell}%
\DeclareUnicodeCharacter{2118}{\ensuremath\wp}%
\DeclareUnicodeCharacter{211C}{\ensuremath\Re}%
- \DeclareUnicodeCharacter{2127}{\ensuremath\mho}%
\DeclareUnicodeCharacter{2135}{\ensuremath\aleph}%
\DeclareUnicodeCharacter{2190}{\ensuremath\leftarrow}%
\DeclareUnicodeCharacter{2191}{\ensuremath\uparrow}%
@@ -10996,7 +10978,6 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{21AA}{\ensuremath\hookrightarrow}%
\DeclareUnicodeCharacter{21BC}{\ensuremath\leftharpoonup}%
\DeclareUnicodeCharacter{21BD}{\ensuremath\leftharpoondown}%
- \DeclareUnicodeCharacter{21BE}{\ensuremath\upharpoonright}%
\DeclareUnicodeCharacter{21C0}{\ensuremath\rightharpoonup}%
\DeclareUnicodeCharacter{21C1}{\ensuremath\rightharpoondown}%
\DeclareUnicodeCharacter{21CC}{\ensuremath\rightleftharpoons}%
@@ -11005,8 +10986,6 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{21D3}{\ensuremath\Downarrow}%
\DeclareUnicodeCharacter{21D4}{\ensuremath\Leftrightarrow}%
\DeclareUnicodeCharacter{21D5}{\ensuremath\Updownarrow}%
- \DeclareUnicodeCharacter{21DD}{\ensuremath\leadsto}%
- \DeclareUnicodeCharacter{2201}{\ensuremath\complement}%
\DeclareUnicodeCharacter{2202}{\ensuremath\partial}%
\DeclareUnicodeCharacter{2205}{\ensuremath\emptyset}%
\DeclareUnicodeCharacter{2207}{\ensuremath\nabla}%
@@ -11040,8 +11019,6 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{2283}{\ensuremath\supset}%
\DeclareUnicodeCharacter{2286}{\ensuremath\subseteq}%
\DeclareUnicodeCharacter{228E}{\ensuremath\uplus}%
- \DeclareUnicodeCharacter{228F}{\ensuremath\sqsubset}%
- \DeclareUnicodeCharacter{2290}{\ensuremath\sqsupset}%
\DeclareUnicodeCharacter{2291}{\ensuremath\sqsubseteq}%
\DeclareUnicodeCharacter{2292}{\ensuremath\sqsupseteq}%
\DeclareUnicodeCharacter{2293}{\ensuremath\sqcap}%
@@ -11056,8 +11033,6 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{22A4}{\ensuremath\ptextop}%
\DeclareUnicodeCharacter{22A5}{\ensuremath\bot}%
\DeclareUnicodeCharacter{22A8}{\ensuremath\models}%
- \DeclareUnicodeCharacter{22B4}{\ensuremath\unlhd}%
- \DeclareUnicodeCharacter{22B5}{\ensuremath\unrhd}%
\DeclareUnicodeCharacter{22C0}{\ensuremath\bigwedge}%
\DeclareUnicodeCharacter{22C1}{\ensuremath\bigvee}%
\DeclareUnicodeCharacter{22C2}{\ensuremath\bigcap}%
@@ -11073,12 +11048,11 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{2322}{\ensuremath\frown}%
\DeclareUnicodeCharacter{2323}{\ensuremath\smile}%
%
- \DeclareUnicodeCharacter{25A1}{\ensuremath\Box}%
\DeclareUnicodeCharacter{25B3}{\ensuremath\triangle}%
\DeclareUnicodeCharacter{25B7}{\ensuremath\triangleright}%
\DeclareUnicodeCharacter{25BD}{\ensuremath\bigtriangledown}%
\DeclareUnicodeCharacter{25C1}{\ensuremath\triangleleft}%
- \DeclareUnicodeCharacter{25C7}{\ensuremath\Diamond}%
+ \DeclareUnicodeCharacter{25C7}{\ensuremath\diamond}%
\DeclareUnicodeCharacter{2660}{\ensuremath\spadesuit}%
\DeclareUnicodeCharacter{2661}{\ensuremath\heartsuit}%
\DeclareUnicodeCharacter{2662}{\ensuremath\diamondsuit}%
@@ -11100,7 +11074,6 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{2A02}{\ensuremath\bigotimes}%
\DeclareUnicodeCharacter{2A04}{\ensuremath\biguplus}%
\DeclareUnicodeCharacter{2A06}{\ensuremath\bigsqcup}%
- \DeclareUnicodeCharacter{2A1D}{\ensuremath\Join}%
\DeclareUnicodeCharacter{2A3F}{\ensuremath\amalg}%
\DeclareUnicodeCharacter{2AAF}{\ensuremath\preceq}%
\DeclareUnicodeCharacter{2AB0}{\ensuremath\succeq}%
@@ -11123,8 +11096,8 @@ directory should work if nowhere else does.}
\newif\ifpassthroughchars
\passthroughcharsfalse
-% For native Unicode (XeTeX and LuaTeX)
-% Definition macro to replace / pass-through the Unicode character
+% For native Unicode handling (XeTeX and LuaTeX),
+% provide a definition macro to replace/pass-through a Unicode character
%
\def\DeclareUnicodeCharacterNative#1#2{%
\catcode"#1=\active
@@ -11147,21 +11120,22 @@ directory should work if nowhere else does.}
\endgroup
}
-% Native Unicode (XeTeX and LuaTeX) character replacing definitions
-% It makes the setting that replace the Unicode characters.
+% Native Unicode handling (XeTeX and LuaTeX) character replacing definition.
+% It activates the setting that replaces Unicode characters.
\def\nativeunicodechardefs{%
\let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNative
\unicodechardefs
}
-% For native Unicode (XeTeX and LuaTeX). Make the character token expand
+% For native Unicode handling (XeTeX and LuaTeX),
+% make the character token expand
% to the sequences given in \unicodechardefs for printing.
\def\DeclareUnicodeCharacterNativeAtU#1#2{%
\def\UTFAtUTmp{#2}
\expandafter\globallet\csname uni:#1\endcsname \UTFAtUTmp
}
-% Native Unicode (XeTeX and LuaTeX) @U command definitions
+% @U command definitions for native Unicode handling (XeTeX and LuaTeX).
\def\nativeunicodechardefsatu{%
\let\DeclareUnicodeCharacter\DeclareUnicodeCharacterNativeAtU
\unicodechardefs
@@ -11172,21 +11146,14 @@ directory should work if nowhere else does.}
\relax
}
-% define all the unicode characters we know about, for the sake of @U.
+% Define all Unicode characters we know about. This makes UTF-8 the default
+% input encoding and allows @U to work.
\iftxinativeunicodecapable
\nativeunicodechardefsatu
\else
\utfeightchardefs
\fi
-
-% Make non-ASCII characters printable again for compatibility with
-% existing Texinfo documents that may use them, even without declaring a
-% document encoding.
-%
-\setnonasciicharscatcode \other
-
-
\message{formatting,}
\newdimen\defaultparindent \defaultparindent = 15pt
@@ -11254,6 +11221,7 @@ directory should work if nowhere else does.}
\pdfvorigin = 1 true in
\else
\ifx\XeTeXrevision\thisisundefined
+ \special{papersize=#8,#7}%
\else
\pdfpageheight #7\relax
\pdfpagewidth #8\relax
@@ -11291,7 +11259,6 @@ directory should work if nowhere else does.}
%
\lispnarrowing = 0.3in
\tolerance = 700
- \hfuzz = 1pt
\contentsrightmargin = 0pt
\defbodyindent = .5cm
}}
@@ -11309,7 +11276,6 @@ directory should work if nowhere else does.}
%
\lispnarrowing = 0.25in
\tolerance = 700
- \hfuzz = 1pt
\contentsrightmargin = 0pt
\defbodyindent = .4cm
}}
@@ -11335,7 +11301,6 @@ directory should work if nowhere else does.}
{297mm}{210mm}%
%
\tolerance = 700
- \hfuzz = 1pt
\contentsrightmargin = 0pt
\defbodyindent = 5mm
}}
@@ -11354,7 +11319,6 @@ directory should work if nowhere else does.}
%
\lispnarrowing = 0.2in
\tolerance = 800
- \hfuzz = 1.2pt
\contentsrightmargin = 0pt
\defbodyindent = 2mm
\tableindent = 12mm
@@ -11396,9 +11360,11 @@ directory should work if nowhere else does.}
%
\dimen0 = #1\relax
\advance\dimen0 by \voffset
+ \advance\dimen0 by 1in % reference point for DVI is 1 inch from top of page
%
\dimen2 = \hsize
\advance\dimen2 by \normaloffset
+ \advance\dimen2 by 1in % reference point is 1 inch from left edge of page
%
\internalpagesizes{#1}{\hsize}%
{\voffset}{\normaloffset}%
@@ -11410,6 +11376,9 @@ directory should work if nowhere else does.}
%
\letterpaper
+% Default value of \hfuzz, for suppressing warnings about overfull hboxes.
+\hfuzz = 1pt
+
\message{and turning on texinfo input format.}
@@ -11480,9 +11449,9 @@ directory should work if nowhere else does.}
\def\texinfochars{%
\let< = \activeless
\let> = \activegtr
- \let~ = \activetilde
+ \let~ = \activetilde
\let^ = \activehat
- \markupsetuplqdefault \markupsetuprqdefault
+ \markupsetuplqdefault \markupsetuprqdefault
\let\b = \strong
\let\i = \smartitalic
% in principle, all other definitions in \tex have to be undone too.
@@ -11500,11 +11469,9 @@ directory should work if nowhere else does.}
% \backslashcurfont outputs one backslash character in current font,
% as in \char`\\.
\global\chardef\backslashcurfont=`\\
-\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work
-% \realbackslash is an actual character `\' with catcode other, and
-% \doublebackslash is two of them (for the pdf outlines).
-{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
+% \realbackslash is an actual character `\' with catcode other.
+{\catcode`\\=\other @gdef@realbackslash{\}}
% In Texinfo, backslash is an active character; it prints the backslash
% in fixed width font.
@@ -11522,10 +11489,8 @@ directory should work if nowhere else does.}
@def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
@let@backslashchar = @ttbackslash % @backslashchar{} is for user documents.
-% \rawbackslash defines an active \ to do \backslashcurfont.
% \otherbackslash defines an active \ to be a literal `\' character with
-% catcode other. We switch back and forth between these.
-@gdef@rawbackslash{@let\=@backslashcurfont}
+% catcode other.
@gdef@otherbackslash{@let\=@realbackslash}
% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
@@ -11575,6 +11540,9 @@ directory should work if nowhere else does.}
@def ^^M{@let^^M@secondlinenl}%
% Definition for a newline in the main Texinfo file.
@gdef @secondlinenl{@fixbackslash}%
+ % In case the first line has a whole-line command on it
+ @let@originalparsearg@parsearg
+ @def@parsearg{@fixbackslash@originalparsearg}
}}
{@catcode`@^=7 @catcode`@^^M=13%
@@ -11594,7 +11562,8 @@ directory should work if nowhere else does.}
@ifx\@eatinput @let\ = @ttbackslash @fi
@catcode13=5 % regular end of line
@enableemergencynewline
- @let@c=@texinfoc
+ @let@c=@comment
+ @let@parsearg@originalparsearg
% Also turn back on active characters that might appear in the input
% file name, in case not using a pre-dumped format.
@catcode`+=@active
@@ -11639,7 +11608,7 @@ directory should work if nowhere else does.}
@markupsetuprqdefault
@c Local variables:
-@c eval: (add-hook 'write-file-hooks 'time-stamp)
+@c eval: (add-hook 'before-save-hook 'time-stamp)
@c page-delimiter: "^\\\\message\\|emacs-page"
@c time-stamp-start: "def\\\\texinfoversion{"
@c time-stamp-format: "%:y-%02m-%02d.%02H"
@@ -11648,7 +11617,4 @@ directory should work if nowhere else does.}
@c vim:sw=2:
-@ignore
- arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
-@end ignore
@enablebackslashhack
diff --git a/glob/Makefile.am b/build.cfg.in
index 93fd60a..80ce9b4 100644
--- a/glob/Makefile.am
+++ b/build.cfg.in
@@ -1,6 +1,7 @@
-# -*-Makefile-*-, or close enough
-# Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+# Configuration for building GNU Make in the absence of any 'make' program.
+# @configure_input@
+
+# Copyright (C) 1993-2020 Free Software Foundation, Inc.
# This file is part of GNU Make.
#
# GNU Make is free software; you can redistribute it and/or modify it under
@@ -16,15 +17,22 @@
# You should have received a copy of the GNU General Public License along with
# this program. If not, see <http://www.gnu.org/licenses/>.
-AUTOMAKE_OPTIONS = foreign
-
-# Only build the library when the system doesn't already have GNU glob.
-if USE_LOCAL_GLOB
- noinst_LIBRARIES = libglob.a
-endif
+# See Makefile.in for comments describing these variables.
-libglob_a_SOURCES = glob.c glob.h fnmatch.c fnmatch.h
+top_srcdir='@top_srcdir@'
+prefix='@prefix@'
+exec_prefix=`eval echo @exec_prefix@`
-EXTRA_DIST = COPYING.LIB Makefile.ami SCOPTIONS SMakefile \
- configure.bat
+CC='@CC@'
+AR='@AR@'
+CFLAGS='@CFLAGS@ @GUILE_CFLAGS@'
+CPPFLAGS='@CPPFLAGS@'
+DEFS='@DEFS@'
+ARFLAGS='@ARFLAGS@'
+LDFLAGS='@AM_LDFLAGS@ @LDFLAGS@'
+ALLOCA='@ALLOCA@'
+LOADLIBES='@LIBS@ @GUILE_LIBS@ @LIBINTL@'
+REMOTE='@REMOTE@'
+OBJEXT='@OBJEXT@'
+EXEEXT='@EXEEXT@'
diff --git a/build.sh b/build.sh
new file mode 100755
index 0000000..4c88b53
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,149 @@
+#!/bin/sh
+# Shell script to build GNU Make in the absence of any 'make' program.
+
+# Copyright (C) 1993-2020 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 3 of the License, or (at your option) any later
+# version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Get configure-generated values
+. ./build.cfg
+
+: ${OUTDIR:=.}
+OUTLIB="$OUTDIR/lib"
+
+# Directory to find libraries in for '-lXXX'.
+libdir=$exec_prefix/lib
+# Directory to search by default for included makefiles.
+includedir=$prefix/include
+
+localedir=$prefix/share/locale
+
+defines="-DLOCALEDIR=\"$localedir\" -DLIBDIR=\"$libdir\" -DINCLUDEDIR=\"$includedir\""
+
+# Look up a make variable value.
+# It can handle simple recursion where variables are separate words.
+# Print the value to stdout.
+get_mk_var ()
+{
+ file=$1
+ var=$2
+
+ val=
+ v=$(sed -e :a -e '/\\$/N; s/\\\n//; ta' "$file" | sed -n "s=^ *$var *\= *==p")
+ for w in $v; do
+ case $w in
+ (\$[\(\{]*[\)\}]) w=${w#\$[\(\{]}; w=$(get_mk_var "$file" "${w%[\)\}]}") ;;
+ esac
+ val="${val:+$val }$w"
+ done
+
+ printf '%s\n' "$val"
+}
+
+# Compile source files. Object files are put into $objs.
+compile ()
+{
+ objs=
+ for ofile in "$@"; do
+ file="${ofile%.$OBJEXT}.c"
+ echo "compiling $file..."
+ of="$OUTDIR/$ofile"
+ mkdir -p "${of%/*}"
+ $CC $cflags $CPPFLAGS $CFLAGS -c -o "$of" "$top_srcdir/$file"
+ objs="${objs:+$objs }$of"
+ done
+}
+
+# Use config.status to convert a .in file. Output file is put into $out.
+# $out will be empty if no conversion was needed.
+convert ()
+{
+ out=
+ base=$1
+ var="GENERATE_$(echo $base | tr 'a-z./+' A-Z__X)"
+
+ # Is this file disabled?
+ grep "${var}_FALSE\"]=\"\"" config.status >/dev/null && return
+
+ # Not disabled, so create it
+ in="$top_srcdir/lib/$(echo ${base%.*}.in.${base##*.} | tr / _)"
+ out="$OUTLIB/$base"
+ mkdir -p "${out%/*}"
+
+ # First perform the normal replacements, using config.status
+ sed -e 's|@GUARD_PREFIX@|GL|g' \
+ -e 's/@GNULIB_UNISTD_H_GETOPT@/0/g' \
+ "$in" > "${out}_"
+ ./config.status --file "${out}__:${out}_"
+ int="${out}__"
+
+ # Then see if there any files we need to include. Unfortunately there's no
+ # algorithmic conversion so we just have to hard-code it.
+ incls=$(sed -n 's/.*definitions* of \(_[^ $]*\).*/\1/p' "$in")
+
+ for inc in $incls; do
+ case $inc in
+ (_GL_FUNCDECL_RPL) fn=$(get_mk_var lib/Makefile CXXDEFS_H) ;;
+ (_GL_ARG_NONNULL) fn=$(get_mk_var lib/Makefile ARG_NONNULL_H) ;;
+ (_GL_WARN_ON_USE) fn=$(get_mk_var lib/Makefile WARN_ON_USE_H) ;;
+ (_Noreturn) fn=$(get_mk_var lib/Makefile _NORETURN_H) ;;
+ (*) echo "Unknown file replacement: $inc"; exit 1 ;;
+ esac
+
+ fn="$top_srcdir/lib/${fn##*/}"
+ [ -f "$fn" ] || { echo "Missing file: $fn"; exit 1; }
+
+ sed "/definitions* of $inc/r $fn" "$int" > "${int}_"
+ int=${int}_
+ done
+
+ # Done!
+ mv "$int" "$out"
+}
+
+# Get source files provided from gnulib and convert to object files
+LIBOBJS=
+for lo in $( (get_mk_var lib/Makefile libgnu_a_OBJECTS; get_mk_var lib/Makefile libgnu_a_LIBADD) | sed "s=\$[\(\{]OBJEXT[\)\}]=$OBJEXT=g"); do
+ LIBOBJS="${LIBOBJS:+$LIBOBJS }lib/$lo"
+done
+
+# Get object files from the Makefile
+OBJS=$(get_mk_var Makefile make_OBJECTS | sed "s=\$[\(\{]OBJEXT[\)\}]=$OBJEXT=g")
+
+# Exit as soon as any command fails.
+set -e
+
+# Generate gnulib header files that would normally be created by make
+for b in $(get_mk_var lib/Makefile BUILT_SOURCES); do
+ convert $b
+done
+
+# Build the gnulib library
+cflags="$DEFS -I$OUTLIB -Ilib -I$top_srcdir/lib -I$OUTDIR/src -Isrc -I$top_srcdir/src"
+compile $LIBOBJS
+
+echo "creating libgnu.a..."
+$AR $ARFLAGS "$OUTLIB"/libgnu.a $objs
+
+# Compile the source files into those objects.
+cflags="$DEFS $defines -I$OUTDIR/src -Isrc -I$top_srcdir/src -I$OUTLIB -Ilib -I$top_srcdir/lib"
+compile $OBJS
+
+# Link all the objects together.
+echo "linking make..."
+$CC $CFLAGS $LDFLAGS -L"$OUTLIB" $objs -lgnu $LOADLIBES -o "$OUTDIR/makenew$EXEEXT"
+mv -f "$OUTDIR/makenew$EXEEXT" "$OUTDIR/make$EXEEXT"
+
+echo done.
diff --git a/build.sh.in b/build.sh.in
deleted file mode 100755
index 1f24fed..0000000
--- a/build.sh.in
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/bin/sh
-# Shell script to build GNU Make in the absence of any 'make' program.
-# @configure_input@
-
-# Copyright (C) 1993-2016 Free Software Foundation, Inc.
-# This file is part of GNU Make.
-#
-# GNU Make is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 3 of the License, or (at your option) any later
-# version.
-#
-# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program. If not, see <http://www.gnu.org/licenses/>.
-
-# See Makefile.in for comments describing these variables.
-
-srcdir='@srcdir@'
-CC='@CC@'
-CFLAGS='@CFLAGS@ @GUILE_CFLAGS@'
-CPPFLAGS='@CPPFLAGS@'
-LDFLAGS='@AM_LDFLAGS@ @LDFLAGS@'
-ALLOCA='@ALLOCA@'
-LOADLIBES='@LIBS@ @GUILE_LIBS@ @LIBINTL@'
-eval extras=\'@LIBOBJS@\'
-REMOTE='@REMOTE@'
-GLOBLIB='@GLOBLIB@'
-PATH_SEPARATOR='@PATH_SEPARATOR@'
-OBJEXT='@OBJEXT@'
-EXEEXT='@EXEEXT@'
-
-# Common prefix for machine-independent installed files.
-prefix='@prefix@'
-# Common prefix for machine-dependent installed files.
-exec_prefix=`eval echo @exec_prefix@`
-# Directory to find libraries in for '-lXXX'.
-libdir=${exec_prefix}/lib
-# Directory to search by default for included makefiles.
-includedir=${prefix}/include
-
-localedir=${prefix}/share/locale
-aliaspath=${localedir}${PATH_SEPARATOR}.
-
-defines="-DLOCALEDIR=\"${localedir}\" -DLIBDIR=\"${libdir}\" -DINCLUDEDIR=\"${includedir}\""' @DEFS@'
-
-# Exit as soon as any command fails.
-set -e
-
-# These are all the objects we need to link together.
-objs="ar.${OBJEXT} arscan.${OBJEXT} commands.${OBJEXT} default.${OBJEXT} dir.${OBJEXT} expand.${OBJEXT} file.${OBJEXT} function.${OBJEXT} getopt.${OBJEXT} getopt1.${OBJEXT} guile.${OBJEXT} implicit.${OBJEXT} job.${OBJEXT} load.${OBJEXT} loadapi.${OBJEXT} main.${OBJEXT} misc.${OBJEXT} posixos.${OBJEXT} output.${OBJEXT} read.${OBJEXT} remake.${OBJEXT} rule.${OBJEXT} signame.${OBJEXT} strcache.${OBJEXT} variable.${OBJEXT} version.${OBJEXT} vpath.${OBJEXT} hash.${OBJEXT} remote-${REMOTE}.${OBJEXT} ${extras} ${ALLOCA}"
-
-if [ x"$GLOBLIB" != x ]; then
- objs="$objs glob/fnmatch.${OBJEXT} glob/glob.${OBJEXT}"
- globinc=-I${srcdir}/glob
-fi
-
-# Compile the source files into those objects.
-for file in `echo ${objs} | sed 's/\.'${OBJEXT}'/.c/g'`; do
- echo compiling ${file}...
- $CC $defines $CPPFLAGS $CFLAGS \
- -c -I. -I${srcdir} ${globinc} ${srcdir}/$file
-done
-
-# The object files were actually all put in the current directory.
-# Remove the source directory names from the list.
-srcobjs="$objs"
-objs=
-for obj in $srcobjs; do
- objs="$objs `basename $obj`"
-done
-
-# Link all the objects together.
-echo linking make...
-$CC $CFLAGS $LDFLAGS $objs $LOADLIBES -o makenew${EXEEXT}
-echo done
-mv -f makenew${EXEEXT} make${EXEEXT}
diff --git a/build_w32.bat b/build_w32.bat
index 59e068b..553e9d9 100755
--- a/build_w32.bat
+++ b/build_w32.bat
@@ -1,80 +1,187 @@
@echo off
-rem Copyright (C) 1996-2016 Free Software Foundation, Inc.
-rem This file is part of GNU Make.
-rem
-rem GNU Make is free software; you can redistribute it and/or modify it under
-rem the terms of the GNU General Public License as published by the Free
-rem Software Foundation; either version 3 of the License, or (at your option)
-rem any later version.
-rem
-rem GNU Make is distributed in the hope that it will be useful, but WITHOUT
-rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for.
-rem more details.
-rem
-rem You should have received a copy of the GNU General Public License along
-rem with this program. If not, see <http://www.gnu.org/licenses/>.
+:: Copyright (C) 1996-2020 Free Software Foundation, Inc.
+:: This file is part of GNU Make.
+::
+:: GNU Make is free software; you can redistribute it and/or modify it under
+:: the terms of the GNU General Public License as published by the Free
+:: Software Foundation; either version 3 of the License, or (at your option)
+:: any later version.
+::
+:: GNU Make is distributed in the hope that it will be useful, but WITHOUT
+:: ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+:: FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for.
+:: more details.
+::
+:: You should have received a copy of the GNU General Public License along
+:: with this program. If not, see <http://www.gnu.org/licenses/>.
+
+setlocal
+if not "%RECURSEME%"=="%~0" (
+ set "RECURSEME=%~0"
+ %ComSpec% /s /c ""%~0" %*"
+ goto :EOF
+)
call :Reset
if "%1" == "-h" goto Usage
if "%1" == "--help" goto Usage
+echo.
+echo Creating GNU Make for Windows 9X/NT/2K/XP/Vista/7/8/10
+echo.
+
set MAKE=gnumake
set GUILE=Y
-set COMPILER=msvc
+set COMPILER=cl.exe
+set O=obj
+set ARCH=x64
+set DEBUG=N
+
+if exist maintMakefile (
+ set MAINT=Y
+) else (
+ set MAINT=N
+)
:ParseSW
if "%1" == "--debug" goto SetDebug
if "%1" == "--without-guile" goto NoGuile
+if "%1" == "--x86" goto Set32Bit
if "%1" == "gcc" goto SetCC
if "%1" == "" goto DoneSW
+goto Usage
:SetDebug
set DEBUG=Y
+echo - Building without compiler optimizations
shift
goto ParseSW
:NoGuile
set GUILE=N
-echo Building without Guile
+echo - Building without Guile
+shift
+goto ParseSW
+
+:Set32Bit
+set ARCH=x86
+echo - Building 32bit GNU Make
shift
goto ParseSW
:SetCC
set COMPILER=gcc
-echo Building with GCC
+set O=o
+echo - Building with GCC
shift
goto ParseSW
-rem Build with Guile is supported only on NT and later versions
:DoneSW
-echo.
-echo Creating GNU Make for Windows 9X/NT/2K/XP/Vista/7/8
-if "%DEBUG%" == "Y" echo Building without compiler optimizations
+if "%MAINT%" == "Y" echo - Enabling maintainer mode
+
+if "%COMPILER%" == "gcc" goto FindGcc
+
+:: Find a compiler. Visual Studio requires a lot of effort to locate :-/.
+%COMPILER% >nul 2>&1
+if not ERRORLEVEL 1 goto FoundMSVC
+
+:: Visual Studio 17 and above provides the "vswhere" tool
+call :FindVswhere
+if ERRORLEVEL 1 goto LegacyVS
+
+for /f "tokens=* usebackq" %%i in (`%VSWHERE% -latest -property installationPath`) do (
+ set InstallPath=%%i
+)
+set "VSVARS=%InstallPath%\VC\Auxiliary\Build\vcvarsall.bat"
+call :CheckMSVC
+if not ERRORLEVEL 1 goto FoundMSVC
+
+:: No "vswhere" or it can't find a compiler. Go old-school.
+:LegacyVS
+set "VSVARS=%VS150COMNTOOLS%\..\..\VC\vcvarsall.bat"
+call :CheckMSVC
+if not ERRORLEVEL 1 goto FoundMSVC
+
+set "VSVARS=%VS140COMNTOOLS%\..\..\VC\vcvarsall.bat"
+call :CheckMSVC
+if not ERRORLEVEL 1 goto FoundMSVC
+
+set "VSVARS=%VS120COMNTOOLS%\..\..\VC\vcvarsall.bat"
+call :CheckMSVC
+if not ERRORLEVEL 1 goto FoundMSVC
+
+set "VSVARS=%VS110COMNTOOLS%\..\..\VC\vcvarsall.bat"
+call :CheckMSVC
+if not ERRORLEVEL 1 goto FoundMSVC
+
+set "VSVARS=%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat"
+call :CheckMSVC
+if not ERRORLEVEL 1 goto FoundMSVC
+
+set "VSVARS=%VS90COMNTOOLS%\..\..\VC\vcvarsall.bat"
+call :CheckMSVC
+if not ERRORLEVEL 1 goto FoundMSVC
+
+set "VSVARS=%VS80COMNTOOLS%\..\..\VC\vcvarsall.bat"
+call :CheckMSVC
+if not ERRORLEVEL 1 goto FoundMSVC
-if "%COMPILER%" == "gcc" goto GccBuild
+set "VSVARS=%VS71COMNTOOLS%\..\..\VC\vcvarsall.bat"
+call :CheckMSVC
+if not ERRORLEVEL 1 goto FoundMSVC
+set "VSVARS=%VS70COMNTOOLS%\..\..\VC\vcvarsall.bat"
+call :CheckMSVC
+if not ERRORLEVEL 1 goto FoundMSVC
+
+set "VSVARS=%V6TOOLS%\VC98\Bin\vcvars32.bat"
+call :CheckMSVC
+if not ERRORLEVEL 1 goto FoundMSVC
+
+set "VSVARS=%V6TOOLS%\VC97\Bin\vcvars32.bat"
+call :CheckMSVC
+if not ERRORLEVEL 1 goto FoundMSVC
+
+set "VSVARS=%V5TOOLS%\VC\Bin\vcvars32.bat"
+call :CheckMSVC
+if not ERRORLEVEL 1 goto FoundMSVC
+
+:: We did not find anything--fail
+echo No MSVC compiler available.
+echo Please run vcvarsall.bat and/or configure your Path.
+exit 1
+
+:FoundMSVC
set OUTDIR=.\WinRel
+set LNKOUT=./WinRel
set "OPTS=/O2 /D NDEBUG"
set LINKOPTS=
if "%DEBUG%" == "Y" set OUTDIR=.\WinDebug
+if "%DEBUG%" == "Y" set LNKOUT=./WinDebug
if "%DEBUG%" == "Y" set "OPTS=/Zi /Od /D _DEBUG"
if "%DEBUG%" == "Y" set LINKOPTS=/DEBUG
-call :Build
-goto Done
+if "%MAINT%" == "Y" set "OPTS=%OPTS% /D MAKE_MAINTAINER_MODE"
+:: Show the compiler version that we found
+:: Unfortunately this also shows a "usage" note; I can't find anything better.
+echo.
+%COMPILER%
+goto Build
-:GccBuild
+:FindGcc
set OUTDIR=.\GccRel
+set LNKOUT=./GccRel
set OPTS=-O2
if "%DEBUG%" == "Y" set OPTS=-O0
if "%DEBUG%" == "Y" set OUTDIR=.\GccDebug
-call :Build
-goto Done
-
-:Done
-call :Reset
-goto :EOF
+if "%DEBUG%" == "Y" set LNKOUT=./GccDebug
+if "%MAINT%" == "Y" set "OPTS=%OPTS% -DMAKE_MAINTAINER_MODE"
+:: Show the compiler version that we found
+echo.
+%COMPILER% --version
+if not ERRORLEVEL 1 goto Build
+echo No %COMPILER% found.
+exit 1
:Build
:: Clean the directory if it exists
@@ -82,114 +189,138 @@ if exist %OUTDIR%\nul rmdir /S /Q %OUTDIR%
:: Recreate it
mkdir %OUTDIR%
-mkdir %OUTDIR%\glob
-mkdir %OUTDIR%\w32
-mkdir %OUTDIR%\w32\compat
-mkdir %OUTDIR%\w32\subproc
+mkdir %OUTDIR%\src
+mkdir %OUTDIR%\src\w32
+mkdir %OUTDIR%\src\w32\compat
+mkdir %OUTDIR%\src\w32\subproc
+mkdir %OUTDIR%\lib
if "%GUILE%" == "Y" call :ChkGuile
echo.
echo Compiling %OUTDIR% version
-if exist config.h.W32.template call :ConfigSCM
-copy config.h.W32 %OUTDIR%\config.h
-
-call :Compile ar
-call :Compile arscan
-call :Compile commands
-call :Compile default
-call :Compile dir
-call :Compile expand
-call :Compile file
-call :Compile function
-call :Compile getloadavg
-call :Compile getopt
-call :Compile getopt1
-call :Compile glob\fnmatch
-call :Compile glob\glob
-call :Compile guile GUILE
-call :Compile hash
-call :Compile implicit
-call :Compile job
-call :Compile load
-call :Compile loadapi
-call :Compile main GUILE
-call :Compile misc
-call :Compile output
-call :Compile read
-call :Compile remake
-call :Compile remote-stub
-call :Compile rule
-call :Compile signame
-call :Compile strcache
-call :Compile variable
-call :Compile version
-call :Compile vpath
-call :Compile w32\compat\posixfcn
-call :Compile w32\pathstuff
-call :Compile w32\subproc\misc
-call :Compile w32\subproc\sub_proc
-call :Compile w32\subproc\w32err
-call :Compile w32\w32os
-
-if not "%COMPILER%" == "gcc" call :Compile w32\compat\dirent
+if exist src\config.h.W32.template call :ConfigSCM
+copy src\config.h.W32 %OUTDIR%\src\config.h
+
+copy lib\glob.in.h %OUTDIR%\lib\glob.h
+copy lib\fnmatch.in.h %OUTDIR%\lib\fnmatch.h
+
+if exist %OUTDIR%\link.sc del %OUTDIR%\link.sc
+
+call :Compile src/ar
+call :Compile src/arscan
+call :Compile src/commands
+call :Compile src/default
+call :Compile src/dir
+call :Compile src/expand
+call :Compile src/file
+call :Compile src/function
+call :Compile src/getopt
+call :Compile src/getopt1
+call :Compile src/guile GUILE
+call :Compile src/hash
+call :Compile src/implicit
+call :Compile src/job
+call :Compile src/load
+call :Compile src/loadapi
+call :Compile src/main GUILE
+call :Compile src/misc
+call :Compile src/output
+call :Compile src/read
+call :Compile src/remake
+call :Compile src/remote-stub
+call :Compile src/rule
+call :Compile src/signame
+call :Compile src/strcache
+call :Compile src/variable
+call :Compile src/version
+call :Compile src/vpath
+call :Compile src/w32/pathstuff
+call :Compile src/w32/w32os
+call :Compile src/w32/compat/posixfcn
+call :Compile src/w32/subproc/misc
+call :Compile src/w32/subproc/sub_proc
+call :Compile src/w32/subproc/w32err
+call :Compile lib/fnmatch
+call :Compile lib/glob
+call :Compile lib/getloadavg
+
+if not "%COMPILER%" == "gcc" call :Compile src\w32\compat\dirent
call :Link
echo.
-if not exist %OUTDIR%\%MAKE%.exe echo %OUTDIR% build FAILED!
-if exist %OUTDIR%\%MAKE%.exe echo %OUTDIR% build succeeded.
+if exist %OUTDIR%\%MAKE%.exe goto Success
+echo %OUTDIR% build FAILED!
+exit 1
+
+:Success
+echo %OUTDIR% build succeeded.
+if exist Basic.mk copy /Y Basic.mk Makefile
+if not exist tests\config-flags.pm copy /Y tests\config-flags.pm.W32 tests\config-flags.pm
+call :Reset
goto :EOF
+::
+:: Subroutines
+::
+
:Compile
+echo %LNKOUT%/%1.%O% >>%OUTDIR%\link.sc
set EXTRAS=
if "%2" == "GUILE" set "EXTRAS=%GUILECFLAGS%"
+if exist "%OUTDIR%\%1.%O%" del "%OUTDIR%\%1.%O%"
if "%COMPILER%" == "gcc" goto GccCompile
:: MSVC Compile
echo on
-cl.exe /nologo /MT /W4 /EHsc %OPTS% /I %OUTDIR% /I . /I glob /I w32/include /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR%OUTDIR% /Fp%OUTDIR%\%MAKE%.pch /Fo%OUTDIR%\%1.obj /Fd%OUTDIR%\%MAKE%.pdb %EXTRAS% /c %1.c
+%COMPILER% /nologo /MT /W4 /EHsc %OPTS% /I %OUTDIR%/src /I src /I %OUTDIR%/lib /I lib /I src/w32/include /D WINDOWS32 /D WIN32 /D _CONSOLE /D HAVE_CONFIG_H /FR%OUTDIR% /Fp%OUTDIR%\%MAKE%.pch /Fo%OUTDIR%\%1.%O% /Fd%OUTDIR%\%MAKE%.pdb %EXTRAS% /c %1.c
@echo off
-echo %OUTDIR%\%1.obj >>%OUTDIR%\link.sc
-goto :EOF
+goto CompileDone
:GccCompile
:: GCC Compile
echo on
-gcc -mthreads -Wall -std=gnu99 -gdwarf-2 -g3 %OPTS% -I%OUTDIR% -I. -I./glob -I./w32/include -DWINDOWS32 -DHAVE_CONFIG_H %EXTRAS% -o %OUTDIR%\%1.o -c %1.c
+%COMPILER% -mthreads -Wall -std=gnu99 -gdwarf-2 -g3 %OPTS% -I%OUTDIR%/src -I./src -I%OUTDIR%/lib -I./lib -I./src/w32/include -DWINDOWS32 -DHAVE_CONFIG_H %EXTRAS% -o %OUTDIR%/%1.%O% -c %1.c
@echo off
+
+:CompileDone
+if not exist "%OUTDIR%\%1.%O%" exit 1
goto :EOF
:Link
-echo Linking %OUTDIR%/%MAKE%.exe
+echo.
+echo Linking %LNKOUT%/%MAKE%.exe
if "%COMPILER%" == "gcc" goto GccLink
:: MSVC Link
echo %GUILELIBS% kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib >>%OUTDIR%\link.sc
echo on
-link.exe /NOLOGO /SUBSYSTEM:console /PDB:%OUTDIR%\%MAKE%.pdb %LINKOPTS% /OUT:%OUTDIR%\%MAKE%.exe @%OUTDIR%\link.sc
+link.exe /NOLOGO /SUBSYSTEM:console /PDB:%LNKOUT%\%MAKE%.pdb %LINKOPTS% /OUT:%LNKOUT%\%MAKE%.exe @%LNKOUT%\link.sc
@echo off
goto :EOF
:GccLink
:: GCC Link
echo on
-gcc -mthreads -gdwarf-2 -g3 -o %OUTDIR%\%MAKE%.exe %OUTDIR%\variable.o %OUTDIR%\rule.o %OUTDIR%\remote-stub.o %OUTDIR%\commands.o %OUTDIR%\file.o %OUTDIR%\getloadavg.o %OUTDIR%\default.o %OUTDIR%\signame.o %OUTDIR%\expand.o %OUTDIR%\dir.o %OUTDIR%\main.o %OUTDIR%\getopt1.o %OUTDIR%\guile.o %OUTDIR%\job.o %OUTDIR%\output.o %OUTDIR%\read.o %OUTDIR%\version.o %OUTDIR%\getopt.o %OUTDIR%\arscan.o %OUTDIR%\remake.o %OUTDIR%\misc.o %OUTDIR%\hash.o %OUTDIR%\strcache.o %OUTDIR%\ar.o %OUTDIR%\function.o %OUTDIR%\vpath.o %OUTDIR%\implicit.o %OUTDIR%\loadapi.o %OUTDIR%\load.o %OUTDIR%\glob\glob.o %OUTDIR%\glob\fnmatch.o %OUTDIR%\w32\pathstuff.o %OUTDIR%\w32\compat\posixfcn.o %OUTDIR%\w32\w32os.o %OUTDIR%\w32\subproc\misc.o %OUTDIR%\w32\subproc\sub_proc.o %OUTDIR%\w32\subproc\w32err.o %GUILELIBS% -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 -Wl,--out-implib=%OUTDIR%\libgnumake-1.dll.a
+echo %GUILELIBS% -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 >>%OUTDIR%\link.sc
+%COMPILER% -mthreads -gdwarf-2 -g3 %OPTS% -o %LNKOUT%/%MAKE%.exe @%LNKOUT%/link.sc -Wl,--out-implib=%LNKOUT%/libgnumake-1.dll.a
@echo off
goto :EOF
:ConfigSCM
echo Generating config from SCM templates
-sed -n "s/^AC_INIT(\[GNU make\],\[\([^]]\+\)\].*/s,%%VERSION%%,\1,g/p" configure.ac > %OUTDIR%\config.h.W32.sed
-echo s,%%PACKAGE%%,make,g >> %OUTDIR%\config.h.W32.sed
-sed -f %OUTDIR%\config.h.W32.sed config.h.W32.template > config.h.W32
-echo static const char *const GUILE_module_defn = ^" \> gmk-default.h
-sed -e "s/;.*//" -e "/^[ \t]*$/d" -e "s/\"/\\\\\"/g" -e "s/$/ \\\/" gmk-default.scm >> gmk-default.h
-echo ^";>> gmk-default.h
+sed -n "s/^AC_INIT(\[GNU make\],\[\([^]]\+\)\].*/s,%%VERSION%%,\1,g/p" configure.ac > %OUTDIR%\src\config.h.W32.sed
+echo s,%%PACKAGE%%,make,g >> %OUTDIR%\src\config.h.W32.sed
+sed -f %OUTDIR%\src\config.h.W32.sed src\config.h.W32.template > src\config.h.W32
+echo static const char *const GUILE_module_defn = ^" \ > src\gmk-default.h
+sed -e "s/;.*//" -e "/^[ \t]*$/d" -e "s/\"/\\\\\"/g" -e "s/$/ \\\/" src\gmk-default.scm >> src\gmk-default.h
+echo ^";>> src\gmk-default.h
goto :EOF
:ChkGuile
+:: Build with Guile is supported only on NT and later versions
if not "%OS%" == "Windows_NT" goto NoGuile
pkg-config --help > %OUTDIR%\guile.tmp 2> NUL
if ERRORLEVEL 1 goto NoPkgCfg
@@ -213,29 +344,47 @@ if not ERRORLEVEL 1 set /P GUILELIBS= < %OUTDIR%\guile.tmp
if not "%GUILECFLAGS%" == "" goto GuileDone
-echo No Guile found, building without Guile
+echo - No Guile found, building without Guile
goto GuileDone
:NoPkgCfg
-echo pkg-config not found, building without Guile
+echo - pkg-config not found, building without Guile
:GuileDone
if "%GUILECFLAGS%" == "" goto :EOF
-echo Guile found, building with Guile
+echo - Guile found: building with Guile
set "GUILECFLAGS=%GUILECFLAGS% -DHAVE_GUILE"
goto :EOF
+:FindVswhere
+set VSWHERE=vswhere
+%VSWHERE% -help >nul 2>&1
+if not ERRORLEVEL 1 exit /b 0
+set "VSWHERE=C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere"
+%VSWHERE% -help >nul 2>&1
+if ERRORLEVEL 1 exit /b 1
+goto :EOF
+
+:CheckMSVC
+if not exist "%VSVARS%" exit /b 1
+call "%VSVARS%" %ARCH%
+if ERRORLEVEL 1 exit /b 1
+%COMPILER% >nul 2>&1
+if ERRORLEVEL 1 exit /b 1
+goto :EOF
+
:Usage
echo Usage: %0 [options] [gcc]
echo Options:
-echo. --debug For GCC only, make a debug build
-echo. (MSVC build always makes both debug and release)
echo. --without-guile Do not compile Guile support even if found
+echo. --debug Make a Debug build--default is Release
+echo. --x86 Make a 32bit binary--default is 64bit
echo. --help Display these instructions and exit
goto :EOF
:Reset
+set ARCH=
set COMPILER=
set DEBUG=
set GUILE=
@@ -244,7 +393,10 @@ set GUILELIBS=
set LINKOPTS=
set MAKE=
set NOGUILE=
+set O=
set OPTS=
set OUTDIR=
+set LNKOUT=
set PKGMSC=
+set VSVARS=
goto :EOF
diff --git a/builddos.bat b/builddos.bat
new file mode 100644
index 0000000..9cecabe
--- /dev/null
+++ b/builddos.bat
@@ -0,0 +1,95 @@
+@echo off
+rem Copyright (C) 1998-2020 Free Software Foundation, Inc.
+rem This file is part of GNU Make.
+rem
+rem GNU Make is free software; you can redistribute it and/or modify it under
+rem the terms of the GNU General Public License as published by the Free
+rem Software Foundation; either version 3 of the License, or (at your option)
+rem any later version.
+rem
+rem GNU Make is distributed in the hope that it will be useful, but WITHOUT
+rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for.
+rem more details.
+rem
+rem You should have received a copy of the GNU General Public License along
+rem with this program. If not, see <http://www.gnu.org/licenses/>.
+
+echo Building Make for MSDOS with DJGPP
+
+rem The SmallEnv trick protects against too small environment block,
+rem in which case the values will be truncated and the whole thing
+rem goes awry. COMMAND.COM will say "Out of environment space", but
+rem many people don't care, so we force them to care by refusing to go.
+
+rem Where is the srcdir?
+set XSRC=.
+if not "%XSRC%"=="." goto SmallEnv
+if "%1%"=="" goto SrcDone
+if "%1%"=="." goto SrcDone
+set XSRC=%1
+
+if not "%XSRC%"=="%1" goto SmallEnv
+
+:SrcDone
+
+if not exist src mkdir src
+if not exist lib mkdir lib
+
+copy /Y %XSRC%\src\configh.dos .\src\config.h
+
+copy /Y %XSRC%\lib\glob.in.h .\lib\glob.h
+copy /Y %XSRC%\lib\fnmatch.in.h .\lib\fnmatch.h
+
+rem Echo ON so they will see what is going on.
+@echo on
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/commands.c -o commands.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/output.c -o output.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/job.c -o job.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/dir.c -o dir.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/file.c -o file.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/misc.c -o misc.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/main.c -o main.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -DINCLUDEDIR=\"c:/djgpp/include\" -O2 -g %XSRC%/src/read.c -o read.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -DLIBDIR=\"c:/djgpp/lib\" -O2 -g %XSRC%/src/remake.c -o remake.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/rule.c -o rule.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/implicit.c -o implicit.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/default.c -o default.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/variable.c -o variable.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/expand.c -o eyxpand.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/function.c -o function.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/vpath.c -o vpath.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/hash.c -o hash.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/strcache.c -o strcache.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/version.c -o version.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/ar.c -o ar.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/arscan.c -o arscan.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/signame.c -o signame.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/remote-stub.c -o remote-stub.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/getopt.c -o getopt.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/src/getopt1.c -o getopt1.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/lib/glob.c -o lib/glob.o
+gcc -c -I./src -I%XSRC%/src -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/lib/fnmatch.c -o lib/fnmatch.o
+@echo off
+echo commands.o > respf.$$$
+for %%f in (job output dir file misc main read remake rule implicit default variable) do echo %%f.o >> respf.$$$
+for %%f in (expand function vpath hash strcache version ar arscan signame remote-stub getopt getopt1) do echo %%f.o >> respf.$$$
+for %%f in (lib\glob lib\fnmatch) do echo %%f.o >> respf.$$$
+rem gcc -c -I./src -I%XSRC% -I./lib -I%XSRC%/lib -DHAVE_CONFIG_H -O2 -g %XSRC%/guile.c -o guile.o
+rem echo guile.o >> respf.$$$
+@echo Linking...
+@echo on
+gcc -o make.exe @respf.$$$
+@echo off
+if not exist make.exe echo Make.exe build failed...
+if exist make.exe echo make.exe is now built!
+if exist make.exe del respf.$$$
+if exist make.exe copy /Y Basic.mk Makefile
+goto End
+
+:SmallEnv
+echo Your environment is too small. Please enlarge it and run me again.
+
+:End
+set XRSC=
+@echo on
diff --git a/config.h.in b/config.h.in
deleted file mode 100644
index 4c26fb5..0000000
--- a/config.h.in
+++ /dev/null
@@ -1,506 +0,0 @@
-/* config.h.in. Generated from configure.ac by autoheader. */
-
-/* Define to 1 if the `closedir' function returns void instead of `int'. */
-#undef CLOSEDIR_VOID
-
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
- systems. This function is required for `alloca.c' support on those systems.
- */
-#undef CRAY_STACKSEG_END
-
-/* Define to 1 if using `alloca.c'. */
-#undef C_ALLOCA
-
-/* Define to 1 if using `getloadavg.c'. */
-#undef C_GETLOADAVG
-
-/* Define to 1 for DGUX with <sys/dg_sys_info.h>. */
-#undef DGUX
-
-/* Define to 1 if translation of program messages to the user's native
- language is requested. */
-#undef ENABLE_NLS
-
-/* Use high resolution file timestamps if nonzero. */
-#undef FILE_TIMESTAMP_HI_RES
-
-/* Define to 1 if the `getloadavg' function needs to be run setuid or setgid.
- */
-#undef GETLOADAVG_PRIVILEGED
-
-/* Define to 1 if you have `alloca', as a function or macro. */
-#undef HAVE_ALLOCA
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
- */
-#undef HAVE_ALLOCA_H
-
-/* Define to 1 if you have the `atexit' function. */
-#undef HAVE_ATEXIT
-
-/* Use case insensitive file names */
-#undef HAVE_CASE_INSENSITIVE_FS
-
-/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the
- CoreFoundation framework. */
-#undef HAVE_CFLOCALECOPYCURRENT
-
-/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in
- the CoreFoundation framework. */
-#undef HAVE_CFPREFERENCESCOPYAPPVALUE
-
-/* Define to 1 if you have the clock_gettime function. */
-#undef HAVE_CLOCK_GETTIME
-
-/* Define if the GNU dcgettext() function is already present or preinstalled.
- */
-#undef HAVE_DCGETTEXT
-
-/* Define to 1 if you have the declaration of `bsd_signal', and to 0 if you
- don't. */
-#undef HAVE_DECL_BSD_SIGNAL
-
-/* Define to 1 if you have the declaration of `dlerror', and to 0 if you
- don't. */
-#undef HAVE_DECL_DLERROR
-
-/* Define to 1 if you have the declaration of `dlopen', and to 0 if you don't.
- */
-#undef HAVE_DECL_DLOPEN
-
-/* Define to 1 if you have the declaration of `dlsym', and to 0 if you don't.
- */
-#undef HAVE_DECL_DLSYM
-
-/* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you
- don't. */
-#undef HAVE_DECL_SYS_SIGLIST
-
-/* Define to 1 if you have the declaration of `_sys_siglist', and to 0 if you
- don't. */
-#undef HAVE_DECL__SYS_SIGLIST
-
-/* Define to 1 if you have the declaration of `__sys_siglist', and to 0 if you
- don't. */
-#undef HAVE_DECL___SYS_SIGLIST
-
-/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
- */
-#undef HAVE_DIRENT_H
-
-/* Use platform specific coding */
-#undef HAVE_DOS_PATHS
-
-/* Define to 1 if you have the `dup' function. */
-#undef HAVE_DUP
-
-/* Define to 1 if you have the `dup2' function. */
-#undef HAVE_DUP2
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define to 1 if you have the `fdopen' function. */
-#undef HAVE_FDOPEN
-
-/* Define to 1 if you have the `fileno' function. */
-#undef HAVE_FILENO
-
-/* Define to 1 if you have the `fork' function. */
-#undef HAVE_FORK
-
-/* Define to 1 if you have the `getcwd' function. */
-#undef HAVE_GETCWD
-
-/* Define to 1 if you have the `getgroups' function. */
-#undef HAVE_GETGROUPS
-
-/* Define to 1 if you have the `gethostbyname' function. */
-#undef HAVE_GETHOSTBYNAME
-
-/* Define to 1 if you have the `gethostname' function. */
-#undef HAVE_GETHOSTNAME
-
-/* Define to 1 if you have the `getloadavg' function. */
-#undef HAVE_GETLOADAVG
-
-/* Define to 1 if you have the `getrlimit' function. */
-#undef HAVE_GETRLIMIT
-
-/* Define if the GNU gettext() function is already present or preinstalled. */
-#undef HAVE_GETTEXT
-
-/* Define to 1 if you have a standard gettimeofday function */
-#undef HAVE_GETTIMEOFDAY
-
-/* Embed GNU Guile support */
-#undef HAVE_GUILE
-
-/* Define if you have the iconv() function and it works. */
-#undef HAVE_ICONV
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the `isatty' function. */
-#undef HAVE_ISATTY
-
-/* Define to 1 if you have the `dgc' library (-ldgc). */
-#undef HAVE_LIBDGC
-
-/* Define to 1 if you have the `kstat' library (-lkstat). */
-#undef HAVE_LIBKSTAT
-
-/* Define to 1 if you have the <limits.h> header file. */
-#undef HAVE_LIMITS_H
-
-/* Define to 1 if you have the <locale.h> header file. */
-#undef HAVE_LOCALE_H
-
-/* Define to 1 if you have the `lstat' function. */
-#undef HAVE_LSTAT
-
-/* Define to 1 if you have the <mach/mach.h> header file. */
-#undef HAVE_MACH_MACH_H
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the `mkstemp' function. */
-#undef HAVE_MKSTEMP
-
-/* Define to 1 if you have the `mktemp' function. */
-#undef HAVE_MKTEMP
-
-/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
-#undef HAVE_NDIR_H
-
-/* Define to 1 if you have the <nlist.h> header file. */
-#undef HAVE_NLIST_H
-
-/* Define to 1 if you have the `pipe' function. */
-#undef HAVE_PIPE
-
-/* Define to 1 if you have the `pselect' function. */
-#undef HAVE_PSELECT
-
-/* Define to 1 if you have the `pstat_getdynamic' function. */
-#undef HAVE_PSTAT_GETDYNAMIC
-
-/* Define to 1 if you have the `readlink' function. */
-#undef HAVE_READLINK
-
-/* Define to 1 if you have the `realpath' function. */
-#undef HAVE_REALPATH
-
-/* Define to 1 if <signal.h> defines the SA_RESTART constant. */
-#undef HAVE_SA_RESTART
-
-/* Define to 1 if you have the `setegid' function. */
-#undef HAVE_SETEGID
-
-/* Define to 1 if you have the `seteuid' function. */
-#undef HAVE_SETEUID
-
-/* Define to 1 if you have the `setlinebuf' function. */
-#undef HAVE_SETLINEBUF
-
-/* Define to 1 if you have the `setlocale' function. */
-#undef HAVE_SETLOCALE
-
-/* Define to 1 if you have the `setregid' function. */
-#undef HAVE_SETREGID
-
-/* Define to 1 if you have the `setreuid' function. */
-#undef HAVE_SETREUID
-
-/* Define to 1 if you have the `setrlimit' function. */
-#undef HAVE_SETRLIMIT
-
-/* Define to 1 if you have the `setvbuf' function. */
-#undef HAVE_SETVBUF
-
-/* Define to 1 if you have the `sigaction' function. */
-#undef HAVE_SIGACTION
-
-/* Define to 1 if you have the `sigsetmask' function. */
-#undef HAVE_SIGSETMASK
-
-/* Define to 1 if you have the `socket' function. */
-#undef HAVE_SOCKET
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the `strcasecmp' function. */
-#undef HAVE_STRCASECMP
-
-/* Define to 1 if you have the `strcmpi' function. */
-#undef HAVE_STRCMPI
-
-/* Define to 1 if you have the `strcoll' function and it is properly defined.
- */
-#undef HAVE_STRCOLL
-
-/* Define to 1 if you have the `strdup' function. */
-#undef HAVE_STRDUP
-
-/* Define to 1 if you have the `strerror' function. */
-#undef HAVE_STRERROR
-
-/* Define to 1 if you have the `stricmp' function. */
-#undef HAVE_STRICMP
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the `strncasecmp' function. */
-#undef HAVE_STRNCASECMP
-
-/* Define to 1 if you have the `strncmpi' function. */
-#undef HAVE_STRNCMPI
-
-/* Define to 1 if you have the `strndup' function. */
-#undef HAVE_STRNDUP
-
-/* Define to 1 if you have the `strnicmp' function. */
-#undef HAVE_STRNICMP
-
-/* Define to 1 if you have the `strsignal' function. */
-#undef HAVE_STRSIGNAL
-
-/* Define to 1 if `n_un.n_name' is a member of `struct nlist'. */
-#undef HAVE_STRUCT_NLIST_N_UN_N_NAME
-
-/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
- */
-#undef HAVE_SYS_DIR_H
-
-/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
- */
-#undef HAVE_SYS_NDIR_H
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#undef HAVE_SYS_PARAM_H
-
-/* Define to 1 if you have the <sys/resource.h> header file. */
-#undef HAVE_SYS_RESOURCE_H
-
-/* Define to 1 if you have the <sys/select.h> header file. */
-#undef HAVE_SYS_SELECT_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/timeb.h> header file. */
-#undef HAVE_SYS_TIMEB_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <sys/wait.h> header file. */
-#undef HAVE_SYS_WAIT_H
-
-/* Define to 1 if you have the `ttyname' function. */
-#undef HAVE_TTYNAME
-
-/* Define to 1 if the system has the type `uintmax_t'. */
-#undef HAVE_UINTMAX_T
-
-/* Define to 1 if you have the 'union wait' type in <sys/wait.h>. */
-#undef HAVE_UNION_WAIT
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if the system has the type 'unsigned long long int'. */
-#undef HAVE_UNSIGNED_LONG_LONG_INT
-
-/* Define to 1 if you have the `vfork' function. */
-#undef HAVE_VFORK
-
-/* Define to 1 if you have the <vfork.h> header file. */
-#undef HAVE_VFORK_H
-
-/* Define to 1 if you have the `wait3' function. */
-#undef HAVE_WAIT3
-
-/* Define to 1 if you have the `waitpid' function. */
-#undef HAVE_WAITPID
-
-/* Define to 1 if `fork' works. */
-#undef HAVE_WORKING_FORK
-
-/* Define to 1 if `vfork' works. */
-#undef HAVE_WORKING_VFORK
-
-/* Build host information. */
-#undef MAKE_HOST
-
-/* Define to 1 to enable job server support in GNU make. */
-#undef MAKE_JOBSERVER
-
-/* Define to 1 to enable 'load' support in GNU make. */
-#undef MAKE_LOAD
-
-/* Define to 1 to enable symbolic link timestamp checking. */
-#undef MAKE_SYMLINKS
-
-/* Define to 1 if your `struct nlist' has an `n_un' member. Obsolete, depend
- on `HAVE_STRUCT_NLIST_N_UN_N_NAME */
-#undef NLIST_NAME_UNION
-
-/* Define to 1 if struct nlist.n_name is a pointer rather than an array. */
-#undef NLIST_STRUCT
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define to the character that separates directories in PATH. */
-#undef PATH_SEPARATOR_CHAR
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#undef RETSIGTYPE
-
-/* Define to the name of the SCCS 'get' command. */
-#undef SCCS_GET
-
-/* Define to 1 if the SCCS 'get' command understands the '-G<file>' option. */
-#undef SCCS_GET_MINUS_G
-
-/* If using the C implementation of alloca, define if you know the
- direction of stack growth for your system; otherwise it will be
- automatically deduced at runtime.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown */
-#undef STACK_DIRECTION
-
-/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
-#undef STAT_MACROS_BROKEN
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define if struct stat contains a nanoseconds field */
-#undef ST_MTIM_NSEC
-
-/* Define to 1 on System V Release 4. */
-#undef SVR4
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Define to 1 for Encore UMAX. */
-#undef UMAX
-
-/* Define to 1 for Encore UMAX 4.3 that has <inq_status/cpustats.h> instead of
- <sys/cpustats.h>. */
-#undef UMAX4_3
-
-/* Enable extensions on AIX 3, Interix. */
-#ifndef _ALL_SOURCE
-# undef _ALL_SOURCE
-#endif
-/* Enable GNU extensions on systems that have them. */
-#ifndef _GNU_SOURCE
-# undef _GNU_SOURCE
-#endif
-/* Enable threading extensions on Solaris. */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# undef _POSIX_PTHREAD_SEMANTICS
-#endif
-/* Enable extensions on HP NonStop. */
-#ifndef _TANDEM_SOURCE
-# undef _TANDEM_SOURCE
-#endif
-/* Enable general extensions on Solaris. */
-#ifndef __EXTENSIONS__
-# undef __EXTENSIONS__
-#endif
-
-
-/* Version number of package */
-#undef VERSION
-
-/* Use platform specific coding */
-#undef WINDOWS32
-
-/* Define if using the dmalloc debugging malloc package */
-#undef WITH_DMALLOC
-
-/* Enable large inode numbers on Mac OS X 10.5. */
-#ifndef _DARWIN_USE_64_BIT_INODE
-# define _DARWIN_USE_64_BIT_INODE 1
-#endif
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-#undef _FILE_OFFSET_BITS
-
-/* Define for large files, on AIX-style hosts. */
-#undef _LARGE_FILES
-
-/* Define to 1 if on MINIX. */
-#undef _MINIX
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
- this defined. */
-#undef _POSIX_1_SOURCE
-
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-#undef _POSIX_SOURCE
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-#undef gid_t
-
-/* Define to `long int' if <sys/types.h> does not define. */
-#undef off_t
-
-/* Define to `int' if <sys/types.h> does not define. */
-#undef pid_t
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
-
-/* Define to `int' if <sys/types.h> does not define. */
-#undef ssize_t
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-#undef uid_t
-
-/* Define to the widest unsigned integer type if <stdint.h> and <inttypes.h>
- do not define. */
-#undef uintmax_t
-
-/* Define as `fork' if `vfork' does not work. */
-#undef vfork
diff --git a/config/Makefile.am b/config/Makefile.am
deleted file mode 100644
index 7bce036..0000000
--- a/config/Makefile.am
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*-Makefile-*-, or close enough
-# Copyright (C) 2002-2016 Free Software Foundation, Inc.
-# This file is part of GNU Make.
-#
-# GNU Make is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation; either version 3 of the License, or (at your option)
-# any later version.
-#
-# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program. If not, see <http://www.gnu.org/licenses/>.
-
-# Autoconf / automake know how to handle this directory.
diff --git a/config/Makefile.in b/config/Makefile.in
deleted file mode 100644
index 19fd6b5..0000000
--- a/config/Makefile.in
+++ /dev/null
@@ -1,469 +0,0 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# -*-Makefile-*-, or close enough
-# Copyright (C) 2002-2016 Free Software Foundation, Inc.
-# This file is part of GNU Make.
-#
-# GNU Make is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation; either version 3 of the License, or (at your option)
-# any later version.
-#
-# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program. If not, see <http://www.gnu.org/licenses/>.
-VPATH = @srcdir@
-am__is_gnu_make = { \
- if test -z '$(MAKELEVEL)'; then \
- false; \
- elif test -n '$(MAKE_HOST)'; then \
- true; \
- elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
- true; \
- else \
- false; \
- fi; \
-}
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = config
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/config/dospaths.m4 \
- $(top_srcdir)/config/gettext.m4 $(top_srcdir)/config/iconv.m4 \
- $(top_srcdir)/config/intlmacosx.m4 \
- $(top_srcdir)/config/lib-ld.m4 \
- $(top_srcdir)/config/lib-link.m4 \
- $(top_srcdir)/config/lib-prefix.m4 \
- $(top_srcdir)/config/longlong.m4 $(top_srcdir)/config/nls.m4 \
- $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-am__DIST_COMMON = $(srcdir)/Makefile.in ar-lib compile config.guess \
- config.rpath config.sub depcomp install-sh missing
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GLOBINC = @GLOBINC@
-GLOBLIB = @GLOBLIB@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-GUILE_CFLAGS = @GUILE_CFLAGS@
-GUILE_LIBS = @GUILE_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-KMEM_GROUP = @KMEM_GROUP@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MAKE_HOST = @MAKE_HOST@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NEED_SETGID = @NEED_SETGID@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POSUB = @POSUB@
-RANLIB = @RANLIB@
-REMOTE = @REMOTE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign config/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --foreign config/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-am
- -rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
- ctags-am distclean distclean-generic distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am install-info \
- install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
- pdf-am ps ps-am tags-am uninstall uninstall-am
-
-.PRECIOUS: Makefile
-
-
-# Autoconf / automake know how to handle this directory.
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/config/ar-lib b/config/ar-lib
deleted file mode 100755
index 463b9ec..0000000
--- a/config/ar-lib
+++ /dev/null
@@ -1,270 +0,0 @@
-#! /bin/sh
-# Wrapper for Microsoft lib.exe
-
-me=ar-lib
-scriptversion=2012-03-01.08; # UTC
-
-# Copyright (C) 2010-2014 Free Software Foundation, Inc.
-# Written by Peter Rosin <peda@lysator.liu.se>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# This file is maintained in Automake, please report
-# bugs to <bug-automake@gnu.org> or send patches to
-# <automake-patches@gnu.org>.
-
-
-# func_error message
-func_error ()
-{
- echo "$me: $1" 1>&2
- exit 1
-}
-
-file_conv=
-
-# func_file_conv build_file
-# Convert a $build file to $host form and store it in $file
-# Currently only supports Windows hosts.
-func_file_conv ()
-{
- file=$1
- case $file in
- / | /[!/]*) # absolute file, and not a UNC file
- if test -z "$file_conv"; then
- # lazily determine how to convert abs files
- case `uname -s` in
- MINGW*)
- file_conv=mingw
- ;;
- CYGWIN*)
- file_conv=cygwin
- ;;
- *)
- file_conv=wine
- ;;
- esac
- fi
- case $file_conv in
- mingw)
- file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
- ;;
- cygwin)
- file=`cygpath -m "$file" || echo "$file"`
- ;;
- wine)
- file=`winepath -w "$file" || echo "$file"`
- ;;
- esac
- ;;
- esac
-}
-
-# func_at_file at_file operation archive
-# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE
-# for each of them.
-# When interpreting the content of the @FILE, do NOT use func_file_conv,
-# since the user would need to supply preconverted file names to
-# binutils ar, at least for MinGW.
-func_at_file ()
-{
- operation=$2
- archive=$3
- at_file_contents=`cat "$1"`
- eval set x "$at_file_contents"
- shift
-
- for member
- do
- $AR -NOLOGO $operation:"$member" "$archive" || exit $?
- done
-}
-
-case $1 in
- '')
- func_error "no command. Try '$0 --help' for more information."
- ;;
- -h | --h*)
- cat <<EOF
-Usage: $me [--help] [--version] PROGRAM ACTION ARCHIVE [MEMBER...]
-
-Members may be specified in a file named with @FILE.
-EOF
- exit $?
- ;;
- -v | --v*)
- echo "$me, version $scriptversion"
- exit $?
- ;;
-esac
-
-if test $# -lt 3; then
- func_error "you must specify a program, an action and an archive"
-fi
-
-AR=$1
-shift
-while :
-do
- if test $# -lt 2; then
- func_error "you must specify a program, an action and an archive"
- fi
- case $1 in
- -lib | -LIB \
- | -ltcg | -LTCG \
- | -machine* | -MACHINE* \
- | -subsystem* | -SUBSYSTEM* \
- | -verbose | -VERBOSE \
- | -wx* | -WX* )
- AR="$AR $1"
- shift
- ;;
- *)
- action=$1
- shift
- break
- ;;
- esac
-done
-orig_archive=$1
-shift
-func_file_conv "$orig_archive"
-archive=$file
-
-# strip leading dash in $action
-action=${action#-}
-
-delete=
-extract=
-list=
-quick=
-replace=
-index=
-create=
-
-while test -n "$action"
-do
- case $action in
- d*) delete=yes ;;
- x*) extract=yes ;;
- t*) list=yes ;;
- q*) quick=yes ;;
- r*) replace=yes ;;
- s*) index=yes ;;
- S*) ;; # the index is always updated implicitly
- c*) create=yes ;;
- u*) ;; # TODO: don't ignore the update modifier
- v*) ;; # TODO: don't ignore the verbose modifier
- *)
- func_error "unknown action specified"
- ;;
- esac
- action=${action#?}
-done
-
-case $delete$extract$list$quick$replace,$index in
- yes,* | ,yes)
- ;;
- yesyes*)
- func_error "more than one action specified"
- ;;
- *)
- func_error "no action specified"
- ;;
-esac
-
-if test -n "$delete"; then
- if test ! -f "$orig_archive"; then
- func_error "archive not found"
- fi
- for member
- do
- case $1 in
- @*)
- func_at_file "${1#@}" -REMOVE "$archive"
- ;;
- *)
- func_file_conv "$1"
- $AR -NOLOGO -REMOVE:"$file" "$archive" || exit $?
- ;;
- esac
- done
-
-elif test -n "$extract"; then
- if test ! -f "$orig_archive"; then
- func_error "archive not found"
- fi
- if test $# -gt 0; then
- for member
- do
- case $1 in
- @*)
- func_at_file "${1#@}" -EXTRACT "$archive"
- ;;
- *)
- func_file_conv "$1"
- $AR -NOLOGO -EXTRACT:"$file" "$archive" || exit $?
- ;;
- esac
- done
- else
- $AR -NOLOGO -LIST "$archive" | sed -e 's/\\/\\\\/g' | while read member
- do
- $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
- done
- fi
-
-elif test -n "$quick$replace"; then
- if test ! -f "$orig_archive"; then
- if test -z "$create"; then
- echo "$me: creating $orig_archive"
- fi
- orig_archive=
- else
- orig_archive=$archive
- fi
-
- for member
- do
- case $1 in
- @*)
- func_file_conv "${1#@}"
- set x "$@" "@$file"
- ;;
- *)
- func_file_conv "$1"
- set x "$@" "$file"
- ;;
- esac
- shift
- shift
- done
-
- if test -n "$orig_archive"; then
- $AR -NOLOGO -OUT:"$archive" "$orig_archive" "$@" || exit $?
- else
- $AR -NOLOGO -OUT:"$archive" "$@" || exit $?
- fi
-
-elif test -n "$list"; then
- if test ! -f "$orig_archive"; then
- func_error "archive not found"
- fi
- $AR -NOLOGO -LIST "$archive" || exit $?
-fi
diff --git a/config/config.sub b/config/config.sub
deleted file mode 100644
index 6d86a1e..0000000
--- a/config/config.sub
+++ /dev/null
@@ -1,1815 +0,0 @@
-#! /bin/sh
-# Configuration validation subroutine script.
-# Copyright 1992-2016 Free Software Foundation, Inc.
-
-timestamp='2016-05-10'
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program. This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-
-
-# Please send patches to <config-patches@gnu.org>.
-#
-# Configuration subroutine to validate and canonicalize a configuration type.
-# Supply the specified configuration type as an argument.
-# If it is invalid, we print an error message on stderr and exit with code 1.
-# Otherwise, we print the canonical config type on stdout and succeed.
-
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
-
-# This file is supposed to be the same for all GNU packages
-# and recognize all the CPU types, system types and aliases
-# that are meaningful with *any* GNU software.
-# Each package is responsible for reporting which valid configurations
-# it does not support. The user should be able to distinguish
-# a failure to support a valid configuration from a meaningless
-# configuration.
-
-# The goal of this file is to map all the various variations of a given
-# machine specification into a single specification in the form:
-# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
-# or in some cases, the newer four-part form:
-# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
-# It is wrong to echo any other type of specification.
-
-me=`echo "$0" | sed -e 's,.*/,,'`
-
-usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
-
-Canonicalize a configuration name.
-
-Operation modes:
- -h, --help print this help, then exit
- -t, --time-stamp print date of last modification, then exit
- -v, --version print version number, then exit
-
-Report bugs and patches to <config-patches@gnu.org>."
-
-version="\
-GNU config.sub ($timestamp)
-
-Copyright 1992-2016 Free Software Foundation, Inc.
-
-This is free software; see the source for copying conditions. There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-
-help="
-Try \`$me --help' for more information."
-
-# Parse command line
-while test $# -gt 0 ; do
- case $1 in
- --time-stamp | --time* | -t )
- echo "$timestamp" ; exit ;;
- --version | -v )
- echo "$version" ; exit ;;
- --help | --h* | -h )
- echo "$usage"; exit ;;
- -- ) # Stop option processing
- shift; break ;;
- - ) # Use stdin as input.
- break ;;
- -* )
- echo "$me: invalid option $1$help"
- exit 1 ;;
-
- *local*)
- # First pass through any local machine types.
- echo $1
- exit ;;
-
- * )
- break ;;
- esac
-done
-
-case $# in
- 0) echo "$me: missing argument$help" >&2
- exit 1;;
- 1) ;;
- *) echo "$me: too many arguments$help" >&2
- exit 1;;
-esac
-
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
- linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
- knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
- kopensolaris*-gnu* | \
- storm-chaos* | os2-emx* | rtmk-nova*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
- android-linux)
- os=-linux-android
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
- ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
- then os=`echo $1 | sed 's/.*-/-/'`
- else os=; fi
- ;;
-esac
-
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work. We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
- -sun*os*)
- # Prevent following clause from handling this invalid input.
- ;;
- -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
- -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
- -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
- -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
- -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
- -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray | -microblaze*)
- os=
- basic_machine=$1
- ;;
- -bluegene*)
- os=-cnk
- ;;
- -sim | -cisco | -oki | -wec | -winbond)
- os=
- basic_machine=$1
- ;;
- -scout)
- ;;
- -wrs)
- os=-vxworks
- basic_machine=$1
- ;;
- -chorusos*)
- os=-chorusos
- basic_machine=$1
- ;;
- -chorusrdb)
- os=-chorusrdb
- basic_machine=$1
- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
- -sco6)
- os=-sco5v6
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5)
- os=-sco3.2v5
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco4)
- os=-sco3.2v4
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco3.2v[4-9]*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco5v6*)
- # Don't forget version if it is 3.2v4 or newer.
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -sco*)
- os=-sco3.2v2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -udk*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -isc)
- os=-isc2.2
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -clix*)
- basic_machine=clipper-intergraph
- ;;
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
- -lynx*178)
- os=-lynxos178
- ;;
- -lynx*5)
- os=-lynxos5
- ;;
- -lynx*)
- os=-lynxos
- ;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
- ;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
- ;;
- -psos*)
- os=-psos
- ;;
- -mint | -mint[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
-esac
-
-# Decode aliases for certain CPU-COMPANY combinations.
-case $basic_machine in
- # Recognize the basic CPU types without company name.
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
- | aarch64 | aarch64_be \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
- | arc | arceb \
- | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
- | avr | avr32 \
- | ba \
- | be32 | be64 \
- | bfin \
- | c4x | c8051 | clipper \
- | d10v | d30v | dlx | dsp16xx \
- | e2k | epiphany \
- | fido | fr30 | frv | ft32 \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
- | hexagon \
- | i370 | i860 | i960 | ia64 \
- | ip2k | iq2000 \
- | k1om \
- | le32 | le64 \
- | lm32 \
- | m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
- | mips | mipsbe | mipseb | mipsel | mipsle \
- | mips16 \
- | mips64 | mips64el \
- | mips64octeon | mips64octeonel \
- | mips64orion | mips64orionel \
- | mips64r5900 | mips64r5900el \
- | mips64vr | mips64vrel \
- | mips64vr4100 | mips64vr4100el \
- | mips64vr4300 | mips64vr4300el \
- | mips64vr5000 | mips64vr5000el \
- | mips64vr5900 | mips64vr5900el \
- | mipsisa32 | mipsisa32el \
- | mipsisa32r2 | mipsisa32r2el \
- | mipsisa32r6 | mipsisa32r6el \
- | mipsisa64 | mipsisa64el \
- | mipsisa64r2 | mipsisa64r2el \
- | mipsisa64r6 | mipsisa64r6el \
- | mipsisa64sb1 | mipsisa64sb1el \
- | mipsisa64sr71k | mipsisa64sr71kel \
- | mipsr5900 | mipsr5900el \
- | mipstx39 | mipstx39el \
- | mn10200 | mn10300 \
- | moxie \
- | mt \
- | msp430 \
- | nds32 | nds32le | nds32be \
- | nios | nios2 | nios2eb | nios2el \
- | ns16k | ns32k \
- | open8 | or1k | or1knd | or32 \
- | pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle \
- | pyramid \
- | riscv32 | riscv64 \
- | rl78 | rx \
- | score \
- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
- | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
- | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
- | spu \
- | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
- | ubicom32 \
- | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
- | visium \
- | we32k \
- | x86 | xc16x | xstormy16 | xtensa \
- | z8k | z80)
- basic_machine=$basic_machine-unknown
- ;;
- c54x)
- basic_machine=tic54x-unknown
- ;;
- c55x)
- basic_machine=tic55x-unknown
- ;;
- c6x)
- basic_machine=tic6x-unknown
- ;;
- leon|leon[3-9])
- basic_machine=sparc-$basic_machine
- ;;
- m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
- ;;
- ms1)
- basic_machine=mt-unknown
- ;;
-
- strongarm | thumb | xscale)
- basic_machine=arm-unknown
- ;;
- xgate)
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
- xscaleeb)
- basic_machine=armeb-unknown
- ;;
-
- xscaleel)
- basic_machine=armel-unknown
- ;;
-
- # We use `pc' rather than `unknown'
- # because (1) that's what they normally are, and
- # (2) the word "unknown" tends to confuse beginning users.
- i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
- # Object if more than one company name word.
- *-*-*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
- | aarch64-* | aarch64_be-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* | avr32-* \
- | ba-* \
- | be32-* | be64-* \
- | bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* \
- | c8051-* | clipper-* | craynv-* | cydra-* \
- | d10v-* | d30v-* | dlx-* \
- | e2k-* | elxsi-* \
- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
- | h8300-* | h8500-* \
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
- | hexagon-* \
- | i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* | iq2000-* \
- | k1om-* \
- | le32-* | le64-* \
- | lm32-* \
- | m32c-* | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
- | microblaze-* | microblazeel-* \
- | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
- | mips16-* \
- | mips64-* | mips64el-* \
- | mips64octeon-* | mips64octeonel-* \
- | mips64orion-* | mips64orionel-* \
- | mips64r5900-* | mips64r5900el-* \
- | mips64vr-* | mips64vrel-* \
- | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* \
- | mips64vr5000-* | mips64vr5000el-* \
- | mips64vr5900-* | mips64vr5900el-* \
- | mipsisa32-* | mipsisa32el-* \
- | mipsisa32r2-* | mipsisa32r2el-* \
- | mipsisa32r6-* | mipsisa32r6el-* \
- | mipsisa64-* | mipsisa64el-* \
- | mipsisa64r2-* | mipsisa64r2el-* \
- | mipsisa64r6-* | mipsisa64r6el-* \
- | mipsisa64sb1-* | mipsisa64sb1el-* \
- | mipsisa64sr71k-* | mipsisa64sr71kel-* \
- | mipsr5900-* | mipsr5900el-* \
- | mipstx39-* | mipstx39el-* \
- | mmix-* \
- | mt-* \
- | msp430-* \
- | nds32-* | nds32le-* | nds32be-* \
- | nios-* | nios2-* | nios2eb-* | nios2el-* \
- | none-* | np1-* | ns16k-* | ns32k-* \
- | open8-* \
- | or1k*-* \
- | orion-* \
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
- | pyramid-* \
- | riscv32-* | riscv64-* \
- | rl78-* | romp-* | rs6000-* | rx-* \
- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
- | sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
- | tahoe-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
- | tile*-* \
- | tron-* \
- | ubicom32-* \
- | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
- | vax-* \
- | visium-* \
- | we32k-* \
- | x86-* | x86_64-* | xc16x-* | xps100-* \
- | xstormy16-* | xtensa*-* \
- | ymp-* \
- | z8k-* | z80-*)
- ;;
- # Recognize the basic CPU types without company name, with glob match.
- xtensa*)
- basic_machine=$basic_machine-unknown
- ;;
- # Recognize the various machine names and aliases which stand
- # for a CPU type and a company and sometimes even an OS.
- 386bsd)
- basic_machine=i386-unknown
- os=-bsd
- ;;
- 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
- basic_machine=m68000-att
- ;;
- 3b*)
- basic_machine=we32k-att
- ;;
- a29khif)
- basic_machine=a29k-amd
- os=-udi
- ;;
- abacus)
- basic_machine=abacus-unknown
- ;;
- adobe68k)
- basic_machine=m68010-adobe
- os=-scout
- ;;
- alliant | fx80)
- basic_machine=fx80-alliant
- ;;
- altos | altos3068)
- basic_machine=m68k-altos
- ;;
- am29k)
- basic_machine=a29k-none
- os=-bsd
- ;;
- amd64)
- basic_machine=x86_64-pc
- ;;
- amd64-*)
- basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- amdahl)
- basic_machine=580-amdahl
- os=-sysv
- ;;
- amiga | amiga-*)
- basic_machine=m68k-unknown
- ;;
- amigaos | amigados)
- basic_machine=m68k-unknown
- os=-amigaos
- ;;
- amigaunix | amix)
- basic_machine=m68k-unknown
- os=-sysv4
- ;;
- apollo68)
- basic_machine=m68k-apollo
- os=-sysv
- ;;
- apollo68bsd)
- basic_machine=m68k-apollo
- os=-bsd
- ;;
- aros)
- basic_machine=i386-pc
- os=-aros
- ;;
- asmjs)
- basic_machine=asmjs-unknown
- ;;
- aux)
- basic_machine=m68k-apple
- os=-aux
- ;;
- balance)
- basic_machine=ns32k-sequent
- os=-dynix
- ;;
- blackfin)
- basic_machine=bfin-unknown
- os=-linux
- ;;
- blackfin-*)
- basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=-linux
- ;;
- bluegene*)
- basic_machine=powerpc-ibm
- os=-cnk
- ;;
- c54x-*)
- basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- c55x-*)
- basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- c6x-*)
- basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- c90)
- basic_machine=c90-cray
- os=-unicos
- ;;
- cegcc)
- basic_machine=arm-unknown
- os=-cegcc
- ;;
- convex-c1)
- basic_machine=c1-convex
- os=-bsd
- ;;
- convex-c2)
- basic_machine=c2-convex
- os=-bsd
- ;;
- convex-c32)
- basic_machine=c32-convex
- os=-bsd
- ;;
- convex-c34)
- basic_machine=c34-convex
- os=-bsd
- ;;
- convex-c38)
- basic_machine=c38-convex
- os=-bsd
- ;;
- cray | j90)
- basic_machine=j90-cray
- os=-unicos
- ;;
- craynv)
- basic_machine=craynv-cray
- os=-unicosmp
- ;;
- cr16 | cr16-*)
- basic_machine=cr16-unknown
- os=-elf
- ;;
- crds | unos)
- basic_machine=m68k-crds
- ;;
- crisv32 | crisv32-* | etraxfs*)
- basic_machine=crisv32-axis
- ;;
- cris | cris-* | etrax*)
- basic_machine=cris-axis
- ;;
- crx)
- basic_machine=crx-unknown
- os=-elf
- ;;
- da30 | da30-*)
- basic_machine=m68k-da30
- ;;
- decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
- basic_machine=mips-dec
- ;;
- decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
- ;;
- decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
- ;;
- delta | 3300 | motorola-3300 | motorola-delta \
- | 3300-motorola | delta-motorola)
- basic_machine=m68k-motorola
- ;;
- delta88)
- basic_machine=m88k-motorola
- os=-sysv3
- ;;
- dicos)
- basic_machine=i686-pc
- os=-dicos
- ;;
- djgpp)
- basic_machine=i586-pc
- os=-msdosdjgpp
- ;;
- dpx20 | dpx20-*)
- basic_machine=rs6000-bull
- os=-bosx
- ;;
- dpx2* | dpx2*-bull)
- basic_machine=m68k-bull
- os=-sysv3
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
- ;;
- encore | umax | mmax)
- basic_machine=ns32k-encore
- ;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
- ;;
- fx2800)
- basic_machine=i860-alliant
- ;;
- genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=-go32
- ;;
- h3050r* | hiux*)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- h8300hms)
- basic_machine=h8300-hitachi
- os=-hms
- ;;
- h8300xray)
- basic_machine=h8300-hitachi
- os=-xray
- ;;
- h8500hms)
- basic_machine=h8500-hitachi
- os=-hms
- ;;
- harris)
- basic_machine=m88k-harris
- os=-sysv3
- ;;
- hp300-*)
- basic_machine=m68k-hp
- ;;
- hp300bsd)
- basic_machine=m68k-hp
- os=-bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=-hpux
- ;;
- hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
- ;;
- hp9k3[2-9][0-9])
- basic_machine=m68k-hp
- ;;
- hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
- ;;
- hp9k78[0-9] | hp78[0-9])
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
- # FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
- ;;
- hp9k8[0-9][0-9] | hp8[0-9][0-9])
- basic_machine=hppa1.0-hp
- ;;
- hppa-next)
- os=-nextstep3
- ;;
- hppaosf)
- basic_machine=hppa1.1-hp
- os=-osf
- ;;
- hppro)
- basic_machine=hppa1.1-hp
- os=-proelf
- ;;
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
- ;;
- i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
- ;;
- i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
- ;;
- i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
- ;;
- i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
- ;;
- i386-vsta | vsta)
- basic_machine=i386-unknown
- os=-vsta
- ;;
- iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
- ;;
- *)
- os=-irix4
- ;;
- esac
- ;;
- isi68 | isi)
- basic_machine=m68k-isi
- os=-sysv
- ;;
- leon-*|leon[3-9]-*)
- basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
- ;;
- m68knommu)
- basic_machine=m68k-unknown
- os=-linux
- ;;
- m68knommu-*)
- basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=-linux
- ;;
- m88k-omron*)
- basic_machine=m88k-omron
- ;;
- magnum | m3230)
- basic_machine=mips-mips
- os=-sysv
- ;;
- merlin)
- basic_machine=ns32k-utek
- os=-sysv
- ;;
- microblaze*)
- basic_machine=microblaze-xilinx
- ;;
- mingw64)
- basic_machine=x86_64-pc
- os=-mingw64
- ;;
- mingw32)
- basic_machine=i686-pc
- os=-mingw32
- ;;
- mingw32ce)
- basic_machine=arm-unknown
- os=-mingw32ce
- ;;
- miniframe)
- basic_machine=m68000-convergent
- ;;
- *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
- basic_machine=m68k-atari
- os=-mint
- ;;
- mips3*-*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
- ;;
- mips3*)
- basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
- ;;
- monitor)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- morphos)
- basic_machine=powerpc-unknown
- os=-morphos
- ;;
- moxiebox)
- basic_machine=moxie-unknown
- os=-moxiebox
- ;;
- msdos)
- basic_machine=i386-pc
- os=-msdos
- ;;
- ms1-*)
- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
- ;;
- msys)
- basic_machine=i686-pc
- os=-msys
- ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
- nacl)
- basic_machine=le32-unknown
- os=-nacl
- ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
- ;;
- netbsd386)
- basic_machine=i386-unknown
- os=-netbsd
- ;;
- netwinder)
- basic_machine=armv4l-rebel
- os=-linux
- ;;
- news | news700 | news800 | news900)
- basic_machine=m68k-sony
- os=-newsos
- ;;
- news1000)
- basic_machine=m68030-sony
- os=-newsos
- ;;
- news-3600 | risc-news)
- basic_machine=mips-sony
- os=-newsos
- ;;
- necv70)
- basic_machine=v70-nec
- os=-sysv
- ;;
- next | m*-next )
- basic_machine=m68k-next
- case $os in
- -nextstep* )
- ;;
- -ns2*)
- os=-nextstep2
- ;;
- *)
- os=-nextstep3
- ;;
- esac
- ;;
- nh3000)
- basic_machine=m68k-harris
- os=-cxux
- ;;
- nh[45]000)
- basic_machine=m88k-harris
- os=-cxux
- ;;
- nindy960)
- basic_machine=i960-intel
- os=-nindy
- ;;
- mon960)
- basic_machine=i960-intel
- os=-mon960
- ;;
- nonstopux)
- basic_machine=mips-compaq
- os=-nonstopux
- ;;
- np1)
- basic_machine=np1-gould
- ;;
- neo-tandem)
- basic_machine=neo-tandem
- ;;
- nse-tandem)
- basic_machine=nse-tandem
- ;;
- nsr-tandem)
- basic_machine=nsr-tandem
- ;;
- op50n-* | op60c-*)
- basic_machine=hppa1.1-oki
- os=-proelf
- ;;
- openrisc | openrisc-*)
- basic_machine=or32-unknown
- ;;
- os400)
- basic_machine=powerpc-ibm
- os=-os400
- ;;
- OSE68000 | ose68000)
- basic_machine=m68000-ericsson
- os=-ose
- ;;
- os68k)
- basic_machine=m68k-none
- os=-os68k
- ;;
- pa-hitachi)
- basic_machine=hppa1.1-hitachi
- os=-hiuxwe2
- ;;
- paragon)
- basic_machine=i860-intel
- os=-osf
- ;;
- parisc)
- basic_machine=hppa-unknown
- os=-linux
- ;;
- parisc-*)
- basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=-linux
- ;;
- pbd)
- basic_machine=sparc-tti
- ;;
- pbb)
- basic_machine=m68k-tti
- ;;
- pc532 | pc532-*)
- basic_machine=ns32k-pc532
- ;;
- pc98)
- basic_machine=i386-pc
- ;;
- pc98-*)
- basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium | p5 | k5 | k6 | nexgen | viac3)
- basic_machine=i586-pc
- ;;
- pentiumpro | p6 | 6x86 | athlon | athlon_*)
- basic_machine=i686-pc
- ;;
- pentiumii | pentium2 | pentiumiii | pentium3)
- basic_machine=i686-pc
- ;;
- pentium4)
- basic_machine=i786-pc
- ;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
- basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumpro-* | p6-* | 6x86-* | athlon-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
- basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pentium4-*)
- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- pn)
- basic_machine=pn-gould
- ;;
- power) basic_machine=power-ibm
- ;;
- ppc | ppcbe) basic_machine=powerpc-unknown
- ;;
- ppc-* | ppcbe-*)
- basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppcle | powerpclittle | ppc-le | powerpc-little)
- basic_machine=powerpcle-unknown
- ;;
- ppcle-* | powerpclittle-*)
- basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64) basic_machine=powerpc64-unknown
- ;;
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ppc64le | powerpc64little | ppc64-le | powerpc64-little)
- basic_machine=powerpc64le-unknown
- ;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- ps2)
- basic_machine=i386-ibm
- ;;
- pw32)
- basic_machine=i586-unknown
- os=-pw32
- ;;
- rdos | rdos64)
- basic_machine=x86_64-pc
- os=-rdos
- ;;
- rdos32)
- basic_machine=i386-pc
- os=-rdos
- ;;
- rom68k)
- basic_machine=m68k-rom68k
- os=-coff
- ;;
- rm[46]00)
- basic_machine=mips-siemens
- ;;
- rtpc | rtpc-*)
- basic_machine=romp-ibm
- ;;
- s390 | s390-*)
- basic_machine=s390-ibm
- ;;
- s390x | s390x-*)
- basic_machine=s390x-ibm
- ;;
- sa29200)
- basic_machine=a29k-amd
- os=-udi
- ;;
- sb1)
- basic_machine=mipsisa64sb1-unknown
- ;;
- sb1el)
- basic_machine=mipsisa64sb1el-unknown
- ;;
- sde)
- basic_machine=mipsisa32-sde
- os=-elf
- ;;
- sei)
- basic_machine=mips-sei
- os=-seiux
- ;;
- sequent)
- basic_machine=i386-sequent
- ;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
- ;;
- sh5el)
- basic_machine=sh5le-unknown
- ;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparclite-wrs | simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
- ;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
- ;;
- spur)
- basic_machine=spur-unknown
- ;;
- st2000)
- basic_machine=m68k-tandem
- ;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
- ;;
- strongarm-* | thumb-*)
- basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
- ;;
- sun2)
- basic_machine=m68000-sun
- ;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
- ;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
- ;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
- ;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
- ;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
- ;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
- ;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
- ;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
- ;;
- sun4)
- basic_machine=sparc-sun
- ;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
- ;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
- ;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
- ;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
- ;;
- t90)
- basic_machine=t90-cray
- os=-unicos
- ;;
- tile*)
- basic_machine=$basic_machine-unknown
- os=-linux-gnu
- ;;
- tx39)
- basic_machine=mipstx39-unknown
- ;;
- tx39el)
- basic_machine=mipstx39el-unknown
- ;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
- ;;
- tower | tower-32)
- basic_machine=m68k-ncr
- ;;
- tpf)
- basic_machine=s390x-ibm
- os=-tpf
- ;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
- ;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
- ;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
- ;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
- ;;
- vms)
- basic_machine=vax-dec
- os=-vms
- ;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
- ;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
- ;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
- ;;
- w65*)
- basic_machine=w65-wdc
- os=-none
- ;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
- ;;
- xbox)
- basic_machine=i686-pc
- os=-mingw32
- ;;
- xps | xps100)
- basic_machine=xps100-honeywell
- ;;
- xscale-* | xscalee[bl]-*)
- basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
- ;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
- ;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
- ;;
- z80-*-coff)
- basic_machine=z80-unknown
- os=-sim
- ;;
- none)
- basic_machine=none-none
- os=-none
- ;;
-
-# Here we handle the default manufacturer of certain CPU types. It is in
-# some cases the only manufacturer, in others, it is the most popular.
- w89k)
- basic_machine=hppa1.1-winbond
- ;;
- op50n)
- basic_machine=hppa1.1-oki
- ;;
- op60c)
- basic_machine=hppa1.1-oki
- ;;
- romp)
- basic_machine=romp-ibm
- ;;
- mmix)
- basic_machine=mmix-knuth
- ;;
- rs6000)
- basic_machine=rs6000-ibm
- ;;
- vax)
- basic_machine=vax-dec
- ;;
- pdp10)
- # there are many clones, so DEC is not a safe bet
- basic_machine=pdp10-unknown
- ;;
- pdp11)
- basic_machine=pdp11-dec
- ;;
- we32k)
- basic_machine=we32k-att
- ;;
- sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
- basic_machine=sh-unknown
- ;;
- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
- basic_machine=sparc-sun
- ;;
- cydra)
- basic_machine=cydra-cydrome
- ;;
- orion)
- basic_machine=orion-highlevel
- ;;
- orion105)
- basic_machine=clipper-highlevel
- ;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
- ;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
- ;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
- ;;
- *)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
- ;;
-esac
-
-# Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
- ;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
- ;;
- *)
- ;;
-esac
-
-# Decode manufacturer-specific aliases for certain operating systems.
-
-if [ x"$os" != x"" ]
-then
-case $os in
- # First match some system type aliases
- # that might get confused with valid system types.
- # -solaris* is a basic system type, with this one exception.
- -auroraux)
- os=-auroraux
- ;;
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
- ;;
- -solaris)
- os=-solaris2
- ;;
- -svr4*)
- os=-sysv4
- ;;
- -unixware*)
- os=-sysv4.2uw
- ;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
- # First accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST END IN A *, to match a version number.
- # -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
- | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
- | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
- | -sym* | -kopensolaris* | -plan9* \
- | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* | -aros* | -cloudabi* | -sortix* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
- | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
- | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
- | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* | -cegcc* \
- | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-musl* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
- | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
- | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
- | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
- | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
- | -onefs* | -tirtos* | -phoenix*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
- -qnx*)
- case $basic_machine in
- x86-* | i*86-*)
- ;;
- *)
- os=-nto$os
- ;;
- esac
- ;;
- -nto-qnx*)
- ;;
- -nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
- ;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
- ;;
- -mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
- ;;
- -linux-dietlibc)
- os=-linux-dietlibc
- ;;
- -linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
- ;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
- ;;
- -opened*)
- os=-openedition
- ;;
- -os400*)
- os=-os400
- ;;
- -wince*)
- os=-wince
- ;;
- -osfrose*)
- os=-osfrose
- ;;
- -osf*)
- os=-osf
- ;;
- -utek*)
- os=-bsd
- ;;
- -dynix*)
- os=-bsd
- ;;
- -acis*)
- os=-aos
- ;;
- -atheos*)
- os=-atheos
- ;;
- -syllable*)
- os=-syllable
- ;;
- -386bsd)
- os=-bsd
- ;;
- -ctix* | -uts*)
- os=-sysv
- ;;
- -nova*)
- os=-rtmk-nova
- ;;
- -ns2 )
- os=-nextstep2
- ;;
- -nsk*)
- os=-nsk
- ;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
- ;;
- -sinix*)
- os=-sysv4
- ;;
- -tpf*)
- os=-tpf
- ;;
- -triton*)
- os=-sysv3
- ;;
- -oss*)
- os=-sysv3
- ;;
- -svr4)
- os=-sysv4
- ;;
- -svr3)
- os=-sysv3
- ;;
- -sysvr4)
- os=-sysv4
- ;;
- # This must come after -sysvr4.
- -sysv*)
- ;;
- -ose*)
- os=-ose
- ;;
- -es1800*)
- os=-ose
- ;;
- -xenix)
- os=-xenix
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
- ;;
- -aros*)
- os=-aros
- ;;
- -zvmoe)
- os=-zvmoe
- ;;
- -dicos*)
- os=-dicos
- ;;
- -nacl*)
- ;;
- -ios)
- ;;
- -none)
- ;;
- *)
- # Get rid of the `-' at the beginning of $os.
- os=`echo $os | sed 's/[^-]*-//'`
- echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
- exit 1
- ;;
-esac
-else
-
-# Here we handle the default operating systems that come with various machines.
-# The value should be what the vendor currently ships out the door with their
-# machine or put another way, the most popular os provided with the machine.
-
-# Note that if you're going to try to match "-MANUFACTURER" here (say,
-# "-sun"), then you have to tell the case statement up towards the top
-# that MANUFACTURER isn't an operating system. Otherwise, code above
-# will signal an error saying that MANUFACTURER isn't an operating
-# system, and we'll never get to this point.
-
-case $basic_machine in
- score-*)
- os=-elf
- ;;
- spu-*)
- os=-elf
- ;;
- *-acorn)
- os=-riscix1.2
- ;;
- arm*-rebel)
- os=-linux
- ;;
- arm*-semi)
- os=-aout
- ;;
- c4x-* | tic4x-*)
- os=-coff
- ;;
- c8051-*)
- os=-elf
- ;;
- hexagon-*)
- os=-elf
- ;;
- tic54x-*)
- os=-coff
- ;;
- tic55x-*)
- os=-coff
- ;;
- tic6x-*)
- os=-coff
- ;;
- # This must come before the *-dec entry.
- pdp10-*)
- os=-tops20
- ;;
- pdp11-*)
- os=-none
- ;;
- *-dec | vax-*)
- os=-ultrix4.2
- ;;
- m68*-apollo)
- os=-domain
- ;;
- i386-sun)
- os=-sunos4.0.2
- ;;
- m68000-sun)
- os=-sunos3
- ;;
- m68*-cisco)
- os=-aout
- ;;
- mep-*)
- os=-elf
- ;;
- mips*-cisco)
- os=-elf
- ;;
- mips*-*)
- os=-elf
- ;;
- or32-*)
- os=-coff
- ;;
- *-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
- ;;
- sparc-* | *-sun)
- os=-sunos4.1.1
- ;;
- *-be)
- os=-beos
- ;;
- *-haiku)
- os=-haiku
- ;;
- *-ibm)
- os=-aix
- ;;
- *-knuth)
- os=-mmixware
- ;;
- *-wec)
- os=-proelf
- ;;
- *-winbond)
- os=-proelf
- ;;
- *-oki)
- os=-proelf
- ;;
- *-hp)
- os=-hpux
- ;;
- *-hitachi)
- os=-hiux
- ;;
- i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
- ;;
- *-cbm)
- os=-amigaos
- ;;
- *-dg)
- os=-dgux
- ;;
- *-dolphin)
- os=-sysv3
- ;;
- m68k-ccur)
- os=-rtu
- ;;
- m88k-omron*)
- os=-luna
- ;;
- *-next )
- os=-nextstep
- ;;
- *-sequent)
- os=-ptx
- ;;
- *-crds)
- os=-unos
- ;;
- *-ns)
- os=-genix
- ;;
- i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
- ;;
- *-gould)
- os=-sysv
- ;;
- *-highlevel)
- os=-bsd
- ;;
- *-encore)
- os=-bsd
- ;;
- *-sgi)
- os=-irix
- ;;
- *-siemens)
- os=-sysv4
- ;;
- *-masscomp)
- os=-rtu
- ;;
- f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
- ;;
- *-rom68k)
- os=-coff
- ;;
- *-*bug)
- os=-coff
- ;;
- *-apple)
- os=-macos
- ;;
- *-atari*)
- os=-mint
- ;;
- *)
- os=-none
- ;;
-esac
-fi
-
-# Here we handle the case where we know the os, and the CPU type, but not the
-# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
- case $os in
- -riscix*)
- vendor=acorn
- ;;
- -sunos*)
- vendor=sun
- ;;
- -cnk*|-aix*)
- vendor=ibm
- ;;
- -beos*)
- vendor=be
- ;;
- -hpux*)
- vendor=hp
- ;;
- -mpeix*)
- vendor=hp
- ;;
- -hiux*)
- vendor=hitachi
- ;;
- -unos*)
- vendor=crds
- ;;
- -dgux*)
- vendor=dg
- ;;
- -luna*)
- vendor=omron
- ;;
- -genix*)
- vendor=ns
- ;;
- -mvs* | -opened*)
- vendor=ibm
- ;;
- -os400*)
- vendor=ibm
- ;;
- -ptx*)
- vendor=sequent
- ;;
- -tpf*)
- vendor=ibm
- ;;
- -vxsim* | -vxworks* | -windiss*)
- vendor=wrs
- ;;
- -aux*)
- vendor=apple
- ;;
- -hms*)
- vendor=hitachi
- ;;
- -mpw* | -macos*)
- vendor=apple
- ;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- vendor=atari
- ;;
- -vos*)
- vendor=stratus
- ;;
- esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
- ;;
-esac
-
-echo $basic_machine$os
-exit
-
-# Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "timestamp='"
-# time-stamp-format: "%:y-%02m-%02d"
-# time-stamp-end: "'"
-# End:
diff --git a/configure b/configure
index bc62691..852601d 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for GNU make 4.2.1.
+# Generated by GNU Autoconf 2.69 for GNU make 4.3.
#
# Report bugs to <bug-make@gnu.org>.
#
@@ -580,12 +580,13 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='GNU make'
PACKAGE_TARNAME='make'
-PACKAGE_VERSION='4.2.1'
-PACKAGE_STRING='GNU make 4.2.1'
+PACKAGE_VERSION='4.3'
+PACKAGE_STRING='GNU make 4.3'
PACKAGE_BUGREPORT='bug-make@gnu.org'
PACKAGE_URL='http://www.gnu.org/software/make/'
-ac_unique_file="vpath.c"
+ac_unique_file="src/vpath.c"
+ac_config_libobj_dir=lib
# Factoring default headers for most tests.
ac_includes_default="\
#include <stdio.h>
@@ -622,25 +623,24 @@ ac_includes_default="\
# include <unistd.h>
#endif"
+ac_func_list=
+ac_header_list=
gt_needs=
-ac_subst_vars='am__EXEEXT_FALSE
+ac_subst_vars='gltests_LTLIBOBJS
+gltests_LIBOBJS
+gl_LTLIBOBJS
+gl_LIBOBJS
+am__EXEEXT_FALSE
am__EXEEXT_TRUE
LTLIBOBJS
+LIBOBJS
WINDOWSENV_FALSE
WINDOWSENV_TRUE
MAKE_HOST
-USE_LOCAL_GLOB_FALSE
-USE_LOCAL_GLOB_TRUE
-GLOBLIB
-GLOBINC
AM_LDFLAGS
USE_CUSTOMS_FALSE
USE_CUSTOMS_TRUE
REMOTE
-GETLOADAVG_LIBS
-KMEM_GROUP
-NEED_SETGID
-LIBOBJS
HAVE_GUILE_FALSE
HAVE_GUILE_TRUE
GUILE_LIBS
@@ -648,10 +648,7 @@ GUILE_CFLAGS
PKG_CONFIG_LIBDIR
PKG_CONFIG_PATH
PKG_CONFIG
-ALLOCA
POSUB
-LTLIBINTL
-LIBINTL
INTLLIBS
LTLIBICONV
LIBICONV
@@ -667,6 +664,378 @@ MSGFMT
GETTEXT_MACRO_VERSION
USE_NLS
SED
+PERL
+LIBGNU_LTLIBDEPS
+LIBGNU_LIBDEPS
+gltests_WITNESS
+HAVE_UNISTD_H
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H
+NEXT_UNISTD_H
+WINDOWS_STAT_INODES
+WINDOWS_64_BIT_OFF_T
+NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H
+NEXT_SYS_TYPES_H
+NEXT_AS_FIRST_DIRECTIVE_STRING_H
+NEXT_STRING_H
+UNDEFINE_STRTOK_R
+REPLACE_STRSIGNAL
+REPLACE_STRERROR_R
+REPLACE_STRERROR
+REPLACE_STRTOK_R
+REPLACE_STRCASESTR
+REPLACE_STRSTR
+REPLACE_STRNLEN
+REPLACE_STRNDUP
+REPLACE_STRNCAT
+REPLACE_STRDUP
+REPLACE_STRCHRNUL
+REPLACE_STPNCPY
+REPLACE_MEMMEM
+REPLACE_MEMCHR
+HAVE_STRVERSCMP
+HAVE_DECL_STRSIGNAL
+HAVE_DECL_STRERROR_R
+HAVE_DECL_STRTOK_R
+HAVE_STRCASESTR
+HAVE_STRSEP
+HAVE_STRPBRK
+HAVE_DECL_STRNLEN
+HAVE_DECL_STRNDUP
+HAVE_DECL_STRDUP
+HAVE_STRCHRNUL
+HAVE_STPNCPY
+HAVE_STPCPY
+HAVE_RAWMEMCHR
+HAVE_DECL_MEMRCHR
+HAVE_MEMPCPY
+HAVE_DECL_MEMMEM
+HAVE_MEMCHR
+HAVE_FFSLL
+HAVE_FFSL
+HAVE_EXPLICIT_BZERO
+HAVE_MBSLEN
+GNULIB_STRVERSCMP
+GNULIB_STRSIGNAL
+GNULIB_STRERROR_R
+GNULIB_STRERROR
+GNULIB_MBSTOK_R
+GNULIB_MBSSEP
+GNULIB_MBSSPN
+GNULIB_MBSPBRK
+GNULIB_MBSCSPN
+GNULIB_MBSCASESTR
+GNULIB_MBSPCASECMP
+GNULIB_MBSNCASECMP
+GNULIB_MBSCASECMP
+GNULIB_MBSSTR
+GNULIB_MBSRCHR
+GNULIB_MBSCHR
+GNULIB_MBSNLEN
+GNULIB_MBSLEN
+GNULIB_STRTOK_R
+GNULIB_STRCASESTR
+GNULIB_STRSTR
+GNULIB_STRSEP
+GNULIB_STRPBRK
+GNULIB_STRNLEN
+GNULIB_STRNDUP
+GNULIB_STRNCAT
+GNULIB_STRDUP
+GNULIB_STRCHRNUL
+GNULIB_STPNCPY
+GNULIB_STPCPY
+GNULIB_RAWMEMCHR
+GNULIB_MEMRCHR
+GNULIB_MEMPCPY
+GNULIB_MEMMEM
+GNULIB_MEMCHR
+GNULIB_FFSLL
+GNULIB_FFSL
+GNULIB_EXPLICIT_BZERO
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H
+NEXT_STDLIB_H
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H
+NEXT_STDIO_H
+REPLACE_VSPRINTF
+REPLACE_VSNPRINTF
+REPLACE_VPRINTF
+REPLACE_VFPRINTF
+REPLACE_VDPRINTF
+REPLACE_VASPRINTF
+REPLACE_TMPFILE
+REPLACE_STDIO_WRITE_FUNCS
+REPLACE_STDIO_READ_FUNCS
+REPLACE_SPRINTF
+REPLACE_SNPRINTF
+REPLACE_RENAMEAT
+REPLACE_RENAME
+REPLACE_REMOVE
+REPLACE_PRINTF
+REPLACE_POPEN
+REPLACE_PERROR
+REPLACE_OBSTACK_PRINTF
+REPLACE_GETLINE
+REPLACE_GETDELIM
+REPLACE_FTELLO
+REPLACE_FTELL
+REPLACE_FSEEKO
+REPLACE_FSEEK
+REPLACE_FREOPEN
+REPLACE_FPURGE
+REPLACE_FPRINTF
+REPLACE_FOPEN
+REPLACE_FFLUSH
+REPLACE_FDOPEN
+REPLACE_FCLOSE
+REPLACE_DPRINTF
+HAVE_VDPRINTF
+HAVE_VASPRINTF
+HAVE_RENAMEAT
+HAVE_POPEN
+HAVE_PCLOSE
+HAVE_FTELLO
+HAVE_FSEEKO
+HAVE_DPRINTF
+HAVE_DECL_VSNPRINTF
+HAVE_DECL_SNPRINTF
+HAVE_DECL_OBSTACK_PRINTF
+HAVE_DECL_GETLINE
+HAVE_DECL_GETDELIM
+HAVE_DECL_FTELLO
+HAVE_DECL_FSEEKO
+HAVE_DECL_FPURGE
+GNULIB_VSPRINTF_POSIX
+GNULIB_VSNPRINTF
+GNULIB_VPRINTF_POSIX
+GNULIB_VPRINTF
+GNULIB_VFPRINTF_POSIX
+GNULIB_VFPRINTF
+GNULIB_VDPRINTF
+GNULIB_VSCANF
+GNULIB_VFSCANF
+GNULIB_VASPRINTF
+GNULIB_TMPFILE
+GNULIB_STDIO_H_SIGPIPE
+GNULIB_STDIO_H_NONBLOCKING
+GNULIB_SPRINTF_POSIX
+GNULIB_SNPRINTF
+GNULIB_SCANF
+GNULIB_RENAMEAT
+GNULIB_RENAME
+GNULIB_REMOVE
+GNULIB_PUTS
+GNULIB_PUTCHAR
+GNULIB_PUTC
+GNULIB_PRINTF_POSIX
+GNULIB_PRINTF
+GNULIB_POPEN
+GNULIB_PERROR
+GNULIB_PCLOSE
+GNULIB_OBSTACK_PRINTF_POSIX
+GNULIB_OBSTACK_PRINTF
+GNULIB_GETLINE
+GNULIB_GETDELIM
+GNULIB_GETCHAR
+GNULIB_GETC
+GNULIB_FWRITE
+GNULIB_FTELLO
+GNULIB_FTELL
+GNULIB_FSEEKO
+GNULIB_FSEEK
+GNULIB_FSCANF
+GNULIB_FREOPEN
+GNULIB_FREAD
+GNULIB_FPUTS
+GNULIB_FPUTC
+GNULIB_FPURGE
+GNULIB_FPRINTF_POSIX
+GNULIB_FPRINTF
+GNULIB_FOPEN
+GNULIB_FGETS
+GNULIB_FGETC
+GNULIB_FFLUSH
+GNULIB_FDOPEN
+GNULIB_FCLOSE
+GNULIB_DPRINTF
+GL_GENERATE_STDINT_H_FALSE
+GL_GENERATE_STDINT_H_TRUE
+STDINT_H
+HAVE_SYS_INTTYPES_H
+HAVE_SYS_BITYPES_H
+HAVE_C99_STDINT_H
+WINT_T_SUFFIX
+WCHAR_T_SUFFIX
+SIG_ATOMIC_T_SUFFIX
+SIZE_T_SUFFIX
+PTRDIFF_T_SUFFIX
+HAVE_SIGNED_WINT_T
+HAVE_SIGNED_WCHAR_T
+HAVE_SIGNED_SIG_ATOMIC_T
+BITSIZEOF_WINT_T
+BITSIZEOF_WCHAR_T
+BITSIZEOF_SIG_ATOMIC_T
+BITSIZEOF_SIZE_T
+BITSIZEOF_PTRDIFF_T
+HAVE_STDINT_H
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H
+NEXT_STDINT_H
+HAVE_SYS_TYPES_H
+HAVE_INTTYPES_H
+HAVE_WCHAR_H
+GNULIB_OVERRIDES_WINT_T
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H
+NEXT_STDDEF_H
+GL_GENERATE_STDDEF_H_FALSE
+GL_GENERATE_STDDEF_H_TRUE
+STDDEF_H
+HAVE_WCHAR_T
+HAVE_MAX_ALIGN_T
+REPLACE_NULL
+HAVE__BOOL
+GL_GENERATE_STDBOOL_H_FALSE
+GL_GENERATE_STDBOOL_H_TRUE
+STDBOOL_H
+APPLE_UNIVERSAL_BUILD
+USE_SYSTEM_GLOB
+USE_SYSTEM_GLOB_FALSE
+USE_SYSTEM_GLOB_TRUE
+GL_GENERATE_LIMITS_H_FALSE
+GL_GENERATE_LIMITS_H_TRUE
+LIMITS_H
+NEXT_AS_FIRST_DIRECTIVE_LIMITS_H
+NEXT_LIMITS_H
+HOST_CPU_C_ABI
+HOST_CPU
+LTLIBINTL
+LIBINTL
+GETLOADAVG_LIBS
+REPLACE_WCTOMB
+REPLACE_UNSETENV
+REPLACE_STRTOLD
+REPLACE_STRTOD
+REPLACE_SETSTATE
+REPLACE_SETENV
+REPLACE_REALPATH
+REPLACE_REALLOC
+REPLACE_RANDOM_R
+REPLACE_RANDOM
+REPLACE_QSORT_R
+REPLACE_PUTENV
+REPLACE_PTSNAME_R
+REPLACE_PTSNAME
+REPLACE_MKSTEMP
+REPLACE_MBTOWC
+REPLACE_MALLOC
+REPLACE_INITSTATE
+REPLACE_CANONICALIZE_FILE_NAME
+REPLACE_CALLOC
+HAVE_DECL_UNSETENV
+HAVE_UNLOCKPT
+HAVE_SYS_LOADAVG_H
+HAVE_STRUCT_RANDOM_DATA
+HAVE_STRTOULL
+HAVE_STRTOLL
+HAVE_STRTOLD
+HAVE_STRTOD
+HAVE_DECL_SETSTATE
+HAVE_SETSTATE
+HAVE_DECL_SETENV
+HAVE_SETENV
+HAVE_SECURE_GETENV
+HAVE_RPMATCH
+HAVE_REALPATH
+HAVE_REALLOCARRAY
+HAVE_RANDOM_R
+HAVE_RANDOM_H
+HAVE_RANDOM
+HAVE_QSORT_R
+HAVE_PTSNAME_R
+HAVE_PTSNAME
+HAVE_POSIX_OPENPT
+HAVE_MKSTEMPS
+HAVE_MKSTEMP
+HAVE_MKOSTEMPS
+HAVE_MKOSTEMP
+HAVE_MKDTEMP
+HAVE_MBTOWC
+HAVE_DECL_INITSTATE
+HAVE_INITSTATE
+HAVE_GRANTPT
+HAVE_GETSUBOPT
+HAVE_DECL_GETLOADAVG
+HAVE_CANONICALIZE_FILE_NAME
+HAVE_ATOLL
+HAVE__EXIT
+GNULIB_WCTOMB
+GNULIB_UNSETENV
+GNULIB_UNLOCKPT
+GNULIB_SYSTEM_POSIX
+GNULIB_STRTOULL
+GNULIB_STRTOLL
+GNULIB_STRTOLD
+GNULIB_STRTOD
+GNULIB_SETENV
+GNULIB_SECURE_GETENV
+GNULIB_RPMATCH
+GNULIB_REALPATH
+GNULIB_REALLOC_POSIX
+GNULIB_REALLOCARRAY
+GNULIB_RANDOM_R
+GNULIB_RANDOM
+GNULIB_QSORT_R
+GNULIB_PUTENV
+GNULIB_PTSNAME_R
+GNULIB_PTSNAME
+GNULIB_POSIX_OPENPT
+GNULIB_MKSTEMPS
+GNULIB_MKSTEMP
+GNULIB_MKOSTEMPS
+GNULIB_MKOSTEMP
+GNULIB_MKDTEMP
+GNULIB_MBTOWC
+GNULIB_MALLOC_POSIX
+GNULIB_GRANTPT
+GNULIB_GETSUBOPT
+GNULIB_GETLOADAVG
+GNULIB_CANONICALIZE_FILE_NAME
+GNULIB_CALLOC_POSIX
+GNULIB_ATOLL
+GNULIB__EXIT
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H
+NEXT_FCNTL_H
+REPLACE_OPENAT
+REPLACE_OPEN
+REPLACE_FCNTL
+REPLACE_CREAT
+HAVE_OPENAT
+HAVE_FCNTL
+GNULIB_OPENAT
+GNULIB_OPEN
+GNULIB_NONBLOCKING
+GNULIB_FCNTL
+GNULIB_CREAT
+EOVERFLOW_VALUE
+EOVERFLOW_HIDDEN
+ENOLINK_VALUE
+ENOLINK_HIDDEN
+EMULTIHOP_VALUE
+EMULTIHOP_HIDDEN
+GL_GENERATE_ERRNO_H_FALSE
+GL_GENERATE_ERRNO_H_TRUE
+ERRNO_H
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H
+NEXT_ERRNO_H
+PRAGMA_COLUMNS
+PRAGMA_SYSTEM_HEADER
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE
+INCLUDE_NEXT
+HAVE_WINSOCK2_H
+HAVE_MSVC_INVALID_PARAMETER_HANDLER
+HAVE_ALLOCA_H
+GL_GENERATE_ALLOCA_H_FALSE
+GL_GENERATE_ALLOCA_H_TRUE
+ALLOCA_H
+ALLOCA
host_os
host_vendor
host_cpu
@@ -675,10 +1044,146 @@ build_os
build_vendor
build_cpu
build
-ac_ct_AR
-PERL
-AR
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS
+UNISTD_H_HAVE_WINSOCK2_H
+REPLACE_WRITE
+REPLACE_USLEEP
+REPLACE_UNLINKAT
+REPLACE_UNLINK
+REPLACE_TTYNAME_R
+REPLACE_TRUNCATE
+REPLACE_SYMLINKAT
+REPLACE_SYMLINK
+REPLACE_SLEEP
+REPLACE_RMDIR
+REPLACE_READLINKAT
+REPLACE_READLINK
+REPLACE_READ
+REPLACE_PWRITE
+REPLACE_PREAD
+REPLACE_LSEEK
+REPLACE_LINKAT
+REPLACE_LINK
+REPLACE_LCHOWN
+REPLACE_ISATTY
+REPLACE_GETPASS
+REPLACE_GETPAGESIZE
+REPLACE_GETGROUPS
+REPLACE_GETLOGIN_R
+REPLACE_GETDTABLESIZE
+REPLACE_GETDOMAINNAME
+REPLACE_GETCWD
+REPLACE_FTRUNCATE
+REPLACE_FCHOWNAT
+REPLACE_FACCESSAT
+REPLACE_DUP2
+REPLACE_DUP
+REPLACE_CLOSE
+REPLACE_CHOWN
+REPLACE_ACCESS
+HAVE_SYS_PARAM_H
+HAVE_OS_H
+HAVE_DECL_TTYNAME_R
+HAVE_DECL_TRUNCATE
+HAVE_DECL_SETHOSTNAME
+HAVE_DECL_GETUSERSHELL
+HAVE_DECL_GETPAGESIZE
+HAVE_DECL_GETLOGIN_R
+HAVE_DECL_GETLOGIN
+HAVE_DECL_GETDOMAINNAME
+HAVE_DECL_FDATASYNC
+HAVE_DECL_FCHDIR
+HAVE_DECL_ENVIRON
+HAVE_USLEEP
+HAVE_UNLINKAT
+HAVE_SYMLINKAT
+HAVE_SYMLINK
+HAVE_SLEEP
+HAVE_SETHOSTNAME
+HAVE_READLINKAT
+HAVE_READLINK
+HAVE_PWRITE
+HAVE_PREAD
+HAVE_PIPE2
+HAVE_PIPE
+HAVE_LINKAT
+HAVE_LINK
+HAVE_LCHOWN
+HAVE_GROUP_MEMBER
+HAVE_GETPASS
+HAVE_GETPAGESIZE
+HAVE_GETLOGIN
+HAVE_GETHOSTNAME
+HAVE_GETGROUPS
+HAVE_GETDTABLESIZE
+HAVE_FTRUNCATE
+HAVE_FSYNC
+HAVE_FDATASYNC
+HAVE_FCHOWNAT
+HAVE_FCHDIR
+HAVE_FACCESSAT
+HAVE_EUIDACCESS
+HAVE_DUP3
+HAVE_DUP2
+HAVE_COPY_FILE_RANGE
+HAVE_CHOWN
+GNULIB_WRITE
+GNULIB_USLEEP
+GNULIB_UNLINKAT
+GNULIB_UNLINK
+GNULIB_UNISTD_H_SIGPIPE
+GNULIB_UNISTD_H_NONBLOCKING
+GNULIB_TTYNAME_R
+GNULIB_TRUNCATE
+GNULIB_SYMLINKAT
+GNULIB_SYMLINK
+GNULIB_SLEEP
+GNULIB_SETHOSTNAME
+GNULIB_RMDIR
+GNULIB_READLINKAT
+GNULIB_READLINK
+GNULIB_READ
+GNULIB_PWRITE
+GNULIB_PREAD
+GNULIB_PIPE2
+GNULIB_PIPE
+GNULIB_LSEEK
+GNULIB_LINKAT
+GNULIB_LINK
+GNULIB_LCHOWN
+GNULIB_ISATTY
+GNULIB_GROUP_MEMBER
+GNULIB_GETUSERSHELL
+GNULIB_GETPASS
+GNULIB_GETPAGESIZE
+GNULIB_GETLOGIN_R
+GNULIB_GETLOGIN
+GNULIB_GETHOSTNAME
+GNULIB_GETGROUPS
+GNULIB_GETDTABLESIZE
+GNULIB_GETDOMAINNAME
+GNULIB_GETCWD
+GNULIB_FTRUNCATE
+GNULIB_FSYNC
+GNULIB_FDATASYNC
+GNULIB_FCHOWNAT
+GNULIB_FCHDIR
+GNULIB_FACCESSAT
+GNULIB_EUIDACCESS
+GNULIB_ENVIRON
+GNULIB_DUP3
+GNULIB_DUP2
+GNULIB_DUP
+GNULIB_COPY_FILE_RANGE
+GNULIB_CLOSE
+GNULIB_CHOWN
+GNULIB_CHDIR
+GNULIB_ACCESS
+GL_COND_LIBTOOL_FALSE
+GL_COND_LIBTOOL_TRUE
RANLIB
+ARFLAGS
+AR
EGREP
GREP
CPP
@@ -689,7 +1194,6 @@ am__nodep
AMDEPBACKSLASH
AMDEP_FALSE
AMDEP_TRUE
-am__quote
am__include
DEPDIR
OBJEXT
@@ -764,12 +1268,14 @@ PACKAGE_VERSION
PACKAGE_TARNAME
PACKAGE_NAME
PATH_SEPARATOR
-SHELL'
+SHELL
+am__quote'
ac_subst_files='MAINT_MAKEFILE'
ac_user_opts='
enable_option_checking
enable_silent_rules
enable_dependency_tracking
+enable_cross_guesses
enable_nls
with_gnu_ld
enable_rpath
@@ -781,6 +1287,7 @@ with_customs
enable_case_insensitive_file_system
enable_job_server
enable_load
+enable_posix_spawn
with_dmalloc
'
ac_precious_vars='build_alias
@@ -1347,7 +1854,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures GNU make 4.2.1 to adapt to many kinds of systems.
+\`configure' configures GNU make 4.3 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1418,7 +1925,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GNU make 4.2.1:";;
+ short | recursive ) echo "Configuration of GNU make 4.3:";;
esac
cat <<\_ACEOF
@@ -1432,6 +1939,8 @@ Optional Features:
do not reject slow dependency extractors
--disable-dependency-tracking
speeds up one-time build
+ --enable-cross-guesses={conservative|risky}
+ specify policy for cross-compilation guesses
--disable-nls do not use Native Language Support
--disable-rpath do not hardcode runtime library paths
--disable-largefile omit support for large files
@@ -1439,6 +1948,7 @@ Optional Features:
assume file systems are case insensitive
--disable-job-server disallow recursive make communication during -jN
--disable-load disable support for the 'load' operation
+ --disable-posix-spawn disable support for posix_spawn()
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -1538,7 +2048,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-GNU make configure 4.2.1
+GNU make configure 4.3
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1791,52 +2301,6 @@ $as_echo "$ac_res" >&6; }
} # ac_fn_c_check_header_compile
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- test -x conftest$ac_exeext
- }; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
- # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
- # interfere with the next link command; also delete a directory that is
- # left behind by Apple's compiler. We do this before executing the actions.
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_link
-
# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
# -------------------------------------------
# Tests whether TYPE exists after having included INCLUDES, setting cache
@@ -1891,6 +2355,52 @@ $as_echo "$ac_res" >&6; }
} # ac_fn_c_check_type
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ test -x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
# ac_fn_c_check_func LINENO FUNC VAR
# ----------------------------------
# Tests whether FUNC exists, setting the cache variable VAR accordingly
@@ -1958,6 +2468,189 @@ $as_echo "$ac_res" >&6; }
} # ac_fn_c_check_func
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_hi=$ac_mid; break
+else
+ as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_lo=$ac_mid; break
+else
+ as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_hi=$ac_mid
+else
+ as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if (($2) < 0)
+ {
+ long int i = longval ();
+ if (i != ($2))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != ($2))
+ return 1;
+ fprintf (f, "%lu", i);
+ }
+ /* Do not output a trailing newline, as this causes \r\n confusion
+ on some platforms. */
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+ ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+ fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_compute_int
+
# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
# ---------------------------------------------
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
@@ -2064,7 +2757,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by GNU make $as_me 4.2.1, which was
+It was created by GNU make $as_me 4.3, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2344,6 +3037,18 @@ $as_echo "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
+as_fn_append ac_func_list " _set_invalid_parameter_handler"
+as_fn_append ac_header_list " sys/socket.h"
+as_fn_append ac_func_list " fcntl"
+as_fn_append ac_header_list " unistd.h"
+as_fn_append ac_func_list " symlink"
+as_fn_append ac_func_list " getdtablesize"
+as_fn_append ac_header_list " sys/param.h"
+as_fn_append ac_func_list " getprogname"
+as_fn_append ac_func_list " getexecname"
+as_fn_append ac_header_list " limits.h"
+as_fn_append ac_header_list " wchar.h"
+as_fn_append ac_header_list " stdint.h"
gt_needs="$gt_needs "
# Check that the precious variables saved in the cache have kept the same
# value.
@@ -2418,7 +3123,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
# Autoconf setup
ac_aux_dir=
-for ac_dir in config "$srcdir"/config; do
+for ac_dir in build-aux "$srcdir"/build-aux; do
if test -f "$ac_dir/install-sh"; then
ac_aux_dir=$ac_dir
ac_install_sh="$ac_aux_dir/install-sh -c"
@@ -2434,7 +3139,7 @@ for ac_dir in config "$srcdir"/config; do
fi
done
if test -z "$ac_aux_dir"; then
- as_fn_error $? "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5
fi
# These three variables are undocumented and unsupported,
@@ -2447,14 +3152,17 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-ac_config_headers="$ac_config_headers config.h"
+ac_config_headers="$ac_config_headers src/config.h"
+
+
# Automake setup
# We have to enable "foreign" because ChangeLog is auto-generated
-# We cannot enable -Werror because gettext 0.18.1 has invalid content
-# When we update gettext to 0.18.3 or better we can add it again.
-am__api_version='1.15'
+# Automake 1.15 and gnulib don't get along: gnulib has some strange error
+# in the way it handles getloadavg.c which causes make distcheck to fail.
+# http://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html
+am__api_version='1.16'
# Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
@@ -2940,7 +3648,7 @@ fi
# Define the identity of the package.
PACKAGE='make'
- VERSION='4.2.1'
+ VERSION='4.3'
cat >>confdefs.h <<_ACEOF
@@ -2970,8 +3678,8 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
# For better backward compatibility. To be removed once Automake 1.9.x
# dies out for good. For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
mkdir_p='$(MKDIR_P)'
# We need awk for the "check" target (and possibly the TAP driver). The
@@ -3022,7 +3730,7 @@ END
Aborting the configuration process, to ensure you take notice of the issue.
You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
+that behaves properly: <https://www.gnu.org/software/coreutils/>.
If you want to complete the configuration process using your problematic
'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
@@ -3039,45 +3747,45 @@ DEPDIR="${am__leading_dot}deps"
ac_config_commands="$ac_config_commands depfiles"
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
+$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; }
+cat > confinc.mk << 'END'
am__doit:
- @echo this is the am__doit target
+ @echo this is the am__doit target >confinc.out
.PHONY: am__doit
END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
am__include="#"
am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
- am__include=include
- am__quote=
- _am_result=GNU
- ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
- echo '.include "confinc"' > confmf
- case `$am_make -s -f confmf 2> /dev/null` in #(
- *the\ am__doit\ target*)
- am__include=.include
- am__quote="\""
- _am_result=BSD
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+ { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5
+ (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ case $?:`cat confinc.out 2>/dev/null` in #(
+ '0:this is the am__doit target') :
+ case $s in #(
+ BSD) :
+ am__include='.include' am__quote='"' ;; #(
+ *) :
+ am__include='include' am__quote='' ;;
+esac ;; #(
+ *) :
;;
- esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
+esac
+ if test "$am__include" != "#"; then
+ _am_result="yes ($s style)"
+ break
+ fi
+done
+rm -f confinc.* confmf.*
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
+$as_echo "${_am_result}" >&6; }
# Check whether --enable-dependency-tracking was given.
if test "${enable_dependency_tracking+set}" = set; then :
@@ -4491,6 +5199,9 @@ $as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
$as_echo "#define _MINIX 1" >>confdefs.h
+
+$as_echo "#define _NETBSD_SOURCE 1" >>confdefs.h
+
fi
@@ -4526,12 +5237,82 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
$as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+ $as_echo "#define _DARWIN_C_SOURCE 1" >>confdefs.h
+
$as_echo "#define _GNU_SOURCE 1" >>confdefs.h
+ $as_echo "#define _NETBSD_SOURCE 1" >>confdefs.h
+
+ $as_echo "#define _OPENBSD_SOURCE 1" >>confdefs.h
+
$as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+ $as_echo "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h
+
+ $as_echo "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h
+
+ $as_echo "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h
+
+ $as_echo "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h
+
+ $as_echo "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h
+
+ $as_echo "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h
+
+ $as_echo "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h
+
$as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5
+$as_echo_n "checking whether _XOPEN_SOURCE should be defined... " >&6; }
+if ${ac_cv_should_define__xopen_source+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_should_define__xopen_source=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <wchar.h>
+ mbstate_t x;
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #define _XOPEN_SOURCE 500
+ #include <wchar.h>
+ mbstate_t x;
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_should_define__xopen_source=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5
+$as_echo "$ac_cv_should_define__xopen_source" >&6; }
+ test $ac_cv_should_define__xopen_source = yes &&
+ $as_echo "#define _XOPEN_SOURCE 500" >>confdefs.h
+
+ $as_echo "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -5260,6 +6041,6272 @@ fi
+# Configure gnulib
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Minix Amsterdam compiler" >&5
+$as_echo_n "checking for Minix Amsterdam compiler... " >&6; }
+if ${gl_cv_c_amsterdam_compiler+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef __ACK__
+Amsterdam
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Amsterdam" >/dev/null 2>&1; then :
+ gl_cv_c_amsterdam_compiler=yes
+else
+ gl_cv_c_amsterdam_compiler=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_amsterdam_compiler" >&5
+$as_echo "$gl_cv_c_amsterdam_compiler" >&6; }
+
+ if test $gl_cv_c_amsterdam_compiler = yes; then
+ if test -z "$AR"; then
+ AR='cc -c.a'
+ fi
+ if test -z "$ARFLAGS"; then
+ ARFLAGS='-o'
+ fi
+ else
+ :
+ fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="${ac_tool_prefix}ar"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="ar"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_AR" = x; then
+ AR="ar"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+else
+ AR="$ac_cv_prog_AR"
+fi
+
+ if test -z "$ARFLAGS"; then
+ ARFLAGS='cr'
+ fi
+
+
+
+ if test -z "$RANLIB"; then
+ if test $gl_cv_c_amsterdam_compiler = yes; then
+ RANLIB=':'
+ else
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+ fi
+ fi
+
+
+
+
+ # Pre-early section.
+
+
+
+ # Code from module absolute-header:
+ # Code from module access:
+ # Code from module alloca:
+ # Code from module alloca-opt:
+ # Code from module close:
+ # Code from module concat-filename:
+ # Code from module dirname-lgpl:
+ # Code from module dosname:
+ # Code from module double-slash-root:
+ # Code from module dup2:
+ # Code from module errno:
+ # Code from module error:
+ # Code from module exitfail:
+ # Code from module extensions:
+ # Code from module extern-inline:
+ # Code from module fcntl:
+ # Code from module fcntl-h:
+ # Code from module fd-hook:
+ # Code from module fdl:
+ # Code from module filename:
+ # Code from module findprog-in:
+ # Code from module getdtablesize:
+ # Code from module getloadavg:
+ # Code from module getprogname:
+ # Code from module gettext-h:
+ # Code from module host-cpu-c-abi:
+ # Code from module include_next:
+ # Code from module intprops:
+ # Code from module limits-h:
+ # Code from module make-glob:
+ # Code from module malloc-posix:
+ # Code from module msvc-inval:
+ # Code from module msvc-nothrow:
+ # Code from module multiarch:
+ # Code from module snippet/_Noreturn:
+ # Code from module snippet/arg-nonnull:
+ # Code from module snippet/c++defs:
+ # Code from module snippet/warn-on-use:
+ # Code from module ssize_t:
+ # Code from module stdbool:
+ # Code from module stddef:
+ # Code from module stdint:
+ # Code from module stdio:
+ # Code from module stdlib:
+ # Code from module stpcpy:
+ # Code from module strerror:
+ # Code from module strerror-override:
+ # Code from module string:
+ # Code from module sys_types:
+ # Code from module unistd:
+ # Code from module verify:
+ # Code from module xalloc:
+ # Code from module xalloc-die:
+ # Code from module xalloc-oversized:
+ # Code from module xconcat-filename:
+
+
+
+
+
+
+
+ # Check whether --enable-cross-guesses was given.
+if test "${enable_cross_guesses+set}" = set; then :
+ enableval=$enable_cross_guesses; if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: invalid argument supplied to --enable-cross-guesses" >&5
+$as_echo "$as_me: WARNING: invalid argument supplied to --enable-cross-guesses" >&2;}
+ enableval=conservative
+ fi
+ gl_cross_guesses="$enableval"
+else
+ gl_cross_guesses=conservative
+fi
+
+ if test $gl_cross_guesses = risky; then
+ gl_cross_guess_normal="guessing yes"
+ gl_cross_guess_inverted="guessing no"
+ else
+ gl_cross_guess_normal="guessing no"
+ gl_cross_guess_inverted="guessing yes"
+ fi
+ LIBC_FATAL_STDERR_=1
+ export LIBC_FATAL_STDERR_
+
+
+ GNULIB_ACCESS=0;
+ GNULIB_CHDIR=0;
+ GNULIB_CHOWN=0;
+ GNULIB_CLOSE=0;
+ GNULIB_COPY_FILE_RANGE=0;
+ GNULIB_DUP=0;
+ GNULIB_DUP2=0;
+ GNULIB_DUP3=0;
+ GNULIB_ENVIRON=0;
+ GNULIB_EUIDACCESS=0;
+ GNULIB_FACCESSAT=0;
+ GNULIB_FCHDIR=0;
+ GNULIB_FCHOWNAT=0;
+ GNULIB_FDATASYNC=0;
+ GNULIB_FSYNC=0;
+ GNULIB_FTRUNCATE=0;
+ GNULIB_GETCWD=0;
+ GNULIB_GETDOMAINNAME=0;
+ GNULIB_GETDTABLESIZE=0;
+ GNULIB_GETGROUPS=0;
+ GNULIB_GETHOSTNAME=0;
+ GNULIB_GETLOGIN=0;
+ GNULIB_GETLOGIN_R=0;
+ GNULIB_GETPAGESIZE=0;
+ GNULIB_GETPASS=0;
+ GNULIB_GETUSERSHELL=0;
+ GNULIB_GROUP_MEMBER=0;
+ GNULIB_ISATTY=0;
+ GNULIB_LCHOWN=0;
+ GNULIB_LINK=0;
+ GNULIB_LINKAT=0;
+ GNULIB_LSEEK=0;
+ GNULIB_PIPE=0;
+ GNULIB_PIPE2=0;
+ GNULIB_PREAD=0;
+ GNULIB_PWRITE=0;
+ GNULIB_READ=0;
+ GNULIB_READLINK=0;
+ GNULIB_READLINKAT=0;
+ GNULIB_RMDIR=0;
+ GNULIB_SETHOSTNAME=0;
+ GNULIB_SLEEP=0;
+ GNULIB_SYMLINK=0;
+ GNULIB_SYMLINKAT=0;
+ GNULIB_TRUNCATE=0;
+ GNULIB_TTYNAME_R=0;
+ GNULIB_UNISTD_H_NONBLOCKING=0;
+ GNULIB_UNISTD_H_SIGPIPE=0;
+ GNULIB_UNLINK=0;
+ GNULIB_UNLINKAT=0;
+ GNULIB_USLEEP=0;
+ GNULIB_WRITE=0;
+ HAVE_CHOWN=1;
+ HAVE_COPY_FILE_RANGE=1;
+ HAVE_DUP2=1;
+ HAVE_DUP3=1;
+ HAVE_EUIDACCESS=1;
+ HAVE_FACCESSAT=1;
+ HAVE_FCHDIR=1;
+ HAVE_FCHOWNAT=1;
+ HAVE_FDATASYNC=1;
+ HAVE_FSYNC=1;
+ HAVE_FTRUNCATE=1;
+ HAVE_GETDTABLESIZE=1;
+ HAVE_GETGROUPS=1;
+ HAVE_GETHOSTNAME=1;
+ HAVE_GETLOGIN=1;
+ HAVE_GETPAGESIZE=1;
+ HAVE_GETPASS=1;
+ HAVE_GROUP_MEMBER=1;
+ HAVE_LCHOWN=1;
+ HAVE_LINK=1;
+ HAVE_LINKAT=1;
+ HAVE_PIPE=1;
+ HAVE_PIPE2=1;
+ HAVE_PREAD=1;
+ HAVE_PWRITE=1;
+ HAVE_READLINK=1;
+ HAVE_READLINKAT=1;
+ HAVE_SETHOSTNAME=1;
+ HAVE_SLEEP=1;
+ HAVE_SYMLINK=1;
+ HAVE_SYMLINKAT=1;
+ HAVE_UNLINKAT=1;
+ HAVE_USLEEP=1;
+ HAVE_DECL_ENVIRON=1;
+ HAVE_DECL_FCHDIR=1;
+ HAVE_DECL_FDATASYNC=1;
+ HAVE_DECL_GETDOMAINNAME=1;
+ HAVE_DECL_GETLOGIN=1;
+ HAVE_DECL_GETLOGIN_R=1;
+ HAVE_DECL_GETPAGESIZE=1;
+ HAVE_DECL_GETUSERSHELL=1;
+ HAVE_DECL_SETHOSTNAME=1;
+ HAVE_DECL_TRUNCATE=1;
+ HAVE_DECL_TTYNAME_R=1;
+ HAVE_OS_H=0;
+ HAVE_SYS_PARAM_H=0;
+ REPLACE_ACCESS=0;
+ REPLACE_CHOWN=0;
+ REPLACE_CLOSE=0;
+ REPLACE_DUP=0;
+ REPLACE_DUP2=0;
+ REPLACE_FACCESSAT=0;
+ REPLACE_FCHOWNAT=0;
+ REPLACE_FTRUNCATE=0;
+ REPLACE_GETCWD=0;
+ REPLACE_GETDOMAINNAME=0;
+ REPLACE_GETDTABLESIZE=0;
+ REPLACE_GETLOGIN_R=0;
+ REPLACE_GETGROUPS=0;
+ REPLACE_GETPAGESIZE=0;
+ REPLACE_GETPASS=0;
+ REPLACE_ISATTY=0;
+ REPLACE_LCHOWN=0;
+ REPLACE_LINK=0;
+ REPLACE_LINKAT=0;
+ REPLACE_LSEEK=0;
+ REPLACE_PREAD=0;
+ REPLACE_PWRITE=0;
+ REPLACE_READ=0;
+ REPLACE_READLINK=0;
+ REPLACE_READLINKAT=0;
+ REPLACE_RMDIR=0;
+ REPLACE_SLEEP=0;
+ REPLACE_SYMLINK=0;
+ REPLACE_SYMLINKAT=0;
+ REPLACE_TRUNCATE=0;
+ REPLACE_TTYNAME_R=0;
+ REPLACE_UNLINK=0;
+ REPLACE_UNLINKAT=0;
+ REPLACE_USLEEP=0;
+ REPLACE_WRITE=0;
+ UNISTD_H_HAVE_WINSOCK2_H=0;
+ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0;
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments. Useless!
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
+$as_echo_n "checking for working alloca.h... " >&6; }
+if ${ac_cv_working_alloca_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <alloca.h>
+int
+main ()
+{
+char *p = (char *) alloca (2 * sizeof (int));
+ if (p) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_working_alloca_h=yes
+else
+ ac_cv_working_alloca_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
+$as_echo "$ac_cv_working_alloca_h" >&6; }
+if test $ac_cv_working_alloca_h = yes; then
+
+$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
+$as_echo_n "checking for alloca... " >&6; }
+if ${ac_cv_func_alloca_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef _MSC_VER
+# include <malloc.h>
+# define alloca _alloca
+# else
+# ifdef HAVE_ALLOCA_H
+# include <alloca.h>
+# else
+# ifdef _AIX
+ #pragma alloca
+# else
+# ifndef alloca /* predefined by HP cc +Olibcalls */
+void *alloca (size_t);
+# endif
+# endif
+# endif
+# endif
+#endif
+
+int
+main ()
+{
+char *p = (char *) alloca (1);
+ if (p) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_func_alloca_works=yes
+else
+ ac_cv_func_alloca_works=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
+$as_echo "$ac_cv_func_alloca_works" >&6; }
+
+if test $ac_cv_func_alloca_works = yes; then
+
+$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
+
+else
+ # The SVR3 libPW and SVR4 libucb both contain incompatible functions
+# that cause trouble. Some versions do not even contain alloca or
+# contain a buggy version. If you still want to use their alloca,
+# use ar to extract alloca.o from them instead of compiling alloca.c.
+
+
+
+
+
+ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
+
+$as_echo "#define C_ALLOCA 1" >>confdefs.h
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
+$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
+if ${ac_cv_os_cray+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined CRAY && ! defined CRAY2
+webecray
+#else
+wenotbecray
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "webecray" >/dev/null 2>&1; then :
+ ac_cv_os_cray=yes
+else
+ ac_cv_os_cray=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
+$as_echo "$ac_cv_os_cray" >&6; }
+if test $ac_cv_os_cray = yes; then
+ for ac_func in _getb67 GETB67 getb67; do
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+
+cat >>confdefs.h <<_ACEOF
+#define CRAY_STACKSEG_END $ac_func
+_ACEOF
+
+ break
+fi
+
+ done
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
+$as_echo_n "checking stack direction for C alloca... " >&6; }
+if ${ac_cv_c_stack_direction+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ ac_cv_c_stack_direction=0
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+int
+find_stack_direction (int *addr, int depth)
+{
+ int dir, dummy = 0;
+ if (! addr)
+ addr = &dummy;
+ *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
+ dir = depth ? find_stack_direction (addr, depth - 1) : 0;
+ return dir + dummy;
+}
+
+int
+main (int argc, char **argv)
+{
+ return find_stack_direction (0, argc + !argv + 20) < 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ ac_cv_c_stack_direction=1
+else
+ ac_cv_c_stack_direction=-1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
+$as_echo "$ac_cv_c_stack_direction" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define STACK_DIRECTION $ac_cv_c_stack_direction
+_ACEOF
+
+
+fi
+
+
+
+
+ for ac_func in $ac_func_list
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+
+ if test $ac_cv_func__set_invalid_parameter_handler = yes; then
+ HAVE_MSVC_INVALID_PARAMETER_HANDLER=1
+
+$as_echo "#define HAVE_MSVC_INVALID_PARAMETER_HANDLER 1" >>confdefs.h
+
+ else
+ HAVE_MSVC_INVALID_PARAMETER_HANDLER=0
+ fi
+
+
+
+
+
+ for ac_header in $ac_header_list
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether // is distinct from /" >&5
+$as_echo_n "checking whether // is distinct from /... " >&6; }
+if ${gl_cv_double_slash_root+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test x"$cross_compiling" = xyes ; then
+ # When cross-compiling, there is no way to tell whether // is special
+ # short of a list of hosts. However, the only known hosts to date
+ # that have a distinct // are Apollo DomainOS (too old to port to),
+ # Cygwin, and z/OS. If anyone knows of another system for which // has
+ # special semantics and is distinct from /, please report it to
+ # <bug-gnulib@gnu.org>.
+ case $host in
+ *-cygwin | i370-ibm-openedition)
+ gl_cv_double_slash_root=yes ;;
+ *)
+ # Be optimistic and assume that / and // are the same when we
+ # don't know.
+ gl_cv_double_slash_root='unknown, assuming no' ;;
+ esac
+ else
+ set x `ls -di / // 2>/dev/null`
+ if test "$2" = "$4" && wc //dev/null >/dev/null 2>&1; then
+ gl_cv_double_slash_root=no
+ else
+ gl_cv_double_slash_root=yes
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_double_slash_root" >&5
+$as_echo "$gl_cv_double_slash_root" >&6; }
+ if test "$gl_cv_double_slash_root" = yes; then
+
+$as_echo "#define DOUBLE_SLASH_IS_DISTINCT_ROOT 1" >>confdefs.h
+
+ fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the preprocessor supports include_next" >&5
+$as_echo_n "checking whether the preprocessor supports include_next... " >&6; }
+if ${gl_cv_have_include_next+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ rm -rf conftestd1a conftestd1b conftestd2
+ mkdir conftestd1a conftestd1b conftestd2
+ cat <<EOF > conftestd1a/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+ cat <<EOF > conftestd1b/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include <stdio.h>
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+ cat <<EOF > conftestd2/conftest.h
+#ifndef DEFINED_IN_CONFTESTD1
+#error "include_next test doesn't work"
+#endif
+#define DEFINED_IN_CONFTESTD2
+EOF
+ gl_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <conftest.h>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_have_include_next=yes
+else
+ CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <conftest.h>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_have_include_next=buggy
+else
+ gl_cv_have_include_next=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CPPFLAGS="$gl_save_CPPFLAGS"
+ rm -rf conftestd1a conftestd1b conftestd2
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_include_next" >&5
+$as_echo "$gl_cv_have_include_next" >&6; }
+ PRAGMA_SYSTEM_HEADER=
+ if test $gl_cv_have_include_next = yes; then
+ INCLUDE_NEXT=include_next
+ INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+ if test -n "$GCC"; then
+ PRAGMA_SYSTEM_HEADER='#pragma GCC system_header'
+ fi
+ else
+ if test $gl_cv_have_include_next = buggy; then
+ INCLUDE_NEXT=include
+ INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+ else
+ INCLUDE_NEXT=include
+ INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include
+ fi
+ fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system header files limit the line length" >&5
+$as_echo_n "checking whether system header files limit the line length... " >&6; }
+if ${gl_cv_pragma_columns+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef __TANDEM
+choke me
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "choke me" >/dev/null 2>&1; then :
+ gl_cv_pragma_columns=yes
+else
+ gl_cv_pragma_columns=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_pragma_columns" >&5
+$as_echo "$gl_cv_pragma_columns" >&6; }
+ if test $gl_cv_pragma_columns = yes; then
+ PRAGMA_COLUMNS="#pragma COLUMNS 10000"
+ else
+ PRAGMA_COLUMNS=
+ fi
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for complete errno.h" >&5
+$as_echo_n "checking for complete errno.h... " >&6; }
+if ${gl_cv_header_errno_h_complete+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <errno.h>
+#if !defined ETXTBSY
+booboo
+#endif
+#if !defined ENOMSG
+booboo
+#endif
+#if !defined EIDRM
+booboo
+#endif
+#if !defined ENOLINK
+booboo
+#endif
+#if !defined EPROTO
+booboo
+#endif
+#if !defined EMULTIHOP
+booboo
+#endif
+#if !defined EBADMSG
+booboo
+#endif
+#if !defined EOVERFLOW
+booboo
+#endif
+#if !defined ENOTSUP
+booboo
+#endif
+#if !defined ENETRESET
+booboo
+#endif
+#if !defined ECONNABORTED
+booboo
+#endif
+#if !defined ESTALE
+booboo
+#endif
+#if !defined EDQUOT
+booboo
+#endif
+#if !defined ECANCELED
+booboo
+#endif
+#if !defined EOWNERDEAD
+booboo
+#endif
+#if !defined ENOTRECOVERABLE
+booboo
+#endif
+#if !defined EILSEQ
+booboo
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "booboo" >/dev/null 2>&1; then :
+ gl_cv_header_errno_h_complete=no
+else
+ gl_cv_header_errno_h_complete=yes
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_complete" >&5
+$as_echo "$gl_cv_header_errno_h_complete" >&6; }
+ if test $gl_cv_header_errno_h_complete = yes; then
+ ERRNO_H=''
+ else
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_errno_h='<'errno.h'>'
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <errno.h>" >&5
+$as_echo_n "checking absolute name of <errno.h>... " >&6; }
+if ${gl_cv_next_errno_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <errno.h>
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+ gl_header_literal_regex=`echo 'errno.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+
+ gl_cv_absolute_errno_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`
+
+ gl_header=$gl_cv_absolute_errno_h
+ gl_cv_next_errno_h='"'$gl_header'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_errno_h" >&5
+$as_echo "$gl_cv_next_errno_h" >&6; }
+ fi
+ NEXT_ERRNO_H=$gl_cv_next_errno_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'errno.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_errno_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_ERRNO_H=$gl_next_as_first_directive
+
+
+
+
+ ERRNO_H='errno.h'
+ fi
+
+ if test -n "$ERRNO_H"; then
+ GL_GENERATE_ERRNO_H_TRUE=
+ GL_GENERATE_ERRNO_H_FALSE='#'
+else
+ GL_GENERATE_ERRNO_H_TRUE='#'
+ GL_GENERATE_ERRNO_H_FALSE=
+fi
+
+
+ if test -n "$ERRNO_H"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EMULTIHOP value" >&5
+$as_echo_n "checking for EMULTIHOP value... " >&6; }
+if ${gl_cv_header_errno_h_EMULTIHOP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <errno.h>
+#ifdef EMULTIHOP
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then :
+ gl_cv_header_errno_h_EMULTIHOP=yes
+else
+ gl_cv_header_errno_h_EMULTIHOP=no
+fi
+rm -f conftest*
+
+ if test $gl_cv_header_errno_h_EMULTIHOP = no; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef EMULTIHOP
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then :
+ gl_cv_header_errno_h_EMULTIHOP=hidden
+fi
+rm -f conftest*
+
+ if test $gl_cv_header_errno_h_EMULTIHOP = hidden; then
+ if ac_fn_c_compute_int "$LINENO" "EMULTIHOP" "gl_cv_header_errno_h_EMULTIHOP" "
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+"; then :
+
+fi
+
+ fi
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_EMULTIHOP" >&5
+$as_echo "$gl_cv_header_errno_h_EMULTIHOP" >&6; }
+ case $gl_cv_header_errno_h_EMULTIHOP in
+ yes | no)
+ EMULTIHOP_HIDDEN=0; EMULTIHOP_VALUE=
+ ;;
+ *)
+ EMULTIHOP_HIDDEN=1; EMULTIHOP_VALUE="$gl_cv_header_errno_h_EMULTIHOP"
+ ;;
+ esac
+
+
+ fi
+
+
+ if test -n "$ERRNO_H"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ENOLINK value" >&5
+$as_echo_n "checking for ENOLINK value... " >&6; }
+if ${gl_cv_header_errno_h_ENOLINK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <errno.h>
+#ifdef ENOLINK
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then :
+ gl_cv_header_errno_h_ENOLINK=yes
+else
+ gl_cv_header_errno_h_ENOLINK=no
+fi
+rm -f conftest*
+
+ if test $gl_cv_header_errno_h_ENOLINK = no; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef ENOLINK
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then :
+ gl_cv_header_errno_h_ENOLINK=hidden
+fi
+rm -f conftest*
+
+ if test $gl_cv_header_errno_h_ENOLINK = hidden; then
+ if ac_fn_c_compute_int "$LINENO" "ENOLINK" "gl_cv_header_errno_h_ENOLINK" "
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+"; then :
+
+fi
+
+ fi
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_ENOLINK" >&5
+$as_echo "$gl_cv_header_errno_h_ENOLINK" >&6; }
+ case $gl_cv_header_errno_h_ENOLINK in
+ yes | no)
+ ENOLINK_HIDDEN=0; ENOLINK_VALUE=
+ ;;
+ *)
+ ENOLINK_HIDDEN=1; ENOLINK_VALUE="$gl_cv_header_errno_h_ENOLINK"
+ ;;
+ esac
+
+
+ fi
+
+
+ if test -n "$ERRNO_H"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EOVERFLOW value" >&5
+$as_echo_n "checking for EOVERFLOW value... " >&6; }
+if ${gl_cv_header_errno_h_EOVERFLOW+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <errno.h>
+#ifdef EOVERFLOW
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then :
+ gl_cv_header_errno_h_EOVERFLOW=yes
+else
+ gl_cv_header_errno_h_EOVERFLOW=no
+fi
+rm -f conftest*
+
+ if test $gl_cv_header_errno_h_EOVERFLOW = no; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef EOVERFLOW
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then :
+ gl_cv_header_errno_h_EOVERFLOW=hidden
+fi
+rm -f conftest*
+
+ if test $gl_cv_header_errno_h_EOVERFLOW = hidden; then
+ if ac_fn_c_compute_int "$LINENO" "EOVERFLOW" "gl_cv_header_errno_h_EOVERFLOW" "
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+"; then :
+
+fi
+
+ fi
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_errno_h_EOVERFLOW" >&5
+$as_echo "$gl_cv_header_errno_h_EOVERFLOW" >&6; }
+ case $gl_cv_header_errno_h_EOVERFLOW in
+ yes | no)
+ EOVERFLOW_HIDDEN=0; EOVERFLOW_VALUE=
+ ;;
+ *)
+ EOVERFLOW_HIDDEN=1; EOVERFLOW_VALUE="$gl_cv_header_errno_h_EOVERFLOW"
+ ;;
+ esac
+
+
+ fi
+
+
+ac_fn_c_check_decl "$LINENO" "strerror_r" "ac_cv_have_decl_strerror_r" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strerror_r" = xyes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR_R $ac_have_decl
+_ACEOF
+
+for ac_func in strerror_r
+do :
+ ac_fn_c_check_func "$LINENO" "strerror_r" "ac_cv_func_strerror_r"
+if test "x$ac_cv_func_strerror_r" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_STRERROR_R 1
+_ACEOF
+
+fi
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strerror_r returns char *" >&5
+$as_echo_n "checking whether strerror_r returns char *... " >&6; }
+if ${ac_cv_func_strerror_r_char_p+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ac_cv_func_strerror_r_char_p=no
+ if test $ac_cv_have_decl_strerror_r = yes; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ char buf[100];
+ char x = *strerror_r (0, buf, sizeof buf);
+ char *p = strerror_r (0, buf, sizeof buf);
+ return !p || x;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_func_strerror_r_char_p=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ else
+ # strerror_r is not declared. Choose between
+ # systems that have relatively inaccessible declarations for the
+ # function. BeOS and DEC UNIX 4.0 fall in this category, but the
+ # former has a strerror_r that returns char*, while the latter
+ # has a strerror_r that returns `int'.
+ # This test should segfault on the DEC system.
+ if test "$cross_compiling" = yes; then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+ extern char *strerror_r ();
+int
+main ()
+{
+char buf[100];
+ char x = *strerror_r (0, buf, sizeof buf);
+ return ! isalpha (x);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ ac_cv_func_strerror_r_char_p=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strerror_r_char_p" >&5
+$as_echo "$ac_cv_func_strerror_r_char_p" >&6; }
+if test $ac_cv_func_strerror_r_char_p = yes; then
+
+$as_echo "#define STRERROR_R_CHAR_P 1" >>confdefs.h
+
+fi
+
+
+ XGETTEXT_EXTRA_OPTIONS=
+
+
+
+
+
+ GNULIB_CREAT=0;
+ GNULIB_FCNTL=0;
+ GNULIB_NONBLOCKING=0;
+ GNULIB_OPEN=0;
+ GNULIB_OPENAT=0;
+ HAVE_FCNTL=1;
+ HAVE_OPENAT=1;
+ REPLACE_CREAT=0;
+ REPLACE_FCNTL=0;
+ REPLACE_OPEN=0;
+ REPLACE_OPENAT=0;
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5
+$as_echo_n "checking for working fcntl.h... " >&6; }
+if ${gl_cv_header_working_fcntl_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ case "$host_os" in
+ # Guess 'no' on native Windows.
+ mingw*) gl_cv_header_working_fcntl_h='no' ;;
+ *) gl_cv_header_working_fcntl_h=cross-compiling ;;
+ esac
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/stat.h>
+ #if HAVE_UNISTD_H
+ # include <unistd.h>
+ #else /* on Windows with MSVC */
+ # include <io.h>
+ # include <stdlib.h>
+ # defined sleep(n) _sleep ((n) * 1000)
+ #endif
+ #include <fcntl.h>
+ #ifndef O_NOATIME
+ #define O_NOATIME 0
+ #endif
+ #ifndef O_NOFOLLOW
+ #define O_NOFOLLOW 0
+ #endif
+ static int const constants[] =
+ {
+ O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
+ O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
+ };
+
+int
+main ()
+{
+
+ int result = !constants;
+ #if HAVE_SYMLINK
+ {
+ static char const sym[] = "conftest.sym";
+ if (symlink ("/dev/null", sym) != 0)
+ result |= 2;
+ else
+ {
+ int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0);
+ if (fd >= 0)
+ {
+ close (fd);
+ result |= 4;
+ }
+ }
+ if (unlink (sym) != 0 || symlink (".", sym) != 0)
+ result |= 2;
+ else
+ {
+ int fd = open (sym, O_RDONLY | O_NOFOLLOW);
+ if (fd >= 0)
+ {
+ close (fd);
+ result |= 4;
+ }
+ }
+ unlink (sym);
+ }
+ #endif
+ {
+ static char const file[] = "confdefs.h";
+ int fd = open (file, O_RDONLY | O_NOATIME);
+ if (fd < 0)
+ result |= 8;
+ else
+ {
+ struct stat st0;
+ if (fstat (fd, &st0) != 0)
+ result |= 16;
+ else
+ {
+ char c;
+ sleep (1);
+ if (read (fd, &c, 1) != 1)
+ result |= 24;
+ else
+ {
+ if (close (fd) != 0)
+ result |= 32;
+ else
+ {
+ struct stat st1;
+ if (stat (file, &st1) != 0)
+ result |= 40;
+ else
+ if (st0.st_atime != st1.st_atime)
+ result |= 64;
+ }
+ }
+ }
+ }
+ }
+ return result;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ gl_cv_header_working_fcntl_h=yes
+else
+ case $? in #(
+ 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
+ 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
+ 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
+ *) gl_cv_header_working_fcntl_h='no';;
+ esac
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5
+$as_echo "$gl_cv_header_working_fcntl_h" >&6; }
+
+ case $gl_cv_header_working_fcntl_h in #(
+ *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
+ *) ac_val=1;;
+ esac
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_WORKING_O_NOATIME $ac_val
+_ACEOF
+
+
+ case $gl_cv_header_working_fcntl_h in #(
+ *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
+ *) ac_val=1;;
+ esac
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_WORKING_O_NOFOLLOW $ac_val
+_ACEOF
+
+
+ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
+if test "x$ac_cv_type_pid_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define pid_t int
+_ACEOF
+
+fi
+
+ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default"
+if test "x$ac_cv_type_mode_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define mode_t int
+_ACEOF
+
+fi
+
+
+ ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess"
+if test "x$ac_cv_func_eaccess" = xyes; then :
+
+else
+
+$as_echo "#define eaccess access" >>confdefs.h
+
+fi
+
+
+
+
+ac_fn_c_check_decl "$LINENO" "getdtablesize" "ac_cv_have_decl_getdtablesize" "$ac_includes_default"
+if test "x$ac_cv_have_decl_getdtablesize" = xyes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETDTABLESIZE $ac_have_decl
+_ACEOF
+
+
+ GNULIB__EXIT=0;
+ GNULIB_ATOLL=0;
+ GNULIB_CALLOC_POSIX=0;
+ GNULIB_CANONICALIZE_FILE_NAME=0;
+ GNULIB_GETLOADAVG=0;
+ GNULIB_GETSUBOPT=0;
+ GNULIB_GRANTPT=0;
+ GNULIB_MALLOC_POSIX=0;
+ GNULIB_MBTOWC=0;
+ GNULIB_MKDTEMP=0;
+ GNULIB_MKOSTEMP=0;
+ GNULIB_MKOSTEMPS=0;
+ GNULIB_MKSTEMP=0;
+ GNULIB_MKSTEMPS=0;
+ GNULIB_POSIX_OPENPT=0;
+ GNULIB_PTSNAME=0;
+ GNULIB_PTSNAME_R=0;
+ GNULIB_PUTENV=0;
+ GNULIB_QSORT_R=0;
+ GNULIB_RANDOM=0;
+ GNULIB_RANDOM_R=0;
+ GNULIB_REALLOCARRAY=0;
+ GNULIB_REALLOC_POSIX=0;
+ GNULIB_REALPATH=0;
+ GNULIB_RPMATCH=0;
+ GNULIB_SECURE_GETENV=0;
+ GNULIB_SETENV=0;
+ GNULIB_STRTOD=0;
+ GNULIB_STRTOLD=0;
+ GNULIB_STRTOLL=0;
+ GNULIB_STRTOULL=0;
+ GNULIB_SYSTEM_POSIX=0;
+ GNULIB_UNLOCKPT=0;
+ GNULIB_UNSETENV=0;
+ GNULIB_WCTOMB=0;
+ HAVE__EXIT=1;
+ HAVE_ATOLL=1;
+ HAVE_CANONICALIZE_FILE_NAME=1;
+ HAVE_DECL_GETLOADAVG=1;
+ HAVE_GETSUBOPT=1;
+ HAVE_GRANTPT=1;
+ HAVE_INITSTATE=1;
+ HAVE_DECL_INITSTATE=1;
+ HAVE_MBTOWC=1;
+ HAVE_MKDTEMP=1;
+ HAVE_MKOSTEMP=1;
+ HAVE_MKOSTEMPS=1;
+ HAVE_MKSTEMP=1;
+ HAVE_MKSTEMPS=1;
+ HAVE_POSIX_OPENPT=1;
+ HAVE_PTSNAME=1;
+ HAVE_PTSNAME_R=1;
+ HAVE_QSORT_R=1;
+ HAVE_RANDOM=1;
+ HAVE_RANDOM_H=1;
+ HAVE_RANDOM_R=1;
+ HAVE_REALLOCARRAY=1;
+ HAVE_REALPATH=1;
+ HAVE_RPMATCH=1;
+ HAVE_SECURE_GETENV=1;
+ HAVE_SETENV=1;
+ HAVE_DECL_SETENV=1;
+ HAVE_SETSTATE=1;
+ HAVE_DECL_SETSTATE=1;
+ HAVE_STRTOD=1;
+ HAVE_STRTOLD=1;
+ HAVE_STRTOLL=1;
+ HAVE_STRTOULL=1;
+ HAVE_STRUCT_RANDOM_DATA=1;
+ HAVE_SYS_LOADAVG_H=0;
+ HAVE_UNLOCKPT=1;
+ HAVE_DECL_UNSETENV=1;
+ REPLACE_CALLOC=0;
+ REPLACE_CANONICALIZE_FILE_NAME=0;
+ REPLACE_INITSTATE=0;
+ REPLACE_MALLOC=0;
+ REPLACE_MBTOWC=0;
+ REPLACE_MKSTEMP=0;
+ REPLACE_PTSNAME=0;
+ REPLACE_PTSNAME_R=0;
+ REPLACE_PUTENV=0;
+ REPLACE_QSORT_R=0;
+ REPLACE_RANDOM=0;
+ REPLACE_RANDOM_R=0;
+ REPLACE_REALLOC=0;
+ REPLACE_REALPATH=0;
+ REPLACE_SETENV=0;
+ REPLACE_SETSTATE=0;
+ REPLACE_STRTOD=0;
+ REPLACE_STRTOLD=0;
+ REPLACE_UNSETENV=0;
+ REPLACE_WCTOMB=0;
+
+
+
+
+
+
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef _MSC_VER
+MicrosoftCompiler
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "MicrosoftCompiler" >/dev/null 2>&1; then :
+ gl_asmext='asm'
+ gl_c_asm_opt='-c -Fa'
+
+else
+ gl_asmext='s'
+ gl_c_asm_opt='-S'
+
+fi
+rm -f conftest*
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking host CPU and C ABI" >&5
+$as_echo_n "checking host CPU and C ABI... " >&6; }
+if ${gl_cv_host_cpu_c_abi+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case "$host_cpu" in
+
+ i[34567]86 )
+ gl_cv_host_cpu_c_abi=i386
+ ;;
+
+ x86_64 )
+ # On x86_64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
+ # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
+ # with native Windows (mingw, MSVC).
+ # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if (defined __x86_64__ || defined __amd64__ \
+ || defined _M_X64 || defined _M_AMD64)
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined __ILP32__ || defined _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi=x86_64-x32
+else
+ gl_cv_host_cpu_c_abi=x86_64
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ gl_cv_host_cpu_c_abi=i386
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] )
+ gl_cv_host_cpu_c_abi=alpha
+ ;;
+
+ arm* | aarch64 )
+ # Assume arm with EABI.
+ # On arm64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
+ # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __aarch64__
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined __ILP32__ || defined _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi=arm64-ilp32
+else
+ gl_cv_host_cpu_c_abi=arm64
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ # Don't distinguish little-endian and big-endian arm, since they
+ # don't require different machine code for simple operations and
+ # since the user can distinguish them through the preprocessor
+ # defines __ARMEL__ vs. __ARMEB__.
+ # But distinguish arm which passes floating-point arguments and
+ # return values in integer registers (r0, r1, ...) - this is
+ # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which
+ # passes them in float registers (s0, s1, ...) and double registers
+ # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer
+ # sets the preprocessor defines __ARM_PCS (for the first case) and
+ # __ARM_PCS_VFP (for the second case), but older GCC does not.
+ echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c
+ # Look for a reference to the register d0 in the .s file.
+ { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; } >/dev/null 2>&1
+ if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then
+ gl_cv_host_cpu_c_abi=armhf
+ else
+ gl_cv_host_cpu_c_abi=arm
+ fi
+ rm -f conftest*
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
+ # On hppa, the C compiler may be generating 32-bit code or 64-bit
+ # code. In the latter case, it defines _LP64 and __LP64__.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi=hppa64
+else
+ gl_cv_host_cpu_c_abi=hppa
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ ia64* )
+ # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
+ # 32-bit code. In the latter case, it defines _ILP32.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi=ia64-ilp32
+else
+ gl_cv_host_cpu_c_abi=ia64
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ mips* )
+ # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
+ # at 32.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi=mips64
+else
+ # In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but
+ # may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIN32.
+ # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but
+ # may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIO32.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if (_MIPS_SIM == _ABIN32)
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi=mipsn32
+else
+ gl_cv_host_cpu_c_abi=mips
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ powerpc* )
+ # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
+ # No need to distinguish them here; the caller may distinguish
+ # them based on the OS.
+ # On powerpc64 systems, the C compiler may still be generating
+ # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
+ # be generating 64-bit code.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined __powerpc64__ || defined _ARCH_PPC64
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ # On powerpc64, there are two ABIs on Linux: The AIX compatible
+ # one and the ELFv2 one. The latter defines _CALL_ELF=2.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined _CALL_ELF && _CALL_ELF == 2
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi=powerpc64-elfv2
+else
+ gl_cv_host_cpu_c_abi=powerpc64
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+else
+ gl_cv_host_cpu_c_abi=powerpc
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ rs6000 )
+ gl_cv_host_cpu_c_abi=powerpc
+ ;;
+
+ riscv32 | riscv64 )
+ # There are 2 architectures (with variants): rv32* and rv64*.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if __riscv_xlen == 64
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ cpu=riscv64
+else
+ cpu=riscv32
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
+ # Size of 'long' and 'void *':
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ main_abi=lp64
+else
+ main_abi=ilp32
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ # Float ABIs:
+ # __riscv_float_abi_double:
+ # 'float' and 'double' are passed in floating-point registers.
+ # __riscv_float_abi_single:
+ # 'float' are passed in floating-point registers.
+ # __riscv_float_abi_soft:
+ # No values are passed in floating-point registers.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined __riscv_float_abi_double
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ float_abi=d
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined __riscv_float_abi_single
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ float_abi=f
+else
+ float_abi=''
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}"
+ ;;
+
+ s390* )
+ # On s390x, the C compiler may be generating 64-bit (= s390x) code
+ # or 31-bit (= s390) code.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined __LP64__ || defined __s390x__
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi=s390x
+else
+ gl_cv_host_cpu_c_abi=s390
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ sparc | sparc64 )
+ # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
+ # C compiler still generates 32-bit code.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined __sparcv9 || defined __arch64__
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi=sparc64
+else
+ gl_cv_host_cpu_c_abi=sparc
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ *)
+ gl_cv_host_cpu_c_abi="$host_cpu"
+ ;;
+ esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi" >&5
+$as_echo "$gl_cv_host_cpu_c_abi" >&6; }
+
+ HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'`
+ HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi"
+
+
+
+ # This was
+ # AC_DEFINE_UNQUOTED([__${HOST_CPU}__])
+ # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__])
+ # earlier, but KAI C++ 3.2d doesn't like this.
+ sed -e 's/-/_/g' >> confdefs.h <<EOF
+#ifndef __${HOST_CPU}__
+#define __${HOST_CPU}__ 1
+#endif
+#ifndef __${HOST_CPU_C_ABI}__
+#define __${HOST_CPU_C_ABI}__ 1
+#endif
+EOF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_limits_h='<'limits.h'>'
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <limits.h>" >&5
+$as_echo_n "checking absolute name of <limits.h>... " >&6; }
+if ${gl_cv_next_limits_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ if test $ac_cv_header_limits_h = yes; then
+
+
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+ gl_header_literal_regex=`echo 'limits.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+
+ gl_cv_absolute_limits_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`
+
+ gl_header=$gl_cv_absolute_limits_h
+ gl_cv_next_limits_h='"'$gl_header'"'
+ else
+ gl_cv_next_limits_h='<'limits.h'>'
+ fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_limits_h" >&5
+$as_echo "$gl_cv_next_limits_h" >&6; }
+ fi
+ NEXT_LIMITS_H=$gl_cv_next_limits_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'limits.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_limits_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_LIMITS_H=$gl_next_as_first_directive
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether limits.h has LLONG_MAX, WORD_BIT, ULLONG_WIDTH etc." >&5
+$as_echo_n "checking whether limits.h has LLONG_MAX, WORD_BIT, ULLONG_WIDTH etc.... " >&6; }
+if ${gl_cv_header_limits_width+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+ #define __STDC_WANT_IEC_60559_BFP_EXT__ 1
+ #endif
+ #include <limits.h>
+ long long llm = LLONG_MAX;
+ int wb = WORD_BIT;
+ int ullw = ULLONG_WIDTH;
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_header_limits_width=yes
+else
+ gl_cv_header_limits_width=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_limits_width" >&5
+$as_echo "$gl_cv_header_limits_width" >&6; }
+ if test "$gl_cv_header_limits_width" = yes; then
+ LIMITS_H=
+ else
+ LIMITS_H=limits.h
+ fi
+
+ if test -n "$LIMITS_H"; then
+ GL_GENERATE_LIMITS_H_TRUE=
+ GL_GENERATE_LIMITS_H_FALSE='#'
+else
+ GL_GENERATE_LIMITS_H_TRUE='#'
+ GL_GENERATE_LIMITS_H_FALSE=
+fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether malloc, realloc, calloc are POSIX compliant" >&5
+$as_echo_n "checking whether malloc, realloc, calloc are POSIX compliant... " >&6; }
+if ${gl_cv_func_malloc_posix+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#if defined _WIN32 && ! defined __CYGWIN__
+ choke me
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_func_malloc_posix=yes
+else
+ gl_cv_func_malloc_posix=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_malloc_posix" >&5
+$as_echo "$gl_cv_func_malloc_posix" >&6; }
+
+
+
+
+
+ gl_cv_c_multiarch=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifndef __APPLE_CC__
+ not a universal capable compiler
+ #endif
+ typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+ arch=
+ prev=
+ for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
+ if test -n "$prev"; then
+ case $word in
+ i?86 | x86_64 | ppc | ppc64)
+ if test -z "$arch" || test "$arch" = "$word"; then
+ arch="$word"
+ else
+ gl_cv_c_multiarch=yes
+ fi
+ ;;
+ esac
+ prev=
+ else
+ if test "x$word" = "x-arch"; then
+ prev=arch
+ fi
+ fi
+ done
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if test $gl_cv_c_multiarch = yes; then
+ APPLE_UNIVERSAL_BUILD=1
+ else
+ APPLE_UNIVERSAL_BUILD=0
+ fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if ${ac_cv_header_stdbool_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <stdbool.h>
+
+ #ifdef __cplusplus
+ typedef bool Bool;
+ #else
+ typedef _Bool Bool;
+ #ifndef bool
+ "error: bool is not defined"
+ #endif
+ #ifndef false
+ "error: false is not defined"
+ #endif
+ #if false
+ "error: false is not 0"
+ #endif
+ #ifndef true
+ "error: true is not defined"
+ #endif
+ #if true != 1
+ "error: true is not 1"
+ #endif
+ #endif
+
+ #ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+ #endif
+
+ struct s { Bool s: 1; Bool t; bool u: 1; bool v; } s;
+
+ char a[true == 1 ? 1 : -1];
+ char b[false == 0 ? 1 : -1];
+ char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+ char d[(bool) 0.5 == true ? 1 : -1];
+ /* See body of main program for 'e'. */
+ char f[(Bool) 0.0 == false ? 1 : -1];
+ char g[true];
+ char h[sizeof (Bool)];
+ char i[sizeof s.t];
+ enum { j = false, k = true, l = false * true, m = true * 256 };
+ /* The following fails for
+ HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+ Bool n[m];
+ char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+ char p[-1 - (Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+ /* Catch a bug in an HP-UX C compiler. See
+ https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html
+ */
+ Bool q = true;
+ Bool *pq = &q;
+ bool *qq = &q;
+
+int
+main ()
+{
+
+ bool e = &s;
+ *pq |= q; *pq |= ! q;
+ *qq |= q; *qq |= ! q;
+ /* Refer to every declared value, to avoid compiler optimizations. */
+ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+ + !m + !n + !o + !p + !q + !pq + !qq);
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdbool_h=yes
+else
+ ac_cv_header_stdbool_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+ ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+
+
+ REPLACE_NULL=0;
+ HAVE_MAX_ALIGN_T=1;
+ HAVE_WCHAR_T=1;
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5
+$as_echo_n "checking for wchar_t... " >&6; }
+if ${gt_cv_c_wchar_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stddef.h>
+ wchar_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gt_cv_c_wchar_t=yes
+else
+ gt_cv_c_wchar_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5
+$as_echo "$gt_cv_c_wchar_t" >&6; }
+ if test $gt_cv_c_wchar_t = yes; then
+
+$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h
+
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5
+$as_echo_n "checking for wint_t... " >&6; }
+if ${gt_cv_c_wint_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+ wint_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gt_cv_c_wint_t=yes
+else
+ gt_cv_c_wint_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5
+$as_echo "$gt_cv_c_wint_t" >&6; }
+ if test $gt_cv_c_wint_t = yes; then
+
+$as_echo "#define HAVE_WINT_T 1" >>confdefs.h
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether wint_t is too small" >&5
+$as_echo_n "checking whether wint_t is too small... " >&6; }
+if ${gl_cv_type_wint_t_too_small+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+#endif
+#include <wchar.h>
+ int verify[sizeof (wint_t) < sizeof (int) ? -1 : 1];
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_type_wint_t_too_small=no
+else
+ gl_cv_type_wint_t_too_small=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wint_t_too_small" >&5
+$as_echo "$gl_cv_type_wint_t_too_small" >&6; }
+ if test $gl_cv_type_wint_t_too_small = yes; then
+ GNULIB_OVERRIDES_WINT_T=1
+ else
+ GNULIB_OVERRIDES_WINT_T=0
+ fi
+ else
+ GNULIB_OVERRIDES_WINT_T=0
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
+
+
+$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
+
+
+
+ if test $ac_cv_header_wchar_h = yes; then
+ HAVE_WCHAR_H=1
+ else
+ HAVE_WCHAR_H=0
+ fi
+
+
+ if test $ac_cv_header_inttypes_h = yes; then
+ HAVE_INTTYPES_H=1
+ else
+ HAVE_INTTYPES_H=0
+ fi
+
+
+ if test $ac_cv_header_sys_types_h = yes; then
+ HAVE_SYS_TYPES_H=1
+ else
+ HAVE_SYS_TYPES_H=0
+ fi
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_stdint_h='<'stdint.h'>'
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stdint.h>" >&5
+$as_echo_n "checking absolute name of <stdint.h>... " >&6; }
+if ${gl_cv_next_stdint_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ if test $ac_cv_header_stdint_h = yes; then
+
+
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdint.h>
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+ gl_header_literal_regex=`echo 'stdint.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+
+ gl_cv_absolute_stdint_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`
+
+ gl_header=$gl_cv_absolute_stdint_h
+ gl_cv_next_stdint_h='"'$gl_header'"'
+ else
+ gl_cv_next_stdint_h='<'stdint.h'>'
+ fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdint_h" >&5
+$as_echo "$gl_cv_next_stdint_h" >&6; }
+ fi
+ NEXT_STDINT_H=$gl_cv_next_stdint_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'stdint.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_stdint_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_STDINT_H=$gl_next_as_first_directive
+
+
+
+
+ if test $ac_cv_header_stdint_h = yes; then
+ HAVE_STDINT_H=1
+ else
+ HAVE_STDINT_H=0
+ fi
+
+
+ if test $ac_cv_header_stdint_h = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdint.h conforms to C99" >&5
+$as_echo_n "checking whether stdint.h conforms to C99... " >&6; }
+if ${gl_cv_header_working_stdint_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ gl_cv_header_working_stdint_h=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#define __STDC_CONSTANT_MACROS 1
+#define __STDC_LIMIT_MACROS 1
+#include <stdint.h>
+/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */
+#if !(defined WCHAR_MIN && defined WCHAR_MAX)
+#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
+#endif
+
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+
+#ifdef INT8_MAX
+int8_t a1 = INT8_MAX;
+int8_t a1min = INT8_MIN;
+#endif
+#ifdef INT16_MAX
+int16_t a2 = INT16_MAX;
+int16_t a2min = INT16_MIN;
+#endif
+#ifdef INT32_MAX
+int32_t a3 = INT32_MAX;
+int32_t a3min = INT32_MIN;
+#endif
+#ifdef INT64_MAX
+int64_t a4 = INT64_MAX;
+int64_t a4min = INT64_MIN;
+#endif
+#ifdef UINT8_MAX
+uint8_t b1 = UINT8_MAX;
+#else
+typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
+#endif
+#ifdef UINT16_MAX
+uint16_t b2 = UINT16_MAX;
+#endif
+#ifdef UINT32_MAX
+uint32_t b3 = UINT32_MAX;
+#endif
+#ifdef UINT64_MAX
+uint64_t b4 = UINT64_MAX;
+#endif
+int_least8_t c1 = INT8_C (0x7f);
+int_least8_t c1max = INT_LEAST8_MAX;
+int_least8_t c1min = INT_LEAST8_MIN;
+int_least16_t c2 = INT16_C (0x7fff);
+int_least16_t c2max = INT_LEAST16_MAX;
+int_least16_t c2min = INT_LEAST16_MIN;
+int_least32_t c3 = INT32_C (0x7fffffff);
+int_least32_t c3max = INT_LEAST32_MAX;
+int_least32_t c3min = INT_LEAST32_MIN;
+int_least64_t c4 = INT64_C (0x7fffffffffffffff);
+int_least64_t c4max = INT_LEAST64_MAX;
+int_least64_t c4min = INT_LEAST64_MIN;
+uint_least8_t d1 = UINT8_C (0xff);
+uint_least8_t d1max = UINT_LEAST8_MAX;
+uint_least16_t d2 = UINT16_C (0xffff);
+uint_least16_t d2max = UINT_LEAST16_MAX;
+uint_least32_t d3 = UINT32_C (0xffffffff);
+uint_least32_t d3max = UINT_LEAST32_MAX;
+uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
+uint_least64_t d4max = UINT_LEAST64_MAX;
+int_fast8_t e1 = INT_FAST8_MAX;
+int_fast8_t e1min = INT_FAST8_MIN;
+int_fast16_t e2 = INT_FAST16_MAX;
+int_fast16_t e2min = INT_FAST16_MIN;
+int_fast32_t e3 = INT_FAST32_MAX;
+int_fast32_t e3min = INT_FAST32_MIN;
+int_fast64_t e4 = INT_FAST64_MAX;
+int_fast64_t e4min = INT_FAST64_MIN;
+uint_fast8_t f1 = UINT_FAST8_MAX;
+uint_fast16_t f2 = UINT_FAST16_MAX;
+uint_fast32_t f3 = UINT_FAST32_MAX;
+uint_fast64_t f4 = UINT_FAST64_MAX;
+#ifdef INTPTR_MAX
+intptr_t g = INTPTR_MAX;
+intptr_t gmin = INTPTR_MIN;
+#endif
+#ifdef UINTPTR_MAX
+uintptr_t h = UINTPTR_MAX;
+#endif
+intmax_t i = INTMAX_MAX;
+uintmax_t j = UINTMAX_MAX;
+
+/* Check that SIZE_MAX has the correct type, if possible. */
+#if 201112 <= __STDC_VERSION__
+int k = _Generic (SIZE_MAX, size_t: 0);
+#elif (2 <= __GNUC__ || defined __IBM__TYPEOF__ \
+ || (0x5110 <= __SUNPRO_C && !__STDC__))
+extern size_t k;
+extern __typeof__ (SIZE_MAX) k;
+#endif
+
+#include <limits.h> /* for CHAR_BIT */
+#define TYPE_MINIMUM(t) \
+ ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t)))
+#define TYPE_MAXIMUM(t) \
+ ((t) ((t) 0 < (t) -1 \
+ ? (t) -1 \
+ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
+struct s {
+ int check_PTRDIFF:
+ PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
+ && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
+ ? 1 : -1;
+ /* Detect bug in FreeBSD 6.0 / ia64. */
+ int check_SIG_ATOMIC:
+ SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
+ && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
+ ? 1 : -1;
+ int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
+ int check_WCHAR:
+ WCHAR_MIN == TYPE_MINIMUM (wchar_t)
+ && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
+ ? 1 : -1;
+ /* Detect bug in mingw. */
+ int check_WINT:
+ WINT_MIN == TYPE_MINIMUM (wint_t)
+ && WINT_MAX == TYPE_MAXIMUM (wint_t)
+ ? 1 : -1;
+
+ /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */
+ int check_UINT8_C:
+ (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
+ int check_UINT16_C:
+ (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
+
+ /* Detect bugs in OpenBSD 3.9 stdint.h. */
+#ifdef UINT8_MAX
+ int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
+#endif
+#ifdef UINT16_MAX
+ int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
+#endif
+#ifdef UINT32_MAX
+ int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
+#endif
+#ifdef UINT64_MAX
+ int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
+#endif
+ int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
+ int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
+ int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
+ int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
+ int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
+ int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
+ int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
+ int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
+ int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
+ int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
+ int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
+};
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ if test "$cross_compiling" = yes; then :
+ case "$host_os" in
+ # Guess yes on native Windows.
+ mingw*) gl_cv_header_working_stdint_h="guessing yes" ;;
+ # In general, assume it works.
+ *) gl_cv_header_working_stdint_h="guessing yes" ;;
+ esac
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#define __STDC_CONSTANT_MACROS 1
+#define __STDC_LIMIT_MACROS 1
+#include <stdint.h>
+
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+
+#include <stdio.h>
+#include <string.h>
+#define MVAL(macro) MVAL1(macro)
+#define MVAL1(expression) #expression
+static const char *macro_values[] =
+ {
+#ifdef INT8_MAX
+ MVAL (INT8_MAX),
+#endif
+#ifdef INT16_MAX
+ MVAL (INT16_MAX),
+#endif
+#ifdef INT32_MAX
+ MVAL (INT32_MAX),
+#endif
+#ifdef INT64_MAX
+ MVAL (INT64_MAX),
+#endif
+#ifdef UINT8_MAX
+ MVAL (UINT8_MAX),
+#endif
+#ifdef UINT16_MAX
+ MVAL (UINT16_MAX),
+#endif
+#ifdef UINT32_MAX
+ MVAL (UINT32_MAX),
+#endif
+#ifdef UINT64_MAX
+ MVAL (UINT64_MAX),
+#endif
+ NULL
+ };
+
+int
+main ()
+{
+
+ const char **mv;
+ for (mv = macro_values; *mv != NULL; mv++)
+ {
+ const char *value = *mv;
+ /* Test whether it looks like a cast expression. */
+ if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
+ || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
+ || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
+ || strncmp (value, "((int)"/*)*/, 6) == 0
+ || strncmp (value, "((signed short)"/*)*/, 15) == 0
+ || strncmp (value, "((signed char)"/*)*/, 14) == 0)
+ return mv - macro_values + 1;
+ }
+ return 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ gl_cv_header_working_stdint_h=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_stdint_h" >&5
+$as_echo "$gl_cv_header_working_stdint_h" >&6; }
+ fi
+
+ HAVE_C99_STDINT_H=0
+ HAVE_SYS_BITYPES_H=0
+ HAVE_SYS_INTTYPES_H=0
+ STDINT_H=stdint.h
+ case "$gl_cv_header_working_stdint_h" in
+ *yes)
+ HAVE_C99_STDINT_H=1
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdint.h predates C++11" >&5
+$as_echo_n "checking whether stdint.h predates C++11... " >&6; }
+if ${gl_cv_header_stdint_predates_cxx11_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ gl_cv_header_stdint_predates_cxx11_h=yes
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+
+intmax_t im = INTMAX_MAX;
+int32_t i32 = INT32_C (0x7fffffff);
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_header_stdint_predates_cxx11_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_predates_cxx11_h" >&5
+$as_echo "$gl_cv_header_stdint_predates_cxx11_h" >&6; }
+
+ if test "$gl_cv_header_stdint_predates_cxx11_h" = yes; then
+
+$as_echo "#define __STDC_CONSTANT_MACROS 1" >>confdefs.h
+
+
+$as_echo "#define __STDC_LIMIT_MACROS 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stdint.h has UINTMAX_WIDTH etc." >&5
+$as_echo_n "checking whether stdint.h has UINTMAX_WIDTH etc.... " >&6; }
+if ${gl_cv_header_stdint_width+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ gl_cv_header_stdint_width=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ /* Work if build is not clean. */
+ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1
+ #ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+ #define __STDC_WANT_IEC_60559_BFP_EXT__ 1
+ #endif
+ #include <stdint.h>
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+ int iw = UINTMAX_WIDTH;
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_header_stdint_width=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_width" >&5
+$as_echo "$gl_cv_header_stdint_width" >&6; }
+ if test "$gl_cv_header_stdint_width" = yes; then
+ STDINT_H=
+ fi
+ ;;
+ *)
+ for ac_header in sys/inttypes.h sys/bitypes.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ if test $ac_cv_header_sys_inttypes_h = yes; then
+ HAVE_SYS_INTTYPES_H=1
+ fi
+ if test $ac_cv_header_sys_bitypes_h = yes; then
+ HAVE_SYS_BITYPES_H=1
+ fi
+
+
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+
+ for gltype in ptrdiff_t size_t ; do
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
+$as_echo_n "checking for bit size of $gltype... " >&6; }
+if eval \${gl_cv_bitsizeof_${gltype}+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" "
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+#include <limits.h>"; then :
+
+else
+ result=unknown
+fi
+
+ eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+eval ac_res=\$gl_cv_bitsizeof_${gltype}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval result=\$gl_cv_bitsizeof_${gltype}
+ if test $result = unknown; then
+ result=0
+ fi
+ GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ cat >>confdefs.h <<_ACEOF
+#define BITSIZEOF_${GLTYPE} $result
+_ACEOF
+
+ eval BITSIZEOF_${GLTYPE}=\$result
+ done
+
+
+ fi
+
+
+ for gltype in sig_atomic_t wchar_t wint_t ; do
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bit size of $gltype" >&5
+$as_echo_n "checking for bit size of $gltype... " >&6; }
+if eval \${gl_cv_bitsizeof_${gltype}+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if ac_fn_c_compute_int "$LINENO" "sizeof ($gltype) * CHAR_BIT" "result" "
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+#include <limits.h>"; then :
+
+else
+ result=unknown
+fi
+
+ eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+eval ac_res=\$gl_cv_bitsizeof_${gltype}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval result=\$gl_cv_bitsizeof_${gltype}
+ if test $result = unknown; then
+ result=0
+ fi
+ GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ cat >>confdefs.h <<_ACEOF
+#define BITSIZEOF_${GLTYPE} $result
+_ACEOF
+
+ eval BITSIZEOF_${GLTYPE}=\$result
+ done
+
+
+
+
+ for gltype in sig_atomic_t wchar_t wint_t ; do
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gltype is signed" >&5
+$as_echo_n "checking whether $gltype is signed... " >&6; }
+if eval \${gl_cv_type_${gltype}_signed+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+ int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ result=yes
+else
+ result=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ eval gl_cv_type_${gltype}_signed=\$result
+
+fi
+eval ac_res=\$gl_cv_type_${gltype}_signed
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval result=\$gl_cv_type_${gltype}_signed
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ if test "$result" = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SIGNED_${GLTYPE} 1
+_ACEOF
+
+ eval HAVE_SIGNED_${GLTYPE}=1
+ else
+ eval HAVE_SIGNED_${GLTYPE}=0
+ fi
+ done
+
+
+ gl_cv_type_ptrdiff_t_signed=yes
+ gl_cv_type_size_t_signed=no
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+
+
+ for gltype in ptrdiff_t size_t ; do
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
+$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
+if eval \${gl_cv_type_${gltype}_suffix+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval gl_cv_type_${gltype}_suffix=no
+ eval result=\$gl_cv_type_${gltype}_signed
+ if test "$result" = yes; then
+ glsufu=
+ else
+ glsufu=u
+ fi
+ for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+ case $glsuf in
+ '') gltype1='int';;
+ l) gltype1='long int';;
+ ll) gltype1='long long int';;
+ i64) gltype1='__int64';;
+ u) gltype1='unsigned int';;
+ ul) gltype1='unsigned long int';;
+ ull) gltype1='unsigned long long int';;
+ ui64)gltype1='unsigned __int64';;
+ esac
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+ extern $gltype foo;
+ extern $gltype1 foo;
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval gl_cv_type_${gltype}_suffix=\$glsuf
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" != no && break
+ done
+fi
+eval ac_res=\$gl_cv_type_${gltype}_suffix
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" = no && result=
+ eval ${GLTYPE}_SUFFIX=\$result
+ cat >>confdefs.h <<_ACEOF
+#define ${GLTYPE}_SUFFIX $result
+_ACEOF
+
+ done
+
+
+ fi
+
+
+ for gltype in sig_atomic_t wchar_t wint_t ; do
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $gltype integer literal suffix" >&5
+$as_echo_n "checking for $gltype integer literal suffix... " >&6; }
+if eval \${gl_cv_type_${gltype}_suffix+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval gl_cv_type_${gltype}_suffix=no
+ eval result=\$gl_cv_type_${gltype}_signed
+ if test "$result" = yes; then
+ glsufu=
+ else
+ glsufu=u
+ fi
+ for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+ case $glsuf in
+ '') gltype1='int';;
+ l) gltype1='long int';;
+ ll) gltype1='long long int';;
+ i64) gltype1='__int64';;
+ u) gltype1='unsigned int';;
+ ul) gltype1='unsigned long int';;
+ ull) gltype1='unsigned long long int';;
+ ui64)gltype1='unsigned __int64';;
+ esac
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+
+ extern $gltype foo;
+ extern $gltype1 foo;
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval gl_cv_type_${gltype}_suffix=\$glsuf
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" != no && break
+ done
+fi
+eval ac_res=\$gl_cv_type_${gltype}_suffix
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" = no && result=
+ eval ${GLTYPE}_SUFFIX=\$result
+ cat >>confdefs.h <<_ACEOF
+#define ${GLTYPE}_SUFFIX $result
+_ACEOF
+
+ done
+
+
+
+ if test $GNULIB_OVERRIDES_WINT_T = 1; then
+ BITSIZEOF_WINT_T=32
+ fi
+
+ ;;
+ esac
+
+
+
+ LIMITS_H='limits.h'
+ if test -n "$LIMITS_H"; then
+ GL_GENERATE_LIMITS_H_TRUE=
+ GL_GENERATE_LIMITS_H_FALSE='#'
+else
+ GL_GENERATE_LIMITS_H_TRUE='#'
+ GL_GENERATE_LIMITS_H_FALSE=
+fi
+
+
+
+
+
+
+
+ if test -n "$STDINT_H"; then
+ GL_GENERATE_STDINT_H_TRUE=
+ GL_GENERATE_STDINT_H_FALSE='#'
+else
+ GL_GENERATE_STDINT_H_TRUE='#'
+ GL_GENERATE_STDINT_H_FALSE=
+fi
+
+
+
+ GNULIB_DPRINTF=0;
+ GNULIB_FCLOSE=0;
+ GNULIB_FDOPEN=0;
+ GNULIB_FFLUSH=0;
+ GNULIB_FGETC=0;
+ GNULIB_FGETS=0;
+ GNULIB_FOPEN=0;
+ GNULIB_FPRINTF=0;
+ GNULIB_FPRINTF_POSIX=0;
+ GNULIB_FPURGE=0;
+ GNULIB_FPUTC=0;
+ GNULIB_FPUTS=0;
+ GNULIB_FREAD=0;
+ GNULIB_FREOPEN=0;
+ GNULIB_FSCANF=0;
+ GNULIB_FSEEK=0;
+ GNULIB_FSEEKO=0;
+ GNULIB_FTELL=0;
+ GNULIB_FTELLO=0;
+ GNULIB_FWRITE=0;
+ GNULIB_GETC=0;
+ GNULIB_GETCHAR=0;
+ GNULIB_GETDELIM=0;
+ GNULIB_GETLINE=0;
+ GNULIB_OBSTACK_PRINTF=0;
+ GNULIB_OBSTACK_PRINTF_POSIX=0;
+ GNULIB_PCLOSE=0;
+ GNULIB_PERROR=0;
+ GNULIB_POPEN=0;
+ GNULIB_PRINTF=0;
+ GNULIB_PRINTF_POSIX=0;
+ GNULIB_PUTC=0;
+ GNULIB_PUTCHAR=0;
+ GNULIB_PUTS=0;
+ GNULIB_REMOVE=0;
+ GNULIB_RENAME=0;
+ GNULIB_RENAMEAT=0;
+ GNULIB_SCANF=0;
+ GNULIB_SNPRINTF=0;
+ GNULIB_SPRINTF_POSIX=0;
+ GNULIB_STDIO_H_NONBLOCKING=0;
+ GNULIB_STDIO_H_SIGPIPE=0;
+ GNULIB_TMPFILE=0;
+ GNULIB_VASPRINTF=0;
+ GNULIB_VFSCANF=0;
+ GNULIB_VSCANF=0;
+ GNULIB_VDPRINTF=0;
+ GNULIB_VFPRINTF=0;
+ GNULIB_VFPRINTF_POSIX=0;
+ GNULIB_VPRINTF=0;
+ GNULIB_VPRINTF_POSIX=0;
+ GNULIB_VSNPRINTF=0;
+ GNULIB_VSPRINTF_POSIX=0;
+ HAVE_DECL_FPURGE=1;
+ HAVE_DECL_FSEEKO=1;
+ HAVE_DECL_FTELLO=1;
+ HAVE_DECL_GETDELIM=1;
+ HAVE_DECL_GETLINE=1;
+ HAVE_DECL_OBSTACK_PRINTF=1;
+ HAVE_DECL_SNPRINTF=1;
+ HAVE_DECL_VSNPRINTF=1;
+ HAVE_DPRINTF=1;
+ HAVE_FSEEKO=1;
+ HAVE_FTELLO=1;
+ HAVE_PCLOSE=1;
+ HAVE_POPEN=1;
+ HAVE_RENAMEAT=1;
+ HAVE_VASPRINTF=1;
+ HAVE_VDPRINTF=1;
+ REPLACE_DPRINTF=0;
+ REPLACE_FCLOSE=0;
+ REPLACE_FDOPEN=0;
+ REPLACE_FFLUSH=0;
+ REPLACE_FOPEN=0;
+ REPLACE_FPRINTF=0;
+ REPLACE_FPURGE=0;
+ REPLACE_FREOPEN=0;
+ REPLACE_FSEEK=0;
+ REPLACE_FSEEKO=0;
+ REPLACE_FTELL=0;
+ REPLACE_FTELLO=0;
+ REPLACE_GETDELIM=0;
+ REPLACE_GETLINE=0;
+ REPLACE_OBSTACK_PRINTF=0;
+ REPLACE_PERROR=0;
+ REPLACE_POPEN=0;
+ REPLACE_PRINTF=0;
+ REPLACE_REMOVE=0;
+ REPLACE_RENAME=0;
+ REPLACE_RENAMEAT=0;
+ REPLACE_SNPRINTF=0;
+ REPLACE_SPRINTF=0;
+ REPLACE_STDIO_READ_FUNCS=0;
+ REPLACE_STDIO_WRITE_FUNCS=0;
+ REPLACE_TMPFILE=0;
+ REPLACE_VASPRINTF=0;
+ REPLACE_VDPRINTF=0;
+ REPLACE_VFPRINTF=0;
+ REPLACE_VPRINTF=0;
+ REPLACE_VSNPRINTF=0;
+ REPLACE_VSPRINTF=0;
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5
+$as_echo_n "checking for C/C++ restrict keyword... " >&6; }
+if ${ac_cv_c_restrict+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_restrict=no
+ # The order here caters to the fact that C++ does not require restrict.
+ for ac_kw in __restrict __restrict__ _Restrict restrict; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+typedef int *int_ptr;
+ int foo (int_ptr $ac_kw ip) { return ip[0]; }
+ int bar (int [$ac_kw]); /* Catch GCC bug 14050. */
+ int bar (int ip[$ac_kw]) { return ip[0]; }
+
+int
+main ()
+{
+int s[1];
+ int *$ac_kw t = s;
+ t[0] = 0;
+ return foo (t) + bar (t);
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_restrict=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test "$ac_cv_c_restrict" != no && break
+ done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5
+$as_echo "$ac_cv_c_restrict" >&6; }
+
+ case $ac_cv_c_restrict in
+ restrict) ;;
+ no) $as_echo "#define restrict /**/" >>confdefs.h
+ ;;
+ *) cat >>confdefs.h <<_ACEOF
+#define restrict $ac_cv_c_restrict
+_ACEOF
+ ;;
+ esac
+
+
+ GNULIB_EXPLICIT_BZERO=0;
+ GNULIB_FFSL=0;
+ GNULIB_FFSLL=0;
+ GNULIB_MEMCHR=0;
+ GNULIB_MEMMEM=0;
+ GNULIB_MEMPCPY=0;
+ GNULIB_MEMRCHR=0;
+ GNULIB_RAWMEMCHR=0;
+ GNULIB_STPCPY=0;
+ GNULIB_STPNCPY=0;
+ GNULIB_STRCHRNUL=0;
+ GNULIB_STRDUP=0;
+ GNULIB_STRNCAT=0;
+ GNULIB_STRNDUP=0;
+ GNULIB_STRNLEN=0;
+ GNULIB_STRPBRK=0;
+ GNULIB_STRSEP=0;
+ GNULIB_STRSTR=0;
+ GNULIB_STRCASESTR=0;
+ GNULIB_STRTOK_R=0;
+ GNULIB_MBSLEN=0;
+ GNULIB_MBSNLEN=0;
+ GNULIB_MBSCHR=0;
+ GNULIB_MBSRCHR=0;
+ GNULIB_MBSSTR=0;
+ GNULIB_MBSCASECMP=0;
+ GNULIB_MBSNCASECMP=0;
+ GNULIB_MBSPCASECMP=0;
+ GNULIB_MBSCASESTR=0;
+ GNULIB_MBSCSPN=0;
+ GNULIB_MBSPBRK=0;
+ GNULIB_MBSSPN=0;
+ GNULIB_MBSSEP=0;
+ GNULIB_MBSTOK_R=0;
+ GNULIB_STRERROR=0;
+ GNULIB_STRERROR_R=0;
+ GNULIB_STRSIGNAL=0;
+ GNULIB_STRVERSCMP=0;
+ HAVE_MBSLEN=0;
+ HAVE_EXPLICIT_BZERO=1;
+ HAVE_FFSL=1;
+ HAVE_FFSLL=1;
+ HAVE_MEMCHR=1;
+ HAVE_DECL_MEMMEM=1;
+ HAVE_MEMPCPY=1;
+ HAVE_DECL_MEMRCHR=1;
+ HAVE_RAWMEMCHR=1;
+ HAVE_STPCPY=1;
+ HAVE_STPNCPY=1;
+ HAVE_STRCHRNUL=1;
+ HAVE_DECL_STRDUP=1;
+ HAVE_DECL_STRNDUP=1;
+ HAVE_DECL_STRNLEN=1;
+ HAVE_STRPBRK=1;
+ HAVE_STRSEP=1;
+ HAVE_STRCASESTR=1;
+ HAVE_DECL_STRTOK_R=1;
+ HAVE_DECL_STRERROR_R=1;
+ HAVE_DECL_STRSIGNAL=1;
+ HAVE_STRVERSCMP=1;
+ REPLACE_MEMCHR=0;
+ REPLACE_MEMMEM=0;
+ REPLACE_STPNCPY=0;
+ REPLACE_STRCHRNUL=0;
+ REPLACE_STRDUP=0;
+ REPLACE_STRNCAT=0;
+ REPLACE_STRNDUP=0;
+ REPLACE_STRNLEN=0;
+ REPLACE_STRSTR=0;
+ REPLACE_STRCASESTR=0;
+ REPLACE_STRTOK_R=0;
+ REPLACE_STRERROR=0;
+ REPLACE_STRERROR_R=0;
+ REPLACE_STRSIGNAL=0;
+ UNDEFINE_STRTOK_R=0;
+
+
+ REPLACE_STRERROR_0=0
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether strerror(0) succeeds" >&5
+$as_echo_n "checking whether strerror(0) succeeds... " >&6; }
+if ${gl_cv_func_strerror_0_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu* | gnu*) gl_cv_func_strerror_0_works="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_strerror_0_works="guessing yes" ;;
+ # Guess yes on native Windows.
+ mingw*) gl_cv_func_strerror_0_works="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_strerror_0_works="$gl_cross_guess_normal" ;;
+ esac
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+ #include <errno.h>
+
+int
+main ()
+{
+int result = 0;
+ char *str;
+ errno = 0;
+ str = strerror (0);
+ if (!*str) result |= 1;
+ if (errno) result |= 2;
+ if (strstr (str, "nknown") || strstr (str, "ndefined"))
+ result |= 4;
+ return result;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ gl_cv_func_strerror_0_works=yes
+else
+ gl_cv_func_strerror_0_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_strerror_0_works" >&5
+$as_echo "$gl_cv_func_strerror_0_works" >&6; }
+ case "$gl_cv_func_strerror_0_works" in
+ *yes) ;;
+ *)
+ REPLACE_STRERROR_0=1
+
+$as_echo "#define REPLACE_STRERROR_0 1" >>confdefs.h
+
+ ;;
+ esac
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_string_h='<'string.h'>'
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <string.h>" >&5
+$as_echo_n "checking absolute name of <string.h>... " >&6; }
+if ${gl_cv_next_string_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+ gl_header_literal_regex=`echo 'string.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+
+ gl_cv_absolute_string_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`
+
+ gl_header=$gl_cv_absolute_string_h
+ gl_cv_next_string_h='"'$gl_header'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_string_h" >&5
+$as_echo "$gl_cv_next_string_h" >&6; }
+ fi
+ NEXT_STRING_H=$gl_cv_next_string_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'string.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_string_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_STRING_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WINDOWS_64_BIT_OFF_T=0
+
+
+
+
+
+$as_echo "#define _USE_STD_STAT 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_sys_types_h='<'sys/types.h'>'
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <sys/types.h>" >&5
+$as_echo_n "checking absolute name of <sys/types.h>... " >&6; }
+if ${gl_cv_next_sys_types_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+ gl_header_literal_regex=`echo 'sys/types.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+
+ gl_cv_absolute_sys_types_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`
+
+ gl_header=$gl_cv_absolute_sys_types_h
+ gl_cv_next_sys_types_h='"'$gl_header'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_types_h" >&5
+$as_echo "$gl_cv_next_sys_types_h" >&6; }
+ fi
+ NEXT_SYS_TYPES_H=$gl_cv_next_sys_types_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'sys/types.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_sys_types_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+
+
+
+
+ WINDOWS_STAT_INODES=0
+
+
+
+
+ if false; then
+ GL_COND_LIBTOOL_TRUE=
+ GL_COND_LIBTOOL_FALSE='#'
+else
+ GL_COND_LIBTOOL_TRUE='#'
+ GL_COND_LIBTOOL_FALSE=
+fi
+
+ gl_cond_libtool=false
+ gl_libdeps=
+ gl_ltlibdeps=
+ gl_m4_base='m4'
+
+
+
+
+
+
+
+
+
+ gl_source_base='lib'
+
+
+
+ case "$host_os" in
+ mingw*) REPLACE_ACCESS=1 ;;
+ esac
+
+ if test $REPLACE_ACCESS = 1; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS access.$ac_objext"
+
+ fi
+
+
+
+
+
+ GNULIB_ACCESS=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_ACCESS 1" >>confdefs.h
+
+
+
+
+
+ if test $ac_cv_func_alloca_works = no; then
+ :
+ fi
+
+ # Define an additional variable used in the Makefile substitution.
+ if test $ac_cv_working_alloca_h = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca as a compiler built-in" >&5
+$as_echo_n "checking for alloca as a compiler built-in... " >&6; }
+if ${gl_cv_rpl_alloca+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#if defined __GNUC__ || defined _AIX || defined _MSC_VER
+ Need own alloca
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Need own alloca" >/dev/null 2>&1; then :
+ gl_cv_rpl_alloca=yes
+else
+ gl_cv_rpl_alloca=no
+fi
+rm -f conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_rpl_alloca" >&5
+$as_echo "$gl_cv_rpl_alloca" >&6; }
+ if test $gl_cv_rpl_alloca = yes; then
+
+$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
+
+ ALLOCA_H=alloca.h
+ else
+ ALLOCA_H=
+ fi
+ else
+ ALLOCA_H=alloca.h
+ fi
+
+ if test -n "$ALLOCA_H"; then
+ GL_GENERATE_ALLOCA_H_TRUE=
+ GL_GENERATE_ALLOCA_H_FALSE='#'
+else
+ GL_GENERATE_ALLOCA_H_TRUE='#'
+ GL_GENERATE_ALLOCA_H_FALSE=
+fi
+
+
+ if test $ac_cv_working_alloca_h = yes; then
+ HAVE_ALLOCA_H=1
+ else
+ HAVE_ALLOCA_H=0
+ fi
+
+
+
+
+
+
+ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+ REPLACE_CLOSE=1
+ fi
+
+
+
+
+
+
+ if test $ac_cv_header_sys_socket_h != yes; then
+ for ac_header in winsock2.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default"
+if test "x$ac_cv_header_winsock2_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_WINSOCK2_H 1
+_ACEOF
+
+fi
+
+done
+
+ fi
+ if test "$ac_cv_header_winsock2_h" = yes; then
+ HAVE_WINSOCK2_H=1
+ UNISTD_H_HAVE_WINSOCK2_H=1
+ SYS_IOCTL_H_HAVE_WINSOCK2_H=1
+ else
+ HAVE_WINSOCK2_H=0
+ fi
+
+
+ if test $UNISTD_H_HAVE_WINSOCK2_H = 1; then
+ REPLACE_CLOSE=1
+ fi
+
+
+
+ if test $REPLACE_CLOSE = 1; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS close.$ac_objext"
+
+ fi
+
+
+
+
+
+ GNULIB_CLOSE=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_CLOSE 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether // is distinct from /" >&5
+$as_echo_n "checking whether // is distinct from /... " >&6; }
+if ${gl_cv_double_slash_root+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test x"$cross_compiling" = xyes ; then
+ # When cross-compiling, there is no way to tell whether // is special
+ # short of a list of hosts. However, the only known hosts to date
+ # that have a distinct // are Apollo DomainOS (too old to port to),
+ # Cygwin, and z/OS. If anyone knows of another system for which // has
+ # special semantics and is distinct from /, please report it to
+ # <bug-gnulib@gnu.org>.
+ case $host in
+ *-cygwin | i370-ibm-openedition)
+ gl_cv_double_slash_root=yes ;;
+ *)
+ # Be optimistic and assume that / and // are the same when we
+ # don't know.
+ gl_cv_double_slash_root='unknown, assuming no' ;;
+ esac
+ else
+ set x `ls -di / // 2>/dev/null`
+ if test "$2" = "$4" && wc //dev/null >/dev/null 2>&1; then
+ gl_cv_double_slash_root=no
+ else
+ gl_cv_double_slash_root=yes
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_double_slash_root" >&5
+$as_echo "$gl_cv_double_slash_root" >&6; }
+ if test "$gl_cv_double_slash_root" = yes; then
+
+$as_echo "#define DOUBLE_SLASH_IS_DISTINCT_ROOT 1" >>confdefs.h
+
+ fi
+
+
+
+
+
+
+$as_echo "#define HAVE_DUP2 1" >>confdefs.h
+
+
+ if test $HAVE_DUP2 = 1; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether dup2 works" >&5
+$as_echo_n "checking whether dup2 works... " >&6; }
+if ${gl_cv_func_dup2_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ case "$host_os" in
+ mingw*) # on this platform, dup2 always returns 0 for success
+ gl_cv_func_dup2_works="guessing no" ;;
+ cygwin*) # on cygwin 1.5.x, dup2(1,1) returns 0
+ gl_cv_func_dup2_works="guessing no" ;;
+ aix* | freebsd*)
+ # on AIX 7.1 and FreeBSD 6.1, dup2 (1,toobig) gives EMFILE,
+ # not EBADF.
+ gl_cv_func_dup2_works="guessing no" ;;
+ haiku*) # on Haiku alpha 2, dup2(1, 1) resets FD_CLOEXEC.
+ gl_cv_func_dup2_works="guessing no" ;;
+ *-android*) # implemented using dup3(), which fails if oldfd == newfd
+ gl_cv_func_dup2_works="guessing no" ;;
+ os2*) # on OS/2 kLIBC, dup2() does not work on a directory fd.
+ gl_cv_func_dup2_works="guessing no" ;;
+ *) gl_cv_func_dup2_works="guessing yes" ;;
+ esac
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <errno.h>
+ #include <fcntl.h>
+ #include <limits.h>
+ #include <sys/resource.h>
+ #include <unistd.h>
+ #ifndef RLIM_SAVED_CUR
+ # define RLIM_SAVED_CUR RLIM_INFINITY
+ #endif
+ #ifndef RLIM_SAVED_MAX
+ # define RLIM_SAVED_MAX RLIM_INFINITY
+ #endif
+
+int
+main ()
+{
+int result = 0;
+ int bad_fd = INT_MAX;
+ struct rlimit rlim;
+ if (getrlimit (RLIMIT_NOFILE, &rlim) == 0
+ && 0 <= rlim.rlim_cur && rlim.rlim_cur <= INT_MAX
+ && rlim.rlim_cur != RLIM_INFINITY
+ && rlim.rlim_cur != RLIM_SAVED_MAX
+ && rlim.rlim_cur != RLIM_SAVED_CUR)
+ bad_fd = rlim.rlim_cur;
+ #ifdef FD_CLOEXEC
+ if (fcntl (1, F_SETFD, FD_CLOEXEC) == -1)
+ result |= 1;
+ #endif
+ if (dup2 (1, 1) != 1)
+ result |= 2;
+ #ifdef FD_CLOEXEC
+ if (fcntl (1, F_GETFD) != FD_CLOEXEC)
+ result |= 4;
+ #endif
+ close (0);
+ if (dup2 (0, 0) != -1)
+ result |= 8;
+ /* Many gnulib modules require POSIX conformance of EBADF. */
+ if (dup2 (2, bad_fd) == -1 && errno != EBADF)
+ result |= 16;
+ /* Flush out some cygwin core dumps. */
+ if (dup2 (2, -1) != -1 || errno != EBADF)
+ result |= 32;
+ dup2 (2, 255);
+ dup2 (2, 256);
+ /* On OS/2 kLIBC, dup2() does not work on a directory fd. */
+ {
+ int fd = open (".", O_RDONLY);
+ if (fd == -1)
+ result |= 64;
+ else if (dup2 (fd, fd + 1) == -1)
+ result |= 128;
+
+ close (fd);
+ }
+ return result;
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ gl_cv_func_dup2_works=yes
+else
+ gl_cv_func_dup2_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_dup2_works" >&5
+$as_echo "$gl_cv_func_dup2_works" >&6; }
+ case "$gl_cv_func_dup2_works" in
+ *yes) ;;
+ *)
+ REPLACE_DUP2=1
+ for ac_func in setdtablesize
+do :
+ ac_fn_c_check_func "$LINENO" "setdtablesize" "ac_cv_func_setdtablesize"
+if test "x$ac_cv_func_setdtablesize" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SETDTABLESIZE 1
+_ACEOF
+
+fi
+done
+
+ ;;
+ esac
+ fi
+
+
+ if test $HAVE_DUP2 = 0 || test $REPLACE_DUP2 = 1; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS dup2.$ac_objext"
+
+
+ fi
+
+
+
+
+
+ GNULIB_DUP2=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_DUP2 1" >>confdefs.h
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for error_at_line" >&5
+$as_echo_n "checking for error_at_line... " >&6; }
+if ${ac_cv_lib_error_at_line+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <error.h>
+int
+main ()
+{
+error_at_line (0, 0, "", 0, "an error occurred");
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_error_at_line=yes
+else
+ ac_cv_lib_error_at_line=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_error_at_line" >&5
+$as_echo "$ac_cv_lib_error_at_line" >&6; }
+
+ if test $ac_cv_lib_error_at_line = no; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS error.$ac_objext"
+
+
+
+ :
+
+ fi
+
+
+ XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error:3:c-format"
+
+
+
+ XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error_at_line:5:c-format"
+
+
+
+
+
+
+
+ if test $ac_cv_func_fcntl = no; then
+
+
+
+ if test $ac_cv_func_fcntl = no; then
+ HAVE_FCNTL=0
+ else
+ REPLACE_FCNTL=1
+ fi
+
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fcntl handles F_DUPFD correctly" >&5
+$as_echo_n "checking whether fcntl handles F_DUPFD correctly... " >&6; }
+if ${gl_cv_func_fcntl_f_dupfd_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ case $host_os in
+ aix* | cygwin* | haiku*)
+ gl_cv_func_fcntl_f_dupfd_works="guessing no" ;;
+ *) gl_cv_func_fcntl_f_dupfd_works="guessing yes" ;;
+ esac
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <errno.h>
+ #include <fcntl.h>
+ #include <limits.h>
+ #include <sys/resource.h>
+ #include <unistd.h>
+ #ifndef RLIM_SAVED_CUR
+ # define RLIM_SAVED_CUR RLIM_INFINITY
+ #endif
+ #ifndef RLIM_SAVED_MAX
+ # define RLIM_SAVED_MAX RLIM_INFINITY
+ #endif
+
+int
+main ()
+{
+int result = 0;
+ int bad_fd = INT_MAX;
+ struct rlimit rlim;
+ if (getrlimit (RLIMIT_NOFILE, &rlim) == 0
+ && 0 <= rlim.rlim_cur && rlim.rlim_cur <= INT_MAX
+ && rlim.rlim_cur != RLIM_INFINITY
+ && rlim.rlim_cur != RLIM_SAVED_MAX
+ && rlim.rlim_cur != RLIM_SAVED_CUR)
+ bad_fd = rlim.rlim_cur;
+ if (fcntl (0, F_DUPFD, -1) != -1) result |= 1;
+ if (errno != EINVAL) result |= 2;
+ if (fcntl (0, F_DUPFD, bad_fd) != -1) result |= 4;
+ if (errno != EINVAL) result |= 8;
+ /* On OS/2 kLIBC, F_DUPFD does not work on a directory fd */
+ {
+ int fd;
+ fd = open (".", O_RDONLY);
+ if (fd == -1)
+ result |= 16;
+ else if (fcntl (fd, F_DUPFD, STDERR_FILENO + 1) == -1)
+ result |= 32;
+
+ close (fd);
+ }
+ return result;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ gl_cv_func_fcntl_f_dupfd_works=yes
+else
+ gl_cv_func_fcntl_f_dupfd_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_fcntl_f_dupfd_works" >&5
+$as_echo "$gl_cv_func_fcntl_f_dupfd_works" >&6; }
+ case $gl_cv_func_fcntl_f_dupfd_works in
+ *yes) ;;
+ *)
+
+
+ if test $ac_cv_func_fcntl = no; then
+ HAVE_FCNTL=0
+ else
+ REPLACE_FCNTL=1
+ fi
+
+
+$as_echo "#define FCNTL_DUPFD_BUGGY 1" >>confdefs.h
+ ;;
+ esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fcntl understands F_DUPFD_CLOEXEC" >&5
+$as_echo_n "checking whether fcntl understands F_DUPFD_CLOEXEC... " >&6; }
+if ${gl_cv_func_fcntl_f_dupfd_cloexec+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <fcntl.h>
+#ifndef F_DUPFD_CLOEXEC
+choke me
+#endif
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#ifdef __linux__
+/* The Linux kernel only added F_DUPFD_CLOEXEC in 2.6.24, so we always replace
+ it to support the semantics on older kernels that failed with EINVAL. */
+choke me
+#endif
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_func_fcntl_f_dupfd_cloexec=yes
+else
+ gl_cv_func_fcntl_f_dupfd_cloexec="needs runtime check"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ gl_cv_func_fcntl_f_dupfd_cloexec=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_fcntl_f_dupfd_cloexec" >&5
+$as_echo "$gl_cv_func_fcntl_f_dupfd_cloexec" >&6; }
+ if test "$gl_cv_func_fcntl_f_dupfd_cloexec" != yes; then
+
+
+
+ if test $ac_cv_func_fcntl = no; then
+ HAVE_FCNTL=0
+ else
+ REPLACE_FCNTL=1
+ fi
+
+ fi
+ fi
+
+
+ if test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS fcntl.$ac_objext"
+
+ fi
+
+
+
+
+
+ GNULIB_FCNTL=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_FCNTL 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_fcntl_h='<'fcntl.h'>'
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <fcntl.h>" >&5
+$as_echo_n "checking absolute name of <fcntl.h>... " >&6; }
+if ${gl_cv_next_fcntl_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <fcntl.h>
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+ gl_header_literal_regex=`echo 'fcntl.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+
+ gl_cv_absolute_fcntl_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`
+
+ gl_header=$gl_cv_absolute_fcntl_h
+ gl_cv_next_fcntl_h='"'$gl_header'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_fcntl_h" >&5
+$as_echo "$gl_cv_next_fcntl_h" >&6; }
+ fi
+ NEXT_FCNTL_H=$gl_cv_next_fcntl_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'fcntl.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_fcntl_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_FCNTL_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_func_getdtablesize = yes &&
+ test $ac_cv_have_decl_getdtablesize = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getdtablesize works" >&5
+$as_echo_n "checking whether getdtablesize works... " >&6; }
+if ${gl_cv_func_getdtablesize_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case "$host_os" in
+ vms*) gl_cv_func_getdtablesize_works="no (limitation)" ;;
+ *)
+ if test "$cross_compiling" = yes; then :
+ case "$host_os" in
+ cygwin*) # on cygwin 1.5.25, getdtablesize() automatically grows
+ gl_cv_func_getdtablesize_works="guessing no" ;;
+ *) gl_cv_func_getdtablesize_works="guessing yes" ;;
+ esac
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <unistd.h>
+int
+main ()
+{
+int size = getdtablesize();
+ if (dup2 (0, getdtablesize()) != -1)
+ return 1;
+ if (size != getdtablesize())
+ return 2;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ gl_cv_func_getdtablesize_works=yes
+else
+ gl_cv_func_getdtablesize_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ ;;
+ esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_getdtablesize_works" >&5
+$as_echo "$gl_cv_func_getdtablesize_works" >&6; }
+ case "$gl_cv_func_getdtablesize_works" in
+ *yes | "no (limitation)") ;;
+ *) REPLACE_GETDTABLESIZE=1 ;;
+ esac
+ else
+ HAVE_GETDTABLESIZE=0
+ fi
+
+ if test $HAVE_GETDTABLESIZE = 0 || test $REPLACE_GETDTABLESIZE = 1; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS getdtablesize.$ac_objext"
+
+ :
+ fi
+
+
+
+
+
+ GNULIB_GETDTABLESIZE=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_GETDTABLESIZE 1" >>confdefs.h
+
+
+
+
+
+# Persuade glibc <stdlib.h> to declare getloadavg().
+
+
+gl_save_LIBS=$LIBS
+
+# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0,
+# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7.
+HAVE_GETLOADAVG=1
+ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg"
+if test "x$ac_cv_func_getloadavg" = xyes; then :
+
+else
+ gl_func_getloadavg_done=no
+
+ # Some systems with -lutil have (and need) -lkvm as well, some do not.
+ # On Solaris, -lkvm requires nlist from -lelf, so check that first
+ # to get the right answer into the cache.
+ # For kstat on solaris, we need to test for libelf and libkvm to force the
+ # definition of SVR4 below.
+ if test $gl_func_getloadavg_done = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5
+$as_echo_n "checking for elf_begin in -lelf... " >&6; }
+if ${ac_cv_lib_elf_elf_begin+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lelf $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char elf_begin ();
+int
+main ()
+{
+return elf_begin ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_elf_elf_begin=yes
+else
+ ac_cv_lib_elf_elf_begin=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5
+$as_echo "$ac_cv_lib_elf_elf_begin" >&6; }
+if test "x$ac_cv_lib_elf_elf_begin" = xyes; then :
+ LIBS="-lelf $LIBS"
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5
+$as_echo_n "checking for kvm_open in -lkvm... " >&6; }
+if ${ac_cv_lib_kvm_kvm_open+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lkvm $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char kvm_open ();
+int
+main ()
+{
+return kvm_open ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_kvm_kvm_open=yes
+else
+ ac_cv_lib_kvm_kvm_open=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5
+$as_echo "$ac_cv_lib_kvm_kvm_open" >&6; }
+if test "x$ac_cv_lib_kvm_kvm_open" = xyes; then :
+ LIBS="-lkvm $LIBS"
+fi
+
+ # Check for the 4.4BSD definition of getloadavg.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5
+$as_echo_n "checking for getloadavg in -lutil... " >&6; }
+if ${ac_cv_lib_util_getloadavg+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lutil $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getloadavg ();
+int
+main ()
+{
+return getloadavg ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_util_getloadavg=yes
+else
+ ac_cv_lib_util_getloadavg=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5
+$as_echo "$ac_cv_lib_util_getloadavg" >&6; }
+if test "x$ac_cv_lib_util_getloadavg" = xyes; then :
+ LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes
+fi
+
+ fi
+
+ if test $gl_func_getloadavg_done = no; then
+ # There is a commonly available library for RS/6000 AIX.
+ # Since it is not a standard part of AIX, it might be installed locally.
+ gl_getloadavg_LIBS=$LIBS
+ LIBS="-L/usr/local/lib $LIBS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5
+$as_echo_n "checking for getloadavg in -lgetloadavg... " >&6; }
+if ${ac_cv_lib_getloadavg_getloadavg+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgetloadavg $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getloadavg ();
+int
+main ()
+{
+return getloadavg ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_getloadavg_getloadavg=yes
+else
+ ac_cv_lib_getloadavg_getloadavg=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5
+$as_echo "$ac_cv_lib_getloadavg_getloadavg" >&6; }
+if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes; then :
+ LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes
+else
+ LIBS=$gl_getloadavg_LIBS
+fi
+
+ fi
+
+ # Set up the replacement function if necessary.
+ if test $gl_func_getloadavg_done = no; then
+ HAVE_GETLOADAVG=0
+
+ # Solaris has libkstat which does not require root.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5
+$as_echo_n "checking for kstat_open in -lkstat... " >&6; }
+if ${ac_cv_lib_kstat_kstat_open+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lkstat $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char kstat_open ();
+int
+main ()
+{
+return kstat_open ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_kstat_kstat_open=yes
+else
+ ac_cv_lib_kstat_kstat_open=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5
+$as_echo "$ac_cv_lib_kstat_kstat_open" >&6; }
+if test "x$ac_cv_lib_kstat_kstat_open" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBKSTAT 1
+_ACEOF
+
+ LIBS="-lkstat $LIBS"
+
+fi
+
+ test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes
+
+ # AIX has libperfstat which does not require root
+ if test $gl_func_getloadavg_done = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perfstat_cpu_total in -lperfstat" >&5
+$as_echo_n "checking for perfstat_cpu_total in -lperfstat... " >&6; }
+if ${ac_cv_lib_perfstat_perfstat_cpu_total+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lperfstat $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char perfstat_cpu_total ();
+int
+main ()
+{
+return perfstat_cpu_total ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_perfstat_perfstat_cpu_total=yes
+else
+ ac_cv_lib_perfstat_perfstat_cpu_total=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_perfstat_perfstat_cpu_total" >&5
+$as_echo "$ac_cv_lib_perfstat_perfstat_cpu_total" >&6; }
+if test "x$ac_cv_lib_perfstat_perfstat_cpu_total" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBPERFSTAT 1
+_ACEOF
+
+ LIBS="-lperfstat $LIBS"
+
+fi
+
+ test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes
+ fi
+
+ if test $gl_func_getloadavg_done = no; then
+ ac_fn_c_check_header_mongrel "$LINENO" "sys/dg_sys_info.h" "ac_cv_header_sys_dg_sys_info_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_dg_sys_info_h" = xyes; then :
+ gl_func_getloadavg_done=yes
+
+$as_echo "#define DGUX 1" >>confdefs.h
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5
+$as_echo_n "checking for dg_sys_info in -ldgc... " >&6; }
+if ${ac_cv_lib_dgc_dg_sys_info+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldgc $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dg_sys_info ();
+int
+main ()
+{
+return dg_sys_info ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dgc_dg_sys_info=yes
+else
+ ac_cv_lib_dgc_dg_sys_info=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5
+$as_echo "$ac_cv_lib_dgc_dg_sys_info" >&6; }
+if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBDGC 1
+_ACEOF
+
+ LIBS="-ldgc $LIBS"
+
+fi
+
+fi
+
+
+ fi
+ fi
+fi
+
+
+if test "x$gl_save_LIBS" = x; then
+ GETLOADAVG_LIBS=$LIBS
+else
+ GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"`
+fi
+LIBS=$gl_save_LIBS
+
+
+# Test whether the system declares getloadavg. Solaris has the function
+# but declares it in <sys/loadavg.h>, not <stdlib.h>.
+for ac_header in sys/loadavg.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "sys/loadavg.h" "ac_cv_header_sys_loadavg_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_loadavg_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_LOADAVG_H 1
+_ACEOF
+
+fi
+
+done
+
+if test $ac_cv_header_sys_loadavg_h = yes; then
+ HAVE_SYS_LOADAVG_H=1
+else
+ HAVE_SYS_LOADAVG_H=0
+fi
+ac_fn_c_check_decl "$LINENO" "getloadavg" "ac_cv_have_decl_getloadavg" "#if HAVE_SYS_LOADAVG_H
+ /* OpenIndiana has a bug: <sys/time.h> must be included before
+ <sys/loadavg.h>. */
+ # include <sys/time.h>
+ # include <sys/loadavg.h>
+ #endif
+ #include <stdlib.h>
+"
+if test "x$ac_cv_have_decl_getloadavg" = xyes; then :
+
+else
+ HAVE_DECL_GETLOADAVG=0
+fi
+
+
+ if test $HAVE_GETLOADAVG = 0; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS getloadavg.$ac_objext"
+
+
+# Figure out what our getloadavg.c needs.
+
+
+
+# On HPUX9, an unprivileged user can get load averages this way.
+if test $gl_func_getloadavg_done = no; then
+ for ac_func in pstat_getdynamic
+do :
+ ac_fn_c_check_func "$LINENO" "pstat_getdynamic" "ac_cv_func_pstat_getdynamic"
+if test "x$ac_cv_func_pstat_getdynamic" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_PSTAT_GETDYNAMIC 1
+_ACEOF
+ gl_func_getloadavg_done=yes
+fi
+done
+
+fi
+
+# We cannot check for <dwarf.h>, because Solaris 2 does not use dwarf (it
+# uses stabs), but it is still SVR4. We cannot check for <elf.h> because
+# Irix 4.0.5F has the header but not the library.
+if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \
+ && test "$ac_cv_lib_kvm_kvm_open" = yes; then
+ gl_func_getloadavg_done=yes
+
+$as_echo "#define SVR4 1" >>confdefs.h
+
+fi
+
+if test $gl_func_getloadavg_done = no; then
+ ac_fn_c_check_header_mongrel "$LINENO" "inq_stats/cpustats.h" "ac_cv_header_inq_stats_cpustats_h" "$ac_includes_default"
+if test "x$ac_cv_header_inq_stats_cpustats_h" = xyes; then :
+ gl_func_getloadavg_done=yes
+
+$as_echo "#define UMAX 1" >>confdefs.h
+
+
+$as_echo "#define UMAX4_3 1" >>confdefs.h
+
+fi
+
+
+fi
+
+if test $gl_func_getloadavg_done = no; then
+ ac_fn_c_check_header_mongrel "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_cpustats_h" = xyes; then :
+ gl_func_getloadavg_done=yes; $as_echo "#define UMAX 1" >>confdefs.h
+
+fi
+
+
+fi
+
+if test $gl_func_getloadavg_done = no; then
+ for ac_header in mach/mach.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default"
+if test "x$ac_cv_header_mach_mach_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_MACH_MACH_H 1
+_ACEOF
+
+fi
+
+done
+
+fi
+
+for ac_header in nlist.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default"
+if test "x$ac_cv_header_nlist_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_NLIST_H 1
+_ACEOF
+ ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include <nlist.h>
+"
+if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_NLIST_N_UN_N_NAME 1
+_ACEOF
+
+
+fi
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <nlist.h>
+int
+main ()
+{
+struct nlist x;
+ #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME
+ x.n_un.n_name = "";
+ #else
+ x.n_name = "";
+ #endif
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+$as_echo "#define N_NAME_POINTER 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+done
+
+ fi
+
+
+
+
+
+ GNULIB_GETLOADAVG=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_GETLOADAVG 1" >>confdefs.h
+
+
+
+
+
+
+ ac_found=0
+ ac_fn_c_check_decl "$LINENO" "program_invocation_name" "ac_cv_have_decl_program_invocation_name" "#include <errno.h>
+"
+if test "x$ac_cv_have_decl_program_invocation_name" = xyes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PROGRAM_INVOCATION_NAME $ac_have_decl
+_ACEOF
+if test $ac_have_decl = 1; then :
+ ac_found=1
+fi
+
+ ac_fn_c_check_decl "$LINENO" "program_invocation_short_name" "ac_cv_have_decl_program_invocation_short_name" "#include <errno.h>
+"
+if test "x$ac_cv_have_decl_program_invocation_short_name" = xyes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME $ac_have_decl
+_ACEOF
+if test $ac_have_decl = 1; then :
+ ac_found=1
+fi
+
+ ac_fn_c_check_decl "$LINENO" "__argv" "ac_cv_have_decl___argv" "#include <stdlib.h>
+"
+if test "x$ac_cv_have_decl___argv" = xyes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL___ARGV $ac_have_decl
+_ACEOF
+if test $ac_have_decl = 1; then :
+ ac_found=1
+fi
+
+
+ # Incur the cost of this test only if none of the above worked.
+ if test $ac_found = 0; then
+ # On OpenBSD 5.1, using the global __progname variable appears to be
+ # the only way to implement getprogname.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __progname is defined in default libraries" >&5
+$as_echo_n "checking whether __progname is defined in default libraries... " >&6; }
+if ${gl_cv_var___progname+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_cv_var___progname=
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+extern char *__progname;
+int
+main ()
+{
+return *__progname;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_var___progname=yes
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_var___progname" >&5
+$as_echo "$gl_cv_var___progname" >&6; }
+ if test "$gl_cv_var___progname" = yes; then
+
+$as_echo "#define HAVE_VAR___PROGNAME 1" >>confdefs.h
+
+ fi
+ fi
+
+
+
+
+
+ # Check the system to see if it provides GNU glob. If not, use our
+ # local version.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if system libc has GNU glob" >&5
+$as_echo_n "checking if system libc has GNU glob... " >&6; }
+if ${make_cv_sys_gnu_glob+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <features.h>
+ #include <glob.h>
+ #include <fnmatch.h>
+ #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1
+ # include <gnu-versions.h>
+ # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2
+ gnu glob
+ # endif
+ #endif
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "gnu glob" >/dev/null 2>&1; then :
+ make_cv_sys_gnu_glob=yes
+else
+ make_cv_sys_gnu_glob=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5
+$as_echo "$make_cv_sys_gnu_glob" >&6; }
+ # Tell automake about this, so it can build the right .c files.
+ if test "$make_cv_sys_gnu_glob" = yes; then
+ USE_SYSTEM_GLOB_TRUE=
+ USE_SYSTEM_GLOB_FALSE='#'
+else
+ USE_SYSTEM_GLOB_TRUE='#'
+ USE_SYSTEM_GLOB_FALSE=
+fi
+
+ # Tell build.sh which to use
+ USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob"
+
+
+
+
+ if test $gl_cv_func_malloc_posix = yes; then
+
+$as_echo "#define HAVE_MALLOC_POSIX 1" >>confdefs.h
+
+ else
+ REPLACE_MALLOC=1
+ fi
+
+ if test $REPLACE_MALLOC = 1; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext"
+
+ fi
+
+
+
+
+
+ GNULIB_MALLOC_POSIX=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_MALLOC_POSIX 1" >>confdefs.h
+
+
+
+
+ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS msvc-inval.$ac_objext"
+
+ fi
+
+ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS msvc-nothrow.$ac_objext"
+
+ fi
+
+
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_MSVC_NOTHROW 1
+_ACEOF
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ssize_t" >&5
+$as_echo_n "checking for ssize_t... " >&6; }
+if ${gt_cv_ssize_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+int
+main ()
+{
+int x = sizeof (ssize_t *) + sizeof (ssize_t);
+ return !x;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gt_cv_ssize_t=yes
+else
+ gt_cv_ssize_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_ssize_t" >&5
+$as_echo "$gt_cv_ssize_t" >&6; }
+ if test $gt_cv_ssize_t = no; then
+
+$as_echo "#define ssize_t int" >>confdefs.h
+
+ fi
+
+
+
+
+
+ if test "$ac_cv_header_stdbool_h" = yes; then
+ case "$host_os" in
+ solaris*)
+ if test -z "$GCC"; then
+ STDBOOL_H='stdbool.h'
+ else
+ STDBOOL_H=''
+ fi
+ ;;
+ *)
+ STDBOOL_H=''
+ ;;
+ esac
+ else
+ STDBOOL_H='stdbool.h'
+ fi
+
+ if test -n "$STDBOOL_H"; then
+ GL_GENERATE_STDBOOL_H_TRUE=
+ GL_GENERATE_STDBOOL_H_FALSE='#'
+else
+ GL_GENERATE_STDBOOL_H_TRUE='#'
+ GL_GENERATE_STDBOOL_H_FALSE=
+fi
+
+
+ if test "$ac_cv_type__Bool" = yes; then
+ HAVE__BOOL=1
+ else
+ HAVE__BOOL=0
+ fi
+
+
+
+
+
+ STDDEF_H=
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for good max_align_t" >&5
+$as_echo_n "checking for good max_align_t... " >&6; }
+if ${gl_cv_type_max_align_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stddef.h>
+ unsigned int s = sizeof (max_align_t);
+ #if defined __GNUC__ || defined __IBM__ALIGNOF__
+ int check1[2 * (__alignof__ (double) <= __alignof__ (max_align_t)) - 1];
+ int check2[2 * (__alignof__ (long double) <= __alignof__ (max_align_t)) - 1];
+ #endif
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_type_max_align_t=yes
+else
+ gl_cv_type_max_align_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_max_align_t" >&5
+$as_echo "$gl_cv_type_max_align_t" >&6; }
+ if test $gl_cv_type_max_align_t = no; then
+ HAVE_MAX_ALIGN_T=0
+ STDDEF_H=stddef.h
+ fi
+
+ if test $gt_cv_c_wchar_t = no; then
+ HAVE_WCHAR_T=0
+ STDDEF_H=stddef.h
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NULL can be used in arbitrary expressions" >&5
+$as_echo_n "checking whether NULL can be used in arbitrary expressions... " >&6; }
+if ${gl_cv_decl_null_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stddef.h>
+ int test[2 * (sizeof NULL == sizeof (void *)) -1];
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_decl_null_works=yes
+else
+ gl_cv_decl_null_works=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_decl_null_works" >&5
+$as_echo "$gl_cv_decl_null_works" >&6; }
+ if test $gl_cv_decl_null_works = no; then
+ REPLACE_NULL=1
+ STDDEF_H=stddef.h
+ fi
+
+
+ if test -n "$STDDEF_H"; then
+ GL_GENERATE_STDDEF_H_TRUE=
+ GL_GENERATE_STDDEF_H_FALSE='#'
+else
+ GL_GENERATE_STDDEF_H_TRUE='#'
+ GL_GENERATE_STDDEF_H_FALSE=
+fi
+
+ if test -n "$STDDEF_H"; then
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_stddef_h='<'stddef.h'>'
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stddef.h>" >&5
+$as_echo_n "checking absolute name of <stddef.h>... " >&6; }
+if ${gl_cv_next_stddef_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stddef.h>
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+ gl_header_literal_regex=`echo 'stddef.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+
+ gl_cv_absolute_stddef_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`
+
+ gl_header=$gl_cv_absolute_stddef_h
+ gl_cv_next_stddef_h='"'$gl_header'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stddef_h" >&5
+$as_echo "$gl_cv_next_stddef_h" >&6; }
+ fi
+ NEXT_STDDEF_H=$gl_cv_next_stddef_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'stddef.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_stddef_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H=$gl_next_as_first_directive
+
+
+
+
+ fi
+
+
+
+
+ $as_echo "#define __USE_MINGW_ANSI_STDIO 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_stdio_h='<'stdio.h'>'
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stdio.h>" >&5
+$as_echo_n "checking absolute name of <stdio.h>... " >&6; }
+if ${gl_cv_next_stdio_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+ gl_header_literal_regex=`echo 'stdio.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+
+ gl_cv_absolute_stdio_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`
+
+ gl_header=$gl_cv_absolute_stdio_h
+ gl_cv_next_stdio_h='"'$gl_header'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdio_h" >&5
+$as_echo "$gl_cv_next_stdio_h" >&6; }
+ fi
+ NEXT_STDIO_H=$gl_cv_next_stdio_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'stdio.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_stdio_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_STDIO_H=$gl_next_as_first_directive
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking which flavor of printf attribute matches inttypes macros" >&5
+$as_echo_n "checking which flavor of printf attribute matches inttypes macros... " >&6; }
+if ${gl_cv_func_printf_attribute_flavor+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #define __STDC_FORMAT_MACROS 1
+ #include <stdio.h>
+ #include <inttypes.h>
+ /* For non-mingw systems, compilation will trivially succeed.
+ For mingw, compilation will succeed for older mingw (system
+ printf, "I64d") and fail for newer mingw (gnu printf, "lld"). */
+ #if (defined _WIN32 && ! defined __CYGWIN__) && \
+ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+ extern char PRIdMAX_probe[sizeof PRIdMAX == sizeof "I64d" ? 1 : -1];
+ #endif
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_func_printf_attribute_flavor=system
+else
+ gl_cv_func_printf_attribute_flavor=gnu
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_printf_attribute_flavor" >&5
+$as_echo "$gl_cv_func_printf_attribute_flavor" >&6; }
+ if test "$gl_cv_func_printf_attribute_flavor" = gnu; then
+
+$as_echo "#define GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU 1" >>confdefs.h
+
+ fi
+
+ GNULIB_FSCANF=1
+
+
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_FSCANF 1
+_ACEOF
+
+
+ GNULIB_SCANF=1
+
+
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_SCANF 1
+_ACEOF
+
+
+ GNULIB_FGETC=1
+ GNULIB_GETC=1
+ GNULIB_GETCHAR=1
+ GNULIB_FGETS=1
+ GNULIB_FREAD=1
+
+
+ GNULIB_FPRINTF=1
+ GNULIB_PRINTF=1
+ GNULIB_VFPRINTF=1
+ GNULIB_VPRINTF=1
+ GNULIB_FPUTC=1
+ GNULIB_PUTC=1
+ GNULIB_PUTCHAR=1
+ GNULIB_FPUTS=1
+ GNULIB_PUTS=1
+ GNULIB_FWRITE=1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_stdlib_h='<'stdlib.h'>'
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <stdlib.h>" >&5
+$as_echo_n "checking absolute name of <stdlib.h>... " >&6; }
+if ${gl_cv_next_stdlib_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+ gl_header_literal_regex=`echo 'stdlib.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+
+ gl_cv_absolute_stdlib_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`
+
+ gl_header=$gl_cv_absolute_stdlib_h
+ gl_cv_next_stdlib_h='"'$gl_header'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_stdlib_h" >&5
+$as_echo "$gl_cv_next_stdlib_h" >&6; }
+ fi
+ NEXT_STDLIB_H=$gl_cv_next_stdlib_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'stdlib.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_stdlib_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_STDLIB_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ for ac_func in stpcpy
+do :
+ ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy"
+if test "x$ac_cv_func_stpcpy" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_STPCPY 1
+_ACEOF
+
+fi
+done
+
+ if test $ac_cv_func_stpcpy = no; then
+ HAVE_STPCPY=0
+ fi
+
+ if test $HAVE_STPCPY = 0; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS stpcpy.$ac_objext"
+
+
+ :
+
+ fi
+
+
+
+
+
+ GNULIB_STPCPY=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_STPCPY 1" >>confdefs.h
+
+
+
+
+
+
+
+
+ if test "$ERRNO_H:$REPLACE_STRERROR_0" = :0; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strerror function" >&5
+$as_echo_n "checking for working strerror function... " >&6; }
+if ${gl_cv_func_working_strerror+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu* | gnu*) gl_cv_func_working_strerror="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_working_strerror="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_working_strerror="$gl_cross_guess_normal" ;;
+ esac
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+
+int
+main ()
+{
+if (!*strerror (-2)) return 1;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ gl_cv_func_working_strerror=yes
+else
+ gl_cv_func_working_strerror=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_working_strerror" >&5
+$as_echo "$gl_cv_func_working_strerror" >&6; }
+ case "$gl_cv_func_working_strerror" in
+ *yes) ;;
+ *)
+ REPLACE_STRERROR=1
+ ;;
+ esac
+
+ else
+ REPLACE_STRERROR=1
+ fi
+
+ if test $REPLACE_STRERROR = 1; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS strerror.$ac_objext"
+
+ fi
+
+
+cat >>confdefs.h <<_ACEOF
+#define GNULIB_STRERROR 1
+_ACEOF
+
+
+
+
+
+
+
+ GNULIB_STRERROR=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_STRERROR 1" >>confdefs.h
+
+
+
+
+
+ if test -n "$ERRNO_H" || test $REPLACE_STRERROR_0 = 1; then
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS strerror-override.$ac_objext"
+
+
+
+
+
+ if test $ac_cv_header_sys_socket_h != yes; then
+ for ac_header in winsock2.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default"
+if test "x$ac_cv_header_winsock2_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_WINSOCK2_H 1
+_ACEOF
+
+fi
+
+done
+
+ fi
+ if test "$ac_cv_header_winsock2_h" = yes; then
+ HAVE_WINSOCK2_H=1
+ UNISTD_H_HAVE_WINSOCK2_H=1
+ SYS_IOCTL_H_HAVE_WINSOCK2_H=1
+ else
+ HAVE_WINSOCK2_H=0
+ fi
+
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $gl_cv_have_include_next = yes; then
+ gl_cv_next_unistd_h='<'unistd.h'>'
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <unistd.h>" >&5
+$as_echo_n "checking absolute name of <unistd.h>... " >&6; }
+if ${gl_cv_next_unistd_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ if test $ac_cv_header_unistd_h = yes; then
+
+
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <unistd.h>
+_ACEOF
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+
+ case "$host_os" in
+ mingw*)
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+ gl_header_literal_regex=`echo 'unistd.h' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+
+ gl_cv_absolute_unistd_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+ sed -n "$gl_absolute_header_sed"`
+
+ gl_header=$gl_cv_absolute_unistd_h
+ gl_cv_next_unistd_h='"'$gl_header'"'
+ else
+ gl_cv_next_unistd_h='<'unistd.h'>'
+ fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_unistd_h" >&5
+$as_echo "$gl_cv_next_unistd_h" >&6; }
+ fi
+ NEXT_UNISTD_H=$gl_cv_next_unistd_h
+
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'unistd.h'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=$gl_cv_next_unistd_h
+ fi
+ NEXT_AS_FIRST_DIRECTIVE_UNISTD_H=$gl_next_as_first_directive
+
+
+
+
+ if test $ac_cv_header_unistd_h = yes; then
+ HAVE_UNISTD_H=1
+ else
+ HAVE_UNISTD_H=0
+ fi
+
+
+
+
+
+
+
+
+
+
+ :
+ # End of code from modules
+
+
+
+
+
+
+
+
+
+ gltests_libdeps=
+ gltests_ltlibdeps=
+
+
+
+
+
+
+
+
+
+ gl_source_base='tests'
+ gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS
+
+ gl_module_indicator_condition=$gltests_WITNESS
+
+
+
+
+
+
+
+
+
+ LIBGNU_LIBDEPS="$gl_libdeps"
+
+ LIBGNU_LTLIBDEPS="$gl_ltlibdeps"
+
+
+
+
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
@@ -5567,250 +12614,7 @@ fi
-# Needed for w32/Makefile.am
-if test -n "$ac_tool_prefix"; then
- for ac_prog in ar lib "link -lib"
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$AR"; then
- ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$AR" && break
- done
-fi
-if test -z "$AR"; then
- ac_ct_AR=$AR
- for ac_prog in ar lib "link -lib"
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_AR"; then
- ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_AR="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$ac_ct_AR" && break
-done
-
- if test "x$ac_ct_AR" = x; then
- AR="false"
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- AR=$ac_ct_AR
- fi
-fi
-
-: ${AR=ar}
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5
-$as_echo_n "checking the archiver ($AR) interface... " >&6; }
-if ${am_cv_ar_interface+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- am_cv_ar_interface=ar
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-int some_variable = 0;
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5
- (eval $am_ar_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
- if test "$ac_status" -eq 0; then
- am_cv_ar_interface=ar
- else
- am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5
- (eval $am_ar_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
- if test "$ac_status" -eq 0; then
- am_cv_ar_interface=lib
- else
- am_cv_ar_interface=unknown
- fi
- fi
- rm -f conftest.lib libconftest.a
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5
-$as_echo "$am_cv_ar_interface" >&6; }
-
-case $am_cv_ar_interface in
-ar)
- ;;
-lib)
- # Microsoft lib, so override with the ar-lib wrapper script.
- # FIXME: It is wrong to rewrite AR.
- # But if we don't then we get into trouble of one sort or another.
- # A longer-term fix would be to have automake use am__AR in this case,
- # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something
- # similar.
- AR="$am_aux_dir/ar-lib $AR"
- ;;
-unknown)
- as_fn_error $? "could not determine $AR interface" "$LINENO" 5
- ;;
-esac
-
-
# Specialized system macros
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_build_alias=$build_alias
-test "x$ac_build_alias" = x &&
- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
-test "x$ac_build_alias" = x &&
- as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
-case $ac_cv_build in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
-esac
-build=$ac_cv_build
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_build
-shift
-build_cpu=$1
-build_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-build_os=$*
-IFS=$ac_save_IFS
-case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$host_alias" = x; then
- ac_cv_host=$ac_cv_build
-else
- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
-case $ac_cv_host in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
-esac
-host=$ac_cv_host
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_host
-shift
-host_cpu=$1
-host_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-host_os=$*
-IFS=$ac_save_IFS
-case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5
@@ -5870,6 +12674,230 @@ if test "$ac_res" != no; then :
fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if ${ac_cv_c_bigendian+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_bigendian=unknown
+ # See if we're dealing with a universal compiler.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifndef __APPLE_CC__
+ not a universal capable compiler
+ #endif
+ typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+ # Check for potential -arch flags. It is not universal unless
+ # there are at least two -arch flags with different values.
+ ac_arch=
+ ac_prev=
+ for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+ if test -n "$ac_prev"; then
+ case $ac_word in
+ i?86 | x86_64 | ppc | ppc64)
+ if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+ ac_arch=$ac_word
+ else
+ ac_cv_c_bigendian=universal
+ break
+ fi
+ ;;
+ esac
+ ac_prev=
+ elif test "x$ac_word" = "x-arch"; then
+ ac_prev=arch
+ fi
+ done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if test $ac_cv_c_bigendian = unknown; then
+ # See if sys/param.h defines the BYTE_ORDER macro.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+ && LITTLE_ENDIAN)
+ bogus endian macros
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ # It does; now see whether it defined to BIG_ENDIAN or not.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_bigendian=yes
+else
+ ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $ac_cv_c_bigendian = unknown; then
+ # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+ bogus endian macros
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ # It does; now see whether it defined to _BIG_ENDIAN or not.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+ not big endian
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_bigendian=yes
+else
+ ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $ac_cv_c_bigendian = unknown; then
+ # Compile a test program.
+ if test "$cross_compiling" = yes; then :
+ # Try to guess by grepping values from an object file.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+short int ascii_mm[] =
+ { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+ short int ascii_ii[] =
+ { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+ int use_ascii (int i) {
+ return ascii_mm[i] + ascii_ii[i];
+ }
+ short int ebcdic_ii[] =
+ { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+ short int ebcdic_mm[] =
+ { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+ int use_ebcdic (int i) {
+ return ebcdic_mm[i] + ebcdic_ii[i];
+ }
+ extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+ ac_cv_c_bigendian=yes
+ fi
+ if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+ if test "$ac_cv_c_bigendian" = unknown; then
+ ac_cv_c_bigendian=no
+ else
+ # finding both strings is unlikely to happen, but who knows?
+ ac_cv_c_bigendian=unknown
+ fi
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+ long int l;
+ char c[sizeof (long int)];
+ } u;
+ u.l = 1;
+ return u.c[sizeof (long int) - 1] == 1;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ ac_cv_c_bigendian=no
+else
+ ac_cv_c_bigendian=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+ yes)
+ $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+;; #(
+ no)
+ ;; #(
+ universal)
+
+$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+
+ ;; #(
+ *)
+ as_fn_error $? "unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
+ esac
+
# Enable gettext, in "external" mode.
@@ -8627,7 +15655,7 @@ fi
for ac_header in stdlib.h locale.h unistd.h limits.h fcntl.h string.h \
memory.h sys/param.h sys/resource.h sys/time.h sys/timeb.h \
- sys/select.h
+ sys/select.h sys/file.h spawn.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
@@ -9127,8 +16155,8 @@ else
int main ()
{
struct timeval t; t.tv_sec = -1; t.tv_usec = -1;
- exit (gettimeofday (&t, 0) != 0
- || t.tv_sec < 0 || t.tv_usec < 0);
+ return gettimeofday (&t, 0) != 0
+ || t.tv_sec < 0 || t.tv_usec < 0;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
@@ -9150,11 +16178,12 @@ $as_echo "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h
fi
-for ac_func in strdup strndup mkstemp mktemp fdopen fileno \
+for ac_func in strdup strndup memrchr umask mkstemp mktemp fdopen \
dup dup2 getcwd realpath sigsetmask sigaction \
getgroups seteuid setegid setlinebuf setreuid setregid \
- getrlimit setrlimit setvbuf pipe strerror strsignal \
- lstat readlink atexit isatty ttyname pselect
+ getrlimit setrlimit setvbuf pipe strsignal \
+ lstat readlink atexit isatty ttyname pselect posix_spawn \
+ posix_spawnattr_setsigmask
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -9462,193 +16491,6 @@ $as_echo "#define HAVE_STRCOLL 1" >>confdefs.h
fi
-
-# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
-# for constant arguments. Useless!
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
-$as_echo_n "checking for working alloca.h... " >&6; }
-if ${ac_cv_working_alloca_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <alloca.h>
-int
-main ()
-{
-char *p = (char *) alloca (2 * sizeof (int));
- if (p) return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_working_alloca_h=yes
-else
- ac_cv_working_alloca_h=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
-$as_echo "$ac_cv_working_alloca_h" >&6; }
-if test $ac_cv_working_alloca_h = yes; then
-
-$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
-$as_echo_n "checking for alloca... " >&6; }
-if ${ac_cv_func_alloca_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-#else
-# ifdef _MSC_VER
-# include <malloc.h>
-# define alloca _alloca
-# else
-# ifdef HAVE_ALLOCA_H
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca /* predefined by HP cc +Olibcalls */
-void *alloca (size_t);
-# endif
-# endif
-# endif
-# endif
-#endif
-
-int
-main ()
-{
-char *p = (char *) alloca (1);
- if (p) return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_func_alloca_works=yes
-else
- ac_cv_func_alloca_works=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
-$as_echo "$ac_cv_func_alloca_works" >&6; }
-
-if test $ac_cv_func_alloca_works = yes; then
-
-$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
-
-else
- # The SVR3 libPW and SVR4 libucb both contain incompatible functions
-# that cause trouble. Some versions do not even contain alloca or
-# contain a buggy version. If you still want to use their alloca,
-# use ar to extract alloca.o from them instead of compiling alloca.c.
-
-ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
-
-$as_echo "#define C_ALLOCA 1" >>confdefs.h
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
-$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
-if ${ac_cv_os_cray+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#if defined CRAY && ! defined CRAY2
-webecray
-#else
-wenotbecray
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "webecray" >/dev/null 2>&1; then :
- ac_cv_os_cray=yes
-else
- ac_cv_os_cray=no
-fi
-rm -f conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
-$as_echo "$ac_cv_os_cray" >&6; }
-if test $ac_cv_os_cray = yes; then
- for ac_func in _getb67 GETB67 getb67; do
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-
-cat >>confdefs.h <<_ACEOF
-#define CRAY_STACKSEG_END $ac_func
-_ACEOF
-
- break
-fi
-
- done
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
-$as_echo_n "checking stack direction for C alloca... " >&6; }
-if ${ac_cv_c_stack_direction+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- ac_cv_c_stack_direction=0
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$ac_includes_default
-int
-find_stack_direction (int *addr, int depth)
-{
- int dir, dummy = 0;
- if (! addr)
- addr = &dummy;
- *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
- dir = depth ? find_stack_direction (addr, depth - 1) : 0;
- return dir + dummy;
-}
-
-int
-main (int argc, char **argv)
-{
- return find_stack_direction (0, argc + !argv + 20) < 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- ac_cv_c_stack_direction=1
-else
- ac_cv_c_stack_direction=-1
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
-$as_echo "$ac_cv_c_stack_direction" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define STACK_DIRECTION $ac_cv_c_stack_direction
-_ACEOF
-
-
-fi
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5
$as_echo_n "checking whether closedir returns void... " >&6; }
if ${ac_cv_func_closedir_void+:} false; then :
@@ -9692,8 +16534,49 @@ $as_echo "#define CLOSEDIR_VOID 1" >>confdefs.h
fi
+# dir.c and our glob.c use dirent.d_type if available
+
+
+ ac_fn_c_check_member "$LINENO" "struct dirent" "d_type" "ac_cv_member_struct_dirent_d_type" "
+#include <sys/types.h>
+#ifdef HAVE_DIRENT_H
+# include <dirent.h>
+#else
+# define dirent direct
+# ifdef HAVE_SYS_NDIR_H
+# include <sys/ndir.h>
+# endif
+# ifdef HAVE_SYS_DIR_H
+# include <sys/dir.h>
+# endif
+# ifdef HAVE_NDIR_H
+# include <ndir.h>
+# endif
+#endif
+
+"
+if test "x$ac_cv_member_struct_dirent_d_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_DIRENT_D_TYPE 1
+_ACEOF
+
+
+fi
+
+
+
# See if the user wants to add (or not) GNU Guile support
+# Check whether --with-guile was given.
+if test "${with_guile+set}" = set; then :
+ withval=$with_guile;
+fi
+
+
+# Annoyingly, each version of Guile comes with it's own PC file so we have to
+# specify them as individual packages. Ugh.
+
@@ -9814,75 +16697,25 @@ $as_echo "no" >&6; }
fi
fi
-# Check whether --with-guile was given.
-if test "${with_guile+set}" = set; then :
- withval=$with_guile;
-fi
-
-
-# For some strange reason, at least on Ubuntu, each version of Guile
-# comes with it's own PC file so we have to specify them as individual
-# packages. Ugh.
if test "x$with_guile" != xno; then :
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUILE" >&5
-$as_echo_n "checking for GUILE... " >&6; }
-
-if test -n "$GUILE_CFLAGS"; then
- pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
+ guile_versions="3.0 2.2 2.0 1.8"
+ guile_version=no
+ have_guile=no
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU Guile" >&5
+$as_echo_n "checking for GNU Guile... " >&6; }
+ for v in $guile_versions; do
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-2.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "guile-2.0") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$v\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "guile-$v") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-2.0" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-if test -n "$GUILE_LIBS"; then
- pkg_cv_GUILE_LIBS="$GUILE_LIBS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-2.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "guile-2.0") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-2.0" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
+ guile_version=$v; have_guile=yes; break
fi
-
-
-
-if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
- _pkg_short_errors_supported=yes
-else
- _pkg_short_errors_supported=no
-fi
- if test $_pkg_short_errors_supported = yes; then
- GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-2.0" 2>&1`
- else
- GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-2.0" 2>&1`
- fi
- # Put the nasty error message in config.log where it belongs
- echo "$GUILE_PKG_ERRORS" >&5
-
+ done
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $guile_version" >&5
+$as_echo "$guile_version" >&6; }
+ if test "$have_guile" = yes; then :
pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUILE" >&5
@@ -9892,12 +16725,12 @@ if test -n "$GUILE_CFLAGS"; then
pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-1.8\""; } >&5
- ($PKG_CONFIG --exists --print-errors "guile-1.8") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-1.8" 2>/dev/null`
+ pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-$guile_version" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -9909,12 +16742,12 @@ if test -n "$GUILE_LIBS"; then
pkg_cv_GUILE_LIBS="$GUILE_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-1.8\""; } >&5
- ($PKG_CONFIG --exists --print-errors "guile-1.8") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-\$guile_version\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "guile-$guile_version") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-1.8" 2>/dev/null`
+ pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-$guile_version" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
@@ -9935,649 +16768,74 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-1.8" 2>&1`
+ GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-$guile_version" 2>&1`
else
- GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-1.8" 2>&1`
+ GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-$guile_version" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$GUILE_PKG_ERRORS" >&5
- have_guile=no
-elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- have_guile=no
-else
- GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS
- GUILE_LIBS=$pkg_cv_GUILE_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- have_guile=yes
-fi
-elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ as_fn_error $? "Package requirements (guile-$guile_version) were not met:
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUILE" >&5
-$as_echo_n "checking for GUILE... " >&6; }
+$GUILE_PKG_ERRORS
-if test -n "$GUILE_CFLAGS"; then
- pkg_cv_GUILE_CFLAGS="$GUILE_CFLAGS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-1.8\""; } >&5
- ($PKG_CONFIG --exists --print-errors "guile-1.8") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_GUILE_CFLAGS=`$PKG_CONFIG --cflags "guile-1.8" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
-if test -n "$GUILE_LIBS"; then
- pkg_cv_GUILE_LIBS="$GUILE_LIBS"
- elif test -n "$PKG_CONFIG"; then
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"guile-1.8\""; } >&5
- ($PKG_CONFIG --exists --print-errors "guile-1.8") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_GUILE_LIBS=`$PKG_CONFIG --libs "guile-1.8" 2>/dev/null`
- test "x$?" != "x0" && pkg_failed=yes
-else
- pkg_failed=yes
-fi
- else
- pkg_failed=untried
-fi
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
-
-
-if test $pkg_failed = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
- _pkg_short_errors_supported=yes
-else
- _pkg_short_errors_supported=no
-fi
- if test $_pkg_short_errors_supported = yes; then
- GUILE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "guile-1.8" 2>&1`
- else
- GUILE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "guile-1.8" 2>&1`
- fi
- # Put the nasty error message in config.log where it belongs
- echo "$GUILE_PKG_ERRORS" >&5
-
- have_guile=no
+Alternatively, you may set the environment variables GUILE_CFLAGS
+and GUILE_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
- have_guile=no
-else
- GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS
- GUILE_LIBS=$pkg_cv_GUILE_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- have_guile=yes
-fi
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables GUILE_CFLAGS
+and GUILE_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details" "$LINENO" 5; }
else
GUILE_CFLAGS=$pkg_cv_GUILE_CFLAGS
GUILE_LIBS=$pkg_cv_GUILE_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- have_guile=yes
-fi
-
-fi
-
-if test "$have_guile" = yes; then :
-
-$as_echo "#define HAVE_GUILE 1" >>confdefs.h
-
-fi
-
- if test "$have_guile" = yes; then
- HAVE_GUILE_TRUE=
- HAVE_GUILE_FALSE='#'
-else
- HAVE_GUILE_TRUE='#'
- HAVE_GUILE_FALSE=
-fi
-
-
-ac_have_func=no # yes means we've found a way to get the load average.
-
-# Make sure getloadavg.c is where it belongs, at configure-time.
-test -f "$srcdir/$ac_config_libobj_dir/getloadavg.c" ||
- as_fn_error $? "$srcdir/$ac_config_libobj_dir/getloadavg.c is missing" "$LINENO" 5
-
-ac_save_LIBS=$LIBS
-
-# Check for getloadavg, but be sure not to touch the cache variable.
-(ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg"
-if test "x$ac_cv_func_getloadavg" = xyes; then :
- exit 0
-else
- exit 1
-fi
-) && ac_have_func=yes
-
-# On HPUX9, an unprivileged user can get load averages through this function.
-for ac_func in pstat_getdynamic
-do :
- ac_fn_c_check_func "$LINENO" "pstat_getdynamic" "ac_cv_func_pstat_getdynamic"
-if test "x$ac_cv_func_pstat_getdynamic" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PSTAT_GETDYNAMIC 1
-_ACEOF
-
-fi
-done
-
-
-# Solaris has libkstat which does not require root.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5
-$as_echo_n "checking for kstat_open in -lkstat... " >&6; }
-if ${ac_cv_lib_kstat_kstat_open+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lkstat $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char kstat_open ();
-int
-main ()
-{
-return kstat_open ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_kstat_kstat_open=yes
-else
- ac_cv_lib_kstat_kstat_open=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5
-$as_echo "$ac_cv_lib_kstat_kstat_open" >&6; }
-if test "x$ac_cv_lib_kstat_kstat_open" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBKSTAT 1
-_ACEOF
-
- LIBS="-lkstat $LIBS"
-
-fi
-
-test $ac_cv_lib_kstat_kstat_open = yes && ac_have_func=yes
-
-# Some systems with -lutil have (and need) -lkvm as well, some do not.
-# On Solaris, -lkvm requires nlist from -lelf, so check that first
-# to get the right answer into the cache.
-# For kstat on solaris, we need libelf to force the definition of SVR4 below.
-if test $ac_have_func = no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5
-$as_echo_n "checking for elf_begin in -lelf... " >&6; }
-if ${ac_cv_lib_elf_elf_begin+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lelf $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char elf_begin ();
-int
-main ()
-{
-return elf_begin ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_elf_elf_begin=yes
-else
- ac_cv_lib_elf_elf_begin=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5
-$as_echo "$ac_cv_lib_elf_elf_begin" >&6; }
-if test "x$ac_cv_lib_elf_elf_begin" = xyes; then :
- LIBS="-lelf $LIBS"
-fi
-
-fi
-if test $ac_have_func = no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5
-$as_echo_n "checking for kvm_open in -lkvm... " >&6; }
-if ${ac_cv_lib_kvm_kvm_open+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lkvm $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char kvm_open ();
-int
-main ()
-{
-return kvm_open ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_kvm_kvm_open=yes
-else
- ac_cv_lib_kvm_kvm_open=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5
-$as_echo "$ac_cv_lib_kvm_kvm_open" >&6; }
-if test "x$ac_cv_lib_kvm_kvm_open" = xyes; then :
- LIBS="-lkvm $LIBS"
-fi
-
- # Check for the 4.4BSD definition of getloadavg.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5
-$as_echo_n "checking for getloadavg in -lutil... " >&6; }
-if ${ac_cv_lib_util_getloadavg+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lutil $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char getloadavg ();
-int
-main ()
-{
-return getloadavg ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_util_getloadavg=yes
-else
- ac_cv_lib_util_getloadavg=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5
-$as_echo "$ac_cv_lib_util_getloadavg" >&6; }
-if test "x$ac_cv_lib_util_getloadavg" = xyes; then :
- LIBS="-lutil $LIBS" ac_have_func=yes ac_cv_func_getloadavg_setgid=yes
-fi
-
-fi
-
-if test $ac_have_func = no; then
- # There is a commonly available library for RS/6000 AIX.
- # Since it is not a standard part of AIX, it might be installed locally.
- ac_getloadavg_LIBS=$LIBS
- LIBS="-L/usr/local/lib $LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5
-$as_echo_n "checking for getloadavg in -lgetloadavg... " >&6; }
-if ${ac_cv_lib_getloadavg_getloadavg+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lgetloadavg $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char getloadavg ();
-int
-main ()
-{
-return getloadavg ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_getloadavg_getloadavg=yes
-else
- ac_cv_lib_getloadavg_getloadavg=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5
-$as_echo "$ac_cv_lib_getloadavg_getloadavg" >&6; }
-if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes; then :
- LIBS="-lgetloadavg $LIBS"
-else
- LIBS=$ac_getloadavg_LIBS
-fi
-
-fi
-
-# Make sure it is really in the library, if we think we found it,
-# otherwise set up the replacement function.
-for ac_func in getloadavg
-do :
- ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg"
-if test "x$ac_cv_func_getloadavg" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETLOADAVG 1
-_ACEOF
-
-else
- case " $LIBOBJS " in
- *" getloadavg.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS getloadavg.$ac_objext"
- ;;
-esac
-
-
-$as_echo "#define C_GETLOADAVG 1" >>confdefs.h
-
-# Figure out what our getloadavg.c needs.
-ac_have_func=no
-ac_fn_c_check_header_mongrel "$LINENO" "sys/dg_sys_info.h" "ac_cv_header_sys_dg_sys_info_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_dg_sys_info_h" = xyes; then :
- ac_have_func=yes
-
-$as_echo "#define DGUX 1" >>confdefs.h
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5
-$as_echo_n "checking for dg_sys_info in -ldgc... " >&6; }
-if ${ac_cv_lib_dgc_dg_sys_info+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldgc $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dg_sys_info ();
-int
-main ()
-{
-return dg_sys_info ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_dgc_dg_sys_info=yes
-else
- ac_cv_lib_dgc_dg_sys_info=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5
-$as_echo "$ac_cv_lib_dgc_dg_sys_info" >&6; }
-if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBDGC 1
-_ACEOF
-
- LIBS="-ldgc $LIBS"
-
-fi
-
-fi
-
-
-
-ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default"
-if test "x$ac_cv_header_locale_h" = xyes; then :
-
-fi
-
-
-for ac_func in setlocale
-do :
- ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale"
-if test "x$ac_cv_func_setlocale" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SETLOCALE 1
-_ACEOF
-
-fi
-done
-
-
-# We cannot check for <dwarf.h>, because Solaris 2 does not use dwarf (it
-# uses stabs), but it is still SVR4. We cannot check for <elf.h> because
-# Irix 4.0.5F has the header but not the library.
-if test $ac_have_func = no && test "$ac_cv_lib_elf_elf_begin" = yes \
- && test "$ac_cv_lib_kvm_kvm_open" = yes; then
- ac_have_func=yes
-
-$as_echo "#define SVR4 1" >>confdefs.h
-
-fi
-
-if test $ac_have_func = no; then
- ac_fn_c_check_header_mongrel "$LINENO" "inq_stats/cpustats.h" "ac_cv_header_inq_stats_cpustats_h" "$ac_includes_default"
-if test "x$ac_cv_header_inq_stats_cpustats_h" = xyes; then :
- ac_have_func=yes
-
-$as_echo "#define UMAX 1" >>confdefs.h
-
-
-$as_echo "#define UMAX4_3 1" >>confdefs.h
-
-fi
-
-
-fi
-
-if test $ac_have_func = no; then
- ac_fn_c_check_header_mongrel "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_cpustats_h" = xyes; then :
- ac_have_func=yes; $as_echo "#define UMAX 1" >>confdefs.h
-
-fi
-
-
-fi
-
-if test $ac_have_func = no; then
- for ac_header in mach/mach.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default"
-if test "x$ac_cv_header_mach_mach_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_MACH_MACH_H 1
-_ACEOF
-
-fi
-
-done
-
-fi
-
-for ac_header in nlist.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default"
-if test "x$ac_cv_header_nlist_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_NLIST_H 1
-_ACEOF
- ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include <nlist.h>
+ # Unfortunately Guile requires a C99 compiler but GNU make doesn't, so
+ # verify we can actually compile the header.
+ keep_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $pkg_cv_GUILE_CFLAGS"
+ ac_fn_c_check_header_compile "$LINENO" "libguile.h" "ac_cv_header_libguile_h" "/* Avoid configuration error warnings. */
"
-if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_NLIST_N_UN_N_NAME 1
-_ACEOF
-
-
-$as_echo "#define NLIST_NAME_UNION 1" >>confdefs.h
-
-fi
-
-
-fi
-
-done
-
-fi
-done
+if test "x$ac_cv_header_libguile_h" = xyes; then :
+$as_echo "#define HAVE_GUILE 1" >>confdefs.h
-# Some definitions of getloadavg require that the program be installed setgid.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getloadavg requires setgid" >&5
-$as_echo_n "checking whether getloadavg requires setgid... " >&6; }
-if ${ac_cv_func_getloadavg_setgid+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include "$srcdir/$ac_config_libobj_dir/getloadavg.c"
-#ifdef LDAV_PRIVILEGED
-Yowza Am I SETGID yet
-#endif
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Yowza Am I SETGID yet" >/dev/null 2>&1; then :
- ac_cv_func_getloadavg_setgid=yes
else
- ac_cv_func_getloadavg_setgid=no
+ have_guile=no
fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getloadavg_setgid" >&5
-$as_echo "$ac_cv_func_getloadavg_setgid" >&6; }
-if test $ac_cv_func_getloadavg_setgid = yes; then
- NEED_SETGID=true
-$as_echo "#define GETLOADAVG_PRIVILEGED 1" >>confdefs.h
+ CPPFLAGS="$keep_CPPFLAGS"
-else
- NEED_SETGID=false
fi
-if test $ac_cv_func_getloadavg_setgid = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking group of /dev/kmem" >&5
-$as_echo_n "checking group of /dev/kmem... " >&6; }
-if ${ac_cv_group_kmem+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # On Solaris, /dev/kmem is a symlink. Get info on the real file.
- ac_ls_output=`ls -lgL /dev/kmem 2>/dev/null`
- # If we got an error (system does not support symlinks), try without -L.
- test -z "$ac_ls_output" && ac_ls_output=`ls -lg /dev/kmem`
- ac_cv_group_kmem=`$as_echo "$ac_ls_output" \
- | sed -ne 's/[ ][ ]*/ /g;
- s/^.[sSrwx-]* *[0-9]* *\([^0-9]*\) *.*/\1/;
- / /s/.* //;p;'`
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_group_kmem" >&5
-$as_echo "$ac_cv_group_kmem" >&6; }
- KMEM_GROUP=$ac_cv_group_kmem
-fi
-if test "x$ac_save_LIBS" = x; then
- GETLOADAVG_LIBS=$LIBS
-else
- GETLOADAVG_LIBS=`$as_echo "$LIBS" | sed "s|$ac_save_LIBS||"`
fi
-LIBS=$ac_save_LIBS
-
-
-# AC_FUNC_GETLOADAVG is documented to set the NLIST_STRUCT value, but it
-# doesn't. So, we will.
-
-if test "$ac_cv_header_nlist_h" = yes; then :
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <nlist.h>
-int
-main ()
-{
-struct nlist nl;
- nl.n_name = "string";
- return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- make_cv_nlist_struct=yes
+ if test "$have_guile" = "yes"; then
+ HAVE_GUILE_TRUE=
+ HAVE_GUILE_FALSE='#'
else
- make_cv_nlist_struct=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- if test "$make_cv_nlist_struct" = yes; then :
-
-$as_echo "#define NLIST_STRUCT 1" >>confdefs.h
-
-
+ HAVE_GUILE_TRUE='#'
+ HAVE_GUILE_FALSE=
fi
-fi
ac_fn_c_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "$ac_includes_default
#include <signal.h>
@@ -11415,6 +17673,73 @@ $as_echo "#define MAKE_SYMLINKS 1" >>confdefs.h
fi
+# Use posix_spawn if we have support and the user didn't disable it
+
+# Check whether --enable-posix-spawn was given.
+if test "${enable_posix_spawn+set}" = set; then :
+ enableval=$enable_posix_spawn; make_cv_posix_spawn="$enableval" user_posix_spawn="$enableval"
+else
+ make_cv_posix_spawn="yes"
+fi
+
+
+case /$ac_cv_header_spawn/$ac_cv_func_posix_spawn/ in #(
+ */no/*) :
+ make_cv_posix_spawn=no ;; #(
+ *) :
+ ;;
+esac
+
+if test "$make_cv_posix_spawn" = yes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for posix_spawn that fails synchronously" >&5
+$as_echo_n "checking for posix_spawn that fails synchronously... " >&6; }
+if ${make_cv_synchronous_posix_spawn+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ make_cv_synchronous_posix_spawn=no
+ if test "$cross_compiling" = yes; then :
+ make_cv_synchronous_posix_spawn="no (cross-compiling)"
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <spawn.h>
+ #include <string.h>
+
+ extern char **environ;
+
+ int main() {
+ char* path = strdup("./non-existent");
+ char *argv[2];
+ argv[0] = path;
+ argv[1] = 0;
+ return posix_spawn(0, path, 0, 0, argv, environ);
+ }
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ make_cv_synchronous_posix_spawn=no
+else
+ make_cv_synchronous_posix_spawn=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_synchronous_posix_spawn" >&5
+$as_echo "$make_cv_synchronous_posix_spawn" >&6; }
+fi
+
+case /$user_posix_spawn/$make_cv_posix_spawn/$make_cv_synchronous_posix_spawn/ in #(
+ */no/*) :
+ make_cv_posix_spawn=no ;; #(
+ *) :
+
+$as_echo "#define USE_POSIX_SPAWN 1" >>confdefs.h
+
+ ;;
+esac
+
# Find the SCCS commands, so we can include them in our default rules.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of SCCS get command" >&5
@@ -11467,57 +17792,6 @@ fi
fi
rm -f s.conftest conftoast
-# Check the system to see if it provides GNU glob. If not, use our
-# local version.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if system libc has GNU glob" >&5
-$as_echo_n "checking if system libc has GNU glob... " >&6; }
-if ${make_cv_sys_gnu_glob+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <features.h>
-#include <glob.h>
-#include <fnmatch.h>
-
-#define GLOB_INTERFACE_VERSION 1
-#if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1
-# include <gnu-versions.h>
-# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION
- gnu glob
-# endif
-#endif
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "gnu glob" >/dev/null 2>&1; then :
- make_cv_sys_gnu_glob=yes
-else
- make_cv_sys_gnu_glob=no
-fi
-rm -f conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $make_cv_sys_gnu_glob" >&5
-$as_echo "$make_cv_sys_gnu_glob" >&6; }
-if test "$make_cv_sys_gnu_glob" = no; then :
- GLOBINC='-I$(srcdir)/glob'
- GLOBLIB=glob/libglob.a
-
-fi
-
-
-
-# Tell automake about this, so it can build the right .c files.
- if test "$make_cv_sys_gnu_glob" = no; then
- USE_LOCAL_GLOB_TRUE=
- USE_LOCAL_GLOB_FALSE='#'
-else
- USE_LOCAL_GLOB_TRUE='#'
- USE_LOCAL_GLOB_FALSE=
-fi
-
-
# Let the makefile know what our build host is
@@ -11662,9 +17936,18 @@ if test "x$make_cv_load" = xno && test "x$user_load" = xyes; then :
fi
+if test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes; then :
+ echo
+ echo "WARNING: posix_spawn() is not supported on this system."
+ echo
+
+fi
+
# Specify what files are to be created.
-ac_config_files="$ac_config_files Makefile glob/Makefile po/Makefile.in config/Makefile doc/Makefile w32/Makefile tests/config-flags.pm"
+ac_config_files="$ac_config_files Makefile build.cfg lib/Makefile po/Makefile.in doc/Makefile tests/config-flags.pm"
+# We don't need this: the standard automake output suffices for POSIX systems.
+#mk/Posix.mk
# OK, do it!
@@ -11805,6 +18088,75 @@ if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then
+ as_fn_error $? "conditional \"GL_COND_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_ALLOCA_H_TRUE}" && test -z "${GL_GENERATE_ALLOCA_H_FALSE}"; then
+ as_fn_error $? "conditional \"GL_GENERATE_ALLOCA_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_ERRNO_H_TRUE}" && test -z "${GL_GENERATE_ERRNO_H_FALSE}"; then
+ as_fn_error $? "conditional \"GL_GENERATE_ERRNO_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_LIMITS_H_TRUE}" && test -z "${GL_GENERATE_LIMITS_H_FALSE}"; then
+ as_fn_error $? "conditional \"GL_GENERATE_LIMITS_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_SYSTEM_GLOB_TRUE}" && test -z "${USE_SYSTEM_GLOB_FALSE}"; then
+ as_fn_error $? "conditional \"USE_SYSTEM_GLOB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_STDBOOL_H_TRUE}" && test -z "${GL_GENERATE_STDBOOL_H_FALSE}"; then
+ as_fn_error $? "conditional \"GL_GENERATE_STDBOOL_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_STDDEF_H_TRUE}" && test -z "${GL_GENERATE_STDDEF_H_FALSE}"; then
+ as_fn_error $? "conditional \"GL_GENERATE_STDDEF_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_LIMITS_H_TRUE}" && test -z "${GL_GENERATE_LIMITS_H_FALSE}"; then
+ as_fn_error $? "conditional \"GL_GENERATE_LIMITS_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GL_GENERATE_STDINT_H_TRUE}" && test -z "${GL_GENERATE_STDINT_H_FALSE}"; then
+ as_fn_error $? "conditional \"GL_GENERATE_STDINT_H\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+ gl_libobjs=
+ gl_ltlibobjs=
+ if test -n "$gl_LIBOBJS"; then
+ # Remove the extension.
+ sed_drop_objext='s/\.o$//;s/\.obj$//'
+ for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do
+ gl_libobjs="$gl_libobjs $i.$ac_objext"
+ gl_ltlibobjs="$gl_ltlibobjs $i.lo"
+ done
+ fi
+ gl_LIBOBJS=$gl_libobjs
+
+ gl_LTLIBOBJS=$gl_ltlibobjs
+
+
+
+ gltests_libobjs=
+ gltests_ltlibobjs=
+ if test -n "$gltests_LIBOBJS"; then
+ # Remove the extension.
+ sed_drop_objext='s/\.o$//;s/\.obj$//'
+ for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do
+ gltests_libobjs="$gltests_libobjs $i.$ac_objext"
+ gltests_ltlibobjs="$gltests_ltlibobjs $i.lo"
+ done
+ fi
+ gltests_LIBOBJS=$gltests_libobjs
+
+ gltests_LTLIBOBJS=$gltests_ltlibobjs
+
+
+
if test -z "${HAVE_GUILE_TRUE}" && test -z "${HAVE_GUILE_FALSE}"; then
as_fn_error $? "conditional \"HAVE_GUILE\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -11813,10 +18165,6 @@ if test -z "${USE_CUSTOMS_TRUE}" && test -z "${USE_CUSTOMS_FALSE}"; then
as_fn_error $? "conditional \"USE_CUSTOMS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
-if test -z "${USE_LOCAL_GLOB_TRUE}" && test -z "${USE_LOCAL_GLOB_FALSE}"; then
- as_fn_error $? "conditional \"USE_LOCAL_GLOB\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
if test -z "${WINDOWSENV_TRUE}" && test -z "${WINDOWSENV_FALSE}"; then
as_fn_error $? "conditional \"WINDOWSENV\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -12222,7 +18570,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by GNU make $as_me 4.2.1, which was
+This file was extended by GNU make $as_me 4.3, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -12290,7 +18638,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-GNU make config.status 4.2.1
+GNU make config.status 4.3
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -12409,7 +18757,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
#
# INIT-COMMANDS
#
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"
# Capture the value of obsolete ALL_LINGUAS because we need it to compute
# POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
# from automake < 1.5.
@@ -12426,15 +18774,14 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
for ac_config_target in $ac_config_targets
do
case $ac_config_target in
- "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+ "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;;
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;;
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
- "glob/Makefile") CONFIG_FILES="$CONFIG_FILES glob/Makefile" ;;
+ "build.cfg") CONFIG_FILES="$CONFIG_FILES build.cfg" ;;
+ "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
"po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
- "config/Makefile") CONFIG_FILES="$CONFIG_FILES config/Makefile" ;;
"doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
- "w32/Makefile") CONFIG_FILES="$CONFIG_FILES w32/Makefile" ;;
"tests/config-flags.pm") CONFIG_FILES="$CONFIG_FILES tests/config-flags.pm" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
@@ -13074,29 +19421,35 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
# Older Autoconf quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval
# if we detect the quoting.
- case $CONFIG_FILES in
- *\'*) eval set x "$CONFIG_FILES" ;;
- *) set x $CONFIG_FILES ;;
- esac
+ # TODO: see whether this extra hack can be removed once we start
+ # requiring Autoconf 2.70 or later.
+ case $CONFIG_FILES in #(
+ *\'*) :
+ eval set x "$CONFIG_FILES" ;; #(
+ *) :
+ set x $CONFIG_FILES ;; #(
+ *) :
+ ;;
+esac
shift
- for mf
+ # Used to flag and report bootstrapping failures.
+ am_rc=0
+ for am_mf
do
# Strip MF so we end up with the name of the file.
- mf=`echo "$mf" | sed -e 's/:.*$//'`
- # Check whether this is an Automake generated Makefile or not.
- # We used to match only the files named 'Makefile.in', but
- # some people rename them; so instead we look at the file content.
- # Grep'ing the first line is not enough: some people post-process
- # each Makefile.in and add a new line on top of each file to say so.
- # Grep'ing the whole file is not good either: AIX grep has a line
+ am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile which includes
+ # dependency-tracking related rules and includes.
+ # Grep'ing the whole file directly is not great: AIX grep has a line
# limit of 2048, but all sed's we know have understand at least 4000.
- if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
- dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$mf" : 'X\(//\)[^/]' \| \
- X"$mf" : 'X\(//\)$' \| \
- X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
+ sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+ || continue
+ am_dirpart=`$as_dirname -- "$am_mf" ||
+$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$am_mf" : 'X\(//\)[^/]' \| \
+ X"$am_mf" : 'X\(//\)$' \| \
+ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$am_mf" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -13114,53 +19467,48 @@ $as_echo X"$mf" |
q
}
s/.*/./; q'`
- else
- continue
- fi
- # Extract the definition of DEPDIR, am__include, and am__quote
- # from the Makefile without running 'make'.
- DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
- test -z "$DEPDIR" && continue
- am__include=`sed -n 's/^am__include = //p' < "$mf"`
- test -z "$am__include" && continue
- am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
- # Find all dependency output files, they are included files with
- # $(DEPDIR) in their names. We invoke sed twice because it is the
- # simplest approach to changing $(DEPDIR) to its actual value in the
- # expansion.
- for file in `sed -n "
- s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
- sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
- # Make sure the directory exists.
- test -f "$dirpart/$file" && continue
- fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$file" : 'X\(//\)[^/]' \| \
- X"$file" : 'X\(//\)$' \| \
- X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
+ am_filepart=`$as_basename -- "$am_mf" ||
+$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$am_mf" : 'X\(//\)$' \| \
+ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$am_mf" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
}
- /^X\(\/\/\)$/{
+ /^X\/\(\/\/\)$/{
s//\1/
q
}
- /^X\(\/\).*/{
+ /^X\/\(\/\).*/{
s//\1/
q
}
s/.*/./; q'`
- as_dir=$dirpart/$fdir; as_fn_mkdir_p
- # echo "creating $dirpart/$file"
- echo '# dummy' > "$dirpart/$file"
- done
+ { echo "$as_me:$LINENO: cd "$am_dirpart" \
+ && sed -e '/# am--include-marker/d' "$am_filepart" \
+ | $MAKE -f - am--depfiles" >&5
+ (cd "$am_dirpart" \
+ && sed -e '/# am--include-marker/d' "$am_filepart" \
+ | $MAKE -f - am--depfiles) >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } || am_rc=$?
done
+ if test $am_rc -ne 0; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Something went wrong bootstrapping makefile fragments
+ for automatic dependency tracking. Try re-running configure with the
+ '--disable-dependency-tracking' option to at least be able to build
+ the package (albeit without support for automatic dependency tracking).
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ { am_dirpart=; unset am_dirpart;}
+ { am_filepart=; unset am_filepart;}
+ { am_mf=; unset am_mf;}
+ { am_rc=; unset am_rc;}
+ rm -f conftest-deps.mk
}
;;
"po-directories":C)
@@ -13316,11 +19664,3 @@ $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
fi
-# We only generate the build.sh if we have a build.sh.in; we won't have
-# one before we've created a distribution.
-if test -f "$srcdir/build.sh.in"; then :
- ./config.status --file build.sh
- chmod +x build.sh
-
-fi
-
diff --git a/configure.ac b/configure.ac
index 64ec870..cd49a2c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
# Process this file with autoconf to produce a configure script.
#
-# Copyright (C) 1993-2016 Free Software Foundation, Inc.
+# Copyright (C) 1993-2020 Free Software Foundation, Inc.
# This file is part of GNU Make.
#
# GNU Make is free software; you can redistribute it and/or modify it under
@@ -16,24 +16,32 @@
# You should have received a copy of the GNU General Public License along with
# this program. If not, see <http://www.gnu.org/licenses/>.
-AC_INIT([GNU make],[4.2.1],[bug-make@gnu.org])
+AC_INIT([GNU make],[4.3],[bug-make@gnu.org])
AC_PREREQ([2.69])
# Autoconf setup
-AC_CONFIG_AUX_DIR([config])
-AC_CONFIG_SRCDIR([vpath.c])
-AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_AUX_DIR([build-aux])
+AC_CONFIG_SRCDIR([src/vpath.c])
+AC_CONFIG_HEADERS([src/config.h])
+
+AC_CONFIG_LIBOBJ_DIR([lib])
# Automake setup
# We have to enable "foreign" because ChangeLog is auto-generated
-# We cannot enable -Werror because gettext 0.18.1 has invalid content
-# When we update gettext to 0.18.3 or better we can add it again.
-AM_INIT_AUTOMAKE([1.15 foreign -Werror -Wall])
+# Automake 1.15 and gnulib don't get along: gnulib has some strange error
+# in the way it handles getloadavg.c which causes make distcheck to fail.
+# http://lists.gnu.org/archive/html/bug-gnulib/2018-06/msg00024.html
+AM_INIT_AUTOMAKE([1.16.1 foreign -Werror -Wall])
# Checks for programs.
AC_USE_SYSTEM_EXTENSIONS
AC_PROG_CC
+
+# Configure gnulib
+gl_EARLY
+gl_INIT
+
AC_PROG_INSTALL
AC_PROG_RANLIB
AC_PROG_CPP
@@ -41,14 +49,12 @@ AC_CHECK_PROG([AR], [ar], [ar], [ar])
# Perl is needed for the test suite (only)
AC_CHECK_PROG([PERL], [perl], [perl], [perl])
-# Needed for w32/Makefile.am
-AM_PROG_AR
-
# Specialized system macros
AC_CANONICAL_HOST
AC_AIX
AC_ISC_POSIX
AC_MINIX
+AC_C_BIGENDIAN
# Enable gettext, in "external" mode.
AM_GNU_GETTEXT_VERSION([0.19.4])
@@ -69,7 +75,7 @@ AC_HEADER_STAT
AC_HEADER_TIME
AC_CHECK_HEADERS([stdlib.h locale.h unistd.h limits.h fcntl.h string.h \
memory.h sys/param.h sys/resource.h sys/time.h sys/timeb.h \
- sys/select.h])
+ sys/select.h sys/file.h spawn.h])
AM_PROG_CC_C_O
AC_C_CONST
@@ -121,8 +127,8 @@ AC_CACHE_CHECK([for standard gettimeofday], [ac_cv_func_gettimeofday],
int main ()
{
struct timeval t; t.tv_sec = -1; t.tv_usec = -1;
- exit (gettimeofday (&t, 0) != 0
- || t.tv_sec < 0 || t.tv_usec < 0);
+ return gettimeofday (&t, 0) != 0
+ || t.tv_sec < 0 || t.tv_usec < 0;
}]])],
[ac_cv_func_gettimeofday=yes],
[ac_cv_func_gettimeofday=no],
@@ -132,11 +138,12 @@ AS_IF([test "$ac_cv_func_gettimeofday" = yes],
[Define to 1 if you have a standard gettimeofday function])
])
-AC_CHECK_FUNCS([strdup strndup mkstemp mktemp fdopen fileno \
+AC_CHECK_FUNCS([strdup strndup memrchr umask mkstemp mktemp fdopen \
dup dup2 getcwd realpath sigsetmask sigaction \
getgroups seteuid setegid setlinebuf setreuid setregid \
- getrlimit setrlimit setvbuf pipe strerror strsignal \
- lstat readlink atexit isatty ttyname pselect])
+ getrlimit setrlimit setvbuf pipe strsignal \
+ lstat readlink atexit isatty ttyname pselect posix_spawn \
+ posix_spawnattr_setsigmask])
# We need to check declarations, not just existence, because on Tru64 this
# function is not declared without special flags, which themselves cause
@@ -155,47 +162,44 @@ AC_CHECK_FUNCS([strcasecmp strncasecmp strcmpi strncmpi stricmp strnicmp])
# strcoll() is used by the GNU glob library
AC_FUNC_STRCOLL
-
-AC_FUNC_ALLOCA
AC_FUNC_CLOSEDIR_VOID
+# dir.c and our glob.c use dirent.d_type if available
+AC_STRUCT_DIRENT_D_TYPE
+
# See if the user wants to add (or not) GNU Guile support
-PKG_PROG_PKG_CONFIG
AC_ARG_WITH([guile], [AS_HELP_STRING([--with-guile],
[Support GNU Guile for embedded scripting])])
-# For some strange reason, at least on Ubuntu, each version of Guile
-# comes with it's own PC file so we have to specify them as individual
-# packages. Ugh.
-AS_IF([test "x$with_guile" != xno],
-[ PKG_CHECK_MODULES([GUILE], [guile-2.0], [have_guile=yes],
- [PKG_CHECK_MODULES([GUILE], [guile-1.8], [have_guile=yes],
- [have_guile=no])])
-])
-
-AS_IF([test "$have_guile" = yes],
- [AC_DEFINE([HAVE_GUILE], [1], [Embed GNU Guile support])])
-
-AM_CONDITIONAL([HAVE_GUILE], [test "$have_guile" = yes])
-
-AC_FUNC_GETLOADAVG
-
-# AC_FUNC_GETLOADAVG is documented to set the NLIST_STRUCT value, but it
-# doesn't. So, we will.
+# Annoyingly, each version of Guile comes with it's own PC file so we have to
+# specify them as individual packages. Ugh.
+PKG_PROG_PKG_CONFIG
-AS_IF([test "$ac_cv_header_nlist_h" = yes],
-[ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <nlist.h>]],
- [[struct nlist nl;
- nl.n_name = "string";
- return 0;]])],
- [make_cv_nlist_struct=yes],
- [make_cv_nlist_struct=no])
- AS_IF([test "$make_cv_nlist_struct" = yes],
- [ AC_DEFINE([NLIST_STRUCT], [1],
- [Define to 1 if struct nlist.n_name is a pointer rather than an array.])
+AS_IF([test "x$with_guile" != xno],
+[ guile_versions="3.0 2.2 2.0 1.8"
+ guile_version=no
+ have_guile=no
+ AC_MSG_CHECKING([for GNU Guile])
+ for v in $guile_versions; do
+ PKG_CHECK_EXISTS([guile-$v], [guile_version=$v; have_guile=yes; break], [])
+ done
+ AC_MSG_RESULT([$guile_version])
+ AS_IF([test "$have_guile" = yes],
+ [ PKG_CHECK_MODULES(GUILE, [guile-$guile_version])
+ # Unfortunately Guile requires a C99 compiler but GNU make doesn't, so
+ # verify we can actually compile the header.
+ keep_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $pkg_cv_GUILE_CFLAGS"
+ AC_CHECK_HEADER([libguile.h],
+ [AC_DEFINE([HAVE_GUILE], [1], [Embed GNU Guile support])],
+ [have_guile=no],
+ [/* Avoid configuration error warnings. */])
+ CPPFLAGS="$keep_CPPFLAGS"
])
])
+AM_CONDITIONAL([HAVE_GUILE], [test "$have_guile" = "yes"])
+
AC_CHECK_DECLS([sys_siglist, _sys_siglist, __sys_siglist], , ,
[AC_INCLUDES_DEFAULT
#include <signal.h>
@@ -364,6 +368,43 @@ AS_IF([test "$ac_cv_func_lstat" = yes && test "$ac_cv_func_readlink" = yes],
[Define to 1 to enable symbolic link timestamp checking.])
])
+# Use posix_spawn if we have support and the user didn't disable it
+
+AC_ARG_ENABLE([posix-spawn],
+ AC_HELP_STRING([--disable-posix-spawn],
+ [disable support for posix_spawn()]),
+ [make_cv_posix_spawn="$enableval" user_posix_spawn="$enableval"],
+ [make_cv_posix_spawn="yes"])
+
+AS_CASE([/$ac_cv_header_spawn/$ac_cv_func_posix_spawn/],
+ [*/no/*], [make_cv_posix_spawn=no])
+
+AS_IF([test "$make_cv_posix_spawn" = yes],
+ AC_CACHE_CHECK([for posix_spawn that fails synchronously],
+ [make_cv_synchronous_posix_spawn],
+ [make_cv_synchronous_posix_spawn=no
+ AC_RUN_IFELSE([AC_LANG_SOURCE([[
+ #include <spawn.h>
+ #include <string.h>
+
+ extern char **environ;
+
+ int main() {
+ char* path = strdup("./non-existent");
+ char *argv[[2]];
+ argv[[0]] = path;
+ argv[[1]] = 0;
+ return posix_spawn(0, path, 0, 0, argv, environ);
+ }]])],
+ [make_cv_synchronous_posix_spawn=no],
+ [make_cv_synchronous_posix_spawn=yes],
+ [make_cv_synchronous_posix_spawn="no (cross-compiling)"])]))
+
+AS_CASE([/$user_posix_spawn/$make_cv_posix_spawn/$make_cv_synchronous_posix_spawn/],
+ [*/no/*], [make_cv_posix_spawn=no],
+ [AC_DEFINE(USE_POSIX_SPAWN, 1, [Define to 1 to use posix_spawn().])
+ ])
+
# Find the SCCS commands, so we can include them in our default rules.
AC_CACHE_CHECK([for location of SCCS get command], [make_cv_path_sccs_get], [
@@ -391,33 +432,6 @@ AS_IF([(/usr/sccs/admin -n s.conftest || admin -n s.conftest) >/dev/null 2>&1 &&
])
rm -f s.conftest conftoast
-# Check the system to see if it provides GNU glob. If not, use our
-# local version.
-AC_CACHE_CHECK([if system libc has GNU glob], [make_cv_sys_gnu_glob],
-[ AC_EGREP_CPP([gnu glob],[
-#include <features.h>
-#include <glob.h>
-#include <fnmatch.h>
-
-#define GLOB_INTERFACE_VERSION 1
-#if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1
-# include <gnu-versions.h>
-# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION
- gnu glob
-# endif
-#endif],
- [make_cv_sys_gnu_glob=yes],
- [make_cv_sys_gnu_glob=no])])
-AS_IF([test "$make_cv_sys_gnu_glob" = no],
-[ GLOBINC='-I$(srcdir)/glob'
- GLOBLIB=glob/libglob.a
-])
-AC_SUBST([GLOBINC])
-AC_SUBST([GLOBLIB])
-
-# Tell automake about this, so it can build the right .c files.
-AM_CONDITIONAL([USE_LOCAL_GLOB], [test "$make_cv_sys_gnu_glob" = no])
-
# Let the makefile know what our build host is
AC_DEFINE_UNQUOTED([MAKE_HOST],["$host"],[Build host information.])
@@ -500,21 +514,22 @@ AS_IF([test "x$make_cv_load" = xno && test "x$user_load" = xyes],
echo
])
+AS_IF([test "x$make_cv_posix_spawn" = xno && test "x$user_posix_spawn" = xyes],
+[ echo
+ echo "WARNING: posix_spawn() is not supported on this system."
+ echo
+])
+
# Specify what files are to be created.
-AC_CONFIG_FILES([Makefile glob/Makefile po/Makefile.in config/Makefile \
- doc/Makefile w32/Makefile tests/config-flags.pm])
+AC_CONFIG_FILES([Makefile build.cfg lib/Makefile po/Makefile.in doc/Makefile \
+ tests/config-flags.pm])
+# We don't need this: the standard automake output suffices for POSIX systems.
+#mk/Posix.mk
# OK, do it!
AC_OUTPUT
-# We only generate the build.sh if we have a build.sh.in; we won't have
-# one before we've created a distribution.
-AS_IF([test -f "$srcdir/build.sh.in"],
-[ ./config.status --file build.sh
- chmod +x build.sh
-])
-
dnl Local Variables:
dnl comment-start: "dnl "
dnl comment-end: ""
diff --git a/configure.bat b/configure.bat
deleted file mode 100644
index 3c41f38..0000000
--- a/configure.bat
+++ /dev/null
@@ -1,60 +0,0 @@
-@echo off
-rem Copyright (C) 1994-2016 Free Software Foundation, Inc.
-rem This file is part of GNU Make.
-rem
-rem GNU Make is free software; you can redistribute it and/or modify it under
-rem the terms of the GNU General Public License as published by the Free
-rem Software Foundation; either version 3 of the License, or (at your option)
-rem any later version.
-rem
-rem GNU Make is distributed in the hope that it will be useful, but WITHOUT
-rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for.
-rem more details.
-rem
-rem You should have received a copy of the GNU General Public License along
-rem with this program. If not, see <http://www.gnu.org/licenses/>.
-
-echo Configuring MAKE for DJGPP
-
-rem The SmallEnv trick protects against too small environment block,
-rem in which case the values will be truncated and the whole thing
-rem goes awry. COMMAND.COM will say "Out of environment space", but
-rem many people don't care, so we force them to care by refusing to go.
-
-rem Where is the srcdir?
-set XSRC=.
-if not "%XSRC%"=="." goto SmallEnv
-if "%1%"=="" goto SrcDone
-set XSRC=%1
-if not "%XSRC%"=="%1" goto SmallEnv
-
-:SrcDone
-
-update %XSRC%/configh.dos ./config.h
-
-rem Do they have Make?
-redir -o junk.$$$ -eo make -n -f NUL
-rem REDIR will return 1 if it cannot run Make.
-rem If it can run Make, it will usually return 2,
-rem but 0 is also OK with us.
-if errorlevel 2 goto MakeOk
-if not errorlevel 1 goto MakeOk
-if exist junk.$$$ del junk.$$$
-echo No Make program found--use DOSBUILD.BAT to build Make.
-goto End
-
-rem They do have Make. Generate the Makefile.
-
-:MakeOk
-del junk.$$$
-update %XSRC%/Makefile.DOS ./Makefile
-echo Done.
-if not "%XSRC%"=="." echo Invoke Make thus: "make srcdir=%XSRC%"
-goto End
-
-:SmallEnv
-echo Your environment is too small. Please enlarge it and run me again.
-
-:End
-set XRSC=
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 11aa4d4..7bcf1c2 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,5 +1,5 @@
# -*-Makefile-*-, or close enough
-# Copyright (C) 2000-2016 Free Software Foundation, Inc.
+# Copyright (C) 2000-2020 Free Software Foundation, Inc.
# This file is part of GNU Make.
#
# GNU Make is free software; you can redistribute it and/or modify it under
diff --git a/doc/Makefile.in b/doc/Makefile.in
index e5d2f7d..fcabd94 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -15,7 +15,7 @@
@SET_MAKE@
# -*-Makefile-*-, or close enough
-# Copyright (C) 2000-2016 Free Software Foundation, Inc.
+# Copyright (C) 2000-2020 Free Software Foundation, Inc.
# This file is part of GNU Make.
#
# GNU Make is free software; you can redistribute it and/or modify it under
@@ -106,21 +106,45 @@ build_triplet = @build@
host_triplet = @host@
subdir = doc
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/config/dospaths.m4 \
- $(top_srcdir)/config/gettext.m4 $(top_srcdir)/config/iconv.m4 \
- $(top_srcdir)/config/intlmacosx.m4 \
- $(top_srcdir)/config/lib-ld.m4 \
- $(top_srcdir)/config/lib-link.m4 \
- $(top_srcdir)/config/lib-prefix.m4 \
- $(top_srcdir)/config/longlong.m4 $(top_srcdir)/config/nls.m4 \
- $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+ $(top_srcdir)/m4/absolute-header.m4 $(top_srcdir)/m4/access.m4 \
+ $(top_srcdir)/m4/acinclude.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/asm-underscore.m4 $(top_srcdir)/m4/close.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dospaths.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+ $(top_srcdir)/m4/eaccess.m4 $(top_srcdir)/m4/errno_h.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+ $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+ $(top_srcdir)/m4/findprog-in.m4 \
+ $(top_srcdir)/m4/getdtablesize.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getprogname.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/include_next.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+ $(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+ $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/off_t.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strerror.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_types_h.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/version.texi \
$(srcdir)/stamp-vti $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_HEADER = $(top_builddir)/src/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
@@ -166,8 +190,8 @@ am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@)
am__v_texidevnull_0 = > /dev/null
am__v_texidevnull_1 =
INFO_DEPS = $(srcdir)/make.info
-TEXINFO_TEX = $(top_srcdir)/config/texinfo.tex
-am__TEXINFO_TEX_DIR = $(top_srcdir)/config
+TEXINFO_TEX = $(top_srcdir)/build-aux/texinfo.tex
+am__TEXINFO_TEX_DIR = $(top_srcdir)/build-aux
DVIS = make.dvi
PDFS = make.pdf
PSS = make.ps
@@ -213,18 +237,27 @@ am__uninstall_files_from_dir = { \
}
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
am__DIST_COMMON = $(make_TEXINFOS) $(srcdir)/Makefile.in \
- $(top_srcdir)/config/mdate-sh $(top_srcdir)/config/texinfo.tex
+ $(top_srcdir)/build-aux/mdate-sh \
+ $(top_srcdir)/build-aux/texinfo.tex
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AM_LDFLAGS = @AM_LDFLAGS@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
AR = @AR@
+ARFLAGS = @ARFLAGS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -237,16 +270,349 @@ ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
EXEEXT = @EXEEXT@
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GLOBINC = @GLOBINC@
-GLOBLIB = @GLOBLIB@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ACCESS = @GNULIB_ACCESS@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHDIR = @GNULIB_CHDIR@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_COPY_FILE_RANGE = @GNULIB_COPY_FILE_RANGE@
+GNULIB_CREAT = @GNULIB_CREAT@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP = @GNULIB_DUP@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_EXPLICIT_BZERO = @GNULIB_EXPLICIT_BZERO@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FDATASYNC = @GNULIB_FDATASYNC@
+GNULIB_FDOPEN = @GNULIB_FDOPEN@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FFSL = @GNULIB_FFSL@
+GNULIB_FFSLL = @GNULIB_FFSLL@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETPASS = @GNULIB_GETPASS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_ISATTY = @GNULIB_ISATTY@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_OVERRIDES_WINT_T = @GNULIB_OVERRIDES_WINT_T@
+GNULIB_PCLOSE = @GNULIB_PCLOSE@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_QSORT_R = @GNULIB_QSORT_R@
+GNULIB_RANDOM = @GNULIB_RANDOM@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOCARRAY = @GNULIB_REALLOCARRAY@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLD = @GNULIB_STRTOLD@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TRUNCATE = @GNULIB_TRUNCATE@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
GREP = @GREP@
GUILE_CFLAGS = @GUILE_CFLAGS@
GUILE_LIBS = @GUILE_LIBS@
+HAVE_ALLOCA_H = @HAVE_ALLOCA_H@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_COPY_FILE_RANGE = @HAVE_COPY_FILE_RANGE@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN = @HAVE_DECL_GETLOGIN@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_INITSTATE = @HAVE_DECL_INITSTATE@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@
+HAVE_DECL_SETSTATE = @HAVE_DECL_SETSTATE@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_TRUNCATE = @HAVE_DECL_TRUNCATE@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_EXPLICIT_BZERO = @HAVE_EXPLICIT_BZERO@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FDATASYNC = @HAVE_FDATASYNC@
+HAVE_FFSL = @HAVE_FFSL@
+HAVE_FFSLL = @HAVE_FFSLL@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETPASS = @HAVE_GETPASS@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INITSTATE = @HAVE_INITSTATE@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBTOWC = @HAVE_MBTOWC@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PCLOSE = @HAVE_PCLOSE@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_POPEN = @HAVE_POPEN@
+HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PTSNAME_R = @HAVE_PTSNAME_R@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_QSORT_R = @HAVE_QSORT_R@
+HAVE_RANDOM = @HAVE_RANDOM@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALLOCARRAY = @HAVE_REALLOCARRAY@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@
+HAVE_SETSTATE = @HAVE_SETSTATE@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLD = @HAVE_STRTOLD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+HOST_CPU = @HOST_CPU@
+HOST_CPU_C_ABI = @HOST_CPU_C_ABI@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -254,12 +620,14 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INTLLIBS = @INTLLIBS@
INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-KMEM_GROUP = @KMEM_GROUP@
LDFLAGS = @LDFLAGS@
+LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
+LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
LIBICONV = @LIBICONV@
LIBINTL = @LIBINTL@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
+LIMITS_H = @LIMITS_H@
LTLIBICONV = @LTLIBICONV@
LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
@@ -269,7 +637,26 @@ MKDIR_P = @MKDIR_P@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
-NEED_SETGID = @NEED_SETGID@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_LIMITS_H = @NEXT_LIMITS_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -284,14 +671,136 @@ PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
RANLIB = @RANLIB@
REMOTE = @REMOTE@
+REPLACE_ACCESS = @REPLACE_ACCESS@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_CREAT = @REPLACE_CREAT@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_FACCESSAT = @REPLACE_FACCESSAT@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FDOPEN = @REPLACE_FDOPEN@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETPASS = @REPLACE_GETPASS@
+REPLACE_INITSTATE = @REPLACE_INITSTATE@
+REPLACE_ISATTY = @REPLACE_ISATTY@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PTSNAME = @REPLACE_PTSNAME@
+REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_QSORT_R = @REPLACE_QSORT_R@
+REPLACE_RANDOM = @REPLACE_RANDOM@
+REPLACE_RANDOM_R = @REPLACE_RANDOM_R@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_READLINKAT = @REPLACE_READLINKAT@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETSTATE = @REPLACE_SETSTATE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_STRTOLD = @REPLACE_STRTOLD@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TRUNCATE = @REPLACE_TRUNCATE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WRITE = @REPLACE_WRITE@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
STRIP = @STRIP@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
USE_NLS = @USE_NLS@
+USE_SYSTEM_GLOB = @USE_SYSTEM_GLOB@
VERSION = @VERSION@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@
+WINDOWS_STAT_INODES = @WINDOWS_STAT_INODES@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
@@ -299,7 +808,6 @@ abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
@@ -318,6 +826,11 @@ datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
@@ -373,8 +886,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -436,7 +949,7 @@ make.html: make.texi $(srcdir)/version.texi $(make_TEXINFOS)
$(srcdir)/version.texi: $(srcdir)/stamp-vti
$(srcdir)/stamp-vti: make.texi $(top_srcdir)/configure
@(dir=.; test -f ./make.texi || dir=$(srcdir); \
- set `$(SHELL) $(top_srcdir)/config/mdate-sh $$dir/make.texi`; \
+ set `$(SHELL) $(top_srcdir)/build-aux/mdate-sh $$dir/make.texi`; \
echo "@set UPDATED $$1 $$2 $$3"; \
echo "@set UPDATED-MONTH $$2 $$3"; \
echo "@set EDITION $(VERSION)"; \
@@ -553,7 +1066,10 @@ ctags CTAGS:
cscope cscopelist:
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
diff --git a/doc/fdl.texi b/doc/fdl.texi
index 9c3bbe5..542edaa 100644
--- a/doc/fdl.texi
+++ b/doc/fdl.texi
@@ -6,7 +6,7 @@
@display
Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-@uref{http://fsf.org/}
+@uref{https://fsf.org/}
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -414,7 +414,7 @@ The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
-@uref{http://www.gnu.org/copyleft/}.
+@uref{https://www.gnu.org/copyleft/}.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
diff --git a/make.1 b/doc/make.1
index d4bd284..dbd023f 100644
--- a/make.1
+++ b/doc/make.1
@@ -148,8 +148,12 @@ for debugging while remaking makefiles. Use
to disable all previous debugging flags.
.TP 0.5i
\fB\-e\fR, \fB\-\-environment\-overrides\fR
-Give variables taken from the environment precedence
-over variables from makefiles.
+Give variables taken from the environment precedence over variables
+from makefiles.
+.TP 0.5i
+\fB\-E\fR \fIstring\fR, \fB\-\-eval\fR \fIstring\fR
+Interpret \fIstring\fR using the \fBeval\fR function, before parsing any
+makefiles.
.TP 0.5i
\fB\-f\fR \fIfile\fR, \fB\-\-file\fR=\fIfile\fR, \fB\-\-makefile\fR=\fIFILE\fR
Use
@@ -270,19 +274,13 @@ Don't define any built\-in variables.
\fB\-s\fR, \fB\-\-silent\fR, \fB\-\-quiet\fR
Silent operation; do not print the commands as they are executed.
.TP 0.5i
+.B \-\-no\-silent
+Cancel the effect of the \fB\-s\fR option.
+.TP 0.5i
\fB\-S\fR, \fB\-\-no\-keep\-going\fR, \fB\-\-stop\fR
Cancel the effect of the
.B \-k
option.
-This is never necessary except in a recursive
-.B make
-where
-.B \-k
-might be inherited from the top-level
-.B make
-via MAKEFLAGS or if you set
-.B \-k
-in MAKEFLAGS in your environment.
.TP 0.5i
\fB\-t\fR, \fB\-\-touch\fR
Touch files (mark them up to date without really changing them)
@@ -363,7 +361,7 @@ This manual page contributed by Dennis Morse of Stanford University.
Further updates contributed by Mike Frysinger. It has been reworked by Roland
McGrath. Maintained by Paul Smith.
.SH "COPYRIGHT"
-Copyright \(co 1992-1993, 1996-2016 Free Software Foundation, Inc.
+Copyright \(co 1992-1993, 1996-2020 Free Software Foundation, Inc.
This file is part of
.IR "GNU make" .
.LP
diff --git a/doc/make.info b/doc/make.info
index 5e39e99..b84710f 100644
--- a/doc/make.info
+++ b/doc/make.info
@@ -1,15 +1,16 @@
-This is make.info, produced by makeinfo version 6.1 from make.texi.
+This is make.info, produced by makeinfo version 6.6 from make.texi.
This file documents the GNU 'make' utility, which determines
automatically which pieces of a large program need to be recompiled, and
issues the commands to recompile them.
- This is Edition 0.74, last updated 21 May 2016, of 'The GNU Make
-Manual', for GNU 'make' version 4.2.1.
+ This is Edition 0.75, last updated 19 January 2020, of 'The GNU Make
+Manual', for GNU 'make' version 4.3.
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-2010, 2011, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc.
+2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Free
+Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
@@ -29,177 +30,178 @@ END-INFO-DIR-ENTRY

Indirect:
-make.info-1: 1353
-make.info-2: 307140
+make.info-1: 1379
+make.info-2: 301593

Tag Table:
(Indirect)
-Node: Top1353
-Node: Overview16535
-Node: Preparing17548
-Node: Reading18516
-Node: Bugs19443
-Node: Introduction21272
-Node: Rule Introduction22865
-Node: Simple Makefile24798
-Node: How Make Works28534
-Node: Variables Simplify31183
-Node: make Deduces33389
-Node: Combine By Prerequisite35122
-Node: Cleanup36151
-Node: Makefiles37569
-Node: Makefile Contents38405
-Node: Splitting Lines41578
-Node: Makefile Names43338
-Node: Include44945
-Ref: Include-Footnote-148689
-Node: MAKEFILES Variable48823
-Node: Remaking Makefiles50364
-Node: Overriding Makefiles54589
-Node: Reading Makefiles56617
-Node: Secondary Expansion60079
-Node: Rules67540
-Node: Rule Example70213
-Node: Rule Syntax71066
-Node: Prerequisite Types73661
-Node: Wildcards76528
-Node: Wildcard Examples78247
-Node: Wildcard Pitfall79597
-Node: Wildcard Function81386
-Node: Directory Search83170
-Node: General Search84305
-Node: Selective Search86012
-Node: Search Algorithm89002
-Node: Recipes/Search91520
-Node: Implicit/Search92843
-Node: Libraries/Search93785
-Node: Phony Targets95756
-Node: Force Targets100593
-Node: Empty Targets101630
-Node: Special Targets102932
-Node: Multiple Targets110805
-Node: Multiple Rules112665
-Node: Static Pattern114883
-Node: Static Usage115535
-Node: Static versus Implicit119254
-Node: Double-Colon120994
-Node: Automatic Prerequisites122754
-Node: Recipes127015
-Node: Recipe Syntax128187
-Node: Splitting Recipe Lines130302
-Node: Variables in Recipes133455
-Node: Echoing134781
-Node: Execution136056
-Ref: Execution-Footnote-1137469
-Node: One Shell137614
-Node: Choosing the Shell140929
-Node: Parallel145073
-Node: Parallel Output147742
-Node: Parallel Input152169
-Node: Errors153288
-Node: Interrupts156952
-Node: Recursion158535
-Node: MAKE Variable160632
-Node: Variables/Recursion162875
-Node: Options/Recursion168320
-Node: -w Option174326
-Node: Canned Recipes175321
-Node: Empty Recipes178304
-Node: Using Variables179744
-Node: Reference183172
-Node: Flavors184730
-Node: Advanced190709
-Node: Substitution Refs191214
-Node: Computed Names192767
-Node: Values197315
-Node: Setting198232
-Node: Appending201271
-Node: Override Directive205215
-Node: Multi-Line206842
-Node: Undefine Directive209666
-Node: Environment210755
-Node: Target-specific213007
-Node: Pattern-specific216034
-Node: Suppressing Inheritance217881
-Node: Special Variables219334
-Node: Conditionals225743
-Node: Conditional Example226456
-Node: Conditional Syntax229019
-Node: Testing Flags234779
-Node: Functions235880
-Node: Syntax of Functions237440
-Node: Text Functions239774
-Node: File Name Functions248339
-Node: Conditional Functions253565
-Node: Foreach Function255940
-Node: File Function259153
-Node: Call Function261710
-Node: Value Function264595
-Node: Eval Function266032
-Node: Origin Function268308
-Node: Flavor Function271534
-Node: Make Control Functions272578
-Node: Shell Function274264
-Node: Guile Function276023
-Node: Running276773
-Node: Makefile Arguments278754
-Node: Goals279470
-Node: Instead of Execution284209
-Node: Avoiding Compilation287924
-Node: Overriding289899
-Node: Testing292211
-Node: Options Summary294095
-Node: Implicit Rules307140
-Node: Using Implicit309277
-Node: Catalogue of Rules312796
-Node: Implicit Variables322140
-Node: Chained Rules327213
-Node: Pattern Rules331223
-Node: Pattern Intro332757
-Node: Pattern Examples335339
-Node: Automatic Variables337146
-Node: Pattern Match344498
-Node: Match-Anything Rules347821
-Node: Canceling Rules351700
-Node: Last Resort352414
-Node: Suffix Rules354243
-Node: Implicit Rule Search357968
-Node: Archives361467
-Node: Archive Members362172
-Node: Archive Update363782
-Node: Archive Symbols365693
-Node: Archive Pitfalls366926
-Node: Archive Suffix Rules367648
-Node: Extending make369196
-Node: Guile Integration370341
-Node: Guile Types371569
-Node: Guile Interface373989
-Node: Guile Example375275
-Node: Loading Objects377466
-Node: load Directive378956
-Node: Remaking Loaded Objects381710
-Node: Loaded Object API382344
-Node: Loaded Object Example389106
-Node: Integrating make391353
-Node: Job Slots392104
-Node: POSIX Jobserver395536
-Node: Windows Jobserver397930
-Node: Terminal Output399283
-Node: Features401672
-Node: Missing410841
-Node: Makefile Conventions414566
-Node: Makefile Basics415545
-Node: Utilities in Makefiles418712
-Node: Command Variables421211
-Node: DESTDIR424451
-Node: Directory Variables426618
-Node: Standard Targets441975
-Node: Install Command Categories456081
-Node: Quick Reference460607
-Node: Error Messages473321
-Node: Complex Makefile481217
-Node: GNU Free Documentation License489835
-Node: Concept Index514977
-Node: Name Index586485
+Node: Top1379
+Node: Overview16646
+Node: Preparing17659
+Node: Reading18627
+Node: Bugs19554
+Node: Introduction21383
+Node: Rule Introduction22976
+Node: Simple Makefile24909
+Node: How Make Works28645
+Node: Variables Simplify31294
+Node: make Deduces33500
+Node: Combine By Prerequisite35233
+Node: Cleanup36262
+Node: Makefiles37680
+Node: Makefile Contents38575
+Node: Splitting Lines41748
+Node: Makefile Names44231
+Node: Include45838
+Ref: Include-Footnote-149582
+Node: MAKEFILES Variable49716
+Node: Remaking Makefiles51257
+Node: Overriding Makefiles55587
+Node: Reading Makefiles57615
+Node: Parsing Makefiles61057
+Node: Secondary Expansion62915
+Node: Rules70363
+Node: Rule Example73036
+Node: Rule Syntax73884
+Node: Prerequisite Types76479
+Node: Wildcards79346
+Node: Wildcard Examples81065
+Node: Wildcard Pitfall82415
+Node: Wildcard Function84204
+Node: Directory Search85988
+Node: General Search87123
+Node: Selective Search88830
+Node: Search Algorithm91820
+Node: Recipes/Search94338
+Node: Implicit/Search95661
+Node: Libraries/Search96603
+Node: Phony Targets98574
+Node: Force Targets103411
+Node: Empty Targets104448
+Node: Special Targets105750
+Node: Multiple Targets113550
+Node: Multiple Rules117783
+Node: Static Pattern120001
+Node: Static Usage120653
+Node: Static versus Implicit124372
+Node: Double-Colon126112
+Node: Automatic Prerequisites127872
+Node: Recipes132133
+Node: Recipe Syntax133305
+Node: Splitting Recipe Lines135420
+Node: Variables in Recipes138573
+Node: Echoing139899
+Node: Execution141111
+Ref: Execution-Footnote-1142524
+Node: One Shell142669
+Node: Choosing the Shell145987
+Node: Parallel150131
+Node: Parallel Output152800
+Node: Parallel Input157227
+Node: Errors158346
+Node: Interrupts161981
+Node: Recursion164342
+Node: MAKE Variable166439
+Node: Variables/Recursion168682
+Node: Options/Recursion174127
+Node: -w Option180133
+Node: Canned Recipes181128
+Node: Empty Recipes184111
+Node: Using Variables185551
+Node: Reference188979
+Node: Flavors190789
+Node: Advanced196768
+Node: Substitution Refs197273
+Node: Computed Names198875
+Node: Values203423
+Node: Setting204340
+Node: Appending207379
+Node: Override Directive211350
+Node: Multi-Line212977
+Node: Undefine Directive215840
+Node: Environment216929
+Node: Target-specific219181
+Node: Pattern-specific222208
+Node: Suppressing Inheritance224055
+Node: Special Variables225508
+Node: Conditionals233749
+Node: Conditional Example234462
+Node: Conditional Syntax237025
+Node: Testing Flags242785
+Node: Functions243886
+Node: Syntax of Functions245446
+Node: Text Functions247780
+Node: File Name Functions256341
+Node: Conditional Functions261567
+Node: Foreach Function263943
+Node: File Function267156
+Node: Call Function269713
+Node: Value Function272598
+Node: Eval Function274035
+Node: Origin Function276311
+Node: Flavor Function279537
+Node: Make Control Functions280581
+Node: Shell Function282267
+Node: Guile Function284026
+Node: Running284776
+Node: Makefile Arguments286757
+Node: Goals287473
+Node: Instead of Execution292212
+Node: Avoiding Compilation295927
+Node: Overriding297902
+Node: Testing301593
+Node: Options Summary303477
+Node: Implicit Rules315181
+Node: Using Implicit317318
+Node: Catalogue of Rules320837
+Node: Implicit Variables330181
+Node: Chained Rules335254
+Node: Pattern Rules339475
+Node: Pattern Intro341009
+Node: Pattern Examples343160
+Node: Automatic Variables344967
+Node: Pattern Match352342
+Node: Match-Anything Rules355665
+Node: Canceling Rules359586
+Node: Last Resort360300
+Node: Suffix Rules362129
+Node: Implicit Rule Search365863
+Node: Archives369414
+Node: Archive Members370119
+Node: Archive Update371729
+Node: Archive Symbols373640
+Node: Archive Pitfalls374873
+Node: Archive Suffix Rules375595
+Node: Extending make377143
+Node: Guile Integration378288
+Node: Guile Types379516
+Node: Guile Interface381936
+Node: Guile Example383222
+Node: Loading Objects385413
+Node: load Directive386903
+Node: Remaking Loaded Objects389657
+Node: Loaded Object API390291
+Node: Loaded Object Example397053
+Node: Integrating make399300
+Node: Job Slots400051
+Node: POSIX Jobserver403483
+Node: Windows Jobserver405951
+Node: Terminal Output407304
+Node: Features409693
+Node: Missing418862
+Node: Makefile Conventions422590
+Node: Makefile Basics423569
+Node: Utilities in Makefiles426736
+Node: Command Variables429235
+Node: DESTDIR432475
+Node: Directory Variables434642
+Node: Standard Targets449999
+Node: Install Command Categories464105
+Node: Quick Reference468631
+Node: Error Messages481345
+Node: Complex Makefile490140
+Node: GNU Free Documentation License498758
+Node: Concept Index523916
+Node: Name Index596081

End Tag Table
diff --git a/doc/make.info-1 b/doc/make.info-1
index 5d67dc8..abd0357 100644
--- a/doc/make.info-1
+++ b/doc/make.info-1
@@ -1,15 +1,16 @@
-This is make.info, produced by makeinfo version 6.1 from make.texi.
+This is make.info, produced by makeinfo version 6.6 from make.texi.
This file documents the GNU 'make' utility, which determines
automatically which pieces of a large program need to be recompiled, and
issues the commands to recompile them.
- This is Edition 0.74, last updated 21 May 2016, of 'The GNU Make
-Manual', for GNU 'make' version 4.2.1.
+ This is Edition 0.75, last updated 19 January 2020, of 'The GNU Make
+Manual', for GNU 'make' version 4.3.
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-2010, 2011, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc.
+2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Free
+Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
@@ -37,12 +38,13 @@ This file documents the GNU 'make' utility, which determines
automatically which pieces of a large program need to be recompiled, and
issues the commands to recompile them.
- This is Edition 0.74, last updated 21 May 2016, of 'The GNU Make
-Manual', for GNU 'make' version 4.2.1.
+ This is Edition 0.75, last updated 19 January 2020, of 'The GNU Make
+Manual', for GNU 'make' version 4.3.
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-2010, 2011, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc.
+2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Free
+Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
@@ -113,7 +115,8 @@ Writing Makefiles
* Remaking Makefiles:: How makefiles get remade.
* Overriding Makefiles:: How to override part of one makefile
with another makefile.
-* Reading Makefiles:: How makefiles are parsed.
+* Reading Makefiles:: How makefiles are read in.
+* Parsing Makefiles:: How makefiles are parsed.
* Secondary Expansion:: How and when secondary expansion is performed.
What Makefiles Contain
@@ -868,7 +871,8 @@ reading a data base called the "makefile".
* Remaking Makefiles:: How makefiles get remade.
* Overriding Makefiles:: How to override part of one makefile
with another makefile.
-* Reading Makefiles:: How makefiles are parsed.
+* Reading Makefiles:: How makefiles are read in.
+* Parsing Makefiles:: How makefiles are parsed.
* Secondary Expansion:: How and when secondary expansion is performed.

@@ -977,6 +981,28 @@ handling is modified slightly to conform to POSIX.2: first, whitespace
preceding a backslash is not removed and second, consecutive
backslash/newlines are not condensed.
+Splitting Without Adding Whitespace
+...................................
+
+If you need to split a line but do _not_ want any whitespace added, you
+can utilize a subtle trick: replace your backslash/newline pairs with
+the three characters dollar sign/backslash/newline:
+
+ var := one$\
+ word
+
+ After 'make' removes the backslash/newline and condenses the
+following line into a single space, this is equivalent to:
+
+ var := one$ word
+
+ Then 'make' will perform variable expansion. The variable reference
+'$ ' refers to a variable with the one-character name " " (space) which
+does not exist, and so expands to the empty string, giving a final
+assignment which is the equivalent of:
+
+ var := oneword
+

File: make.info, Node: Makefile Names, Next: Include, Prev: Makefile Contents, Up: Makefiles
@@ -1137,16 +1163,17 @@ Sometimes makefiles can be remade from other files, such as RCS or SCCS
files. If a makefile can be remade from other files, you probably want
'make' to get an up-to-date version of the makefile to read in.
- To this end, after reading in all makefiles, 'make' will consider
-each as a goal target and attempt to update it. If a makefile has a
-rule which says how to update it (found either in that very makefile or
-in another one) or if an implicit rule applies to it (*note Using
-Implicit Rules: Implicit Rules.), it will be updated if necessary.
-After all makefiles have been checked, if any have actually been
-changed, 'make' starts with a clean slate and reads all the makefiles
-over again. (It will also attempt to update each of them over again,
-but normally this will not change them again, since they are already up
-to date.)
+ To this end, after reading in all makefiles 'make' will consider each
+as a goal target and attempt to update it. If a makefile has a rule
+which says how to update it (found either in that very makefile or in
+another one) or if an implicit rule applies to it (*note Using Implicit
+Rules: Implicit Rules.), it will be updated if necessary. After all
+makefiles have been checked, if any have actually been changed, 'make'
+starts with a clean slate and reads all the makefiles over again. (It
+will also attempt to update each of them over again, but normally this
+will not change them again, since they are already up to date.) Each
+restart will cause the special variable 'MAKE_RESTARTS' to be updated
+(*note Special Variables::).
If you know that one or more of your makefiles cannot be remade and
you want to keep 'make' from performing an implicit rule search on them,
@@ -1251,30 +1278,31 @@ it--otherwise it would apply the same match-anything rule to 'force'
itself and create a prerequisite loop!

-File: make.info, Node: Reading Makefiles, Next: Secondary Expansion, Prev: Overriding Makefiles, Up: Makefiles
+File: make.info, Node: Reading Makefiles, Next: Parsing Makefiles, Prev: Overriding Makefiles, Up: Makefiles
3.7 How 'make' Reads a Makefile
===============================
GNU 'make' does its work in two distinct phases. During the first phase
it reads all the makefiles, included makefiles, etc. and internalizes
-all the variables and their values, implicit and explicit rules, and
-constructs a dependency graph of all the targets and their
-prerequisites. During the second phase, 'make' uses these internal
-structures to determine what targets will need to be rebuilt and to
-invoke the rules necessary to do so.
+all the variables and their values and implicit and explicit rules, and
+builds a dependency graph of all the targets and their prerequisites.
+During the second phase, 'make' uses this internalized data to determine
+which targets need to be updated and run the recipes necessary to update
+them.
It's important to understand this two-phase approach because it has a
direct impact on how variable and function expansion happens; this is
-often a source of some confusion when writing makefiles. Here we will
-present a summary of the phases in which expansion happens for different
-constructs within the makefile. We say that expansion is "immediate" if
-it happens during the first phase: in this case 'make' will expand any
-variables or functions in that section of a construct as the makefile is
-parsed. We say that expansion is "deferred" if expansion is not
-performed immediately. Expansion of a deferred construct is not
-performed until either the construct appears later in an immediate
-context, or until the second phase.
+often a source of some confusion when writing makefiles. Below is a
+summary of the different constructs that can be found in a makefile, and
+the phase in which expansion happens for each part of the construct.
+
+ We say that expansion is "immediate" if it happens during the first
+phase: 'make' will expand that part of the construct as the makefile is
+parsed. We say that expansion is "deferred" if it is not immediate.
+Expansion of a deferred construct part is delayed until the expansion is
+used: either when it is referenced in an immediate context, or when it
+is needed during the second phase.
You may not be familiar with some of these constructs yet. You can
reference this section as you become familiar with them, in later
@@ -1320,11 +1348,11 @@ Variable definitions are parsed as follows:
IMMEDIATE
endef
- For the append operator, '+=', the right-hand side is considered
+ For the append operator '+=', the right-hand side is considered
immediate if the variable was previously set as a simple variable (':='
or '::='), and deferred otherwise.
- For the shell assignment operator, '!=', the right-hand side is
+ For the shell assignment operator '!=', the right-hand side is
evaluated immediately and handed to the shell. The result is stored in
the variable named on the left, and that variable becomes a simple
variable (and will thus be re-evaluated on each reference).
@@ -1348,23 +1376,78 @@ A rule is always expanded the same way, regardless of the form:
DEFERRED
That is, the target and prerequisite sections are expanded
-immediately, and the recipe used to construct the target is always
-deferred. This general rule is true for explicit rules, pattern rules,
-suffix rules, static pattern rules, and simple prerequisite definitions.
+immediately, and the recipe used to build the target is always deferred.
+This is true for explicit rules, pattern rules, suffix rules, static
+pattern rules, and simple prerequisite definitions.
+
+
+File: make.info, Node: Parsing Makefiles, Next: Secondary Expansion, Prev: Reading Makefiles, Up: Makefiles
+
+3.8 How Makefiles Are Parsed
+============================
+
+GNU 'make' parses makefiles line-by-line. Parsing proceeds using the
+following steps:
+
+ 1. Read in a full logical line, including backslash-escaped lines
+ (*note Splitting Long Lines: Splitting Lines.).
+
+ 2. Remove comments (*note What Makefiles Contain: Makefile Contents.).
+
+ 3. If the line begins with the recipe prefix character and we are in a
+ rule context, add the line to the current recipe and read the next
+ line (*note Recipe Syntax::).
+
+ 4. Expand elements of the line which appear in an _immediate_
+ expansion context (*note How 'make' Reads a Makefile: Reading
+ Makefiles.).
+
+ 5. Scan the line for a separator character, such as ':' or '=', to
+ determine whether the line is a macro assignment or a rule (*note
+ Recipe Syntax::).
+
+ 6. Internalize the resulting operation and read the next line.
+
+ An important consequence of this is that a macro can expand to an
+entire rule, _if it is one line long_. This will work:
+
+ myrule = target : ; echo built
+
+ $(myrule)
+
+ However, this will not work because 'make' does not re-split lines
+after it has expanded them:
+
+ define myrule
+ target:
+ echo built
+ endef
+
+ $(myrule)
+
+ The above makefile results in the definition of a target 'target'
+with prerequisites 'echo' and 'built', as if the makefile contained
+'target: echo built', rather than a rule with a recipe. Newlines still
+present in a line after expansion is complete are ignored as normal
+whitespace.
+
+ In order to properly expand a multi-line macro you must use the
+'eval' function: this causes the 'make' parser to be run on the results
+of the expanded macro (*note Eval Function::).

-File: make.info, Node: Secondary Expansion, Prev: Reading Makefiles, Up: Makefiles
+File: make.info, Node: Secondary Expansion, Prev: Parsing Makefiles, Up: Makefiles
-3.8 Secondary Expansion
+3.9 Secondary Expansion
=======================
-In the previous section we learned that GNU 'make' works in two distinct
-phases: a read-in phase and a target-update phase (*note How 'make'
-Reads a Makefile: Reading Makefiles.). GNU make also has the ability to
-enable a _second expansion_ of the prerequisites (only) for some or all
-targets defined in the makefile. In order for this second expansion to
-occur, the special target '.SECONDEXPANSION' must be defined before the
-first prerequisite list that makes use of this feature.
+Previously we learned that GNU 'make' works in two distinct phases: a
+read-in phase and a target-update phase (*note How 'make' Reads a
+Makefile: Reading Makefiles.). GNU make also has the ability to enable
+a _second expansion_ of the prerequisites (only) for some or all targets
+defined in the makefile. In order for this second expansion to occur,
+the special target '.SECONDEXPANSION' must be defined before the first
+prerequisite list that makes use of this feature.
If that special target is defined then in between the two phases
mentioned above, right at the end of the read-in phase, all the
@@ -1603,7 +1686,7 @@ with a tab to identify it as a recipe.
* How to update the file 'foo.o': by running 'cc' as stated. The
recipe does not explicitly mention 'defs.h', but we presume that
- 'foo.c' includes it, and that that is why 'defs.h' was added to the
+ 'foo.c' includes it, and that is why 'defs.h' was added to the
prerequisites.

@@ -2521,12 +2604,11 @@ Certain names have special meanings if they appear as targets.
executing them. The recipe for '.SILENT' is ignored.
If mentioned as a target with no prerequisites, '.SILENT' says not
- to print any recipes before executing them. This usage of
- '.SILENT' is supported only for historical compatibility. We
- recommend you use the more selective ways to silence specific
- recipes. *Note Recipe Echoing: Echoing. If you want to silence
- all recipes for a particular run of 'make', use the '-s' or
- '--silent' option (*note Options Summary::).
+ to print any recipes before executing them. You may also use more
+ selective ways to silence specific recipe command lines. *Note
+ Recipe Echoing: Echoing. If you want to silence all recipes for a
+ particular run of 'make', use the '-s' or '--silent' option (*note
+ Options Summary::).
'.EXPORT_ALL_VARIABLES'
@@ -2578,25 +2660,36 @@ File: make.info, Node: Multiple Targets, Next: Multiple Rules, Prev: Special
4.10 Multiple Targets in a Rule
===============================
-A rule with multiple targets is equivalent to writing many rules, each
-with one target, and all identical aside from that. The same recipe
-applies to all the targets, but its effect may vary because you can
-substitute the actual target name into the recipe using '$@'. The rule
-contributes the same prerequisites to all the targets also.
+When an explicit rule has multiple targets they can be treated in one of
+two possible ways: as independent targets or as grouped targets. The
+manner in which they are treated is determined by the separator that
+appears after the list of targets.
- This is useful in two cases.
+Rules with Independent Targets
+..............................
+
+Rules that use the standard target separator, ':', define independent
+targets. This is equivalent to writing the same rule once for each
+target, with duplicated prerequisites and recipes. Typically, the
+recipe would use automatic variables such as '$@' to specify which
+target is being built.
+
+ Rules with independent targets are useful in two cases:
* You want just prerequisites, no recipe. For example:
kbd.o command.o files.o: command.h
gives an additional prerequisite to each of the three object files
- mentioned.
+ mentioned. It is equivalent to writing:
+
+ kbd.o: command.h
+ command.o: command.h
+ files.o: command.h
- * Similar recipes work for all the targets. The recipes do not need
- to be absolutely identical, since the automatic variable '$@' can
- be used to substitute the particular target to be remade into the
- commands (*note Automatic Variables::). For example:
+ * Similar recipes work for all the targets. The automatic variable
+ '$@' can be used to substitute the particular target to be remade
+ into the commands (*note Automatic Variables::). For example:
bigoutput littleoutput : text.g
generate text.g -$(subst output,,$@) > $@
@@ -2619,6 +2712,51 @@ cannot do this with multiple targets in an ordinary rule, but you can do
it with a "static pattern rule". *Note Static Pattern Rules: Static
Pattern.
+Rules with Grouped Targets
+..........................
+
+If instead of independent targets you have a recipe that generates
+multiple files from a single invocation, you can express that
+relationship by declaring your rule to use _grouped targets_. A grouped
+target rule uses the separator '&:' (the '&' here is used to imply
+"all").
+
+ When 'make' builds any one of the grouped targets, it understands
+that all the other targets in the group are also created as a result of
+the invocation of the recipe. Furthermore, if only some of the grouped
+targets are out of date or missing 'make' will realize that running the
+recipe will update all of the targets.
+
+ As an example, this rule defines a grouped target:
+
+ foo bar biz &: baz boz
+ echo $^ > foo
+ echo $^ > bar
+ echo $^ > biz
+
+ During the execution of a grouped target's recipe, the automatic
+variable '$@' is set to the name of the particular target in the group
+which triggered the rule. Caution must be used if relying on this
+variable in the recipe of a grouped target rule.
+
+ Unlike independent targets, a grouped target rule _must_ include a
+recipe. However, targets that are members of a grouped target may also
+appear in independent target rule definitions that do not have recipes.
+
+ Each target may have only one recipe associated with it. If a
+grouped target appears in either an independent target rule or in
+another grouped target rule with a recipe, you will get a warning and
+the latter recipe will replace the former recipe. Additionally the
+target will be removed from the previous group and appear only in the
+new group.
+
+ If you would like a target to appear in multiple groups, then you
+must use the double-colon grouped target separator, '&::' when declaring
+all of the groups containing that target. Grouped double-colon targets
+are each considered independently, and each grouped double-colon rule's
+recipe is executed at most once, if at least one of its multiple targets
+requires updating.
+

File: make.info, Node: Multiple Rules, Next: Static Pattern, Prev: Multiple Targets, Up: Rules
@@ -3186,8 +3324,7 @@ thinks are necessary without actually doing them.
The '-s' or '--silent' flag to 'make' prevents all echoing, as if all
recipes started with '@'. A rule in the makefile for the special target
'.SILENT' without prerequisites has the same effect (*note Special
-Built-in Target Names: Special Targets.). '.SILENT' is essentially
-obsolete since '@' is more flexible.
+Built-in Target Names: Special Targets.).

File: make.info, Node: Execution, Next: Parallel, Prev: Echoing, Up: Recipes
@@ -3209,7 +3346,7 @@ recipe line. Then 'make' will invoke one shell to run the entire line,
and the shell will execute the statements in sequence. For example:
foo : bar/lose
- cd $(@D) && gobble $(@F) > ../$@
+ cd $(<D) && gobble $(<F) > ../$@
Here we use the shell AND operator ('&&') so that if the 'cd' command
fails, the script will fail without trying to invoke the 'gobble'
@@ -3288,7 +3425,7 @@ or
print "@f\n";
As a special feature, if 'SHELL' is determined to be a POSIX-style
-shell, the special prefix characters in "internal" recipe lines will
+shell, the special prefix characters in "internal" recipe lines will be
_removed_ before the recipe is processed. This feature is intended to
allow existing makefiles to add the '.ONESHELL' special target and still
run properly without extensive modifications. Since the special prefix
@@ -3606,8 +3743,7 @@ This causes 'make' to continue even if 'rm' is unable to remove a file.
When you run 'make' with the '-i' or '--ignore-errors' flag, errors
are ignored in all recipes of all rules. A rule in the makefile for the
special target '.IGNORE' has the same effect, if there are no
-prerequisites. These ways of ignoring errors are obsolete because '-'
-is more flexible.
+prerequisites. This is less flexible but sometimes useful.
When errors are to be ignored, because of either a '-' or the '-i'
flag, 'make' treats an error return just like success, except that it
@@ -3679,6 +3815,20 @@ target is updated in some atomic fashion, or exists only to record a
modification-time (its contents do not matter), or must exist at all
times to prevent other sorts of trouble.
+ Although 'make' does its best to clean up there are certain
+situations in which cleanup is impossible. For example, 'make' may be
+killed by an uncatchable signal. Or, one of the programs make invokes
+may be killed or crash, leaving behind an up-to-date but corrupt target
+file: 'make' will not realize that this failure requires the target to
+be cleaned. Or 'make' itself may encounter a bug and crash.
+
+ For these reasons it's best to write _defensive recipes_, which won't
+leave behind corrupted targets even if they fail. Most commonly these
+recipes create temporary files rather than updating the target directly,
+then rename the temporary file to the final target name. Some compilers
+already behave this way, so that you don't need to write a defensive
+recipe.
+

File: make.info, Node: Recursion, Next: Canned Recipes, Prev: Interrupts, Up: Recipes
@@ -4261,8 +4411,12 @@ is precisely 'c'. (Don't actually write your makefiles this way!)
A dollar sign followed by a character other than a dollar sign,
open-parenthesis or open-brace treats that single character as the
variable name. Thus, you could reference the variable 'x' with '$x'.
-However, this practice is strongly discouraged, except in the case of
-the automatic variables (*note Automatic Variables::).
+However, this practice can lead to confusion (e.g., '$foo' refers to the
+variable 'f' followed by the string 'oo') so we recommend using
+parentheses or braces around all variables, even single-letter
+variables, unless omitting them gives significant readability
+improvements. One place where readability is often improved is
+automatic variables (*note Automatic Variables::).

File: make.info, Node: Flavors, Next: Advanced, Prev: Reference, Up: Using Variables
@@ -4445,16 +4599,16 @@ followed by whitespace or at the end of the value in order to be
replaced; other occurrences of A in the value are unaltered. For
example:
- foo := a.o b.o c.o
+ foo := a.o b.o l.a c.o
bar := $(foo:.o=.c)
-sets 'bar' to 'a.c b.c c.c'. *Note Setting Variables: Setting.
+sets 'bar' to 'a.c b.c l.a c.c'. *Note Setting Variables: Setting.
- A substitution reference is actually an abbreviation for use of the
-'patsubst' expansion function (*note Functions for String Substitution
-and Analysis: Text Functions.). We provide substitution references as
-well as 'patsubst' for compatibility with other implementations of
-'make'.
+ A substitution reference is shorthand for the 'patsubst' expansion
+function (*note Functions for String Substitution and Analysis: Text
+Functions.): '$(VAR:A=B)' is equivalent to '$(patsubst %A,%B,VAR)'. We
+provide substitution references as well as 'patsubst' for compatibility
+with other implementations of 'make'.
Another type of substitution reference lets you use the full power of
the 'patsubst' function. It has the same form '$(VAR:A=B)' described
@@ -4465,10 +4619,10 @@ Substitution and Analysis: Text Functions, for a description of the
For example:
- foo := a.o b.o c.o
+ foo := a.o b.o l.a c.o
bar := $(foo:%.o=%.c)
-sets 'bar' to 'a.c b.c c.c'.
+sets 'bar' to 'a.c b.c l.a c.c'.

File: make.info, Node: Computed Names, Prev: Substitution Refs, Up: Advanced
@@ -4724,7 +4878,8 @@ defined. You do this with a line containing '+=', like this:
objects += another.o
This takes the value of the variable 'objects', and adds the text
-'another.o' to it (preceded by a single space). Thus:
+'another.o' to it (preceded by a single space, if it has a value
+already). Thus:
objects = main.o foo.o bar.o utils.o
objects += another.o
@@ -4875,10 +5030,22 @@ Recipes.), and also sections of makefile syntax to use with 'eval'
the variable being defined and an (optional) assignment operator, and
nothing more. The value to give the variable appears on the following
lines. The end of the value is marked by a line containing just the
-word 'endef'. Aside from this difference in syntax, 'define' works just
-like any other variable definition. The variable name may contain
-function and variable references, which are expanded when the directive
-is read to find the actual variable name to use.
+word 'endef'.
+
+ Aside from this difference in syntax, 'define' works just like any
+other variable definition. The variable name may contain function and
+variable references, which are expanded when the directive is read to
+find the actual variable name to use.
+
+ The final newline before the 'endef' is not included in the value; if
+you want your value to contain a trailing newline you must include a
+blank line. For example in order to define a variable that contains a
+newline character you must use _two_ empty lines, not one:
+
+ define newline
+
+
+ endef
You may omit the variable assignment operator if you prefer. If
omitted, 'make' assumes it to be '=' and creates a recursively-expanded
@@ -4893,16 +5060,11 @@ directives and report an error if they are not all properly closed with
considered part of a recipe, so any 'define' or 'endef' strings
appearing on such a line will not be considered 'make' directives.
- define two-lines =
+ define two-lines
echo foo
echo $(bar)
endef
- The value in an ordinary assignment cannot contain a newline; but the
-newlines that separate the lines of the value in a 'define' become part
-of the variable's value (except for the final newline which precedes the
-'endef' and is not considered part of the value).
-
When used in a recipe, the previous example is functionally
equivalent to this:
@@ -5324,6 +5486,49 @@ GNU 'make' supports some variables that have special properties.
Expands to a list of directories that 'make' searches for included
makefiles (*note Including Other Makefiles: Include.).
+'.EXTRA_PREREQS'
+ Each word in this variable is a new prerequisite which is added to
+ targets for which it is set. These prerequisites differ from
+ normal prerequisites in that they do not appear in any of the
+ automatic variables (*note Automatic Variables::). This allows
+ prerequisites to be defined which do not impact the recipe.
+
+ Consider a rule to link a program:
+
+ myprog: myprog.o file1.o file2.o
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
+
+ Now suppose you want to enhance this makefile to ensure that
+ updates to the compiler cause the program to be re-linked. You can
+ add the compiler as a prerequisite, but you must ensure that it's
+ not passed as an argument to link command. You'll need something
+ like this:
+
+ myprog: myprog.o file1.o file2.o $(CC)
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(filter-out $(CC),$^) $(LDLIBS)
+
+ Then consider having multiple extra prerequisites: they would all
+ have to be filtered out. Using '.EXTRA_PREREQS' and
+ target-specific variables provides a simpler solution:
+
+ myprog: myprog.o file1.o file2.o
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
+ myprog: .EXTRA_PREREQS = $(CC)
+
+ This feature can also be useful if you want to add prerequisites to
+ a makefile you cannot easily modify: you can create a new file such
+ as 'extra.mk':
+
+ myprog: .EXTRA_PREREQS = $(CC)
+
+ then invoke 'make -f extra.mk -f Makefile'.
+
+ Setting '.EXTRA_PREREQS' globally will cause those prerequisites to
+ be added to all targets (which did not themselves override it with
+ a target-specific value). Note 'make' is smart enough not to add a
+ prerequisite listed in '.EXTRA_PREREQS' as a prerequisite to
+ itself.
+

File: make.info, Node: Conditionals, Next: Functions, Prev: Using Variables, Up: Top
@@ -5706,7 +5911,7 @@ Here are some functions that operate on strings:
$(subst ee,EE,feet on the street)
- substitutes the string 'fEEt on the strEEt'.
+ produces the value 'fEEt on the strEEt'.
'$(patsubst PATTERN,REPLACEMENT,TEXT)'
Finds whitespace-separated words in TEXT that match PATTERN and
@@ -6066,7 +6271,7 @@ expanded.
The 'if' function provides support for conditional expansion in a
functional context (as opposed to the GNU 'make' makefile
conditionals such as 'ifeq' (*note Syntax of Conditionals:
- Conditional Syntax.).
+ Conditional Syntax.)).
The first argument, CONDITION, first has all preceding and trailing
whitespace stripped, then is expanded. If it expands to any
@@ -7017,333 +7222,3 @@ have overridden. This is to use the 'override' directive, which is a
line that looks like this: 'override VARIABLE = VALUE' (*note The
'override' Directive: Override Directive.).
-
-File: make.info, Node: Testing, Next: Options Summary, Prev: Overriding, Up: Running
-
-9.6 Testing the Compilation of a Program
-========================================
-
-Normally, when an error happens in executing a shell command, 'make'
-gives up immediately, returning a nonzero status. No further recipes
-are executed for any target. The error implies that the goal cannot be
-correctly remade, and 'make' reports this as soon as it knows.
-
- When you are compiling a program that you have just changed, this is
-not what you want. Instead, you would rather that 'make' try compiling
-every file that can be tried, to show you as many compilation errors as
-possible.
-
- On these occasions, you should use the '-k' or '--keep-going' flag.
-This tells 'make' to continue to consider the other prerequisites of the
-pending targets, remaking them if necessary, before it gives up and
-returns nonzero status. For example, after an error in compiling one
-object file, 'make -k' will continue compiling other object files even
-though it already knows that linking them will be impossible. In
-addition to continuing after failed shell commands, 'make -k' will
-continue as much as possible after discovering that it does not know how
-to make a target or prerequisite file. This will always cause an error
-message, but without '-k', it is a fatal error (*note Summary of
-Options: Options Summary.).
-
- The usual behavior of 'make' assumes that your purpose is to get the
-goals up to date; once 'make' learns that this is impossible, it might
-as well report the failure immediately. The '-k' flag says that the
-real purpose is to test as much as possible of the changes made in the
-program, perhaps to find several independent problems so that you can
-correct them all before the next attempt to compile. This is why Emacs'
-'M-x compile' command passes the '-k' flag by default.
-
-
-File: make.info, Node: Options Summary, Prev: Testing, Up: Running
-
-9.7 Summary of Options
-======================
-
-Here is a table of all the options 'make' understands:
-
-'-b'
-'-m'
- These options are ignored for compatibility with other versions of
- 'make'.
-
-'-B'
-'--always-make'
- Consider all targets out-of-date. GNU 'make' proceeds to consider
- targets and their prerequisites using the normal algorithms;
- however, all targets so considered are always remade regardless of
- the status of their prerequisites. To avoid infinite recursion, if
- 'MAKE_RESTARTS' (*note Other Special Variables: Special Variables.)
- is set to a number greater than 0 this option is disabled when
- considering whether to remake makefiles (*note How Makefiles Are
- Remade: Remaking Makefiles.).
-
-'-C DIR'
-'--directory=DIR'
- Change to directory DIR before reading the makefiles. If multiple
- '-C' options are specified, each is interpreted relative to the
- previous one: '-C / -C etc' is equivalent to '-C /etc'. This is
- typically used with recursive invocations of 'make' (*note
- Recursive Use of 'make': Recursion.).
-
-'-d'
-
- Print debugging information in addition to normal processing. The
- debugging information says which files are being considered for
- remaking, which file-times are being compared and with what
- results, which files actually need to be remade, which implicit
- rules are considered and which are applied--everything interesting
- about how 'make' decides what to do. The '-d' option is equivalent
- to '--debug=a' (see below).
-
-'--debug[=OPTIONS]'
-
- Print debugging information in addition to normal processing.
- Various levels and types of output can be chosen. With no
- arguments, print the "basic" level of debugging. Possible
- arguments are below; only the first character is considered, and
- values must be comma- or space-separated.
-
- 'a (all)'
- All types of debugging output are enabled. This is equivalent
- to using '-d'.
-
- 'b (basic)'
- Basic debugging prints each target that was found to be
- out-of-date, and whether the build was successful or not.
-
- 'v (verbose)'
- A level above 'basic'; includes messages about which makefiles
- were parsed, prerequisites that did not need to be rebuilt,
- etc. This option also enables 'basic' messages.
-
- 'i (implicit)'
- Prints messages describing the implicit rule searches for each
- target. This option also enables 'basic' messages.
-
- 'j (jobs)'
- Prints messages giving details on the invocation of specific
- sub-commands.
-
- 'm (makefile)'
- By default, the above messages are not enabled while trying to
- remake the makefiles. This option enables messages while
- rebuilding makefiles, too. Note that the 'all' option does
- enable this option. This option also enables 'basic'
- messages.
-
- 'n (none)'
- Disable all debugging currently enabled. If additional
- debugging flags are encountered after this they will still
- take effect.
-
-'-e'
-'--environment-overrides'
- Give variables taken from the environment precedence over variables
- from makefiles. *Note Variables from the Environment: Environment.
-
-'--eval=STRING'
-
- Evaluate STRING as makefile syntax. This is a command-line version
- of the 'eval' function (*note Eval Function::). The evaluation is
- performed after the default rules and variables have been defined,
- but before any makefiles are read.
-
-'-f FILE'
-'--file=FILE'
-'--makefile=FILE'
- Read the file named FILE as a makefile. *Note Writing Makefiles:
- Makefiles.
-
-'-h'
-'--help'
-
- Remind you of the options that 'make' understands and then exit.
-
-'-i'
-'--ignore-errors'
- Ignore all errors in recipes executed to remake files. *Note
- Errors in Recipes: Errors.
-
-'-I DIR'
-'--include-dir=DIR'
- Specifies a directory DIR to search for included makefiles. *Note
- Including Other Makefiles: Include. If several '-I' options are
- used to specify several directories, the directories are searched
- in the order specified.
-
-'-j [JOBS]'
-'--jobs[=JOBS]'
- Specifies the number of recipes (jobs) to run simultaneously. With
- no argument, 'make' runs as many recipes simultaneously as
- possible. If there is more than one '-j' option, the last one is
- effective. *Note Parallel Execution: Parallel, for more
- information on how recipes are run. Note that this option is
- ignored on MS-DOS.
-
-'-k'
-'--keep-going'
- Continue as much as possible after an error. While the target that
- failed, and those that depend on it, cannot be remade, the other
- prerequisites of these targets can be processed all the same.
- *Note Testing the Compilation of a Program: Testing.
-
-'-l [LOAD]'
-'--load-average[=LOAD]'
-'--max-load[=LOAD]'
- Specifies that no new recipes should be started if there are other
- recipes running and the load average is at least LOAD (a
- floating-point number). With no argument, removes a previous load
- limit. *Note Parallel Execution: Parallel.
-
-'-L'
-'--check-symlink-times'
- On systems that support symbolic links, this option causes 'make'
- to consider the timestamps on any symbolic links in addition to the
- timestamp on the file referenced by those links. When this option
- is provided, the most recent timestamp among the file and the
- symbolic links is taken as the modification time for this target
- file.
-
-'-n'
-'--just-print'
-'--dry-run'
-'--recon'
-
- Print the recipe that would be executed, but do not execute it
- (except in certain circumstances). *Note Instead of Executing
- Recipes: Instead of Execution.
-
-'-o FILE'
-'--old-file=FILE'
-'--assume-old=FILE'
- Do not remake the file FILE even if it is older than its
- prerequisites, and do not remake anything on account of changes in
- FILE. Essentially the file is treated as very old and its rules
- are ignored. *Note Avoiding Recompilation of Some Files: Avoiding
- Compilation.
-
-'-O[TYPE]'
-'--output-sync[=TYPE]'
- Ensure that the complete output from each recipe is printed in one
- uninterrupted sequence. This option is only useful when using the
- '--jobs' option to run multiple recipes simultaneously (*note
- Parallel Execution: Parallel.) Without this option output will be
- displayed as it is generated by the recipes.
-
- With no type or the type 'target', output from the entire recipe of
- each target is grouped together. With the type 'line', output from
- each line in the recipe is grouped together. With the type
- 'recurse', the output from an entire recursive make is grouped
- together. With the type 'none', no output synchronization is
- performed. *Note Output During Parallel Execution: Parallel
- Output.
-
-'-p'
-'--print-data-base'
- Print the data base (rules and variable values) that results from
- reading the makefiles; then execute as usual or as otherwise
- specified. This also prints the version information given by the
- '-v' switch (see below). To print the data base without trying to
- remake any files, use 'make -qp'. To print the data base of
- predefined rules and variables, use 'make -p -f /dev/null'. The
- data base output contains file name and line number information for
- recipe and variable definitions, so it can be a useful debugging
- tool in complex environments.
-
-'-q'
-'--question'
- "Question mode". Do not run any recipes, or print anything; just
- return an exit status that is zero if the specified targets are
- already up to date, one if any remaking is required, or two if an
- error is encountered. *Note Instead of Executing Recipes: Instead
- of Execution.
-
-'-r'
-'--no-builtin-rules'
- Eliminate use of the built-in implicit rules (*note Using Implicit
- Rules: Implicit Rules.). You can still define your own by writing
- pattern rules (*note Defining and Redefining Pattern Rules: Pattern
- Rules.). The '-r' option also clears out the default list of
- suffixes for suffix rules (*note Old-Fashioned Suffix Rules: Suffix
- Rules.). But you can still define your own suffixes with a rule
- for '.SUFFIXES', and then define your own suffix rules. Note that
- only _rules_ are affected by the '-r' option; default variables
- remain in effect (*note Variables Used by Implicit Rules: Implicit
- Variables.); see the '-R' option below.
-
-'-R'
-'--no-builtin-variables'
- Eliminate use of the built-in rule-specific variables (*note
- Variables Used by Implicit Rules: Implicit Variables.). You can
- still define your own, of course. The '-R' option also
- automatically enables the '-r' option (see above), since it doesn't
- make sense to have implicit rules without any definitions for the
- variables that they use.
-
-'-s'
-'--silent'
-'--quiet'
-
- Silent operation; do not print the recipes as they are executed.
- *Note Recipe Echoing: Echoing.
-
-'-S'
-'--no-keep-going'
-'--stop'
-
- Cancel the effect of the '-k' option. This is never necessary
- except in a recursive 'make' where '-k' might be inherited from the
- top-level 'make' via 'MAKEFLAGS' (*note Recursive Use of 'make':
- Recursion.) or if you set '-k' in 'MAKEFLAGS' in your environment.
-
-'-t'
-'--touch'
-
- Touch files (mark them up to date without really changing them)
- instead of running their recipes. This is used to pretend that the
- recipes were done, in order to fool future invocations of 'make'.
- *Note Instead of Executing Recipes: Instead of Execution.
-
-'--trace'
- Show tracing information for 'make' execution. Prints the entire
- recipe to be executed, even for recipes that are normally silent
- (due to '.SILENT' or '@'). Also prints the makefile name and line
- number where the recipe was defined, and information on why the
- target is being rebuilt.
-
-'-v'
-'--version'
- Print the version of the 'make' program plus a copyright, a list of
- authors, and a notice that there is no warranty; then exit.
-
-'-w'
-'--print-directory'
- Print a message containing the working directory both before and
- after executing the makefile. This may be useful for tracking down
- errors from complicated nests of recursive 'make' commands. *Note
- Recursive Use of 'make': Recursion. (In practice, you rarely need
- to specify this option since 'make' does it for you; see *note The
- '--print-directory' Option: -w Option.)
-
-'--no-print-directory'
- Disable printing of the working directory under '-w'. This option
- is useful when '-w' is turned on automatically, but you do not want
- to see the extra messages. *Note The '--print-directory' Option:
- -w Option.
-
-'-W FILE'
-'--what-if=FILE'
-'--new-file=FILE'
-'--assume-new=FILE'
- Pretend that the target FILE has just been modified. When used
- with the '-n' flag, this shows you what would happen if you were to
- modify that file. Without '-n', it is almost the same as running a
- 'touch' command on the given file before running 'make', except
- that the modification time is changed only in the imagination of
- 'make'. *Note Instead of Executing Recipes: Instead of Execution.
-
-'--warn-undefined-variables'
- Issue a warning message whenever 'make' sees a reference to an
- undefined variable. This can be helpful when you are trying to
- debug makefiles which use variables in complex ways.
-
diff --git a/doc/make.info-2 b/doc/make.info-2
index e52cb17..8af29d7 100644
--- a/doc/make.info-2
+++ b/doc/make.info-2
@@ -1,15 +1,16 @@
-This is make.info, produced by makeinfo version 6.1 from make.texi.
+This is make.info, produced by makeinfo version 6.6 from make.texi.
This file documents the GNU 'make' utility, which determines
automatically which pieces of a large program need to be recompiled, and
issues the commands to recompile them.
- This is Edition 0.74, last updated 21 May 2016, of 'The GNU Make
-Manual', for GNU 'make' version 4.2.1.
+ This is Edition 0.75, last updated 19 January 2020, of 'The GNU Make
+Manual', for GNU 'make' version 4.3.
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-2010, 2011, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc.
+2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Free
+Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
@@ -28,6 +29,337 @@ START-INFO-DIR-ENTRY
END-INFO-DIR-ENTRY

+File: make.info, Node: Testing, Next: Options Summary, Prev: Overriding, Up: Running
+
+9.6 Testing the Compilation of a Program
+========================================
+
+Normally, when an error happens in executing a shell command, 'make'
+gives up immediately, returning a nonzero status. No further recipes
+are executed for any target. The error implies that the goal cannot be
+correctly remade, and 'make' reports this as soon as it knows.
+
+ When you are compiling a program that you have just changed, this is
+not what you want. Instead, you would rather that 'make' try compiling
+every file that can be tried, to show you as many compilation errors as
+possible.
+
+ On these occasions, you should use the '-k' or '--keep-going' flag.
+This tells 'make' to continue to consider the other prerequisites of the
+pending targets, remaking them if necessary, before it gives up and
+returns nonzero status. For example, after an error in compiling one
+object file, 'make -k' will continue compiling other object files even
+though it already knows that linking them will be impossible. In
+addition to continuing after failed shell commands, 'make -k' will
+continue as much as possible after discovering that it does not know how
+to make a target or prerequisite file. This will always cause an error
+message, but without '-k', it is a fatal error (*note Summary of
+Options: Options Summary.).
+
+ The usual behavior of 'make' assumes that your purpose is to get the
+goals up to date; once 'make' learns that this is impossible, it might
+as well report the failure immediately. The '-k' flag says that the
+real purpose is to test as much as possible of the changes made in the
+program, perhaps to find several independent problems so that you can
+correct them all before the next attempt to compile. This is why Emacs'
+'M-x compile' command passes the '-k' flag by default.
+
+
+File: make.info, Node: Options Summary, Prev: Testing, Up: Running
+
+9.7 Summary of Options
+======================
+
+Here is a table of all the options 'make' understands:
+
+'-b'
+'-m'
+ These options are ignored for compatibility with other versions of
+ 'make'.
+
+'-B'
+'--always-make'
+ Consider all targets out-of-date. GNU 'make' proceeds to consider
+ targets and their prerequisites using the normal algorithms;
+ however, all targets so considered are always remade regardless of
+ the status of their prerequisites. To avoid infinite recursion, if
+ 'MAKE_RESTARTS' (*note Other Special Variables: Special Variables.)
+ is set to a number greater than 0 this option is disabled when
+ considering whether to remake makefiles (*note How Makefiles Are
+ Remade: Remaking Makefiles.).
+
+'-C DIR'
+'--directory=DIR'
+ Change to directory DIR before reading the makefiles. If multiple
+ '-C' options are specified, each is interpreted relative to the
+ previous one: '-C / -C etc' is equivalent to '-C /etc'. This is
+ typically used with recursive invocations of 'make' (*note
+ Recursive Use of 'make': Recursion.).
+
+'-d'
+
+ Print debugging information in addition to normal processing. The
+ debugging information says which files are being considered for
+ remaking, which file-times are being compared and with what
+ results, which files actually need to be remade, which implicit
+ rules are considered and which are applied--everything interesting
+ about how 'make' decides what to do. The '-d' option is equivalent
+ to '--debug=a' (see below).
+
+'--debug[=OPTIONS]'
+
+ Print debugging information in addition to normal processing.
+ Various levels and types of output can be chosen. With no
+ arguments, print the "basic" level of debugging. Possible
+ arguments are below; only the first character is considered, and
+ values must be comma- or space-separated.
+
+ 'a (all)'
+ All types of debugging output are enabled. This is equivalent
+ to using '-d'.
+
+ 'b (basic)'
+ Basic debugging prints each target that was found to be
+ out-of-date, and whether the build was successful or not.
+
+ 'v (verbose)'
+ A level above 'basic'; includes messages about which makefiles
+ were parsed, prerequisites that did not need to be rebuilt,
+ etc. This option also enables 'basic' messages.
+
+ 'i (implicit)'
+ Prints messages describing the implicit rule searches for each
+ target. This option also enables 'basic' messages.
+
+ 'j (jobs)'
+ Prints messages giving details on the invocation of specific
+ sub-commands.
+
+ 'm (makefile)'
+ By default, the above messages are not enabled while trying to
+ remake the makefiles. This option enables messages while
+ rebuilding makefiles, too. Note that the 'all' option does
+ enable this option. This option also enables 'basic'
+ messages.
+
+ 'n (none)'
+ Disable all debugging currently enabled. If additional
+ debugging flags are encountered after this they will still
+ take effect.
+
+'-e'
+'--environment-overrides'
+ Give variables taken from the environment precedence over variables
+ from makefiles. *Note Variables from the Environment: Environment.
+
+'-E STRING'
+'--eval=STRING'
+
+ Evaluate STRING as makefile syntax. This is a command-line version
+ of the 'eval' function (*note Eval Function::). The evaluation is
+ performed after the default rules and variables have been defined,
+ but before any makefiles are read.
+
+'-f FILE'
+'--file=FILE'
+'--makefile=FILE'
+ Read the file named FILE as a makefile. *Note Writing Makefiles:
+ Makefiles.
+
+'-h'
+'--help'
+
+ Remind you of the options that 'make' understands and then exit.
+
+'-i'
+'--ignore-errors'
+ Ignore all errors in recipes executed to remake files. *Note
+ Errors in Recipes: Errors.
+
+'-I DIR'
+'--include-dir=DIR'
+ Specifies a directory DIR to search for included makefiles. *Note
+ Including Other Makefiles: Include. If several '-I' options are
+ used to specify several directories, the directories are searched
+ in the order specified.
+
+'-j [JOBS]'
+'--jobs[=JOBS]'
+ Specifies the number of recipes (jobs) to run simultaneously. With
+ no argument, 'make' runs as many recipes simultaneously as
+ possible. If there is more than one '-j' option, the last one is
+ effective. *Note Parallel Execution: Parallel, for more
+ information on how recipes are run. Note that this option is
+ ignored on MS-DOS.
+
+'-k'
+'--keep-going'
+ Continue as much as possible after an error. While the target that
+ failed, and those that depend on it, cannot be remade, the other
+ prerequisites of these targets can be processed all the same.
+ *Note Testing the Compilation of a Program: Testing.
+
+'-l [LOAD]'
+'--load-average[=LOAD]'
+'--max-load[=LOAD]'
+ Specifies that no new recipes should be started if there are other
+ recipes running and the load average is at least LOAD (a
+ floating-point number). With no argument, removes a previous load
+ limit. *Note Parallel Execution: Parallel.
+
+'-L'
+'--check-symlink-times'
+ On systems that support symbolic links, this option causes 'make'
+ to consider the timestamps on any symbolic links in addition to the
+ timestamp on the file referenced by those links. When this option
+ is provided, the most recent timestamp among the file and the
+ symbolic links is taken as the modification time for this target
+ file.
+
+'-n'
+'--just-print'
+'--dry-run'
+'--recon'
+
+ Print the recipe that would be executed, but do not execute it
+ (except in certain circumstances). *Note Instead of Executing
+ Recipes: Instead of Execution.
+
+'-o FILE'
+'--old-file=FILE'
+'--assume-old=FILE'
+ Do not remake the file FILE even if it is older than its
+ prerequisites, and do not remake anything on account of changes in
+ FILE. Essentially the file is treated as very old and its rules
+ are ignored. *Note Avoiding Recompilation of Some Files: Avoiding
+ Compilation.
+
+'-O[TYPE]'
+'--output-sync[=TYPE]'
+ Ensure that the complete output from each recipe is printed in one
+ uninterrupted sequence. This option is only useful when using the
+ '--jobs' option to run multiple recipes simultaneously (*note
+ Parallel Execution: Parallel.) Without this option output will be
+ displayed as it is generated by the recipes.
+
+ With no type or the type 'target', output from the entire recipe of
+ each target is grouped together. With the type 'line', output from
+ each line in the recipe is grouped together. With the type
+ 'recurse', the output from an entire recursive make is grouped
+ together. With the type 'none', no output synchronization is
+ performed. *Note Output During Parallel Execution: Parallel
+ Output.
+
+'-p'
+'--print-data-base'
+ Print the data base (rules and variable values) that results from
+ reading the makefiles; then execute as usual or as otherwise
+ specified. This also prints the version information given by the
+ '-v' switch (see below). To print the data base without trying to
+ remake any files, use 'make -qp'. To print the data base of
+ predefined rules and variables, use 'make -p -f /dev/null'. The
+ data base output contains file name and line number information for
+ recipe and variable definitions, so it can be a useful debugging
+ tool in complex environments.
+
+'-q'
+'--question'
+ "Question mode". Do not run any recipes, or print anything; just
+ return an exit status that is zero if the specified targets are
+ already up to date, one if any remaking is required, or two if an
+ error is encountered. *Note Instead of Executing Recipes: Instead
+ of Execution.
+
+'-r'
+'--no-builtin-rules'
+ Eliminate use of the built-in implicit rules (*note Using Implicit
+ Rules: Implicit Rules.). You can still define your own by writing
+ pattern rules (*note Defining and Redefining Pattern Rules: Pattern
+ Rules.). The '-r' option also clears out the default list of
+ suffixes for suffix rules (*note Old-Fashioned Suffix Rules: Suffix
+ Rules.). But you can still define your own suffixes with a rule
+ for '.SUFFIXES', and then define your own suffix rules. Note that
+ only _rules_ are affected by the '-r' option; default variables
+ remain in effect (*note Variables Used by Implicit Rules: Implicit
+ Variables.); see the '-R' option below.
+
+'-R'
+'--no-builtin-variables'
+ Eliminate use of the built-in rule-specific variables (*note
+ Variables Used by Implicit Rules: Implicit Variables.). You can
+ still define your own, of course. The '-R' option also
+ automatically enables the '-r' option (see above), since it doesn't
+ make sense to have implicit rules without any definitions for the
+ variables that they use.
+
+'-s'
+'--silent'
+'--quiet'
+
+ Silent operation; do not print the recipes as they are executed.
+ *Note Recipe Echoing: Echoing.
+
+'-S'
+'--no-keep-going'
+'--stop'
+
+ Cancel the effect of the '-k' option. This is never necessary
+ except in a recursive 'make' where '-k' might be inherited from the
+ top-level 'make' via 'MAKEFLAGS' (*note Recursive Use of 'make':
+ Recursion.) or if you set '-k' in 'MAKEFLAGS' in your environment.
+
+'-t'
+'--touch'
+
+ Touch files (mark them up to date without really changing them)
+ instead of running their recipes. This is used to pretend that the
+ recipes were done, in order to fool future invocations of 'make'.
+ *Note Instead of Executing Recipes: Instead of Execution.
+
+'--trace'
+ Show tracing information for 'make' execution. Prints the entire
+ recipe to be executed, even for recipes that are normally silent
+ (due to '.SILENT' or '@'). Also prints the makefile name and line
+ number where the recipe was defined, and information on why the
+ target is being rebuilt.
+
+'-v'
+'--version'
+ Print the version of the 'make' program plus a copyright, a list of
+ authors, and a notice that there is no warranty; then exit.
+
+'-w'
+'--print-directory'
+ Print a message containing the working directory both before and
+ after executing the makefile. This may be useful for tracking down
+ errors from complicated nests of recursive 'make' commands. *Note
+ Recursive Use of 'make': Recursion. (In practice, you rarely need
+ to specify this option since 'make' does it for you; see *note The
+ '--print-directory' Option: -w Option.)
+
+'--no-print-directory'
+ Disable printing of the working directory under '-w'. This option
+ is useful when '-w' is turned on automatically, but you do not want
+ to see the extra messages. *Note The '--print-directory' Option:
+ -w Option.
+
+'-W FILE'
+'--what-if=FILE'
+'--new-file=FILE'
+'--assume-new=FILE'
+ Pretend that the target FILE has just been modified. When used
+ with the '-n' flag, this shows you what would happen if you were to
+ modify that file. Without '-n', it is almost the same as running a
+ 'touch' command on the given file before running 'make', except
+ that the modification time is changed only in the imagination of
+ 'make'. *Note Instead of Executing Recipes: Instead of Execution.
+
+'--warn-undefined-variables'
+ Issue a warning message whenever 'make' sees a reference to an
+ undefined variable. This can be helpful when you are trying to
+ debug makefiles which use variables in complex ways.
+
+
File: make.info, Node: Implicit Rules, Next: Archives, Prev: Running, Up: Top
10 Using Implicit Rules
@@ -599,6 +931,11 @@ linking with a single 'cc' command. The optimized rule is used in
preference to the step-by-step chain because it comes earlier in the
ordering of rules.
+ Finally, for performance reasons 'make' will not consider
+non-terminal match-anything rules (i.e., '%:') when searching for a rule
+to build a prerequisite of an implicit rule (*note Match-Anything
+Rules::).
+

File: make.info, Node: Pattern Rules, Next: Last Resort, Prev: Chained Rules, Up: Implicit Rules
@@ -676,16 +1013,10 @@ pattern. *Note Last Resort::.
will choose the "best fit" rule. *Note How Patterns Match: Pattern
Match.
- Pattern rules may have more than one target. Unlike normal rules,
-this does not act as many different rules with the same prerequisites
-and recipe. If a pattern rule has multiple targets, 'make' knows that
-the rule's recipe is responsible for making all of the targets. The
-recipe is executed only once to make all the targets. When searching
-for a pattern rule to match a target, the target patterns of a rule
-other than the one that matches the target in need of a rule are
-incidental: 'make' worries only about giving a recipe and prerequisites
-to the file presently in question. However, when this file's recipe is
-run, the other targets are marked as having been updated themselves.
+ Pattern rules may have more than one target; however, every target
+must contain a '%' character. Pattern rules are always treated as
+grouped targets (*note Multiple Targets in a Rule: Multiple Targets.)
+regardless of whether they use the ':' or '&:' separator.

File: make.info, Node: Pattern Examples, Next: Automatic Variables, Prev: Pattern Intro, Up: Pattern Rules
@@ -781,8 +1112,9 @@ prerequisite lists.
'$?'
The names of all the prerequisites that are newer than the target,
- with spaces between them. For prerequisites which are archive
- members, only the named member is used (*note Archives::).
+ with spaces between them. If the target does not exist, all
+ prerequisites will be included. For prerequisites which are
+ archive members, only the named member is used (*note Archives::).
'$^'
The names of all the prerequisites, with spaces between them. For
@@ -837,12 +1169,11 @@ files. This rule copies just the changed object files into the archive:
names, and three have values that are lists of file names. These seven
have variants that get just the file's directory name or just the file
name within the directory. The variant variables' names are formed by
-appending 'D' or 'F', respectively. These variants are semi-obsolete in
-GNU 'make' since the functions 'dir' and 'notdir' can be used to get a
-similar effect (*note Functions for File Names: File Name Functions.).
-Note, however, that the 'D' variants all omit the trailing slash which
-always appears in the output of the 'dir' function. Here is a table of
-the variants:
+appending 'D' or 'F', respectively. The functions 'dir' and 'notdir'
+can be used to obtain a similar effect (*note Functions for File Names:
+File Name Functions.). Note, however, that the 'D' variants all omit
+the trailing slash which always appears in the output of the 'dir'
+function. Here is a table of the variants:
'$(@D)'
The directory part of the file name of the target, with the
@@ -1009,10 +1340,10 @@ remade from any other files; therefore, 'make' can save time by not
looking for ways to remake them.
If you do not mark the match-anything rule as terminal, then it is
-non-terminal. A non-terminal match-anything rule cannot apply to a file
-name that indicates a specific type of data. A file name indicates a
-specific type of data if some non-match-anything implicit rule target
-matches it.
+non-terminal. A non-terminal match-anything rule cannot apply to a
+prerequisite of an implicit rule, or to a file name that indicates a
+specific type of data. A file name indicates a specific type of data if
+some non-match-anything implicit rule target matches it.
For example, the file name 'foo.c' matches the target for the pattern
rule '%.c : %.y' (the rule to run Yacc). Regardless of whether this
@@ -1123,8 +1454,8 @@ with old makefiles. They come in two kinds: "double-suffix" and
suffix and the source suffix. It matches any file whose name ends with
the target suffix. The corresponding implicit prerequisite is made by
replacing the target suffix with the source suffix in the file name. A
-two-suffix rule whose target and source suffixes are '.o' and '.c' is
-equivalent to the pattern rule '%.o : %.c'.
+two-suffix rule '.c.o' (whose target and source suffixes are '.o' and
+'.c') is equivalent to the pattern rule '%.o : %.c'.
A single-suffix rule is defined by a single suffix, which is the
source suffix. It matches any file name, and the corresponding implicit
@@ -1223,8 +1554,9 @@ rule.
or N. If the target pattern contains a slash, it is matched
against T; otherwise, against N.
- 3. If any rule in that list is _not_ a match-anything rule, then
- remove all non-terminal match-anything rules from the list.
+ 3. If any rule in that list is _not_ a match-anything rule, or if T is
+ a prerequisite of an implicit rule, then remove all non-terminal
+ match-anything rules from the list.
4. Remove from the list all rules with no recipe.
@@ -2139,7 +2471,8 @@ On POSIX systems the jobserver is implemented as a simple UNIX pipe.
The pipe will be pre-loaded with one single-character token for each
available job. To obtain an extra slot you must read a single character
from the jobserver pipe; to release a slot you must write a single
-character back into the jobserver pipe.
+character back into the jobserver pipe. Note that the read side of the
+jobserver pipe is set to "blocking" mode.
To access the pipe you must parse the 'MAKEFLAGS' variable and look
for the argument string '--jobserver-auth=R,W' where 'R' and 'W' are
@@ -2499,7 +2832,7 @@ features.
(*note Searching Directories for Prerequisites: Directory Search.)
have their names changed inside recipes. We feel it is much
cleaner to always use automatic variables and thus make this
- feature obsolete.
+ feature unnecessary.
* In some Unix 'make's, the automatic variable '$*' appearing in the
prerequisites of a rule has the amazingly strange "feature" of
@@ -4100,16 +4433,19 @@ the file and line number containing the problem.
'multiple target patterns. Stop.'
'target pattern contains no `%'. Stop.'
'mixed implicit and static pattern rules. Stop.'
- These are generated for malformed static pattern rules. The first
- means there's no pattern in the target section of the rule; the
- second means there are multiple patterns in the target section; the
- third means the target doesn't contain a pattern character ('%');
- and the fourth means that all three parts of the static pattern
- rule contain pattern characters ('%')-only the first two parts
- should. If you see these errors and you aren't trying to create a
- static pattern rule, check the value of any variables in your
- target and prerequisite lists to be sure they do not contain
- colons. *Note Syntax of Static Pattern Rules: Static Usage.
+ These errors are generated for malformed static pattern rules
+ (*note Syntax of Static Pattern Rules: Static Usage.). The first
+ means the target-pattern part of the rule is empty; the second
+ means there are multiple pattern characters ('%') in the
+ target-pattern part; the third means there are no pattern
+ characters in the target-pattern part; and the fourth means that
+ all three parts of the static pattern rule contain pattern
+ characters ('%')-the first part should not contain pattern
+ characters.
+
+ If you see these errors and you aren't trying to create a static
+ pattern rule, check the value of any variables in your target and
+ prerequisite lists to be sure they do not contain colons.
'warning: -jN forced in submake: disabling jobserver mode.'
This warning and the next are generated if 'make' detects error
@@ -4135,6 +4471,20 @@ the file and line number containing the problem.
case, the child will generate this warning message and proceed with
its build in a sequential manner.
+'warning: ignoring prerequisites on suffix rule definition'
+ According to POSIX, a suffix rule cannot contain prerequisites. If
+ a rule that could be a suffix rule has prerequisites it is
+ interpreted as a simple explicit rule, with an odd target name.
+ This requirement is obeyed when POSIX-conforming mode is enabled
+ (the '.POSIX' target is defined). In versions of GNU 'make' prior
+ to 4.3, no warning was emitted and a suffix rule was created,
+ however all prerequisites were ignored and were not part of the
+ suffix rule. Starting with GNU 'make' 4.3 the behavior is the
+ same, and in addition this warning is generated. In a future
+ version the POSIX-conforming behavior will be the only behavior: no
+ rule with a prerequisite can be suffix rule and this warning will
+ be removed.
+

File: make.info, Node: Complex Makefile, Next: GNU Free Documentation License, Prev: Error Messages, Up: Top
@@ -4372,13 +4722,13 @@ distribution kits.

File: make.info, Node: GNU Free Documentation License, Next: Concept Index, Prev: Complex Makefile, Up: Top
-C.1 GNU Free Documentation License
-==================================
+Appendix D GNU Free Documentation License
+*****************************************
Version 1.3, 3 November 2008
Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
- <http://fsf.org/>
+ <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -4775,7 +5125,7 @@ C.1 GNU Free Documentation License
the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
- <http://www.gnu.org/copyleft/>.
+ <https://www.gnu.org/copyleft/>.
Each version of the License is given a distinguishing version
number. If the Document specifies that a particular numbered
@@ -4861,7 +5211,7 @@ Index of Concepts
* Menu:
* !=: Setting. (line 6)
-* !=, expansion: Reading Makefiles. (line 33)
+* !=, expansion: Reading Makefiles. (line 34)
* # (comments), in makefile: Makefile Contents. (line 41)
* # (comments), in recipes: Recipe Syntax. (line 29)
* #include: Automatic Prerequisites.
@@ -4883,21 +5233,21 @@ Index of Concepts
(line 67)
* +, and recipes: MAKE Variable. (line 18)
* +=: Appending. (line 6)
-* +=, expansion: Reading Makefiles. (line 33)
-* +=, expansion <1>: Reading Makefiles. (line 33)
+* +=, expansion: Reading Makefiles. (line 34)
+* +=, expansion <1>: Reading Makefiles. (line 34)
* ,v (RCS file extension): Catalogue of Rules. (line 163)
* - (in recipes): Errors. (line 19)
* -, and define: Canned Recipes. (line 49)
* --always-make: Options Summary. (line 15)
* --assume-new: Instead of Execution.
(line 41)
-* --assume-new <1>: Options Summary. (line 284)
+* --assume-new <1>: Options Summary. (line 285)
* --assume-new, and recursion: Options/Recursion. (line 22)
* --assume-old: Avoiding Compilation.
(line 6)
-* --assume-old <1>: Options Summary. (line 163)
+* --assume-old <1>: Options Summary. (line 164)
* --assume-old, and recursion: Options/Recursion. (line 22)
-* --check-symlink-times: Options Summary. (line 144)
+* --check-symlink-times: Options Summary. (line 145)
* --debug: Options Summary. (line 43)
* --directory: Recursion. (line 20)
* --directory <1>: Options Summary. (line 26)
@@ -4906,77 +5256,77 @@ Index of Concepts
* --dry-run: Echoing. (line 18)
* --dry-run <1>: Instead of Execution.
(line 14)
-* --dry-run <2>: Options Summary. (line 154)
+* --dry-run <2>: Options Summary. (line 155)
* --environment-overrides: Options Summary. (line 85)
-* --eval: Options Summary. (line 89)
+* --eval: Options Summary. (line 90)
* --file: Makefile Names. (line 23)
* --file <1>: Makefile Arguments. (line 6)
-* --file <2>: Options Summary. (line 97)
+* --file <2>: Options Summary. (line 98)
* --file, and recursion: Options/Recursion. (line 22)
-* --help: Options Summary. (line 103)
+* --help: Options Summary. (line 104)
* --ignore-errors: Errors. (line 30)
-* --ignore-errors <1>: Options Summary. (line 108)
+* --ignore-errors <1>: Options Summary. (line 109)
* --include-dir: Include. (line 53)
-* --include-dir <1>: Options Summary. (line 113)
+* --include-dir <1>: Options Summary. (line 114)
* --jobs: Parallel. (line 6)
-* --jobs <1>: Options Summary. (line 120)
+* --jobs <1>: Options Summary. (line 121)
* --jobs, and recursion: Options/Recursion. (line 25)
* --just-print: Echoing. (line 18)
* --just-print <1>: Instead of Execution.
(line 14)
-* --just-print <2>: Options Summary. (line 153)
-* --keep-going: Errors. (line 47)
+* --just-print <2>: Options Summary. (line 154)
+* --keep-going: Errors. (line 46)
* --keep-going <1>: Testing. (line 16)
-* --keep-going <2>: Options Summary. (line 129)
+* --keep-going <2>: Options Summary. (line 130)
* --load-average: Parallel. (line 35)
-* --load-average <1>: Options Summary. (line 136)
+* --load-average <1>: Options Summary. (line 137)
* --makefile: Makefile Names. (line 23)
* --makefile <1>: Makefile Arguments. (line 6)
-* --makefile <2>: Options Summary. (line 98)
+* --makefile <2>: Options Summary. (line 99)
* --max-load: Parallel. (line 35)
-* --max-load <1>: Options Summary. (line 137)
+* --max-load <1>: Options Summary. (line 138)
* --new-file: Instead of Execution.
(line 41)
-* --new-file <1>: Options Summary. (line 283)
+* --new-file <1>: Options Summary. (line 284)
* --new-file, and recursion: Options/Recursion. (line 22)
-* --no-builtin-rules: Options Summary. (line 209)
-* --no-builtin-variables: Options Summary. (line 222)
-* --no-keep-going: Options Summary. (line 238)
+* --no-builtin-rules: Options Summary. (line 210)
+* --no-builtin-variables: Options Summary. (line 223)
+* --no-keep-going: Options Summary. (line 239)
* --no-print-directory: -w Option. (line 20)
-* --no-print-directory <1>: Options Summary. (line 275)
+* --no-print-directory <1>: Options Summary. (line 276)
* --old-file: Avoiding Compilation.
(line 6)
-* --old-file <1>: Options Summary. (line 162)
+* --old-file <1>: Options Summary. (line 163)
* --old-file, and recursion: Options/Recursion. (line 22)
* --output-sync: Parallel Output. (line 11)
-* --output-sync <1>: Options Summary. (line 171)
-* --print-data-base: Options Summary. (line 187)
-* --print-directory: Options Summary. (line 267)
+* --output-sync <1>: Options Summary. (line 172)
+* --print-data-base: Options Summary. (line 188)
+* --print-directory: Options Summary. (line 268)
* --print-directory, and --directory: -w Option. (line 20)
* --print-directory, and recursion: -w Option. (line 20)
* --print-directory, disabling: -w Option. (line 20)
* --question: Instead of Execution.
(line 32)
-* --question <1>: Options Summary. (line 201)
+* --question <1>: Options Summary. (line 202)
* --quiet: Echoing. (line 24)
-* --quiet <1>: Options Summary. (line 232)
+* --quiet <1>: Options Summary. (line 233)
* --recon: Echoing. (line 18)
* --recon <1>: Instead of Execution.
(line 14)
-* --recon <2>: Options Summary. (line 155)
+* --recon <2>: Options Summary. (line 156)
* --silent: Echoing. (line 24)
-* --silent <1>: Options Summary. (line 231)
-* --stop: Options Summary. (line 239)
+* --silent <1>: Options Summary. (line 232)
+* --stop: Options Summary. (line 240)
* --touch: Instead of Execution.
(line 24)
-* --touch <1>: Options Summary. (line 247)
+* --touch <1>: Options Summary. (line 248)
* --touch, and recursion: MAKE Variable. (line 35)
-* --trace: Options Summary. (line 254)
-* --version: Options Summary. (line 262)
-* --warn-undefined-variables: Options Summary. (line 292)
+* --trace: Options Summary. (line 255)
+* --version: Options Summary. (line 263)
+* --warn-undefined-variables: Options Summary. (line 293)
* --what-if: Instead of Execution.
(line 41)
-* --what-if <1>: Options Summary. (line 282)
+* --what-if <1>: Options Summary. (line 283)
* -b: Options Summary. (line 9)
* -B: Options Summary. (line 14)
* -C: Recursion. (line 20)
@@ -4985,26 +5335,27 @@ Index of Concepts
* -C, and recursion: Options/Recursion. (line 22)
* -d: Options Summary. (line 33)
* -e: Options Summary. (line 84)
+* -E: Options Summary. (line 89)
* -e (shell flag): Automatic Prerequisites.
(line 65)
* -f: Makefile Names. (line 23)
* -f <1>: Makefile Arguments. (line 6)
-* -f <2>: Options Summary. (line 96)
+* -f <2>: Options Summary. (line 97)
* -f, and recursion: Options/Recursion. (line 22)
-* -h: Options Summary. (line 102)
+* -h: Options Summary. (line 103)
* -I: Include. (line 53)
* -i: Errors. (line 30)
-* -i <1>: Options Summary. (line 107)
-* -I <1>: Options Summary. (line 112)
+* -i <1>: Options Summary. (line 108)
+* -I <1>: Options Summary. (line 113)
* -j: Parallel. (line 6)
-* -j <1>: Options Summary. (line 119)
+* -j <1>: Options Summary. (line 120)
* -j, and archive update: Archive Pitfalls. (line 6)
* -j, and recursion: Options/Recursion. (line 25)
-* -k: Errors. (line 47)
+* -k: Errors. (line 46)
* -k <1>: Testing. (line 16)
-* -k <2>: Options Summary. (line 128)
-* -l: Options Summary. (line 135)
-* -L: Options Summary. (line 143)
+* -k <2>: Options Summary. (line 129)
+* -l: Options Summary. (line 136)
+* -L: Options Summary. (line 144)
* -l (library search): Libraries/Search. (line 6)
* -l (load average): Parallel. (line 35)
* -m: Options Summary. (line 10)
@@ -5015,31 +5366,31 @@ Index of Concepts
* -n: Echoing. (line 18)
* -n <1>: Instead of Execution.
(line 14)
-* -n <2>: Options Summary. (line 152)
+* -n <2>: Options Summary. (line 153)
* -O: Parallel Output. (line 11)
* -o: Avoiding Compilation.
(line 6)
-* -o <1>: Options Summary. (line 161)
-* -O <1>: Options Summary. (line 170)
+* -o <1>: Options Summary. (line 162)
+* -O <1>: Options Summary. (line 171)
* -o, and recursion: Options/Recursion. (line 22)
-* -p: Options Summary. (line 186)
+* -p: Options Summary. (line 187)
* -q: Instead of Execution.
(line 32)
-* -q <1>: Options Summary. (line 200)
-* -r: Options Summary. (line 208)
-* -R: Options Summary. (line 221)
+* -q <1>: Options Summary. (line 201)
+* -r: Options Summary. (line 209)
+* -R: Options Summary. (line 222)
* -s: Echoing. (line 24)
-* -s <1>: Options Summary. (line 230)
-* -S: Options Summary. (line 237)
+* -s <1>: Options Summary. (line 231)
+* -S: Options Summary. (line 238)
* -t: Instead of Execution.
(line 24)
-* -t <1>: Options Summary. (line 246)
+* -t <1>: Options Summary. (line 247)
* -t, and recursion: MAKE Variable. (line 35)
-* -v: Options Summary. (line 261)
+* -v: Options Summary. (line 262)
* -W: Instead of Execution.
(line 41)
-* -w: Options Summary. (line 266)
-* -W <1>: Options Summary. (line 281)
+* -w: Options Summary. (line 267)
+* -W <1>: Options Summary. (line 282)
* -w, and -C: -w Option. (line 20)
* -W, and recursion: Options/Recursion. (line 22)
* -w, and recursion: -w Option. (line 20)
@@ -5087,11 +5438,11 @@ Index of Concepts
* := <1>: Setting. (line 6)
* =: Flavors. (line 10)
* = <1>: Setting. (line 6)
-* =, expansion: Reading Makefiles. (line 33)
+* =, expansion: Reading Makefiles. (line 34)
* ? (wildcard character): Wildcards. (line 6)
* ?=: Flavors. (line 135)
* ?= <1>: Setting. (line 6)
-* ?=, expansion: Reading Makefiles. (line 33)
+* ?=, expansion: Reading Makefiles. (line 34)
* @ (in recipes): Echoing. (line 6)
* @, and define: Canned Recipes. (line 49)
* [...] (wildcard characters): Wildcards. (line 6)
@@ -5184,16 +5535,16 @@ Index of Concepts
* ctangle <1>: Implicit Variables. (line 103)
* cweave: Catalogue of Rules. (line 149)
* cweave <1>: Implicit Variables. (line 97)
-* data base of make rules: Options Summary. (line 187)
+* data base of make rules: Options Summary. (line 188)
* deducing recipes (implicit rules): make Deduces. (line 6)
* default directories for included makefiles: Include. (line 53)
* default goal: How Make Works. (line 11)
* default goal <1>: Rules. (line 11)
* default makefile name: Makefile Names. (line 6)
* default rules, last-resort: Last Resort. (line 6)
-* define, expansion: Reading Makefiles. (line 33)
+* define, expansion: Reading Makefiles. (line 34)
* defining variables verbatim: Multi-Line. (line 6)
-* deletion of target files: Errors. (line 64)
+* deletion of target files: Errors. (line 63)
* deletion of target files <1>: Interrupts. (line 6)
* directive: Makefile Contents. (line 28)
* directories, creating installation: Directory Variables. (line 20)
@@ -5220,7 +5571,7 @@ Index of Concepts
* E2BIG: Options/Recursion. (line 58)
* echoing of recipes: Echoing. (line 6)
* editor: Introduction. (line 22)
-* Emacs (M-x compile): Errors. (line 62)
+* Emacs (M-x compile): Errors. (line 61)
* empty recipes: Empty Recipes. (line 6)
* empty targets: Empty Targets. (line 6)
* environment: Environment. (line 6)
@@ -5242,7 +5593,7 @@ Index of Concepts
* exit status of make: Running. (line 18)
* expansion, secondary: Secondary Expansion. (line 6)
* explicit rule, definition of: Makefile Contents. (line 10)
-* explicit rule, expansion: Reading Makefiles. (line 92)
+* explicit rule, expansion: Reading Makefiles. (line 93)
* explicit rules, secondary expansion of: Secondary Expansion.
(line 104)
* exporting variables: Variables/Recursion. (line 6)
@@ -5306,21 +5657,22 @@ Index of Concepts
* goal, default: How Make Works. (line 11)
* goal, default <1>: Rules. (line 11)
* goal, how to specify: Goals. (line 6)
+* grouped targets: Multiple Targets. (line 61)
* Guile: Guile Function. (line 6)
* Guile <1>: Guile Integration. (line 6)
* Guile example: Guile Example. (line 6)
* guile, conversion of types: Guile Types. (line 6)
* home directory: Wildcards. (line 11)
* IEEE Standard 1003.2: Overview. (line 13)
-* ifdef, expansion: Reading Makefiles. (line 82)
-* ifeq, expansion: Reading Makefiles. (line 82)
-* ifndef, expansion: Reading Makefiles. (line 82)
-* ifneq, expansion: Reading Makefiles. (line 82)
+* ifdef, expansion: Reading Makefiles. (line 83)
+* ifeq, expansion: Reading Makefiles. (line 83)
+* ifndef, expansion: Reading Makefiles. (line 83)
+* ifneq, expansion: Reading Makefiles. (line 83)
* implicit rule: Implicit Rules. (line 6)
* implicit rule, and directory search: Implicit/Search. (line 6)
* implicit rule, and VPATH: Implicit/Search. (line 6)
* implicit rule, definition of: Makefile Contents. (line 16)
-* implicit rule, expansion: Reading Makefiles. (line 92)
+* implicit rule, expansion: Reading Makefiles. (line 93)
* implicit rule, how to use: Using Implicit. (line 6)
* implicit rule, introduction to: make Deduces. (line 6)
* implicit rule, predefined: Catalogue of Rules. (line 6)
@@ -5333,6 +5685,7 @@ Index of Concepts
* including (MAKEFILE_LIST variable): Special Variables. (line 8)
* including other makefiles: Include. (line 6)
* incompatibilities: Missing. (line 6)
+* independent targets: Multiple Targets. (line 14)
* Info, rule to format: Catalogue of Rules. (line 156)
* inheritance, suppressing: Suppressing Inheritance.
(line 6)
@@ -5369,8 +5722,8 @@ Index of Concepts
* lint: Catalogue of Rules. (line 143)
* lint <1>: Implicit Variables. (line 80)
* lint, rule to run: Catalogue of Rules. (line 143)
-* list of all prerequisites: Automatic Variables. (line 61)
-* list of changed prerequisites: Automatic Variables. (line 51)
+* list of all prerequisites: Automatic Variables. (line 62)
+* list of changed prerequisites: Automatic Variables. (line 52)
* load average: Parallel. (line 35)
* load directive: load Directive. (line 6)
* loaded object API: Loaded Object API. (line 6)
@@ -5406,11 +5759,12 @@ Index of Concepts
* makefile, including: Include. (line 6)
* makefile, overriding: Overriding Makefiles.
(line 6)
-* makefile, parsing: Reading Makefiles. (line 6)
+* makefile, reading: Reading Makefiles. (line 6)
* makefile, remaking of: Remaking Makefiles. (line 6)
* makefile, simple: Simple Makefile. (line 6)
* makefiles, and MAKEFILE_LIST variable: Special Variables. (line 8)
* makefiles, and special variables: Special Variables. (line 6)
+* makefiles, parsing: Parsing Makefiles. (line 6)
* makeinfo: Catalogue of Rules. (line 156)
* makeinfo <1>: Implicit Variables. (line 84)
* match-anything rule: Match-Anything Rules.
@@ -5426,7 +5780,7 @@ Index of Concepts
* multiple rules for one target: Multiple Rules. (line 6)
* multiple rules for one target (::): Double-Colon. (line 6)
* multiple targets: Multiple Targets. (line 6)
-* multiple targets, in pattern rule: Pattern Intro. (line 53)
+* multiple targets, in pattern rule: Pattern Intro. (line 44)
* name of makefile: Makefile Names. (line 6)
* name of makefile, how to specify: Makefile Names. (line 31)
* nested variable reference: Computed Names. (line 6)
@@ -5451,7 +5805,7 @@ Index of Concepts
* order-only prerequisites: Prerequisite Types. (line 6)
* origin of variable: Origin Function. (line 6)
* output during parallel execution: Parallel Output. (line 6)
-* output during parallel execution <1>: Options Summary. (line 171)
+* output during parallel execution <1>: Options Summary. (line 172)
* overriding makefiles: Overriding Makefiles.
(line 6)
* overriding variables with arguments: Overriding. (line 6)
@@ -5460,13 +5814,14 @@ Index of Concepts
* parallel execution, and archive update: Archive Pitfalls. (line 6)
* parallel execution, input during: Parallel Input. (line 6)
* parallel execution, output during: Parallel Output. (line 6)
-* parallel execution, output during <1>: Options Summary. (line 171)
-* parallel execution, overriding: Special Targets. (line 142)
+* parallel execution, output during <1>: Options Summary. (line 172)
+* parallel execution, overriding: Special Targets. (line 141)
* parallel output to terminal: Terminal Output. (line 6)
+* parsing makefiles: Parsing Makefiles. (line 6)
* parts of makefile rule: Rule Introduction. (line 6)
* Pascal, rule to compile: Catalogue of Rules. (line 45)
* pattern rule: Pattern Intro. (line 6)
-* pattern rule, expansion: Reading Makefiles. (line 92)
+* pattern rule, expansion: Reading Makefiles. (line 93)
* pattern rules, order of: Pattern Match. (line 30)
* pattern rules, static (not implicit): Static Pattern. (line 6)
* pattern rules, static, syntax of: Static Usage. (line 6)
@@ -5481,19 +5836,19 @@ Index of Concepts
* portability: Features. (line 6)
* POSIX: Overview. (line 13)
* POSIX <1>: Options/Recursion. (line 61)
-* POSIX-conforming mode, setting: Special Targets. (line 157)
+* POSIX-conforming mode, setting: Special Targets. (line 156)
* post-installation commands: Install Command Categories.
(line 6)
* pre-installation commands: Install Command Categories.
(line 6)
* precious targets: Special Targets. (line 32)
-* predefined rules and variables, printing: Options Summary. (line 187)
+* predefined rules and variables, printing: Options Summary. (line 188)
* prefix, adding: File Name Functions. (line 78)
* prerequisite: Rules. (line 6)
* prerequisite pattern, implicit: Pattern Intro. (line 22)
* prerequisite pattern, static (not implicit): Static Usage. (line 30)
* prerequisite types: Prerequisite Types. (line 6)
-* prerequisite, expansion: Reading Makefiles. (line 92)
+* prerequisite, expansion: Reading Makefiles. (line 93)
* prerequisites: Rule Syntax. (line 47)
* prerequisites, and automatic variables: Automatic Variables.
(line 17)
@@ -5501,8 +5856,8 @@ Index of Concepts
* prerequisites, automatic generation <1>: Automatic Prerequisites.
(line 6)
* prerequisites, introduction to: Rule Introduction. (line 8)
-* prerequisites, list of all: Automatic Variables. (line 61)
-* prerequisites, list of changed: Automatic Variables. (line 51)
+* prerequisites, list of all: Automatic Variables. (line 62)
+* prerequisites, list of changed: Automatic Variables. (line 52)
* prerequisites, normal: Prerequisite Types. (line 6)
* prerequisites, order-only: Prerequisite Types. (line 6)
* prerequisites, varying (static pattern): Static Pattern. (line 6)
@@ -5538,7 +5893,7 @@ Index of Concepts
* realclean (standard target): Goals. (line 86)
* realpath: File Name Functions. (line 113)
* recipe: Simple Makefile. (line 74)
-* recipe execution, single invocation: Special Targets. (line 150)
+* recipe execution, single invocation: Special Targets. (line 149)
* recipe lines, single shell: One Shell. (line 6)
* recipe syntax: Recipe Syntax. (line 6)
* recipe, execution: Execution. (line 6)
@@ -5594,10 +5949,11 @@ Index of Concepts
* remaking loaded objects: Remaking Loaded Objects.
(line 6)
* remaking makefiles: Remaking Makefiles. (line 6)
-* removal of target files: Errors. (line 64)
+* removal of target files: Errors. (line 63)
* removal of target files <1>: Interrupts. (line 6)
* removing duplicate words: Text Functions. (line 155)
* removing targets on failure: Special Targets. (line 71)
+* removing whitespace from split lines: Splitting Lines. (line 40)
* removing, to clean up: Cleanup. (line 6)
* reporting bugs: Bugs. (line 6)
* rm: Implicit Variables. (line 106)
@@ -5697,7 +6053,7 @@ Index of Concepts
* stem: Static Usage. (line 17)
* stem <1>: Pattern Match. (line 6)
* stem, shortest: Pattern Match. (line 38)
-* stem, variable for: Automatic Variables. (line 77)
+* stem, variable for: Automatic Variables. (line 78)
* stopping make: Make Control Functions.
(line 11)
* strings, searching for: Text Functions. (line 104)
@@ -5726,10 +6082,10 @@ Index of Concepts
* target: Rules. (line 6)
* target pattern, implicit: Pattern Intro. (line 9)
* target pattern, static (not implicit): Static Usage. (line 17)
-* target, deleting on error: Errors. (line 64)
+* target, deleting on error: Errors. (line 63)
* target, deleting on interrupt: Interrupts. (line 6)
-* target, expansion: Reading Makefiles. (line 92)
-* target, multiple in pattern rule: Pattern Intro. (line 53)
+* target, expansion: Reading Makefiles. (line 93)
+* target, multiple in pattern rule: Pattern Intro. (line 44)
* target, multiple rules for one: Multiple Rules. (line 6)
* target, touching: Instead of Execution.
(line 24)
@@ -5739,6 +6095,8 @@ Index of Concepts
* targets, built-in special: Special Targets. (line 6)
* targets, empty: Empty Targets. (line 6)
* targets, force: Force Targets. (line 6)
+* targets, grouped: Multiple Targets. (line 61)
+* targets, independent: Multiple Targets. (line 14)
* targets, introduction to: Rule Introduction. (line 8)
* targets, multiple: Multiple Targets. (line 6)
* targets, phony: Phony Targets. (line 6)
@@ -5762,7 +6120,7 @@ Index of Concepts
* traditional directory search (GPATH): Search Algorithm. (line 42)
* types of prerequisites: Prerequisite Types. (line 6)
* types, conversion of: Guile Types. (line 6)
-* undefined variables, warning message: Options Summary. (line 292)
+* undefined variables, warning message: Options Summary. (line 293)
* undefining variable: Undefine Directive. (line 6)
* updating archive symbol directories: Archive Symbols. (line 6)
* updating loaded objects: Remaking Loaded Objects.
@@ -5808,7 +6166,7 @@ Index of Concepts
* variables, substitution reference: Substitution Refs. (line 6)
* variables, target-specific: Target-specific. (line 6)
* variables, unexpanded value: Value Function. (line 6)
-* variables, warning for undefined: Options Summary. (line 292)
+* variables, warning for undefined: Options Summary. (line 293)
* varying prerequisites: Static Pattern. (line 6)
* verbatim variable definition: Multi-Line. (line 6)
* vpath: Directory Search. (line 6)
@@ -5821,6 +6179,7 @@ Index of Concepts
* Web, rule to run: Catalogue of Rules. (line 149)
* what if: Instead of Execution.
(line 41)
+* whitespace, avoiding on line split: Splitting Lines. (line 40)
* whitespace, in variable values: Flavors. (line 107)
* whitespace, stripping: Text Functions. (line 80)
* wildcard: Wildcards. (line 6)
@@ -5873,22 +6232,22 @@ Index of Functions, Variables, & Directives
* $(@F): Automatic Variables. (line 119)
* $(^D): Automatic Variables. (line 142)
* $(^F): Automatic Variables. (line 143)
-* $*: Automatic Variables. (line 73)
+* $*: Automatic Variables. (line 74)
* $*, and static pattern: Static Usage. (line 82)
-* $+: Automatic Variables. (line 63)
+* $+: Automatic Variables. (line 64)
* $<: Automatic Variables. (line 43)
* $?: Automatic Variables. (line 48)
* $@: Automatic Variables. (line 30)
-* $^: Automatic Variables. (line 53)
-* $|: Automatic Variables. (line 69)
+* $^: Automatic Variables. (line 54)
+* $|: Automatic Variables. (line 70)
* % (automatic variable): Automatic Variables. (line 37)
* %D (automatic variable): Automatic Variables. (line 129)
* %F (automatic variable): Automatic Variables. (line 130)
-* * (automatic variable): Automatic Variables. (line 73)
+* * (automatic variable): Automatic Variables. (line 74)
* * (automatic variable), unsupported bizarre usage: Missing. (line 44)
* *D (automatic variable): Automatic Variables. (line 124)
* *F (automatic variable): Automatic Variables. (line 125)
-* + (automatic variable): Automatic Variables. (line 63)
+* + (automatic variable): Automatic Variables. (line 64)
* +D (automatic variable): Automatic Variables. (line 147)
* +F (automatic variable): Automatic Variables. (line 148)
* -load: load Directive. (line 65)
@@ -5897,9 +6256,11 @@ Index of Functions, Variables, & Directives
* .DEFAULT, and empty recipes: Empty Recipes. (line 16)
* .DEFAULT_GOAL (define default goal): Special Variables. (line 34)
* .DELETE_ON_ERROR: Special Targets. (line 70)
-* .DELETE_ON_ERROR <1>: Errors. (line 64)
-* .EXPORT_ALL_VARIABLES: Special Targets. (line 135)
+* .DELETE_ON_ERROR <1>: Errors. (line 63)
+* .EXPORT_ALL_VARIABLES: Special Targets. (line 134)
* .EXPORT_ALL_VARIABLES <1>: Variables/Recursion. (line 99)
+* .EXTRA_PREREQS (prerequisites not added to automatic variables): Special Variables.
+ (line 178)
* .FEATURES (list of supported features): Special Variables. (line 121)
* .IGNORE: Special Targets. (line 77)
* .IGNORE <1>: Errors. (line 30)
@@ -5909,12 +6270,12 @@ Index of Functions, Variables, & Directives
* .LIBPATTERNS: Libraries/Search. (line 6)
* .LOADED: load Directive. (line 62)
* .LOW_RESOLUTION_TIME: Special Targets. (line 90)
-* .NOTPARALLEL: Special Targets. (line 141)
-* .ONESHELL: Special Targets. (line 149)
+* .NOTPARALLEL: Special Targets. (line 140)
+* .ONESHELL: Special Targets. (line 148)
* .ONESHELL <1>: One Shell. (line 6)
* .PHONY: Phony Targets. (line 22)
* .PHONY <1>: Special Targets. (line 8)
-* .POSIX: Special Targets. (line 156)
+* .POSIX: Special Targets. (line 155)
* .POSIX <1>: Options/Recursion. (line 61)
* .PRECIOUS: Special Targets. (line 31)
* .PRECIOUS <1>: Interrupts. (line 22)
@@ -5943,10 +6304,10 @@ Index of Functions, Variables, & Directives
* @ (automatic variable): Automatic Variables. (line 30)
* @D (automatic variable): Automatic Variables. (line 113)
* @F (automatic variable): Automatic Variables. (line 119)
-* ^ (automatic variable): Automatic Variables. (line 53)
+* ^ (automatic variable): Automatic Variables. (line 54)
* ^D (automatic variable): Automatic Variables. (line 142)
* ^F (automatic variable): Automatic Variables. (line 143)
-* | (automatic variable): Automatic Variables. (line 69)
+* | (automatic variable): Automatic Variables. (line 70)
* abspath: File Name Functions. (line 120)
* addprefix: File Name Functions. (line 78)
* addsuffix: File Name Functions. (line 67)
@@ -6075,7 +6436,7 @@ Index of Functions, Variables, & Directives
* SHELL (recipe execution): Execution. (line 6)
* sort: Text Functions. (line 147)
* strip: Text Functions. (line 80)
-* subst: Multiple Targets. (line 28)
+* subst: Multiple Targets. (line 39)
* subst <1>: Text Functions. (line 9)
* suffix: File Name Functions. (line 42)
* SUFFIXES: Suffix Rules. (line 81)
diff --git a/doc/make.texi b/doc/make.texi
index 01bcec7..733c0b9 100644
--- a/doc/make.texi
+++ b/doc/make.texi
@@ -3,7 +3,7 @@
@setfilename make.info
@include version.texi
-@set EDITION 0.74
+@set EDITION 0.75
@settitle GNU @code{make}
@setchapternewpage odd
@@ -26,8 +26,8 @@ of @cite{The GNU Make Manual}, for GNU @code{make} version @value{VERSION}.
Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007,
-2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free Software
-Foundation, Inc.
+2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019,
+2020 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -143,7 +143,8 @@ Writing Makefiles
* Remaking Makefiles:: How makefiles get remade.
* Overriding Makefiles:: How to override part of one makefile
with another makefile.
-* Reading Makefiles:: How makefiles are parsed.
+* Reading Makefiles:: How makefiles are read in.
+* Parsing Makefiles:: How makefiles are parsed.
* Secondary Expansion:: How and when secondary expansion is performed.
What Makefiles Contain
@@ -988,7 +989,8 @@ reading a data base called the @dfn{makefile}.
* Remaking Makefiles:: How makefiles get remade.
* Overriding Makefiles:: How to override part of one makefile
with another makefile.
-* Reading Makefiles:: How makefiles are parsed.
+* Reading Makefiles:: How makefiles are read in.
+* Parsing Makefiles:: How makefiles are parsed.
* Secondary Expansion:: How and when secondary expansion is performed.
@end menu
@@ -1113,6 +1115,36 @@ handling is modified slightly to conform to POSIX.2: first, whitespace
preceding a backslash is not removed and second, consecutive
backslash/newlines are not condensed.
+@subsubheading Splitting Without Adding Whitespace
+@cindex whitespace, avoiding on line split
+@cindex removing whitespace from split lines
+
+If you need to split a line but do @emph{not} want any whitespace
+added, you can utilize a subtle trick: replace your backslash/newline
+pairs with the three characters dollar sign/backslash/newline:
+
+@example
+var := one$\
+ word
+@end example
+
+After @code{make} removes the backslash/newline and condenses the
+following line into a single space, this is equivalent to:
+
+@example
+var := one$ word
+@end example
+
+Then @code{make} will perform variable expansion. The variable
+reference @samp{$ } refers to a variable with the one-character name
+`` '' (space) which does not exist, and so expands to the empty
+string, giving a final assignment which is the equivalent of:
+
+@example
+var := oneword
+@end example
+
+
@node Makefile Names, Include, Makefile Contents, Makefiles
@section What Name to Give Your Makefile
@cindex makefile name
@@ -1313,7 +1345,7 @@ Sometimes makefiles can be remade from other files, such as RCS or SCCS
files. If a makefile can be remade from other files, you probably want
@code{make} to get an up-to-date version of the makefile to read in.
-To this end, after reading in all makefiles, @code{make} will consider
+To this end, after reading in all makefiles @code{make} will consider
each as a goal target and attempt to update it. If a makefile has a
rule which says how to update it (found either in that very makefile or
in another one) or if an implicit rule applies to it (@pxref{Implicit
@@ -1322,7 +1354,8 @@ all makefiles have been checked, if any have actually been changed,
@code{make} starts with a clean slate and reads all the makefiles over
again. (It will also attempt to update each of them over again, but
normally this will not change them again, since they are already up to
-date.)@refill
+date.) Each restart will cause the special variable
+@code{MAKE_RESTARTS} to be updated (@pxref{Special Variables}).@refill
If you know that one or more of your makefiles cannot be remade and
you want to keep @code{make} from performing an implicit rule search
@@ -1431,30 +1464,32 @@ empty recipe to prevent @code{make} from searching for an implicit rule to
build it---otherwise it would apply the same match-anything rule to
@file{force} itself and create a prerequisite loop!
-@node Reading Makefiles, Secondary Expansion, Overriding Makefiles, Makefiles
+@node Reading Makefiles, Parsing Makefiles, Overriding Makefiles, Makefiles
@section How @code{make} Reads a Makefile
@cindex reading makefiles
-@cindex makefile, parsing
+@cindex makefile, reading
-GNU @code{make} does its work in two distinct phases. During the first
-phase it reads all the makefiles, included makefiles, etc. and
-internalizes all the variables and their values, implicit and explicit
-rules, and constructs a dependency graph of all the targets and their
-prerequisites. During the second phase, @code{make} uses these internal
-structures to determine what targets will need to be rebuilt and to
-invoke the rules necessary to do so.
+GNU @code{make} does its work in two distinct phases. During the
+first phase it reads all the makefiles, included makefiles, etc. and
+internalizes all the variables and their values and implicit and
+explicit rules, and builds a dependency graph of all the targets and
+their prerequisites. During the second phase, @code{make} uses this
+internalized data to determine which targets need to be updated and
+run the recipes necessary to update them.
It's important to understand this two-phase approach because it has a
direct impact on how variable and function expansion happens; this is
-often a source of some confusion when writing makefiles. Here we will
-present a summary of the phases in which expansion happens for different
-constructs within the makefile. We say that expansion is
-@dfn{immediate} if it happens during the first phase: in this case
-@code{make} will expand any variables or functions in that section of a
-construct as the makefile is parsed. We say that expansion is
-@dfn{deferred} if expansion is not performed immediately. Expansion of
-a deferred construct is not performed until either the construct appears
-later in an immediate context, or until the second phase.
+often a source of some confusion when writing makefiles. Below is a
+summary of the different constructs that can be found in a makefile,
+and the phase in which expansion happens for each part of the
+construct.
+
+We say that expansion is @dfn{immediate} if it happens during the
+first phase: @code{make} will expand that part of the construct as the
+makefile is parsed. We say that expansion is @dfn{deferred} if it is
+not immediate. Expansion of a deferred construct part is delayed
+until the expansion is used: either when it is referenced in an
+immediate context, or when it is needed during the second phase.
You may not be familiar with some of these constructs yet. You can
reference this section as you become familiar with them, in later
@@ -1507,14 +1542,14 @@ define @var{immediate} !=
endef
@end example
-For the append operator, @samp{+=}, the right-hand side is considered
+For the append operator @samp{+=}, the right-hand side is considered
immediate if the variable was previously set as a simple variable
(@samp{:=} or @samp{::=}), and deferred otherwise.
-For the shell assignment operator, @samp{!=}, the right-hand side is
-evaluated immediately and handed to the shell. The result is stored in the
-variable named on the left, and that variable becomes a simple variable
-(and will thus be re-evaluated on each reference).
+For the shell assignment operator @samp{!=}, the right-hand side is
+evaluated immediately and handed to the shell. The result is stored
+in the variable named on the left, and that variable becomes a simple
+variable (and will thus be re-evaluated on each reference).
@subheading Conditional Directives
@cindex ifdef, expansion
@@ -1543,23 +1578,89 @@ A rule is always expanded the same way, regardless of the form:
@var{deferred}
@end example
-That is, the target and prerequisite sections are expanded immediately,
-and the recipe used to construct the target is always deferred. This
-general rule is true for explicit rules, pattern rules, suffix rules,
-static pattern rules, and simple prerequisite definitions.
+That is, the target and prerequisite sections are expanded
+immediately, and the recipe used to build the target is always
+deferred. This is true for explicit rules, pattern rules, suffix
+rules, static pattern rules, and simple prerequisite definitions.
+
+@node Parsing Makefiles, Secondary Expansion, Reading Makefiles, Makefiles
+@section How Makefiles Are Parsed
+@cindex parsing makefiles
+@cindex makefiles, parsing
+
+GNU @code{make} parses makefiles line-by-line. Parsing proceeds using
+the following steps:
+
+@enumerate
+@item
+Read in a full logical line, including backslash-escaped lines
+(@pxref{Splitting Lines, , Splitting Long Lines}).
+
+@item
+Remove comments (@pxref{Makefile Contents, , What Makefiles Contain}).
+
+@item
+If the line begins with the recipe prefix character and we are in a
+rule context, add the line to the current recipe and read the next
+line (@pxref{Recipe Syntax}).
-@node Secondary Expansion, , Reading Makefiles, Makefiles
+@item
+Expand elements of the line which appear in an @emph{immediate}
+expansion context (@pxref{Reading Makefiles, , How @code{make} Reads a
+Makefile}).@refill
+
+@item
+Scan the line for a separator character, such as @samp{:} or @samp{=},
+to determine whether the line is a macro assignment or a rule
+(@pxref{Recipe Syntax}).
+
+@item
+Internalize the resulting operation and read the next line.
+@end enumerate
+
+An important consequence of this is that a macro can expand to an
+entire rule, @emph{if it is one line long}. This will work:
+
+@example
+myrule = target : ; echo built
+
+$(myrule)
+@end example
+
+However, this will not work because @code{make} does not re-split lines
+after it has expanded them:
+
+@example
+define myrule
+target:
+ echo built
+endef
+
+$(myrule)
+@end example
+
+The above makefile results in the definition of a target @samp{target}
+with prerequisites @samp{echo} and @samp{built}, as if the makefile
+contained @code{target: echo built}, rather than a rule with a recipe.
+Newlines still present in a line after expansion is complete are
+ignored as normal whitespace.
+
+In order to properly expand a multi-line macro you must use the
+@code{eval} function: this causes the @code{make} parser to be run on
+the results of the expanded macro (@pxref{Eval Function}).
+
+@node Secondary Expansion, , Parsing Makefiles, Makefiles
@section Secondary Expansion
@cindex secondary expansion
@cindex expansion, secondary
@findex .SECONDEXPANSION
-In the previous section we learned that GNU @code{make} works in two
-distinct phases: a read-in phase and a target-update phase
-(@pxref{Reading Makefiles, , How @code{make} Reads a Makefile}). GNU
-make also has the ability to enable a @emph{second expansion} of the
-prerequisites (only) for some or all targets defined in the makefile.
-In order for this second expansion to occur, the special target
+Previously we learned that GNU @code{make} works in two distinct
+phases: a read-in phase and a target-update phase (@pxref{Reading
+Makefiles, , How @code{make} Reads a Makefile}). GNU make also has
+the ability to enable a @emph{second expansion} of the prerequisites
+(only) for some or all targets defined in the makefile. In order for
+this second expansion to occur, the special target
@code{.SECONDEXPANSION} must be defined before the first prerequisite
list that makes use of this feature.
@@ -1831,8 +1932,8 @@ more recent than it.
@item
How to update the file @file{foo.o}: by running @code{cc} as stated.
The recipe does not explicitly mention @file{defs.h}, but we presume
-that @file{foo.c} includes it, and that that is why @file{defs.h} was
-added to the prerequisites.
+that @file{foo.c} includes it, and that is why @file{defs.h} was added
+to the prerequisites.
@end itemize
@end ifnottex
@@ -2945,10 +3046,9 @@ If you specify prerequisites for @code{.SILENT}, then @code{make} will
not print the recipe used to remake those particular files before
executing them. The recipe for @code{.SILENT} is ignored.
-If mentioned as a target with no prerequisites, @code{.SILENT} says not
-to print any recipes before executing them. This usage of
-@samp{.SILENT} is supported only for historical compatibility. We
-recommend you use the more selective ways to silence specific recipes.
+If mentioned as a target with no prerequisites, @code{.SILENT} says
+not to print any recipes before executing them. You may also use more
+selective ways to silence specific recipe command lines.
@xref{Echoing, ,Recipe Echoing}. If you want to silence all recipes
for a particular run of @code{make}, use the @samp{-s} or
@w{@samp{--silent}} option (@pxref{Options Summary}).
@@ -3012,13 +3112,22 @@ both pieces to the suffix list. In practice, suffixes normally begin with
@cindex targets, multiple
@cindex rule, with multiple targets
-A rule with multiple targets is equivalent to writing many rules, each with
-one target, and all identical aside from that. The same recipe applies to
-all the targets, but its effect may vary because you can substitute the
-actual target name into the recipe using @samp{$@@}. The rule contributes
-the same prerequisites to all the targets also.
+When an explicit rule has multiple targets they can be treated in one
+of two possible ways: as independent targets or as grouped targets.
+The manner in which they are treated is determined by the separator that
+appears after the list of targets.
+
+@subsubheading Rules with Independent Targets
+@cindex independent targets
+@cindex targets, independent
+
+Rules that use the standard target separator, @code{:}, define
+independent targets. This is equivalent to writing the same rule once
+for each target, with duplicated prerequisites and recipes. Typically,
+the recipe would use automatic variables such as @samp{$@@} to specify
+which target is being built.
-This is useful in two cases.
+Rules with independent targets are useful in two cases:
@itemize @bullet
@item
@@ -3030,13 +3139,18 @@ kbd.o command.o files.o: command.h
@noindent
gives an additional prerequisite to each of the three object files
-mentioned.
+mentioned. It is equivalent to writing:
+
+@example
+kbd.o: command.h
+command.o: command.h
+files.o: command.h
+@end example
@item
-Similar recipes work for all the targets. The recipes do not need
-to be absolutely identical, since the automatic variable @samp{$@@}
-can be used to substitute the particular target to be remade into the
-commands (@pxref{Automatic Variables}). For example:
+Similar recipes work for all the targets. The automatic variable
+@samp{$@@} can be used to substitute the particular target to be
+remade into the commands (@pxref{Automatic Variables}). For example:
@example
@group
@@ -3070,6 +3184,57 @@ You cannot do this with multiple targets in an ordinary rule, but you
can do it with a @dfn{static pattern rule}. @xref{Static Pattern,
,Static Pattern Rules}.
+@subsubheading Rules with Grouped Targets
+@cindex grouped targets
+@cindex targets, grouped
+
+If instead of independent targets you have a recipe that generates
+multiple files from a single invocation, you can express that
+relationship by declaring your rule to use @emph{grouped targets}. A
+grouped target rule uses the separator @code{&:} (the @samp{&} here is
+used to imply ``all'').
+
+When @code{make} builds any one of the grouped targets, it understands
+that all the other targets in the group are also created as a result
+of the invocation of the recipe. Furthermore, if only some of the
+grouped targets are out of date or missing @code{make} will realize
+that running the recipe will update all of the targets.
+
+As an example, this rule defines a grouped target:
+
+@example
+@group
+foo bar biz &: baz boz
+ echo $^ > foo
+ echo $^ > bar
+ echo $^ > biz
+@end group
+@end example
+
+During the execution of a grouped target's recipe, the automatic
+variable @samp{$@@} is set to the name of the particular target in the
+group which triggered the rule. Caution must be used if relying on
+this variable in the recipe of a grouped target rule.
+
+Unlike independent targets, a grouped target rule @emph{must} include
+a recipe. However, targets that are members of a grouped target may
+also appear in independent target rule definitions that do not have
+recipes.
+
+Each target may have only one recipe associated with it. If a grouped
+target appears in either an independent target rule or in another
+grouped target rule with a recipe, you will get a warning and the
+latter recipe will replace the former recipe. Additionally the target
+will be removed from the previous group and appear only in the new
+group.
+
+If you would like a target to appear in multiple groups, then you must
+use the double-colon grouped target separator, @code{&::} when
+declaring all of the groups containing that target. Grouped
+double-colon targets are each considered independently, and each
+grouped double-colon rule's recipe is executed at most once, if at
+least one of its multiple targets requires updating.
+
@node Multiple Rules, Static Pattern, Multiple Targets, Rules
@section Multiple Rules for One Target
@cindex multiple rules for one target
@@ -3788,8 +3953,7 @@ The @samp{-s} or @samp{--silent}
flag to @code{make} prevents all echoing, as if all recipes
started with @samp{@@}. A rule in the makefile for the special target
@code{.SILENT} without prerequisites has the same effect
-(@pxref{Special Targets, ,Special Built-in Target Names}).
-@code{.SILENT} is essentially obsolete since @samp{@@} is more flexible.@refill
+(@pxref{Special Targets, ,Special Built-in Target Names}).@refill
@node Execution, Parallel, Echoing, Recipes
@section Recipe Execution
@@ -3818,7 +3982,7 @@ the statements in sequence. For example:
@example
foo : bar/lose
- cd $(@@D) && gobble $(@@F) > ../$@@
+ cd $(<D) && gobble $(<F) > ../$@@
@end example
@noindent
@@ -3909,8 +4073,8 @@ show :
As a special feature, if @code{SHELL} is determined to be a
POSIX-style shell, the special prefix characters in ``internal''
-recipe lines will @emph{removed} before the recipe is processed. This
-feature is intended to allow existing makefiles to add the
+recipe lines will be @emph{removed} before the recipe is processed.
+This feature is intended to allow existing makefiles to add the
@code{.ONESHELL} special target and still run properly without
extensive modifications. Since the special prefix characters are not
legal at the beginning of a line in a POSIX shell script this is not a
@@ -4283,8 +4447,7 @@ remove a file.
When you run @code{make} with the @samp{-i} or @samp{--ignore-errors}
flag, errors are ignored in all recipes of all rules. A rule in the
makefile for the special target @code{.IGNORE} has the same effect, if
-there are no prerequisites. These ways of ignoring errors are obsolete
-because @samp{-} is more flexible.
+there are no prerequisites. This is less flexible but sometimes useful.
When errors are to be ignored, because of either a @samp{-} or the
@samp{-i} flag, @code{make} treats an error return just like success,
@@ -4370,6 +4533,19 @@ target is updated in some atomic fashion, or exists only to record a
modification-time (its contents do not matter), or must exist at all
times to prevent other sorts of trouble.
+Although @code{make} does its best to clean up there are certain situations
+in which cleanup is impossible. For example, @code{make} may be killed by
+an uncatchable signal. Or, one of the programs make invokes may be killed
+or crash, leaving behind an up-to-date but corrupt target file: @code{make}
+will not realize that this failure requires the target to be cleaned. Or
+@code{make} itself may encounter a bug and crash.
+
+For these reasons it's best to write @emph{defensive recipes}, which won't
+leave behind corrupted targets even if they fail. Most commonly these
+recipes create temporary files rather than updating the target directly,
+then rename the temporary file to the final target name. Some compilers
+already behave this way, so that you don't need to write a defensive recipe.
+
@node Recursion, Canned Recipes, Interrupts, Recipes
@section Recursive Use of @code{make}
@cindex recursion
@@ -5117,8 +5293,12 @@ this way!)
A dollar sign followed by a character other than a dollar sign,
open-parenthesis or open-brace treats that single character as the
variable name. Thus, you could reference the variable @code{x} with
-@samp{$x}. However, this practice is strongly discouraged, except in
-the case of the automatic variables (@pxref{Automatic Variables}).
+@samp{$x}. However, this practice can lead to confusion (e.g.,
+@samp{$foo} refers to the variable @code{f} followed by the string
+@code{oo}) so we recommend using parentheses or braces around all
+variables, even single-letter variables, unless omitting them gives
+significant readability improvements. One place where readability is
+often improved is automatic variables (@pxref{Automatic Variables}).
@node Flavors, Advanced, Reference, Using Variables
@section The Two Flavors of Variables
@@ -5358,17 +5538,19 @@ replaced; other occurrences of @var{a} in the value are unaltered. For
example:@refill
@example
-foo := a.o b.o c.o
+foo := a.o b.o l.a c.o
bar := $(foo:.o=.c)
@end example
@noindent
-sets @samp{bar} to @samp{a.c b.c c.c}. @xref{Setting, ,Setting Variables}.
+sets @samp{bar} to @samp{a.c b.c l.a c.c}. @xref{Setting, ,Setting Variables}.
-A substitution reference is actually an abbreviation for use of the
-@code{patsubst} expansion function (@pxref{Text Functions, ,Functions for String Substitution and Analysis}). We provide
-substitution references as well as @code{patsubst} for compatibility with
-other implementations of @code{make}.
+A substitution reference is shorthand for the @code{patsubst}
+expansion function (@pxref{Text Functions, ,Functions for String Substitution and Analysis}):
+@samp{$(@var{var}:@var{a}=@var{b})} is equivalent to
+@samp{$(patsubst %@var{a},%@var{b},@var{var})}. We provide
+substitution references as well as @code{patsubst} for compatibility
+with other implementations of @code{make}.
@findex patsubst
Another type of substitution reference lets you use the full power of
@@ -5383,13 +5565,13 @@ for a description of the @code{patsubst} function.@refill
@group
@exdent For example:
-foo := a.o b.o c.o
+foo := a.o b.o l.a c.o
bar := $(foo:%.o=%.c)
@end group
@end example
@noindent
-sets @samp{bar} to @samp{a.c b.c c.c}.
+sets @samp{bar} to @samp{a.c b.c l.a c.c}.
@node Computed Names, , Substitution Refs, Advanced
@subsection Computed Variable Names
@@ -5722,7 +5904,8 @@ objects += another.o
@noindent
This takes the value of the variable @code{objects}, and adds the text
-@samp{another.o} to it (preceded by a single space). Thus:
+@samp{another.o} to it (preceded by a single space, if it has a value
+already). Thus:
@example
objects = main.o foo.o bar.o utils.o
@@ -5927,11 +6110,24 @@ The @code{define} directive is followed on the same line by the name
of the variable being defined and an (optional) assignment operator,
and nothing more. The value to give the variable appears on the
following lines. The end of the value is marked by a line containing
-just the word @code{endef}. Aside from this difference in syntax,
-@code{define} works just like any other variable definition. The
-variable name may contain function and variable references, which are
-expanded when the directive is read to find the actual variable name
-to use.
+just the word @code{endef}.
+
+Aside from this difference in syntax, @code{define} works just like
+any other variable definition. The variable name may contain function
+and variable references, which are expanded when the directive is read
+to find the actual variable name to use.
+
+The final newline before the @code{endef} is not included in the
+value; if you want your value to contain a trailing newline you must
+include a blank line. For example in order to define a variable that
+contains a newline character you must use @emph{two} empty lines, not one:
+
+@example
+define newline
+
+
+endef
+@end example
You may omit the variable assignment operator if you prefer. If
omitted, @code{make} assumes it to be @samp{=} and creates a
@@ -5948,17 +6144,12 @@ or @code{endef} strings appearing on such a line will not be
considered @code{make} directives.
@example
-define two-lines =
+define two-lines
echo foo
echo $(bar)
endef
@end example
-The value in an ordinary assignment cannot contain a newline; but the
-newlines that separate the lines of the value in a @code{define} become
-part of the variable's value (except for the final newline which precedes
-the @code{endef} and is not considered part of the value).@refill
-
@need 800
When used in a recipe, the previous example is functionally equivalent
to this:
@@ -6453,6 +6644,57 @@ Supports dynamically loadable objects for creating custom extensions.
Expands to a list of directories that @code{make} searches for
included makefiles (@pxref{Include, , Including Other Makefiles}).
+@vindex .EXTRA_PREREQS @r{(prerequisites not added to automatic variables)}
+@item .EXTRA_PREREQS
+Each word in this variable is a new prerequisite which is added to
+targets for which it is set. These prerequisites differ from normal
+prerequisites in that they do not appear in any of the automatic
+variables (@pxref{Automatic Variables}). This allows prerequisites to
+be defined which do not impact the recipe.
+
+Consider a rule to link a program:
+
+@example
+myprog: myprog.o file1.o file2.o
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@@ $^ $(LDLIBS)
+@end example
+
+Now suppose you want to enhance this makefile to ensure that updates
+to the compiler cause the program to be re-linked. You can add the
+compiler as a prerequisite, but you must ensure that it's not passed
+as an argument to link command. You'll need something like this:
+
+@example
+myprog: myprog.o file1.o file2.o $(CC)
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@@ $(filter-out $(CC),$^) $(LDLIBS)
+@end example
+
+Then consider having multiple extra prerequisites: they would all have
+to be filtered out. Using @code{.EXTRA_PREREQS} and target-specific
+variables provides a simpler solution:
+
+@example
+myprog: myprog.o file1.o file2.o
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@@ $^ $(LDLIBS)
+myprog: .EXTRA_PREREQS = $(CC)
+@end example
+
+This feature can also be useful if you want to add prerequisites to a
+makefile you cannot easily modify: you can create a new file such as
+@file{extra.mk}:
+
+@example
+myprog: .EXTRA_PREREQS = $(CC)
+@end example
+
+then invoke @code{make -f extra.mk -f Makefile}.
+
+Setting @code{.EXTRA_PREREQS} globally will cause those prerequisites
+to be added to all targets (which did not themselves override it with
+a target-specific value). Note @code{make} is smart enough not to add
+a prerequisite listed in @code{.EXTRA_PREREQS} as a prerequisite to
+itself.
+
@end table
@node Conditionals, Functions, Using Variables, Top
@@ -6881,7 +7123,7 @@ the function call. For example,
$(subst ee,EE,feet on the street)
@end example
-substitutes the string @samp{fEEt on the strEEt}.
+produces the value @samp{fEEt on the strEEt}.
@item $(patsubst @var{pattern},@var{replacement},@var{text})
@findex patsubst
@@ -7401,7 +7643,7 @@ will be expanded.
The @code{if} function provides support for conditional expansion in a
functional context (as opposed to the GNU @code{make} makefile
conditionals such as @code{ifeq} (@pxref{Conditional Syntax, ,Syntax of
-Conditionals}).
+Conditionals})).
The first argument, @var{condition}, first has all preceding and
trailing whitespace stripped, then is expanded. If it expands to any
@@ -8659,6 +8901,8 @@ Give variables taken from the environment precedence
over variables from makefiles.
@xref{Environment, ,Variables from the Environment}.
+@item -E @var{string}
+@cindex @code{-E}
@item --eval=@var{string}
@cindex @code{--eval}
@c Extra blank line here makes the table look better.
@@ -9687,6 +9931,10 @@ and linking with a single @code{cc} command. The optimized rule is used in
preference to the step-by-step chain because it comes earlier in the
ordering of rules.
+Finally, for performance reasons @code{make} will not consider non-terminal
+match-anything rules (i.e., @samp{%:}) when searching for a rule to
+build a prerequisite of an implicit rule (@pxref{Match-Anything Rules}).
+
@node Pattern Rules, Last Resort, Chained Rules, Implicit Rules
@section Defining and Redefining Pattern Rules
@@ -9767,20 +10015,13 @@ More than one pattern rule may match a target. In this case
@code{make} will choose the ``best fit'' rule. @xref{Pattern Match,
,How Patterns Match}.
-@c !!! The end of of this paragraph should be rewritten. --bob
-Pattern rules may have more than one target. Unlike normal rules,
-this does not act as many different rules with the same prerequisites
-and recipe. If a pattern rule has multiple targets, @code{make} knows
-that the rule's recipe is responsible for making all of the targets.
-The recipe is executed only once to make all the targets. When
-searching for a pattern rule to match a target, the target patterns of
-a rule other than the one that matches the target in need of a rule
-are incidental: @code{make} worries only about giving a recipe and
-prerequisites to the file presently in question. However, when this
-file's recipe is run, the other targets are marked as having been
-updated themselves.
@cindex multiple targets, in pattern rule
@cindex target, multiple in pattern rule
+Pattern rules may have more than one target; however, every target
+must contain a @code{%} character. Pattern rules are always treated
+as grouped targets (@pxref{Multiple Targets, , Multiple Targets in a
+Rule}) regardless of whether they use the @code{:} or @code{&:}
+separator.
@node Pattern Examples, Automatic Variables, Pattern Intro, Pattern Rules
@subsection Pattern Rule Examples
@@ -9900,8 +10141,9 @@ implicit rule (@pxref{Implicit Rules}).
@vindex ? @r{(automatic variable)}
@item $?
The names of all the prerequisites that are newer than the target, with
-spaces between them. For prerequisites which are archive members, only
-the named member is used (@pxref{Archives}).
+spaces between them. If the target does not exist, all prerequisites
+will be included. For prerequisites which are archive members, only the
+named member is used (@pxref{Archives}).
@cindex prerequisites, list of changed
@cindex list of changed prerequisites
@@ -9971,15 +10213,15 @@ lib: foo.o bar.o lose.o win.o
@end example
Of the variables listed above, four have values that are single file
-names, and three have values that are lists of file names. These seven
-have variants that get just the file's directory name or just the file
-name within the directory. The variant variables' names are formed by
-appending @samp{D} or @samp{F}, respectively. These variants are
-semi-obsolete in GNU @code{make} since the functions @code{dir} and
-@code{notdir} can be used to get a similar effect (@pxref{File Name
-Functions, , Functions for File Names}). Note, however, that the
-@samp{D} variants all omit the trailing slash which always appears in
-the output of the @code{dir} function. Here is a table of the variants:
+names, and three have values that are lists of file names. These
+seven have variants that get just the file's directory name or just
+the file name within the directory. The variant variables' names are
+formed by appending @samp{D} or @samp{F}, respectively. The functions
+@code{dir} and @code{notdir} can be used to obtain a similar effect
+(@pxref{File Name Functions, , Functions for File Names}). Note,
+however, that the @samp{D} variants all omit the trailing slash which
+always appears in the output of the @code{dir} function. Here is a
+table of the variants:
@table @samp
@vindex $(@@D)
@@ -10182,9 +10424,10 @@ remade from any other files; therefore, @code{make} can save time by not
looking for ways to remake them.@refill
If you do not mark the match-anything rule as terminal, then it is
-non-terminal. A non-terminal match-anything rule cannot apply to a file name
-that indicates a specific type of data. A file name indicates a specific
-type of data if some non-match-anything implicit rule target matches it.
+non-terminal. A non-terminal match-anything rule cannot apply to a
+prerequisite of an implicit rule, or to a file name that indicates a
+specific type of data. A file name indicates a specific type of data
+if some non-match-anything implicit rule target matches it.
For example, the file name @file{foo.c} matches the target for the pattern
rule @samp{%.c : %.y} (the rule to run Yacc). Regardless of whether this
@@ -10296,12 +10539,13 @@ general and clearer. They are supported in GNU @code{make} for
compatibility with old makefiles. They come in two kinds:
@dfn{double-suffix} and @dfn{single-suffix}.@refill
-A double-suffix rule is defined by a pair of suffixes: the target suffix
-and the source suffix. It matches any file whose name ends with the
-target suffix. The corresponding implicit prerequisite is made by
-replacing the target suffix with the source suffix in the file name. A
-two-suffix rule whose target and source suffixes are @samp{.o} and
-@samp{.c} is equivalent to the pattern rule @samp{%.o : %.c}.
+A double-suffix rule is defined by a pair of suffixes: the target
+suffix and the source suffix. It matches any file whose name ends
+with the target suffix. The corresponding implicit prerequisite is
+made by replacing the target suffix with the source suffix in the file
+name. A two-suffix rule @samp{.c.o} (whose target and source suffixes
+are @samp{.o} and @samp{.c}) is equivalent to the pattern rule
+@samp{%.o : %.c}.
A single-suffix rule is defined by a single suffix, which is the source
suffix. It matches any file name, and the corresponding implicit
@@ -10420,8 +10664,9 @@ Make a list of all the pattern rules one of whose targets matches
matched against @var{t}; otherwise, against @var{n}.
@item
-If any rule in that list is @emph{not} a match-anything rule, then
-remove all non-terminal match-anything rules from the list.
+If any rule in that list is @emph{not} a match-anything rule, or if
+@var{t} is a prerequisite of an implicit rule, then remove all
+non-terminal match-anything rules from the list.
@item
Remove from the list all rules with no recipe.
@@ -11452,7 +11697,8 @@ On POSIX systems the jobserver is implemented as a simple UNIX pipe.
The pipe will be pre-loaded with one single-character token for each
available job. To obtain an extra slot you must read a single
character from the jobserver pipe; to release a slot you must write a
-single character back into the jobserver pipe.
+single character back into the jobserver pipe. Note that the read
+side of the jobserver pipe is set to ``blocking'' mode.
To access the pipe you must parse the @code{MAKEFLAGS} variable and
look for the argument string @code{--jobserver-auth=R,W} where
@@ -11882,7 +12128,7 @@ In System V and 4.3 BSD @code{make}, files found by @code{VPATH}
search (@pxref{Directory Search, ,Searching Directories for
Prerequisites}) have their names changed inside recipes. We feel it
is much cleaner to always use automatic variables and thus make this
-feature obsolete.@refill
+feature unnecessary.@refill
@item
In some Unix @code{make}s, the automatic variable @code{$*} appearing in
@@ -12467,16 +12713,18 @@ of its arguments. @xref{Functions, ,Functions for Transforming Text}.
@itemx multiple target patterns. Stop.
@itemx target pattern contains no `%'. Stop.
@itemx mixed implicit and static pattern rules. Stop.
-These are generated for malformed static pattern rules. The first
-means there's no pattern in the target section of the rule; the second
-means there are multiple patterns in the target section; the third
-means the target doesn't contain a pattern character (@code{%}); and
-the fourth means that all three parts of the static pattern rule
-contain pattern characters (@code{%})--only the first two parts
-should. If you see these errors and you aren't trying to create a
-static pattern rule, check the value of any variables in your target
-and prerequisite lists to be sure they do not contain colons.
-@xref{Static Usage, ,Syntax of Static Pattern Rules}.
+These errors are generated for malformed static pattern rules
+(@pxref{Static Usage, ,Syntax of Static Pattern Rules}). The first
+means the target-pattern part of the rule is empty; the second means
+there are multiple pattern characters (@code{%}) in the target-pattern
+part; the third means there are no pattern characters in the
+target-pattern part; and the fourth means that all three parts of the
+static pattern rule contain pattern characters (@code{%})--the first
+part should not contain pattern characters.
+
+If you see these errors and you aren't trying to create a static
+pattern rule, check the value of any variables in your target and
+prerequisite lists to be sure they do not contain colons.
@item warning: -jN forced in submake: disabling jobserver mode.
This warning and the next are generated if @code{make} detects error
@@ -12502,6 +12750,18 @@ receive only part of the information necessary. In this case, the child
will generate this warning message and proceed with its build in a
sequential manner.
+@item warning: ignoring prerequisites on suffix rule definition
+According to POSIX, a suffix rule cannot contain prerequisites. If a rule
+that could be a suffix rule has prerequisites it is interpreted as a simple
+explicit rule, with an odd target name. This requirement is obeyed when
+POSIX-conforming mode is enabled (the @code{.POSIX} target is defined). In
+versions of GNU @code{make} prior to 4.3, no warning was emitted and a
+suffix rule was created, however all prerequisites were ignored and were not
+part of the suffix rule. Starting with GNU @code{make} 4.3 the behavior is
+the same, and in addition this warning is generated. In a future version
+the POSIX-conforming behavior will be the only behavior: no rule with a
+prerequisite can be suffix rule and this warning will be removed.
+
@end table
@node Complex Makefile, GNU Free Documentation License, Error Messages, Top
@@ -12784,7 +13044,7 @@ tar.zoo: $(SRCS) $(AUX)
@end example
@node GNU Free Documentation License, Concept Index, Complex Makefile, Top
-@appendixsec GNU Free Documentation License
+@appendix GNU Free Documentation License
@cindex FDL, GNU Free Documentation License
@include fdl.texi
diff --git a/doc/stamp-vti b/doc/stamp-vti
index b119bad..df1d34c 100644
--- a/doc/stamp-vti
+++ b/doc/stamp-vti
@@ -1,4 +1,4 @@
-@set UPDATED 21 May 2016
-@set UPDATED-MONTH May 2016
-@set EDITION 4.2.1
-@set VERSION 4.2.1
+@set UPDATED 19 January 2020
+@set UPDATED-MONTH January 2020
+@set EDITION 4.3
+@set VERSION 4.3
diff --git a/doc/version.texi b/doc/version.texi
index b119bad..df1d34c 100644
--- a/doc/version.texi
+++ b/doc/version.texi
@@ -1,4 +1,4 @@
-@set UPDATED 21 May 2016
-@set UPDATED-MONTH May 2016
-@set EDITION 4.2.1
-@set VERSION 4.2.1
+@set UPDATED 19 January 2020
+@set UPDATED-MONTH January 2020
+@set EDITION 4.3
+@set VERSION 4.3
diff --git a/dosbuild.bat b/dosbuild.bat
deleted file mode 100644
index 71e71e1..0000000
--- a/dosbuild.bat
+++ /dev/null
@@ -1,65 +0,0 @@
-@echo off
-rem Copyright (C) 1998-2016 Free Software Foundation, Inc.
-rem This file is part of GNU Make.
-rem
-rem GNU Make is free software; you can redistribute it and/or modify it under
-rem the terms of the GNU General Public License as published by the Free
-rem Software Foundation; either version 3 of the License, or (at your option)
-rem any later version.
-rem
-rem GNU Make is distributed in the hope that it will be useful, but WITHOUT
-rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for.
-rem more details.
-rem
-rem You should have received a copy of the GNU General Public License along
-rem with this program. If not, see <http://www.gnu.org/licenses/>.
-
-echo Building Make for MSDOS
-
-rem Echo ON so they will see what is going on.
-@echo on
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g commands.c -o commands.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g output.c -o output.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g job.c -o job.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g dir.c -o dir.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g file.c -o file.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g misc.c -o misc.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g main.c -o main.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -DINCLUDEDIR=\"c:/djgpp/include\" -O2 -g read.c -o read.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -DLIBDIR=\"c:/djgpp/lib\" -O2 -g remake.c -o remake.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g rule.c -o rule.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g implicit.c -o implicit.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g default.c -o default.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g variable.c -o variable.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g expand.c -o expand.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g function.c -o function.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g vpath.c -o vpath.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g hash.c -o hash.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g strcache.c -o strcache.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g version.c -o version.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g ar.c -o ar.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g arscan.c -o arscan.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g signame.c -o signame.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g remote-stub.c -o remote-stub.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g getopt.c -o getopt.o
-gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g getopt1.c -o getopt1.o
-@cd glob
-@if exist libglob.a del libglob.a
-gcc -I. -c -DHAVE_CONFIG_H -I.. -O2 -g glob.c -o glob.o
-gcc -I. -c -DHAVE_CONFIG_H -I.. -O2 -g fnmatch.c -o fnmatch.o
-ar rv libglob.a glob.o fnmatch.o
-@echo off
-cd ..
-echo commands.o > respf.$$$
-for %%f in (job output dir file misc main read remake rule implicit default variable) do echo %%f.o >> respf.$$$
-for %%f in (expand function vpath hash strcache version ar arscan signame remote-stub getopt getopt1) do echo %%f.o >> respf.$$$
-echo glob/libglob.a >> respf.$$$
-rem gcc -c -I. -I./glob -DHAVE_CONFIG_H -O2 -g guile.c -o guile.o
-rem echo guile.o >> respf.$$$
-@echo Linking...
-@echo on
-gcc -o make.new @respf.$$$
-@if exist make.exe echo Make.exe is now built!
-@if not exist make.exe echo Make.exe build failed...
-@if exist make.exe del respf.$$$
diff --git a/glob/COPYING.LIB b/glob/COPYING.LIB
deleted file mode 100644
index bbe3fe1..0000000
--- a/glob/COPYING.LIB
+++ /dev/null
@@ -1,481 +0,0 @@
- GNU LIBRARY GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1991 Free Software Foundation, Inc.
- 675 Mass Ave, Cambridge, MA 02139, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the library GPL. It is
- numbered 2 because it goes with version 2 of the ordinary GPL.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Library General Public License, applies to some
-specially designated Free Software Foundation software, and to any
-other libraries whose authors decide to use it. You can use it for
-your libraries, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if
-you distribute copies of the library, or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link a program with the library, you must provide
-complete object files to the recipients so that they can relink them
-with the library, after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- Our method of protecting your rights has two steps: (1) copyright
-the library, and (2) offer you this license which gives you legal
-permission to copy, distribute and/or modify the library.
-
- Also, for each distributor's protection, we want to make certain
-that everyone understands that there is no warranty for this free
-library. If the library is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original
-version, so that any problems introduced by others will not reflect on
-the original authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that companies distributing free
-software will individually obtain patent licenses, thus in effect
-transforming the program into proprietary software. To prevent this,
-we have made it clear that any patent must be licensed for everyone's
-free use or not licensed at all.
-
- Most GNU software, including some libraries, is covered by the ordinary
-GNU General Public License, which was designed for utility programs. This
-license, the GNU Library General Public License, applies to certain
-designated libraries. This license is quite different from the ordinary
-one; be sure to read it in full, and don't assume that anything in it is
-the same as in the ordinary license.
-
- The reason we have a separate public license for some libraries is that
-they blur the distinction we usually make between modifying or adding to a
-program and simply using it. Linking a program with a library, without
-changing the library, is in some sense simply using the library, and is
-analogous to running a utility program or application program. However, in
-a textual and legal sense, the linked executable is a combined work, a
-derivative of the original library, and the ordinary General Public License
-treats it as such.
-
- Because of this blurred distinction, using the ordinary General
-Public License for libraries did not effectively promote software
-sharing, because most developers did not use the libraries. We
-concluded that weaker conditions might promote sharing better.
-
- However, unrestricted linking of non-free programs would deprive the
-users of those programs of all benefit from the free status of the
-libraries themselves. This Library General Public License is intended to
-permit developers of non-free programs to use free libraries, while
-preserving your freedom as a user of such programs to change the free
-libraries that are incorporated in them. (We have not seen how to achieve
-this as regards changes in header files, but we have achieved it as regards
-changes in the actual functions of the Library.) The hope is that this
-will lead to faster development of free libraries.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, while the latter only
-works together with the library.
-
- Note that it is possible for a library to be covered by the ordinary
-General Public License rather than by this special one.
-
- GNU LIBRARY GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library which
-contains a notice placed by the copyright holder or other authorized
-party saying it may be distributed under the terms of this Library
-General Public License (also called "this License"). Each licensee is
-addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also compile or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- c) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- d) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the source code distributed need not include anything that is normally
-distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Library General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- Appendix: How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with this library; if not, write to the Free
- Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
diff --git a/glob/ChangeLog b/glob/ChangeLog
deleted file mode 100644
index c543c85..0000000
--- a/glob/ChangeLog
+++ /dev/null
@@ -1,191 +0,0 @@
-2013-10-20 Paul Smith <psmith@gnu.org>
-
- * glob.c (glob): Cherry-pick a471e96a5352a5f0bde6d32dd36d33524811a2b1
- from git://sourceware.org/git/glibc.git to fix SV 18123,
- https://sourceware.org/bugzilla/show_bug.cgi?id=10278
-
-2008-09-28 Juan Manuel Guerrero <juan.guerrero@gmx.de>
-
- * glob.c (my_realloc) [__DJGPP__]: Don't define, and don't
- redefine realloc to call it, since the DJGPP's realloc handles
- NULL pointers correctly.
-
-2007-12-22 Juan Manuel Guerrero <juan.guerrero@gmx.de> (tiny change)
-
- * glob.c [__GNU_LIBRARY__ && __DJGPP__]: Add a realloc
- declaration that matches the one in the DJGPP libc.
-
-2006-02-24 Eli Zaretskii <eliz@gnu.org>
-
- * glob.c (my_malloc) [WINDOWS32]: Provide a full ISO C prototype,
- to avoid compiler warnings.
-
-2005-06-25 Paul D. Smith <psmith@gnu.org>
-
- * fnmatch.h, glob.h [WINDOWS32]: Fix ifdefs in headers.
- Fixes Savannah bug #13477.
-
-2005-03-11 Paul D. Smith <psmith@gnu.org>
-
- * glob.c (glob_in_dir): Change FNM_CASEFOLD to be enabled if
- HAVE_CASE_INSENSITIVE_FS is defined.
-
-2003-01-30 Paul D. Smith <psmith@gnu.org>
-
- * glob.h: Patch for FreeBSD by Mike Barcroft <mike@freebsd.org>
- Reported by Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>. On
- FreeBSD, declare __size_t to simply size_t.
-
-2002-04-22 Paul D. Smith <psmith@gnu.org>
-
- * Makefile.am: Use automake 1.6.
- Use new automake condition USE_LOCAL_GLOB to decide whether or not
- to build the local GNU glob library or use the system one.
-
-1999-09-12 Paul D. Smith <psmith@gnu.org>
-
- * fnmatch.c: Last GLIBC version wouldn't compile outside of GLIBC
- (undefined reference to internal_function). Update to the latest
- version
-
-1999-09-11 Paul Eggert <eggert@twinsun.com>
-
- * glob.h (glob): If #defining to glob64, do this before
- declaring it, so that all declarations and uses match, and
- do not declare glob64, to avoid a declaration clash.
- (globfree): Likewise with globfree64.
-
-1999-09-08 Eli Zaretskii <eliz@is.elta.co.il>
-
- * glob.c (prefix_array) [__MSDOS__,WINDOWS32]: Keep the trailing
- slash unless DIRNAME is just "x:/".
-
-1999-09-06 Paul D. Smith <psmith@gnu.org>
-
- * fnmatch.c: Update to latest version from GLIBC.
-
-1999-07-21 Paul D. Smith <psmith@gnu.org>
-
- * glob.c, glob.h, fnmatch.c, fnmatch.h: Update to latest version
- from GLIBC.
-
- * fnmatch.c (internal_fnmatch): Use K&R definition syntax, not ANSI.
- (__strchrnul): This won't exist outside GLIBC, so create one.
-
- * glob.c: Move getlogin{,_r} prototypes below glob.h to get __P()
- macro.
-
-1998-08-05 Paul D. Smith <psmith@gnu.org>
-
- * configure.in: Remove; configuration for glob is handled by the
- make configure.in.
-
-1998-07-29 Paul D. Smith <psmith@gnu.org>
-
- * glob.c, fnmatch.c: New versions from the GLIBC folks (Ulrich
- Drepper). Fixes a bug reported by Eli Zaretski. Integrates
- DOS/Windows32 support.
-
-1998-07-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
-
- * glob.c (glob): Cast away const on assignment of pattern to dirname.
- Cast the return type of __alloca() for traditional C compilers.
-
-1998-07-23 Paul D. Smith <psmith@gnu.org>
-
- * glob.c, fnmatch.c: New versions of these files from the GLIBC
- folks (Ulrich Drepper). Had to re-integrate some DOS/Windows
- code.
-
-1998-07-10 Paul D. Smith <psmith@gnu.org>
-
- * glob.c (glob_in_dir): If no meta chars exist in PATTERN and
- GLOB_NOCHECK is present, don't look for the file--whether it's
- found or not, we'll always return it, so why bother searching?
-
- Also, if we are searching and there are no meta chars, don't
- bother trying fnmatch() if the strcmp() fails.
-
-1998-05-30 Eli Zaretskii <eliz@is.elta.co.il>
-
- * glob.c (glob) [__MSDOS__, WINDOWS32]: Compute the directory and
- filename parts of the pattern correctly when it includes a drive
- spec. Disallow wildcards in the drive spec. Prevent recursion
- when dirname is of the form "d:/" or "d:".
- (prefix_array) [__MSDOS__, WINDOWS32]: Don't append a slash to
- "d:/" and "d:".
-
-1998-05-13 Paul D. Smith <psmith@gnu.org>
-
- * SMakefile, Makefile.ami, glob.c, glob.h, fnmatch.c: Updated from
- the latest glibc version.
-
-1998-04-17 Paul D. Smith <psmith@gnu.org>
-
- * configure.in: Create a config.h file instead of setting things
- on the compile line. This is because when build.sh runs it merely
- passes -DHAVE_CONFIG_H to the glob files, just as it does to the
- make files.
- * config.h.in: Created by autoheader.
-
-Tue Aug 12 10:52:34 1997 Paul D. Smith <psmith@baynetworks.com>
-
- * configure.in: Require autoconf 2.12.
-
- * glob: Updates from latest GNU libc glob code.
-
- * glob.c,glob.h,fnmatch.h: Change all WIN32 references to WINDOWS32.
-
- * glob.h: OSF4 defines macros in such a way that GLOB_ALTDIRFUNC
- is not defined. Added a test to the #if which defines it if
- _GNU_SOURCE is defined; that's set by both glob.c and GNU make.
-
- * glob.c: SunOS4 w/ cc needs #include <stdio.h>, since assert.h
- requires stderr but doesn't include stdio.h :-/.
- (next_brace_sub): De-protoize function definition.
- (glob): Cast __alloca(); on SunOS4 it uses the default return type
- of int.
- (glob): Irix defines getlogin_r() to return a char*; move the
- extern for that into the _LIBC area since it isn't used except in
- LIBC anyway. Likewise, move extern getlogin() into the "else".
-
-Sat Jul 20 21:55:31 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
-
- Win32 hacks from <Rob_Tulloh@tivoli.com>.
- * posix/glob.c [WIN32]: Don't include <pwd.h>; don't use d_ino;
- use void * for my_realloc; include <malloc.h> for alloca.
- (glob) [WIN32]: Use "c:/users/default" for ~ if no HOME variable.
- * posix/fnmatch.h [WIN32]: Use prototypes even if [!__STDC__].
- * posix/glob.h: Likewise.
-
-Fri Jul 19 16:56:41 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
-
- * posix/glob.h [!_AMIGA && !VMS]: Check this instead of just [!_AMIGA]
- for `struct stat;' forward decl.
-
-Sat Jun 22 10:44:09 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
-
- * posix/glob.c: Include <alloca.h> only [HAVE_ALLOCA_H], not [sparc].
-
-Fri Jun 21 00:27:51 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
-
- * posix/fnmatch.c (fnmatch): Fix \*[*?]+ case to increment name ptr
- only for ?s, not for *s. Fix from Chet Ramey.
-
-
-Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
-1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software
-Foundation, Inc.
-This file is part of GNU Make.
-
-GNU Make is free software; you can redistribute it and/or modify it under the
-terms of the GNU General Public License as published by the Free Software
-Foundation; either version 3 of the License, or (at your option) any later
-version.
-
-GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/glob/Makefile.ami b/glob/Makefile.ami
deleted file mode 100644
index 3fbf7e5..0000000
--- a/glob/Makefile.ami
+++ /dev/null
@@ -1,67 +0,0 @@
-# Makefile for standalone libglob.a (fnmatch, glob). -*-Makefile-*-
-# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007 Free Software Foundation, Inc.
-# This file is part of GNU Make.
-#
-# GNU Make is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 3 of the License, or (at your option) any later
-# version.
-#
-# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program. If not, see <http://www.gnu.org/licenses/>.
-
-# Ultrix 2.2 make doesn't expand the value of VPATH.
-VPATH = /glob/
-# This must repeat the value, because configure will remove `VPATH = .'.
-srcdir = /glob/
-
-CC = sc
-RM = delete
-CPPFLAGS =
-CFLAGS =
-
-# Information determined by configure.
-DEFS = Define HAVE_HEADER_STDC Define HAVE_UNISTD_H Define HAVE_STRING_H \
- Define HAVE_DIRENT_H
-
-# How to invoke ar.
-AR = join
-ARFLAGS = as
-
-# How to invoke ranlib.
-RANLIB = ;
-
-.PHONY: all
-all: glob.lib
-
-glob.lib : glob.o fnmatch.o
- $(AR) $(ARFLAGS) $@ glob.o fnmatch.o
- $(RANLIB) $@
-
-# For some reason, Unix make wants the dependencies on the source files.
-# Otherwise it refuses to use an implicit rule!
-# And, get this: it doesn't work to use $(srcdir)foo.c!!
-glob.o: $(srcdir)glob.h $(srcdir)fnmatch.h glob.c
-fnmatch.o: $(srcdir)fnmatch.h fnmatch.c
-
-OUTPUT_OPTION =
-.c.o:
- $(CC) IDir "" \
- $(DEFS) $(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION)
-
-.PHONY: clean realclean glob-clean glob-realclean distclean
-clean glob-clean:
- -$(RM) glob.lib "#?.o" core
-distclean glob-realclean: clean
- -$(RM) TAGS tags Makefile config.status config.h config.log
-realcean: distclean
-
-# For inside the C library.
-glob.tar glob.tar.Z:
- $(MAKE) -C .. $@
diff --git a/glob/Makefile.in b/glob/Makefile.in
deleted file mode 100644
index 39761c5..0000000
--- a/glob/Makefile.in
+++ /dev/null
@@ -1,604 +0,0 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# -*-Makefile-*-, or close enough
-# Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
-# This file is part of GNU Make.
-#
-# GNU Make is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 3 of the License, or (at your option) any later
-# version.
-#
-# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program. If not, see <http://www.gnu.org/licenses/>.
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
- if test -z '$(MAKELEVEL)'; then \
- false; \
- elif test -n '$(MAKE_HOST)'; then \
- true; \
- elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
- true; \
- else \
- false; \
- fi; \
-}
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = glob
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/config/dospaths.m4 \
- $(top_srcdir)/config/gettext.m4 $(top_srcdir)/config/iconv.m4 \
- $(top_srcdir)/config/intlmacosx.m4 \
- $(top_srcdir)/config/lib-ld.m4 \
- $(top_srcdir)/config/lib-link.m4 \
- $(top_srcdir)/config/lib-prefix.m4 \
- $(top_srcdir)/config/longlong.m4 $(top_srcdir)/config/nls.m4 \
- $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LIBRARIES = $(noinst_LIBRARIES)
-ARFLAGS = cru
-AM_V_AR = $(am__v_AR_@AM_V@)
-am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
-am__v_AR_0 = @echo " AR " $@;
-am__v_AR_1 =
-libglob_a_AR = $(AR) $(ARFLAGS)
-libglob_a_LIBADD =
-am_libglob_a_OBJECTS = glob.$(OBJEXT) fnmatch.$(OBJEXT)
-libglob_a_OBJECTS = $(am_libglob_a_OBJECTS)
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-am__v_CC_1 =
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-am__v_CCLD_1 =
-SOURCES = $(libglob_a_SOURCES)
-DIST_SOURCES = $(libglob_a_SOURCES)
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp \
- COPYING.LIB ChangeLog
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GLOBINC = @GLOBINC@
-GLOBLIB = @GLOBLIB@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-GUILE_CFLAGS = @GUILE_CFLAGS@
-GUILE_LIBS = @GUILE_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-KMEM_GROUP = @KMEM_GROUP@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MAKE_HOST = @MAKE_HOST@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NEED_SETGID = @NEED_SETGID@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POSUB = @POSUB@
-RANLIB = @RANLIB@
-REMOTE = @REMOTE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = foreign
-
-# Only build the library when the system doesn't already have GNU glob.
-@USE_LOCAL_GLOB_TRUE@noinst_LIBRARIES = libglob.a
-libglob_a_SOURCES = glob.c glob.h fnmatch.c fnmatch.h
-EXTRA_DIST = COPYING.LIB Makefile.ami SCOPTIONS SMakefile \
- configure.bat
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign glob/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --foreign glob/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstLIBRARIES:
- -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-
-libglob.a: $(libglob_a_OBJECTS) $(libglob_a_DEPENDENCIES) $(EXTRA_libglob_a_DEPENDENCIES)
- $(AM_V_at)-rm -f libglob.a
- $(AM_V_AR)$(libglob_a_AR) libglob.a $(libglob_a_OBJECTS) $(libglob_a_LIBADD)
- $(AM_V_at)$(RANLIB) libglob.a
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fnmatch.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glob.Po@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LIBRARIES)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
- distclean-compile distclean-generic distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-man install-pdf \
- install-pdf-am install-ps install-ps-am install-strip \
- installcheck installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
- uninstall-am
-
-.PRECIOUS: Makefile
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/glob/SCOPTIONS b/glob/SCOPTIONS
deleted file mode 100644
index f89daae..0000000
--- a/glob/SCOPTIONS
+++ /dev/null
@@ -1,13 +0,0 @@
-ERRORREXX
-OPTIMIZE
-NOVERSION
-OPTIMIZERTIME
-OPTIMIZERALIAS
-DEFINE INCLUDEDIR="include:"
-DEFINE LIBDIR="lib:"
-DEFINE NO_ALLOCA
-DEFINE NO_FLOAT
-DEFINE NO_ARCHIVES
-IGNORE=161
-IGNORE=100
-STARTUP=cres
diff --git a/glob/SMakefile b/glob/SMakefile
deleted file mode 100644
index 0476a15..0000000
--- a/glob/SMakefile
+++ /dev/null
@@ -1,67 +0,0 @@
-# Makefile for standalone distribution of libglob.a (fnmatch, glob).
-# Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007 Free Software Foundation, Inc.
-# This file is part of GNU Make.
-#
-# GNU Make is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 3 of the License, or (at your option) any later
-# version.
-#
-# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program. If not, see <http://www.gnu.org/licenses/>.
-
-# Ultrix 2.2 make doesn't expand the value of VPATH.
-VPATH = /glob/
-# This must repeat the value, because configure will remove `VPATH = .'.
-srcdir = /glob/
-
-CC = sc
-CPPFLAGS =
-CFLAGS =
-MAKE = smake
-RM = delete
-
-# Information determined by configure.
-DEFS = Define HAVE_HEADER_STDC Define HAVE_UNISTD_H Define HAVE_STRING_H \
- Define HAVE_DIRENT_H
-
-# How to invoke ar.
-AR = join
-ARFLAGS = as
-
-# How to invoke ranlib.
-RANLIB = ;
-
-.PHONY: all
-all: glob.lib
-
-glob.lib : glob.o fnmatch.o
- $(AR) $(ARFLAGS) $@ glob.o fnmatch.o
- $(RANLIB) $@
-
-# For some reason, Unix make wants the dependencies on the source files.
-# Otherwise it refuses to use an implicit rule!
-# And, get this: it doesn't work to use $(srcdir)foo.c!!
-glob.o: $(srcdir)glob.h $(srcdir)fnmatch.h glob.c
-fnmatch.o: $(srcdir)fnmatch.h fnmatch.c
-
-.c.o:
- $(CC) IDir "" \
- $(DEFS) $(CPPFLAGS) $(CFLAGS) $< $(OUTPUT_OPTION)
-
-.PHONY: clean realclean glob-clean glob-realclean distclean
-clean glob-clean:
- -$(RM) -f glob.lib *.o core
-distclean glob-realclean: clean
- -$(RM) -f TAGS tags Makefile config.status config.h config.log
-realcean: distclean
-
-# For inside the C library.
-glob.tar glob.tar.Z:
- $(MAKE) -C .. $@
diff --git a/glob/configure.bat b/glob/configure.bat
deleted file mode 100644
index 672d733..0000000
--- a/glob/configure.bat
+++ /dev/null
@@ -1,43 +0,0 @@
-@echo off
-rem Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-rem 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
-rem This file is part of GNU Make.
-rem
-rem GNU Make is free software; you can redistribute it and/or modify it under
-rem the terms of the GNU General Public License as published by the Free
-rem Software Foundation; either version 3 of the License, or (at your option)
-rem any later version.
-rem
-rem GNU Make is distributed in the hope that it will be useful, but WITHOUT
-rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for.
-rem more details.
-rem
-rem You should have received a copy of the GNU General Public License along
-rem with this program. If not, see <http://www.gnu.org/licenses/>.
-
-echo Configuring glob for DJGPP
-rem This batch file assumes a unix-type "sed" program
-
-echo # Makefile generated by "configure.bat"> Makefile
-
-if exist config.sed del config.sed
-
-echo "s/@srcdir@/./ ">> config.sed
-echo "s/@CC@/gcc/ ">> config.sed
-echo "s/@CFLAGS@/-O2 -g/ ">> config.sed
-echo "s/@CPPFLAGS@/-DHAVE_CONFIG_H -I../ ">> config.sed
-echo "s/@AR@/ar/ ">> config.sed
-echo "s/@RANLIB@/ranlib/ ">> config.sed
-echo "s/@LDFLAGS@// ">> config.sed
-echo "s/@DEFS@// ">> config.sed
-echo "s/@ALLOCA@// ">> config.sed
-echo "s/@LIBS@// ">> config.sed
-echo "s/@LIBOBJS@// ">> config.sed
-echo "s/^Makefile *:/_Makefile:/ ">> config.sed
-echo "s/^config.h *:/_config.h:/ ">> config.sed
-
-sed -e "s/^\"//" -e "s/\"$//" -e "s/[ ]*$//" config.sed > config2.sed
-sed -f config2.sed Makefile.in >> Makefile
-del config.sed
-del config2.sed
diff --git a/job.h b/job.h
deleted file mode 100644
index 37cceb6..0000000
--- a/job.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/* Definitions for managing subprocesses in GNU Make.
-Copyright (C) 1992-2016 Free Software Foundation, Inc.
-This file is part of GNU Make.
-
-GNU Make is free software; you can redistribute it and/or modify it under the
-terms of the GNU General Public License as published by the Free Software
-Foundation; either version 3 of the License, or (at your option) any later
-version.
-
-GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include "output.h"
-
-#ifdef HAVE_FCNTL_H
-# include <fcntl.h>
-#else
-# include <sys/file.h>
-#endif
-
-/* How to set close-on-exec for a file descriptor. */
-
-#if !defined(F_SETFD) || !defined(F_GETFD)
-# ifdef WINDOWS32
-# define CLOSE_ON_EXEC(_d) process_noinherit(_d)
-# else
-# define CLOSE_ON_EXEC(_d)
-# endif
-#else
-# ifndef FD_CLOEXEC
-# define FD_CLOEXEC 1
-# endif
-# define CLOSE_ON_EXEC(_d) (void) fcntl ((_d), F_SETFD, FD_CLOEXEC)
-#endif
-
-#ifdef NO_OUTPUT_SYNC
-# define RECORD_SYNC_MUTEX(m) \
- O (error, NILF, \
- _("-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."));
-#else
-# ifdef WINDOWS32
-/* For emulations in w32/compat/posixfcn.c. */
-# define F_GETFD 1
-# define F_SETLKW 2
-/* Implementation note: None of the values of l_type below can be zero
- -- they are compared with a static instance of the struct, so zero
- means unknown/invalid, see w32/compat/posixfcn.c. */
-# define F_WRLCK 1
-# define F_UNLCK 2
-
-struct flock
- {
- short l_type;
- short l_whence;
- off_t l_start;
- off_t l_len;
- pid_t l_pid;
- };
-
-/* This type is actually a HANDLE, but we want to avoid including
- windows.h as much as possible. */
-typedef intptr_t sync_handle_t;
-
-/* Public functions emulated/provided in posixfcn.c. */
-int fcntl (intptr_t fd, int cmd, ...);
-intptr_t create_mutex (void);
-int same_stream (FILE *f1, FILE *f2);
-
-# define RECORD_SYNC_MUTEX(m) record_sync_mutex(m)
-void record_sync_mutex (const char *str);
-void prepare_mutex_handle_string (intptr_t hdl);
-# else /* !WINDOWS32 */
-
-typedef int sync_handle_t; /* file descriptor */
-
-# define RECORD_SYNC_MUTEX(m) (void)(m)
-
-# endif
-#endif /* !NO_OUTPUT_SYNC */
-
-/* Structure describing a running or dead child process. */
-
-struct child
- {
- struct child *next; /* Link in the chain. */
-
- struct file *file; /* File being remade. */
-
- char **environment; /* Environment for commands. */
- char *sh_batch_file; /* Script file for shell commands */
- char **command_lines; /* Array of variable-expanded cmd lines. */
- char *command_ptr; /* Ptr into command_lines[command_line]. */
-
-#ifdef VMS
- char *comname; /* Temporary command file name */
- int efn; /* Completion event flag number */
- int cstatus; /* Completion status */
- int vms_launch_status; /* non-zero if lib$spawn, etc failed */
-#endif
-
- unsigned int command_line; /* Index into command_lines. */
- struct output output; /* Output for this child. */
- pid_t pid; /* Child process's ID number. */
- unsigned int remote:1; /* Nonzero if executing remotely. */
- unsigned int noerror:1; /* Nonzero if commands contained a '-'. */
- unsigned int good_stdin:1; /* Nonzero if this child has a good stdin. */
- unsigned int deleted:1; /* Nonzero if targets have been deleted. */
- unsigned int recursive:1; /* Nonzero for recursive command ('+' etc.) */
- unsigned int dontcare:1; /* Saved dontcare flag. */
- };
-
-extern struct child *children;
-
-/* A signal handler for SIGCHLD, if needed. */
-RETSIGTYPE child_handler (int sig);
-int is_bourne_compatible_shell(const char *path);
-void new_job (struct file *file);
-void reap_children (int block, int err);
-void start_waiting_jobs (void);
-
-char **construct_command_argv (char *line, char **restp, struct file *file,
- int cmd_flags, char** batch_file);
-
-#ifdef VMS
-int child_execute_job (struct child *child, char *argv);
-#else
-# define FD_STDIN (fileno (stdin))
-# define FD_STDOUT (fileno (stdout))
-# define FD_STDERR (fileno (stderr))
-int child_execute_job (struct output *out, int good_stdin, char **argv, char **envp);
-#endif
-
-#ifdef _AMIGA
-void exec_command (char **argv) __attribute__ ((noreturn));
-#elif defined(__EMX__)
-int exec_command (char **argv, char **envp);
-#else
-void exec_command (char **argv, char **envp) __attribute__ ((noreturn));
-#endif
-
-extern unsigned int job_slots_used;
-
-void block_sigs (void);
-#ifdef POSIX
-void unblock_sigs (void);
-#else
-#ifdef HAVE_SIGSETMASK
-extern int fatal_signal_mask;
-#define unblock_sigs() sigsetmask (0)
-#else
-#define unblock_sigs()
-#endif
-#endif
-
-extern unsigned int jobserver_tokens;
diff --git a/lib/Makefile.am b/lib/Makefile.am
new file mode 100644
index 0000000..6e4c1f0
--- /dev/null
+++ b/lib/Makefile.am
@@ -0,0 +1,1169 @@
+## DO NOT EDIT! GENERATED AUTOMATICALLY!
+## Process this file with automake to produce Makefile.in.
+# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This file is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this file. If not, see <https://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License,
+# this file may be distributed as part of a program that
+# contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+# Reproduce by:
+# gnulib-tool --import --local-dir=gl \
+# --lib=libgnu \
+# --source-base=lib \
+# --m4-base=m4 \
+# --doc-base=doc \
+# --tests-base=tests \
+# --aux-dir=build-aux \
+# --no-conditional-dependencies \
+# --no-libtool \
+# --macro-prefix=gl \
+# alloca \
+# fdl \
+# findprog-in \
+# getloadavg \
+# host-cpu-c-abi \
+# make-glob \
+# strerror
+
+AUTOMAKE_OPTIONS = 1.11 gnits
+
+SUBDIRS =
+noinst_HEADERS =
+noinst_LIBRARIES =
+noinst_LTLIBRARIES =
+EXTRA_DIST =
+BUILT_SOURCES =
+SUFFIXES =
+MOSTLYCLEANFILES = core *.stackdump
+MOSTLYCLEANDIRS =
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+# No GNU Make output.
+
+AM_CPPFLAGS =
+AM_CFLAGS =
+
+noinst_LIBRARIES += libgnu.a
+
+libgnu_a_SOURCES =
+libgnu_a_LIBADD = $(gl_LIBOBJS)
+libgnu_a_DEPENDENCIES = $(gl_LIBOBJS)
+EXTRA_libgnu_a_SOURCES =
+
+## begin gnulib module absolute-header
+
+# Use this preprocessor expression to decide whether #include_next works.
+# Do not rely on a 'configure'-time test for this, since the expression
+# might appear in an installed header, which is used by some other compiler.
+HAVE_INCLUDE_NEXT = (__GNUC__ || 60000000 <= __DECC_VER)
+
+## end gnulib module absolute-header
+
+## begin gnulib module access
+
+
+EXTRA_DIST += access.c
+
+EXTRA_libgnu_a_SOURCES += access.c
+
+## end gnulib module access
+
+## begin gnulib module alloca
+
+
+libgnu_a_LIBADD += @ALLOCA@
+libgnu_a_DEPENDENCIES += @ALLOCA@
+EXTRA_DIST += alloca.c
+
+EXTRA_libgnu_a_SOURCES += alloca.c
+
+## end gnulib module alloca
+
+## begin gnulib module alloca-opt
+
+BUILT_SOURCES += $(ALLOCA_H)
+
+# We need the following in order to create <alloca.h> when the system
+# doesn't have one that works with the given compiler.
+if GL_GENERATE_ALLOCA_H
+alloca.h: alloca.in.h $(top_builddir)/config.status
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''HAVE_ALLOCA_H''@|$(HAVE_ALLOCA_H)|g' < $(srcdir)/alloca.in.h; \
+ } > $@-t && \
+ mv -f $@-t $@
+else
+alloca.h: $(top_builddir)/config.status
+ rm -f $@
+endif
+MOSTLYCLEANFILES += alloca.h alloca.h-t
+
+EXTRA_DIST += alloca.in.h
+
+## end gnulib module alloca-opt
+
+## begin gnulib module close
+
+
+EXTRA_DIST += close.c
+
+EXTRA_libgnu_a_SOURCES += close.c
+
+## end gnulib module close
+
+## begin gnulib module concat-filename
+
+libgnu_a_SOURCES += concat-filename.c
+
+EXTRA_DIST += concat-filename.h
+
+## end gnulib module concat-filename
+
+## begin gnulib module dirname-lgpl
+
+libgnu_a_SOURCES += dirname-lgpl.c basename-lgpl.c stripslash.c
+
+EXTRA_DIST += dirname.h
+
+## end gnulib module dirname-lgpl
+
+## begin gnulib module dosname
+
+
+EXTRA_DIST += dosname.h
+
+## end gnulib module dosname
+
+## begin gnulib module dup2
+
+
+EXTRA_DIST += dup2.c
+
+EXTRA_libgnu_a_SOURCES += dup2.c
+
+## end gnulib module dup2
+
+## begin gnulib module errno
+
+BUILT_SOURCES += $(ERRNO_H)
+
+# We need the following in order to create <errno.h> when the system
+# doesn't have one that is POSIX compliant.
+if GL_GENERATE_ERRNO_H
+errno.h: errno.in.h $(top_builddir)/config.status
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \
+ -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \
+ -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \
+ -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \
+ -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \
+ -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \
+ -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \
+ < $(srcdir)/errno.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+else
+errno.h: $(top_builddir)/config.status
+ rm -f $@
+endif
+MOSTLYCLEANFILES += errno.h errno.h-t
+
+EXTRA_DIST += errno.in.h
+
+## end gnulib module errno
+
+## begin gnulib module error
+
+
+EXTRA_DIST += error.c error.h
+
+EXTRA_libgnu_a_SOURCES += error.c
+
+## end gnulib module error
+
+## begin gnulib module exitfail
+
+libgnu_a_SOURCES += exitfail.c
+
+EXTRA_DIST += exitfail.h
+
+## end gnulib module exitfail
+
+## begin gnulib module fcntl
+
+
+EXTRA_DIST += fcntl.c
+
+EXTRA_libgnu_a_SOURCES += fcntl.c
+
+## end gnulib module fcntl
+
+## begin gnulib module fcntl-h
+
+BUILT_SOURCES += fcntl.h
+
+# We need the following in order to create <fcntl.h> when the system
+# doesn't have one that works with the given compiler.
+fcntl.h: fcntl.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \
+ -e 's/@''GNULIB_CREAT''@/$(GNULIB_CREAT)/g' \
+ -e 's/@''GNULIB_FCNTL''@/$(GNULIB_FCNTL)/g' \
+ -e 's/@''GNULIB_NONBLOCKING''@/$(GNULIB_NONBLOCKING)/g' \
+ -e 's/@''GNULIB_OPEN''@/$(GNULIB_OPEN)/g' \
+ -e 's/@''GNULIB_OPENAT''@/$(GNULIB_OPENAT)/g' \
+ -e 's|@''HAVE_FCNTL''@|$(HAVE_FCNTL)|g' \
+ -e 's|@''HAVE_OPENAT''@|$(HAVE_OPENAT)|g' \
+ -e 's|@''REPLACE_CREAT''@|$(REPLACE_CREAT)|g' \
+ -e 's|@''REPLACE_FCNTL''@|$(REPLACE_FCNTL)|g' \
+ -e 's|@''REPLACE_OPEN''@|$(REPLACE_OPEN)|g' \
+ -e 's|@''REPLACE_OPENAT''@|$(REPLACE_OPENAT)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+ < $(srcdir)/fcntl.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += fcntl.h fcntl.h-t
+
+EXTRA_DIST += fcntl.in.h
+
+## end gnulib module fcntl-h
+
+## begin gnulib module fd-hook
+
+libgnu_a_SOURCES += fd-hook.c
+
+EXTRA_DIST += fd-hook.h
+
+## end gnulib module fd-hook
+
+## begin gnulib module filename
+
+
+EXTRA_DIST += filename.h
+
+## end gnulib module filename
+
+## begin gnulib module findprog-in
+
+libgnu_a_SOURCES += findprog.h findprog-in.c
+
+## end gnulib module findprog-in
+
+## begin gnulib module getdtablesize
+
+
+EXTRA_DIST += getdtablesize.c
+
+EXTRA_libgnu_a_SOURCES += getdtablesize.c
+
+## end gnulib module getdtablesize
+
+## begin gnulib module getloadavg
+
+
+EXTRA_DIST += getloadavg.c
+
+EXTRA_libgnu_a_SOURCES += getloadavg.c
+
+## end gnulib module getloadavg
+
+## begin gnulib module getprogname
+
+libgnu_a_SOURCES += getprogname.h getprogname.c
+
+## end gnulib module getprogname
+
+## begin gnulib module gettext-h
+
+libgnu_a_SOURCES += gettext.h
+
+## end gnulib module gettext-h
+
+## begin gnulib module intprops
+
+
+EXTRA_DIST += intprops.h
+
+## end gnulib module intprops
+
+## begin gnulib module limits-h
+
+BUILT_SOURCES += $(LIMITS_H)
+
+# We need the following in order to create <limits.h> when the system
+# doesn't have one that is compatible with GNU.
+if GL_GENERATE_LIMITS_H
+limits.h: limits.in.h $(top_builddir)/config.status
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_LIMITS_H''@|$(NEXT_LIMITS_H)|g' \
+ < $(srcdir)/limits.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+else
+limits.h: $(top_builddir)/config.status
+ rm -f $@
+endif
+MOSTLYCLEANFILES += limits.h limits.h-t
+
+EXTRA_DIST += limits.in.h
+
+## end gnulib module limits-h
+
+## begin gnulib module make-glob
+
+if !USE_SYSTEM_GLOB
+libgnu_a_SOURCES += fnmatch.c
+
+BUILT_SOURCES += fnmatch.h
+
+fnmatch.h: fnmatch.in.h $(top_builddir)/config.status
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ cat $(srcdir)/fnmatch.in.h; \
+ } > $@-t && \
+ mv -f $@-t $@
+
+MOSTLYCLEANFILES += fnmatch.h fnmatch.h-t
+
+libgnu_a_SOURCES += glob.c
+
+BUILT_SOURCES += glob.h
+
+glob.h: glob.in.h $(top_builddir)/config.status
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ cat $(srcdir)/glob.in.h; \
+ } > $@-t && \
+ mv -f $@-t $@
+
+MOSTLYCLEANFILES += glob.h glob.h-t
+endif
+
+EXTRA_DIST += fnmatch.in.h glob.in.h
+
+
+## end gnulib module make-glob
+
+## begin gnulib module malloc-posix
+
+
+EXTRA_DIST += malloc.c
+
+EXTRA_libgnu_a_SOURCES += malloc.c
+
+## end gnulib module malloc-posix
+
+## begin gnulib module msvc-inval
+
+
+EXTRA_DIST += msvc-inval.c msvc-inval.h
+
+EXTRA_libgnu_a_SOURCES += msvc-inval.c
+
+## end gnulib module msvc-inval
+
+## begin gnulib module msvc-nothrow
+
+
+EXTRA_DIST += msvc-nothrow.c msvc-nothrow.h
+
+EXTRA_libgnu_a_SOURCES += msvc-nothrow.c
+
+## end gnulib module msvc-nothrow
+
+## begin gnulib module snippet/_Noreturn
+
+# Because this Makefile snippet defines a variable used by other
+# gnulib Makefile snippets, it must be present in all makefiles that
+# need it. This is ensured by the applicability 'all' defined above.
+
+_NORETURN_H=$(srcdir)/_Noreturn.h
+
+EXTRA_DIST += _Noreturn.h
+
+## end gnulib module snippet/_Noreturn
+
+## begin gnulib module snippet/arg-nonnull
+
+# Because this Makefile snippet defines a variable used by other
+# gnulib Makefile snippets, it must be present in all makefiles that
+# need it. This is ensured by the applicability 'all' defined above.
+
+ARG_NONNULL_H=$(srcdir)/arg-nonnull.h
+
+EXTRA_DIST += arg-nonnull.h
+
+## end gnulib module snippet/arg-nonnull
+
+## begin gnulib module snippet/c++defs
+
+# Because this Makefile snippet defines a variable used by other
+# gnulib Makefile snippets, it must be present in all makefiles that
+# need it. This is ensured by the applicability 'all' defined above.
+
+CXXDEFS_H=$(srcdir)/c++defs.h
+
+EXTRA_DIST += c++defs.h
+
+## end gnulib module snippet/c++defs
+
+## begin gnulib module snippet/warn-on-use
+
+# Because this Makefile snippet defines a variable used by other
+# gnulib Makefile snippets, it must be present in all makefiles that
+# need it. This is ensured by the applicability 'all' defined above.
+
+WARN_ON_USE_H=$(srcdir)/warn-on-use.h
+
+EXTRA_DIST += warn-on-use.h
+
+## end gnulib module snippet/warn-on-use
+
+## begin gnulib module stdbool
+
+BUILT_SOURCES += $(STDBOOL_H)
+
+# We need the following in order to create <stdbool.h> when the system
+# doesn't have one that works.
+if GL_GENERATE_STDBOOL_H
+stdbool.h: stdbool.in.h $(top_builddir)/config.status
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+else
+stdbool.h: $(top_builddir)/config.status
+ rm -f $@
+endif
+MOSTLYCLEANFILES += stdbool.h stdbool.h-t
+
+EXTRA_DIST += stdbool.in.h
+
+## end gnulib module stdbool
+
+## begin gnulib module stddef
+
+BUILT_SOURCES += $(STDDEF_H)
+
+# We need the following in order to create <stddef.h> when the system
+# doesn't have one that works with the given compiler.
+if GL_GENERATE_STDDEF_H
+stddef.h: stddef.in.h $(top_builddir)/config.status
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
+ -e 's|@''HAVE_MAX_ALIGN_T''@|$(HAVE_MAX_ALIGN_T)|g' \
+ -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
+ -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
+ < $(srcdir)/stddef.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+else
+stddef.h: $(top_builddir)/config.status
+ rm -f $@
+endif
+MOSTLYCLEANFILES += stddef.h stddef.h-t
+
+EXTRA_DIST += stddef.in.h
+
+## end gnulib module stddef
+
+## begin gnulib module stdint
+
+BUILT_SOURCES += $(STDINT_H)
+
+# We need the following in order to create <stdint.h> when the system
+# doesn't have one that works with the given compiler.
+if GL_GENERATE_STDINT_H
+stdint.h: stdint.in.h $(top_builddir)/config.status
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
+ -e 's/@''HAVE_C99_STDINT_H''@/$(HAVE_C99_STDINT_H)/g' \
+ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
+ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
+ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
+ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
+ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
+ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
+ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
+ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
+ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
+ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
+ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
+ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
+ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
+ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
+ -e 's/@''GNULIB_OVERRIDES_WINT_T''@/$(GNULIB_OVERRIDES_WINT_T)/g' \
+ < $(srcdir)/stdint.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+else
+stdint.h: $(top_builddir)/config.status
+ rm -f $@
+endif
+MOSTLYCLEANFILES += stdint.h stdint.h-t
+
+EXTRA_DIST += stdint.in.h
+
+## end gnulib module stdint
+
+## begin gnulib module stdio
+
+BUILT_SOURCES += stdio.h
+
+# We need the following in order to create <stdio.h> when the system
+# doesn't have one that works with the given compiler.
+stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \
+ -e 's/@''GNULIB_DPRINTF''@/$(GNULIB_DPRINTF)/g' \
+ -e 's/@''GNULIB_FCLOSE''@/$(GNULIB_FCLOSE)/g' \
+ -e 's/@''GNULIB_FDOPEN''@/$(GNULIB_FDOPEN)/g' \
+ -e 's/@''GNULIB_FFLUSH''@/$(GNULIB_FFLUSH)/g' \
+ -e 's/@''GNULIB_FGETC''@/$(GNULIB_FGETC)/g' \
+ -e 's/@''GNULIB_FGETS''@/$(GNULIB_FGETS)/g' \
+ -e 's/@''GNULIB_FOPEN''@/$(GNULIB_FOPEN)/g' \
+ -e 's/@''GNULIB_FPRINTF''@/$(GNULIB_FPRINTF)/g' \
+ -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GNULIB_FPRINTF_POSIX)/g' \
+ -e 's/@''GNULIB_FPURGE''@/$(GNULIB_FPURGE)/g' \
+ -e 's/@''GNULIB_FPUTC''@/$(GNULIB_FPUTC)/g' \
+ -e 's/@''GNULIB_FPUTS''@/$(GNULIB_FPUTS)/g' \
+ -e 's/@''GNULIB_FREAD''@/$(GNULIB_FREAD)/g' \
+ -e 's/@''GNULIB_FREOPEN''@/$(GNULIB_FREOPEN)/g' \
+ -e 's/@''GNULIB_FSCANF''@/$(GNULIB_FSCANF)/g' \
+ -e 's/@''GNULIB_FSEEK''@/$(GNULIB_FSEEK)/g' \
+ -e 's/@''GNULIB_FSEEKO''@/$(GNULIB_FSEEKO)/g' \
+ -e 's/@''GNULIB_FTELL''@/$(GNULIB_FTELL)/g' \
+ -e 's/@''GNULIB_FTELLO''@/$(GNULIB_FTELLO)/g' \
+ -e 's/@''GNULIB_FWRITE''@/$(GNULIB_FWRITE)/g' \
+ -e 's/@''GNULIB_GETC''@/$(GNULIB_GETC)/g' \
+ -e 's/@''GNULIB_GETCHAR''@/$(GNULIB_GETCHAR)/g' \
+ -e 's/@''GNULIB_GETDELIM''@/$(GNULIB_GETDELIM)/g' \
+ -e 's/@''GNULIB_GETLINE''@/$(GNULIB_GETLINE)/g' \
+ -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GNULIB_OBSTACK_PRINTF)/g' \
+ -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GNULIB_OBSTACK_PRINTF_POSIX)/g' \
+ -e 's/@''GNULIB_PCLOSE''@/$(GNULIB_PCLOSE)/g' \
+ -e 's/@''GNULIB_PERROR''@/$(GNULIB_PERROR)/g' \
+ -e 's/@''GNULIB_POPEN''@/$(GNULIB_POPEN)/g' \
+ -e 's/@''GNULIB_PRINTF''@/$(GNULIB_PRINTF)/g' \
+ -e 's/@''GNULIB_PRINTF_POSIX''@/$(GNULIB_PRINTF_POSIX)/g' \
+ -e 's/@''GNULIB_PUTC''@/$(GNULIB_PUTC)/g' \
+ -e 's/@''GNULIB_PUTCHAR''@/$(GNULIB_PUTCHAR)/g' \
+ -e 's/@''GNULIB_PUTS''@/$(GNULIB_PUTS)/g' \
+ -e 's/@''GNULIB_REMOVE''@/$(GNULIB_REMOVE)/g' \
+ -e 's/@''GNULIB_RENAME''@/$(GNULIB_RENAME)/g' \
+ -e 's/@''GNULIB_RENAMEAT''@/$(GNULIB_RENAMEAT)/g' \
+ -e 's/@''GNULIB_SCANF''@/$(GNULIB_SCANF)/g' \
+ -e 's/@''GNULIB_SNPRINTF''@/$(GNULIB_SNPRINTF)/g' \
+ -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GNULIB_SPRINTF_POSIX)/g' \
+ -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GNULIB_STDIO_H_NONBLOCKING)/g' \
+ -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GNULIB_STDIO_H_SIGPIPE)/g' \
+ -e 's/@''GNULIB_TMPFILE''@/$(GNULIB_TMPFILE)/g' \
+ -e 's/@''GNULIB_VASPRINTF''@/$(GNULIB_VASPRINTF)/g' \
+ -e 's/@''GNULIB_VDPRINTF''@/$(GNULIB_VDPRINTF)/g' \
+ -e 's/@''GNULIB_VFPRINTF''@/$(GNULIB_VFPRINTF)/g' \
+ -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GNULIB_VFPRINTF_POSIX)/g' \
+ -e 's/@''GNULIB_VFSCANF''@/$(GNULIB_VFSCANF)/g' \
+ -e 's/@''GNULIB_VSCANF''@/$(GNULIB_VSCANF)/g' \
+ -e 's/@''GNULIB_VPRINTF''@/$(GNULIB_VPRINTF)/g' \
+ -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GNULIB_VPRINTF_POSIX)/g' \
+ -e 's/@''GNULIB_VSNPRINTF''@/$(GNULIB_VSNPRINTF)/g' \
+ -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GNULIB_VSPRINTF_POSIX)/g' \
+ < $(srcdir)/stdio.in.h | \
+ sed -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \
+ -e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \
+ -e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \
+ -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \
+ -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \
+ -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \
+ -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \
+ -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \
+ -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \
+ -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \
+ -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \
+ -e 's|@''HAVE_PCLOSE''@|$(HAVE_PCLOSE)|g' \
+ -e 's|@''HAVE_POPEN''@|$(HAVE_POPEN)|g' \
+ -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \
+ -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \
+ -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \
+ -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \
+ -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \
+ -e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \
+ -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \
+ -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \
+ -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \
+ -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \
+ -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \
+ -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \
+ -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \
+ -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \
+ -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \
+ -e 's|@''REPLACE_GETDELIM''@|$(REPLACE_GETDELIM)|g' \
+ -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \
+ -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \
+ -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \
+ -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \
+ -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \
+ -e 's|@''REPLACE_REMOVE''@|$(REPLACE_REMOVE)|g' \
+ -e 's|@''REPLACE_RENAME''@|$(REPLACE_RENAME)|g' \
+ -e 's|@''REPLACE_RENAMEAT''@|$(REPLACE_RENAMEAT)|g' \
+ -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \
+ -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \
+ -e 's|@''REPLACE_STDIO_READ_FUNCS''@|$(REPLACE_STDIO_READ_FUNCS)|g' \
+ -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \
+ -e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \
+ -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \
+ -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \
+ -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \
+ -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \
+ -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \
+ -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \
+ -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+ } > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += stdio.h stdio.h-t
+
+EXTRA_DIST += stdio.in.h
+
+## end gnulib module stdio
+
+## begin gnulib module stdlib
+
+BUILT_SOURCES += stdlib.h
+
+# We need the following in order to create <stdlib.h> when the system
+# doesn't have one that works with the given compiler.
+stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
+ $(_NORETURN_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \
+ -e 's/@''GNULIB__EXIT''@/$(GNULIB__EXIT)/g' \
+ -e 's/@''GNULIB_ATOLL''@/$(GNULIB_ATOLL)/g' \
+ -e 's/@''GNULIB_CALLOC_POSIX''@/$(GNULIB_CALLOC_POSIX)/g' \
+ -e 's/@''GNULIB_CANONICALIZE_FILE_NAME''@/$(GNULIB_CANONICALIZE_FILE_NAME)/g' \
+ -e 's/@''GNULIB_GETLOADAVG''@/$(GNULIB_GETLOADAVG)/g' \
+ -e 's/@''GNULIB_GETSUBOPT''@/$(GNULIB_GETSUBOPT)/g' \
+ -e 's/@''GNULIB_GRANTPT''@/$(GNULIB_GRANTPT)/g' \
+ -e 's/@''GNULIB_MALLOC_POSIX''@/$(GNULIB_MALLOC_POSIX)/g' \
+ -e 's/@''GNULIB_MBTOWC''@/$(GNULIB_MBTOWC)/g' \
+ -e 's/@''GNULIB_MKDTEMP''@/$(GNULIB_MKDTEMP)/g' \
+ -e 's/@''GNULIB_MKOSTEMP''@/$(GNULIB_MKOSTEMP)/g' \
+ -e 's/@''GNULIB_MKOSTEMPS''@/$(GNULIB_MKOSTEMPS)/g' \
+ -e 's/@''GNULIB_MKSTEMP''@/$(GNULIB_MKSTEMP)/g' \
+ -e 's/@''GNULIB_MKSTEMPS''@/$(GNULIB_MKSTEMPS)/g' \
+ -e 's/@''GNULIB_POSIX_OPENPT''@/$(GNULIB_POSIX_OPENPT)/g' \
+ -e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \
+ -e 's/@''GNULIB_PTSNAME_R''@/$(GNULIB_PTSNAME_R)/g' \
+ -e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \
+ -e 's/@''GNULIB_QSORT_R''@/$(GNULIB_QSORT_R)/g' \
+ -e 's/@''GNULIB_RANDOM''@/$(GNULIB_RANDOM)/g' \
+ -e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \
+ -e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \
+ -e 's/@''GNULIB_REALLOCARRAY''@/$(GNULIB_REALLOCARRAY)/g' \
+ -e 's/@''GNULIB_REALPATH''@/$(GNULIB_REALPATH)/g' \
+ -e 's/@''GNULIB_RPMATCH''@/$(GNULIB_RPMATCH)/g' \
+ -e 's/@''GNULIB_SECURE_GETENV''@/$(GNULIB_SECURE_GETENV)/g' \
+ -e 's/@''GNULIB_SETENV''@/$(GNULIB_SETENV)/g' \
+ -e 's/@''GNULIB_STRTOD''@/$(GNULIB_STRTOD)/g' \
+ -e 's/@''GNULIB_STRTOLD''@/$(GNULIB_STRTOLD)/g' \
+ -e 's/@''GNULIB_STRTOLL''@/$(GNULIB_STRTOLL)/g' \
+ -e 's/@''GNULIB_STRTOULL''@/$(GNULIB_STRTOULL)/g' \
+ -e 's/@''GNULIB_SYSTEM_POSIX''@/$(GNULIB_SYSTEM_POSIX)/g' \
+ -e 's/@''GNULIB_UNLOCKPT''@/$(GNULIB_UNLOCKPT)/g' \
+ -e 's/@''GNULIB_UNSETENV''@/$(GNULIB_UNSETENV)/g' \
+ -e 's/@''GNULIB_WCTOMB''@/$(GNULIB_WCTOMB)/g' \
+ < $(srcdir)/stdlib.in.h | \
+ sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \
+ -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \
+ -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \
+ -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \
+ -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
+ -e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \
+ -e 's|@''HAVE_INITSTATE''@|$(HAVE_INITSTATE)|g' \
+ -e 's|@''HAVE_DECL_INITSTATE''@|$(HAVE_DECL_INITSTATE)|g' \
+ -e 's|@''HAVE_MBTOWC''@|$(HAVE_MBTOWC)|g' \
+ -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \
+ -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \
+ -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \
+ -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \
+ -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \
+ -e 's|@''HAVE_POSIX_OPENPT''@|$(HAVE_POSIX_OPENPT)|g' \
+ -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \
+ -e 's|@''HAVE_PTSNAME_R''@|$(HAVE_PTSNAME_R)|g' \
+ -e 's|@''HAVE_QSORT_R''@|$(HAVE_QSORT_R)|g' \
+ -e 's|@''HAVE_RANDOM''@|$(HAVE_RANDOM)|g' \
+ -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \
+ -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \
+ -e 's|@''HAVE_REALLOCARRAY''@|$(HAVE_REALLOCARRAY)|g' \
+ -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \
+ -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \
+ -e 's|@''HAVE_SECURE_GETENV''@|$(HAVE_SECURE_GETENV)|g' \
+ -e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \
+ -e 's|@''HAVE_SETSTATE''@|$(HAVE_SETSTATE)|g' \
+ -e 's|@''HAVE_DECL_SETSTATE''@|$(HAVE_DECL_SETSTATE)|g' \
+ -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \
+ -e 's|@''HAVE_STRTOLD''@|$(HAVE_STRTOLD)|g' \
+ -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \
+ -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \
+ -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \
+ -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \
+ -e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \
+ -e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \
+ -e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \
+ -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \
+ -e 's|@''REPLACE_INITSTATE''@|$(REPLACE_INITSTATE)|g' \
+ -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \
+ -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \
+ -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
+ -e 's|@''REPLACE_PTSNAME''@|$(REPLACE_PTSNAME)|g' \
+ -e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \
+ -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
+ -e 's|@''REPLACE_QSORT_R''@|$(REPLACE_QSORT_R)|g' \
+ -e 's|@''REPLACE_RANDOM''@|$(REPLACE_RANDOM)|g' \
+ -e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \
+ -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \
+ -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \
+ -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \
+ -e 's|@''REPLACE_SETSTATE''@|$(REPLACE_SETSTATE)|g' \
+ -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
+ -e 's|@''REPLACE_STRTOLD''@|$(REPLACE_STRTOLD)|g' \
+ -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \
+ -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ -e '/definition of _Noreturn/r $(_NORETURN_H)' \
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+ } > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += stdlib.h stdlib.h-t
+
+EXTRA_DIST += stdlib.in.h
+
+## end gnulib module stdlib
+
+## begin gnulib module stpcpy
+
+
+EXTRA_DIST += stpcpy.c
+
+EXTRA_libgnu_a_SOURCES += stpcpy.c
+
+## end gnulib module stpcpy
+
+## begin gnulib module strerror
+
+
+EXTRA_DIST += strerror.c
+
+EXTRA_libgnu_a_SOURCES += strerror.c
+
+## end gnulib module strerror
+
+## begin gnulib module strerror-override
+
+
+EXTRA_DIST += strerror-override.c strerror-override.h
+
+EXTRA_libgnu_a_SOURCES += strerror-override.c
+
+## end gnulib module strerror-override
+
+## begin gnulib module string
+
+BUILT_SOURCES += string.h
+
+# We need the following in order to create <string.h> when the system
+# doesn't have one that works with the given compiler.
+string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
+ -e 's/@''GNULIB_EXPLICIT_BZERO''@/$(GNULIB_EXPLICIT_BZERO)/g' \
+ -e 's/@''GNULIB_FFSL''@/$(GNULIB_FFSL)/g' \
+ -e 's/@''GNULIB_FFSLL''@/$(GNULIB_FFSLL)/g' \
+ -e 's/@''GNULIB_MBSLEN''@/$(GNULIB_MBSLEN)/g' \
+ -e 's/@''GNULIB_MBSNLEN''@/$(GNULIB_MBSNLEN)/g' \
+ -e 's/@''GNULIB_MBSCHR''@/$(GNULIB_MBSCHR)/g' \
+ -e 's/@''GNULIB_MBSRCHR''@/$(GNULIB_MBSRCHR)/g' \
+ -e 's/@''GNULIB_MBSSTR''@/$(GNULIB_MBSSTR)/g' \
+ -e 's/@''GNULIB_MBSCASECMP''@/$(GNULIB_MBSCASECMP)/g' \
+ -e 's/@''GNULIB_MBSNCASECMP''@/$(GNULIB_MBSNCASECMP)/g' \
+ -e 's/@''GNULIB_MBSPCASECMP''@/$(GNULIB_MBSPCASECMP)/g' \
+ -e 's/@''GNULIB_MBSCASESTR''@/$(GNULIB_MBSCASESTR)/g' \
+ -e 's/@''GNULIB_MBSCSPN''@/$(GNULIB_MBSCSPN)/g' \
+ -e 's/@''GNULIB_MBSPBRK''@/$(GNULIB_MBSPBRK)/g' \
+ -e 's/@''GNULIB_MBSSPN''@/$(GNULIB_MBSSPN)/g' \
+ -e 's/@''GNULIB_MBSSEP''@/$(GNULIB_MBSSEP)/g' \
+ -e 's/@''GNULIB_MBSTOK_R''@/$(GNULIB_MBSTOK_R)/g' \
+ -e 's/@''GNULIB_MEMCHR''@/$(GNULIB_MEMCHR)/g' \
+ -e 's/@''GNULIB_MEMMEM''@/$(GNULIB_MEMMEM)/g' \
+ -e 's/@''GNULIB_MEMPCPY''@/$(GNULIB_MEMPCPY)/g' \
+ -e 's/@''GNULIB_MEMRCHR''@/$(GNULIB_MEMRCHR)/g' \
+ -e 's/@''GNULIB_RAWMEMCHR''@/$(GNULIB_RAWMEMCHR)/g' \
+ -e 's/@''GNULIB_STPCPY''@/$(GNULIB_STPCPY)/g' \
+ -e 's/@''GNULIB_STPNCPY''@/$(GNULIB_STPNCPY)/g' \
+ -e 's/@''GNULIB_STRCHRNUL''@/$(GNULIB_STRCHRNUL)/g' \
+ -e 's/@''GNULIB_STRDUP''@/$(GNULIB_STRDUP)/g' \
+ -e 's/@''GNULIB_STRNCAT''@/$(GNULIB_STRNCAT)/g' \
+ -e 's/@''GNULIB_STRNDUP''@/$(GNULIB_STRNDUP)/g' \
+ -e 's/@''GNULIB_STRNLEN''@/$(GNULIB_STRNLEN)/g' \
+ -e 's/@''GNULIB_STRPBRK''@/$(GNULIB_STRPBRK)/g' \
+ -e 's/@''GNULIB_STRSEP''@/$(GNULIB_STRSEP)/g' \
+ -e 's/@''GNULIB_STRSTR''@/$(GNULIB_STRSTR)/g' \
+ -e 's/@''GNULIB_STRCASESTR''@/$(GNULIB_STRCASESTR)/g' \
+ -e 's/@''GNULIB_STRTOK_R''@/$(GNULIB_STRTOK_R)/g' \
+ -e 's/@''GNULIB_STRERROR''@/$(GNULIB_STRERROR)/g' \
+ -e 's/@''GNULIB_STRERROR_R''@/$(GNULIB_STRERROR_R)/g' \
+ -e 's/@''GNULIB_STRSIGNAL''@/$(GNULIB_STRSIGNAL)/g' \
+ -e 's/@''GNULIB_STRVERSCMP''@/$(GNULIB_STRVERSCMP)/g' \
+ < $(srcdir)/string.in.h | \
+ sed -e 's|@''HAVE_EXPLICIT_BZERO''@|$(HAVE_EXPLICIT_BZERO)|g' \
+ -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \
+ -e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \
+ -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \
+ -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \
+ -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
+ -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
+ -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+ -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \
+ -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
+ -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+ -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+ -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+ -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
+ -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
+ -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
+ -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
+ -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
+ -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+ -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \
+ -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
+ -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+ -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
+ -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
+ -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \
+ -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \
+ -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
+ -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \
+ -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \
+ -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \
+ -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
+ -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
+ -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \
+ -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+ -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \
+ -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
+ -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+ < $(srcdir)/string.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += string.h string.h-t
+
+EXTRA_DIST += string.in.h
+
+## end gnulib module string
+
+## begin gnulib module sys_types
+
+BUILT_SOURCES += sys/types.h
+
+# We need the following in order to create <sys/types.h> when the system
+# doesn't have one that works with the given compiler.
+sys/types.h: sys_types.in.h $(top_builddir)/config.status
+ $(AM_V_at)$(MKDIR_P) sys
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \
+ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \
+ -e 's|@''WINDOWS_STAT_INODES''@|$(WINDOWS_STAT_INODES)|g' \
+ < $(srcdir)/sys_types.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += sys/types.h sys/types.h-t
+
+EXTRA_DIST += sys_types.in.h
+
+## end gnulib module sys_types
+
+## begin gnulib module unistd
+
+BUILT_SOURCES += unistd.h
+libgnu_a_SOURCES += unistd.c
+
+# We need the following in order to create an empty placeholder for
+# <unistd.h> when the system doesn't have one.
+unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
+ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \
+ -e 's/@''GNULIB_ACCESS''@/$(GNULIB_ACCESS)/g' \
+ -e 's/@''GNULIB_CHDIR''@/$(GNULIB_CHDIR)/g' \
+ -e 's/@''GNULIB_CHOWN''@/$(GNULIB_CHOWN)/g' \
+ -e 's/@''GNULIB_CLOSE''@/$(GNULIB_CLOSE)/g' \
+ -e 's/@''GNULIB_COPY_FILE_RANGE''@/$(GNULIB_COPY_FILE_RANGE)/g' \
+ -e 's/@''GNULIB_DUP''@/$(GNULIB_DUP)/g' \
+ -e 's/@''GNULIB_DUP2''@/$(GNULIB_DUP2)/g' \
+ -e 's/@''GNULIB_DUP3''@/$(GNULIB_DUP3)/g' \
+ -e 's/@''GNULIB_ENVIRON''@/$(GNULIB_ENVIRON)/g' \
+ -e 's/@''GNULIB_EUIDACCESS''@/$(GNULIB_EUIDACCESS)/g' \
+ -e 's/@''GNULIB_FACCESSAT''@/$(GNULIB_FACCESSAT)/g' \
+ -e 's/@''GNULIB_FCHDIR''@/$(GNULIB_FCHDIR)/g' \
+ -e 's/@''GNULIB_FCHOWNAT''@/$(GNULIB_FCHOWNAT)/g' \
+ -e 's/@''GNULIB_FDATASYNC''@/$(GNULIB_FDATASYNC)/g' \
+ -e 's/@''GNULIB_FSYNC''@/$(GNULIB_FSYNC)/g' \
+ -e 's/@''GNULIB_FTRUNCATE''@/$(GNULIB_FTRUNCATE)/g' \
+ -e 's/@''GNULIB_GETCWD''@/$(GNULIB_GETCWD)/g' \
+ -e 's/@''GNULIB_GETDOMAINNAME''@/$(GNULIB_GETDOMAINNAME)/g' \
+ -e 's/@''GNULIB_GETDTABLESIZE''@/$(GNULIB_GETDTABLESIZE)/g' \
+ -e 's/@''GNULIB_GETGROUPS''@/$(GNULIB_GETGROUPS)/g' \
+ -e 's/@''GNULIB_GETHOSTNAME''@/$(GNULIB_GETHOSTNAME)/g' \
+ -e 's/@''GNULIB_GETLOGIN''@/$(GNULIB_GETLOGIN)/g' \
+ -e 's/@''GNULIB_GETLOGIN_R''@/$(GNULIB_GETLOGIN_R)/g' \
+ -e 's/@''GNULIB_GETPAGESIZE''@/$(GNULIB_GETPAGESIZE)/g' \
+ -e 's/@''GNULIB_GETPASS''@/$(GNULIB_GETPASS)/g' \
+ -e 's/@''GNULIB_GETUSERSHELL''@/$(GNULIB_GETUSERSHELL)/g' \
+ -e 's/@''GNULIB_GROUP_MEMBER''@/$(GNULIB_GROUP_MEMBER)/g' \
+ -e 's/@''GNULIB_ISATTY''@/$(GNULIB_ISATTY)/g' \
+ -e 's/@''GNULIB_LCHOWN''@/$(GNULIB_LCHOWN)/g' \
+ -e 's/@''GNULIB_LINK''@/$(GNULIB_LINK)/g' \
+ -e 's/@''GNULIB_LINKAT''@/$(GNULIB_LINKAT)/g' \
+ -e 's/@''GNULIB_LSEEK''@/$(GNULIB_LSEEK)/g' \
+ -e 's/@''GNULIB_PIPE''@/$(GNULIB_PIPE)/g' \
+ -e 's/@''GNULIB_PIPE2''@/$(GNULIB_PIPE2)/g' \
+ -e 's/@''GNULIB_PREAD''@/$(GNULIB_PREAD)/g' \
+ -e 's/@''GNULIB_PWRITE''@/$(GNULIB_PWRITE)/g' \
+ -e 's/@''GNULIB_READ''@/$(GNULIB_READ)/g' \
+ -e 's/@''GNULIB_READLINK''@/$(GNULIB_READLINK)/g' \
+ -e 's/@''GNULIB_READLINKAT''@/$(GNULIB_READLINKAT)/g' \
+ -e 's/@''GNULIB_RMDIR''@/$(GNULIB_RMDIR)/g' \
+ -e 's/@''GNULIB_SETHOSTNAME''@/$(GNULIB_SETHOSTNAME)/g' \
+ -e 's/@''GNULIB_SLEEP''@/$(GNULIB_SLEEP)/g' \
+ -e 's/@''GNULIB_SYMLINK''@/$(GNULIB_SYMLINK)/g' \
+ -e 's/@''GNULIB_SYMLINKAT''@/$(GNULIB_SYMLINKAT)/g' \
+ -e 's/@''GNULIB_TRUNCATE''@/$(GNULIB_TRUNCATE)/g' \
+ -e 's/@''GNULIB_TTYNAME_R''@/$(GNULIB_TTYNAME_R)/g' \
+ -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GNULIB_GL_UNISTD_H_GETOPT)/g' \
+ -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GNULIB_UNISTD_H_NONBLOCKING)/g' \
+ -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GNULIB_UNISTD_H_SIGPIPE)/g' \
+ -e 's/@''GNULIB_UNLINK''@/$(GNULIB_UNLINK)/g' \
+ -e 's/@''GNULIB_UNLINKAT''@/$(GNULIB_UNLINKAT)/g' \
+ -e 's/@''GNULIB_USLEEP''@/$(GNULIB_USLEEP)/g' \
+ -e 's/@''GNULIB_WRITE''@/$(GNULIB_WRITE)/g' \
+ < $(srcdir)/unistd.in.h | \
+ sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \
+ -e 's|@''HAVE_COPY_FILE_RANGE''@|$(HAVE_COPY_FILE_RANGE)|g' \
+ -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
+ -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \
+ -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
+ -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \
+ -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \
+ -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \
+ -e 's|@''HAVE_FDATASYNC''@|$(HAVE_FDATASYNC)|g' \
+ -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
+ -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
+ -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \
+ -e 's|@''HAVE_GETGROUPS''@|$(HAVE_GETGROUPS)|g' \
+ -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \
+ -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
+ -e 's|@''HAVE_GETPASS''@|$(HAVE_GETPASS)|g' \
+ -e 's|@''HAVE_GROUP_MEMBER''@|$(HAVE_GROUP_MEMBER)|g' \
+ -e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \
+ -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \
+ -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \
+ -e 's|@''HAVE_PIPE''@|$(HAVE_PIPE)|g' \
+ -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \
+ -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \
+ -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \
+ -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
+ -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \
+ -e 's|@''HAVE_SETHOSTNAME''@|$(HAVE_SETHOSTNAME)|g' \
+ -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
+ -e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \
+ -e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \
+ -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \
+ -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \
+ -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
+ -e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \
+ -e 's|@''HAVE_DECL_FDATASYNC''@|$(HAVE_DECL_FDATASYNC)|g' \
+ -e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' \
+ -e 's|@''HAVE_DECL_GETLOGIN''@|$(HAVE_DECL_GETLOGIN)|g' \
+ -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+ -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \
+ -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \
+ -e 's|@''HAVE_DECL_SETHOSTNAME''@|$(HAVE_DECL_SETHOSTNAME)|g' \
+ -e 's|@''HAVE_DECL_TRUNCATE''@|$(HAVE_DECL_TRUNCATE)|g' \
+ -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \
+ -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
+ -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
+ | \
+ sed -e 's|@''REPLACE_ACCESS''@|$(REPLACE_ACCESS)|g' \
+ -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
+ -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
+ -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \
+ -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
+ -e 's|@''REPLACE_FACCESSAT''@|$(REPLACE_FACCESSAT)|g' \
+ -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \
+ -e 's|@''REPLACE_FTRUNCATE''@|$(REPLACE_FTRUNCATE)|g' \
+ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
+ -e 's|@''REPLACE_GETDOMAINNAME''@|$(REPLACE_GETDOMAINNAME)|g' \
+ -e 's|@''REPLACE_GETDTABLESIZE''@|$(REPLACE_GETDTABLESIZE)|g' \
+ -e 's|@''REPLACE_GETLOGIN_R''@|$(REPLACE_GETLOGIN_R)|g' \
+ -e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \
+ -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \
+ -e 's|@''REPLACE_GETPASS''@|$(REPLACE_GETPASS)|g' \
+ -e 's|@''REPLACE_ISATTY''@|$(REPLACE_ISATTY)|g' \
+ -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \
+ -e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \
+ -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \
+ -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
+ -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \
+ -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \
+ -e 's|@''REPLACE_READ''@|$(REPLACE_READ)|g' \
+ -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \
+ -e 's|@''REPLACE_READLINKAT''@|$(REPLACE_READLINKAT)|g' \
+ -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \
+ -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \
+ -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \
+ -e 's|@''REPLACE_SYMLINKAT''@|$(REPLACE_SYMLINKAT)|g' \
+ -e 's|@''REPLACE_TRUNCATE''@|$(REPLACE_TRUNCATE)|g' \
+ -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \
+ -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \
+ -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \
+ -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \
+ -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \
+ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \
+ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+ } > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += unistd.h unistd.h-t
+
+EXTRA_DIST += unistd.in.h
+
+## end gnulib module unistd
+
+## begin gnulib module verify
+
+
+EXTRA_DIST += verify.h
+
+## end gnulib module verify
+
+## begin gnulib module xalloc
+
+libgnu_a_SOURCES += xmalloc.c
+
+EXTRA_DIST += xalloc.h
+
+## end gnulib module xalloc
+
+## begin gnulib module xalloc-die
+
+libgnu_a_SOURCES += xalloc-die.c
+
+## end gnulib module xalloc-die
+
+## begin gnulib module xalloc-oversized
+
+
+EXTRA_DIST += xalloc-oversized.h
+
+## end gnulib module xalloc-oversized
+
+## begin gnulib module xconcat-filename
+
+libgnu_a_SOURCES += xconcat-filename.c
+
+EXTRA_DIST += concat-filename.h
+
+## end gnulib module xconcat-filename
+
+
+mostlyclean-local: mostlyclean-generic
+ @for dir in '' $(MOSTLYCLEANDIRS); do \
+ if test -n "$$dir" && test -d $$dir; then \
+ echo "rmdir $$dir"; rmdir $$dir; \
+ fi; \
+ done; \
+ :
diff --git a/lib/Makefile.in b/lib/Makefile.in
new file mode 100644
index 0000000..0e33730
--- /dev/null
+++ b/lib/Makefile.in
@@ -0,0 +1,2118 @@
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This file is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this file. If not, see <https://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License,
+# this file may be distributed as part of a program that
+# contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+# Reproduce by:
+# gnulib-tool --import --local-dir=gl \
+# --lib=libgnu \
+# --source-base=lib \
+# --m4-base=m4 \
+# --doc-base=doc \
+# --tests-base=tests \
+# --aux-dir=build-aux \
+# --no-conditional-dependencies \
+# --no-libtool \
+# --macro-prefix=gl \
+# alloca \
+# fdl \
+# findprog-in \
+# getloadavg \
+# host-cpu-c-abi \
+# make-glob \
+# strerror
+
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+@USE_SYSTEM_GLOB_FALSE@am__append_1 = fnmatch.c glob.c
+@USE_SYSTEM_GLOB_FALSE@am__append_2 = fnmatch.h glob.h
+@USE_SYSTEM_GLOB_FALSE@am__append_3 = fnmatch.h fnmatch.h-t glob.h \
+@USE_SYSTEM_GLOB_FALSE@ glob.h-t
+subdir = lib
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
+ $(top_srcdir)/m4/absolute-header.m4 $(top_srcdir)/m4/access.m4 \
+ $(top_srcdir)/m4/acinclude.m4 $(top_srcdir)/m4/alloca.m4 \
+ $(top_srcdir)/m4/asm-underscore.m4 $(top_srcdir)/m4/close.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dospaths.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \
+ $(top_srcdir)/m4/eaccess.m4 $(top_srcdir)/m4/errno_h.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/extensions.m4 \
+ $(top_srcdir)/m4/extern-inline.m4 $(top_srcdir)/m4/fcntl-o.m4 \
+ $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \
+ $(top_srcdir)/m4/findprog-in.m4 \
+ $(top_srcdir)/m4/getdtablesize.m4 \
+ $(top_srcdir)/m4/getloadavg.m4 $(top_srcdir)/m4/getprogname.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gnulib-common.m4 \
+ $(top_srcdir)/m4/gnulib-comp.m4 \
+ $(top_srcdir)/m4/host-cpu-c-abi.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/include_next.m4 \
+ $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+ $(top_srcdir)/m4/limits-h.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/msvc-inval.m4 \
+ $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/off_t.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdbool.m4 \
+ $(top_srcdir)/m4/stddef_h.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \
+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strerror.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/sys_socket_h.m4 \
+ $(top_srcdir)/m4/sys_types_h.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/wchar_t.m4 \
+ $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+ $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/src/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+AM_V_AR = $(am__v_AR_@AM_V@)
+am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+am__v_AR_0 = @echo " AR " $@;
+am__v_AR_1 =
+libgnu_a_AR = $(AR) $(ARFLAGS)
+am__DEPENDENCIES_1 =
+am__libgnu_a_SOURCES_DIST = concat-filename.c dirname-lgpl.c \
+ basename-lgpl.c stripslash.c exitfail.c fd-hook.c findprog.h \
+ findprog-in.c getprogname.h getprogname.c gettext.h fnmatch.c \
+ glob.c unistd.c xmalloc.c xalloc-die.c xconcat-filename.c
+@USE_SYSTEM_GLOB_FALSE@am__objects_1 = fnmatch.$(OBJEXT) \
+@USE_SYSTEM_GLOB_FALSE@ glob.$(OBJEXT)
+am_libgnu_a_OBJECTS = concat-filename.$(OBJEXT) dirname-lgpl.$(OBJEXT) \
+ basename-lgpl.$(OBJEXT) stripslash.$(OBJEXT) \
+ exitfail.$(OBJEXT) fd-hook.$(OBJEXT) findprog-in.$(OBJEXT) \
+ getprogname.$(OBJEXT) $(am__objects_1) unistd.$(OBJEXT) \
+ xmalloc.$(OBJEXT) xalloc-die.$(OBJEXT) \
+ xconcat-filename.$(OBJEXT)
+libgnu_a_OBJECTS = $(am_libgnu_a_OBJECTS)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/access.Po ./$(DEPDIR)/alloca.Po \
+ ./$(DEPDIR)/basename-lgpl.Po ./$(DEPDIR)/close.Po \
+ ./$(DEPDIR)/concat-filename.Po ./$(DEPDIR)/dirname-lgpl.Po \
+ ./$(DEPDIR)/dup2.Po ./$(DEPDIR)/error.Po \
+ ./$(DEPDIR)/exitfail.Po ./$(DEPDIR)/fcntl.Po \
+ ./$(DEPDIR)/fd-hook.Po ./$(DEPDIR)/findprog-in.Po \
+ ./$(DEPDIR)/fnmatch.Po ./$(DEPDIR)/getdtablesize.Po \
+ ./$(DEPDIR)/getloadavg.Po ./$(DEPDIR)/getprogname.Po \
+ ./$(DEPDIR)/glob.Po ./$(DEPDIR)/malloc.Po \
+ ./$(DEPDIR)/msvc-inval.Po ./$(DEPDIR)/msvc-nothrow.Po \
+ ./$(DEPDIR)/stpcpy.Po ./$(DEPDIR)/strerror-override.Po \
+ ./$(DEPDIR)/strerror.Po ./$(DEPDIR)/stripslash.Po \
+ ./$(DEPDIR)/unistd.Po ./$(DEPDIR)/xalloc-die.Po \
+ ./$(DEPDIR)/xconcat-filename.Po ./$(DEPDIR)/xmalloc.Po
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libgnu_a_SOURCES) $(EXTRA_libgnu_a_SOURCES)
+DIST_SOURCES = $(am__libgnu_a_SOURCES_DIST) $(EXTRA_libgnu_a_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+ ctags-recursive dvi-recursive html-recursive info-recursive \
+ install-data-recursive install-dvi-recursive \
+ install-exec-recursive install-html-recursive \
+ install-info-recursive install-pdf-recursive \
+ install-ps-recursive install-recursive installcheck-recursive \
+ installdirs-recursive pdf-recursive ps-recursive \
+ tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+HEADERS = $(noinst_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+ $(RECURSIVE_TARGETS) \
+ $(RECURSIVE_CLEAN_TARGETS) \
+ $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+ distdir distdir-am
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+am__DIST_COMMON = $(srcdir)/Makefile.in \
+ $(top_srcdir)/build-aux/depcomp alloca.c
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AM_LDFLAGS = @AM_LDFLAGS@
+APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@
+AR = @AR@
+ARFLAGS = @ARFLAGS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
+BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
+BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@
+BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@
+BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@
+EMULTIHOP_VALUE = @EMULTIHOP_VALUE@
+ENOLINK_HIDDEN = @ENOLINK_HIDDEN@
+ENOLINK_VALUE = @ENOLINK_VALUE@
+EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
+EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
+ERRNO_H = @ERRNO_H@
+EXEEXT = @EXEEXT@
+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_ACCESS = @GNULIB_ACCESS@
+GNULIB_ATOLL = @GNULIB_ATOLL@
+GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@
+GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@
+GNULIB_CHDIR = @GNULIB_CHDIR@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_CLOSE = @GNULIB_CLOSE@
+GNULIB_COPY_FILE_RANGE = @GNULIB_COPY_FILE_RANGE@
+GNULIB_CREAT = @GNULIB_CREAT@
+GNULIB_DPRINTF = @GNULIB_DPRINTF@
+GNULIB_DUP = @GNULIB_DUP@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_DUP3 = @GNULIB_DUP3@
+GNULIB_ENVIRON = @GNULIB_ENVIRON@
+GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@
+GNULIB_EXPLICIT_BZERO = @GNULIB_EXPLICIT_BZERO@
+GNULIB_FACCESSAT = @GNULIB_FACCESSAT@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@
+GNULIB_FCLOSE = @GNULIB_FCLOSE@
+GNULIB_FCNTL = @GNULIB_FCNTL@
+GNULIB_FDATASYNC = @GNULIB_FDATASYNC@
+GNULIB_FDOPEN = @GNULIB_FDOPEN@
+GNULIB_FFLUSH = @GNULIB_FFLUSH@
+GNULIB_FFSL = @GNULIB_FFSL@
+GNULIB_FFSLL = @GNULIB_FFSLL@
+GNULIB_FGETC = @GNULIB_FGETC@
+GNULIB_FGETS = @GNULIB_FGETS@
+GNULIB_FOPEN = @GNULIB_FOPEN@
+GNULIB_FPRINTF = @GNULIB_FPRINTF@
+GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@
+GNULIB_FPURGE = @GNULIB_FPURGE@
+GNULIB_FPUTC = @GNULIB_FPUTC@
+GNULIB_FPUTS = @GNULIB_FPUTS@
+GNULIB_FREAD = @GNULIB_FREAD@
+GNULIB_FREOPEN = @GNULIB_FREOPEN@
+GNULIB_FSCANF = @GNULIB_FSCANF@
+GNULIB_FSEEK = @GNULIB_FSEEK@
+GNULIB_FSEEKO = @GNULIB_FSEEKO@
+GNULIB_FSYNC = @GNULIB_FSYNC@
+GNULIB_FTELL = @GNULIB_FTELL@
+GNULIB_FTELLO = @GNULIB_FTELLO@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_FWRITE = @GNULIB_FWRITE@
+GNULIB_GETC = @GNULIB_GETC@
+GNULIB_GETCHAR = @GNULIB_GETCHAR@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETDELIM = @GNULIB_GETDELIM@
+GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@
+GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@
+GNULIB_GETGROUPS = @GNULIB_GETGROUPS@
+GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@
+GNULIB_GETLINE = @GNULIB_GETLINE@
+GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@
+GNULIB_GETLOGIN = @GNULIB_GETLOGIN@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@
+GNULIB_GETPASS = @GNULIB_GETPASS@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@
+GNULIB_GRANTPT = @GNULIB_GRANTPT@
+GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@
+GNULIB_ISATTY = @GNULIB_ISATTY@
+GNULIB_LCHOWN = @GNULIB_LCHOWN@
+GNULIB_LINK = @GNULIB_LINK@
+GNULIB_LINKAT = @GNULIB_LINKAT@
+GNULIB_LSEEK = @GNULIB_LSEEK@
+GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSNLEN = @GNULIB_MBSNLEN@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MBTOWC = @GNULIB_MBTOWC@
+GNULIB_MEMCHR = @GNULIB_MEMCHR@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@
+GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@
+GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@
+GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@
+GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@
+GNULIB_OPEN = @GNULIB_OPEN@
+GNULIB_OPENAT = @GNULIB_OPENAT@
+GNULIB_OVERRIDES_WINT_T = @GNULIB_OVERRIDES_WINT_T@
+GNULIB_PCLOSE = @GNULIB_PCLOSE@
+GNULIB_PERROR = @GNULIB_PERROR@
+GNULIB_PIPE = @GNULIB_PIPE@
+GNULIB_PIPE2 = @GNULIB_PIPE2@
+GNULIB_POPEN = @GNULIB_POPEN@
+GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@
+GNULIB_PREAD = @GNULIB_PREAD@
+GNULIB_PRINTF = @GNULIB_PRINTF@
+GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@
+GNULIB_PTSNAME = @GNULIB_PTSNAME@
+GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@
+GNULIB_PUTC = @GNULIB_PUTC@
+GNULIB_PUTCHAR = @GNULIB_PUTCHAR@
+GNULIB_PUTENV = @GNULIB_PUTENV@
+GNULIB_PUTS = @GNULIB_PUTS@
+GNULIB_PWRITE = @GNULIB_PWRITE@
+GNULIB_QSORT_R = @GNULIB_QSORT_R@
+GNULIB_RANDOM = @GNULIB_RANDOM@
+GNULIB_RANDOM_R = @GNULIB_RANDOM_R@
+GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@
+GNULIB_READ = @GNULIB_READ@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_READLINKAT = @GNULIB_READLINKAT@
+GNULIB_REALLOCARRAY = @GNULIB_REALLOCARRAY@
+GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@
+GNULIB_REALPATH = @GNULIB_REALPATH@
+GNULIB_REMOVE = @GNULIB_REMOVE@
+GNULIB_RENAME = @GNULIB_RENAME@
+GNULIB_RENAMEAT = @GNULIB_RENAMEAT@
+GNULIB_RMDIR = @GNULIB_RMDIR@
+GNULIB_RPMATCH = @GNULIB_RPMATCH@
+GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@
+GNULIB_SETENV = @GNULIB_SETENV@
+GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_SNPRINTF = @GNULIB_SNPRINTF@
+GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@
+GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@
+GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRERROR = @GNULIB_STRERROR@
+GNULIB_STRERROR_R = @GNULIB_STRERROR_R@
+GNULIB_STRNCAT = @GNULIB_STRNCAT@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@
+GNULIB_STRSTR = @GNULIB_STRSTR@
+GNULIB_STRTOD = @GNULIB_STRTOD@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOLD = @GNULIB_STRTOLD@
+GNULIB_STRTOLL = @GNULIB_STRTOLL@
+GNULIB_STRTOULL = @GNULIB_STRTOULL@
+GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@
+GNULIB_SYMLINK = @GNULIB_SYMLINK@
+GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@
+GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@
+GNULIB_TMPFILE = @GNULIB_TMPFILE@
+GNULIB_TRUNCATE = @GNULIB_TRUNCATE@
+GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@
+GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@
+GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@
+GNULIB_UNLINK = @GNULIB_UNLINK@
+GNULIB_UNLINKAT = @GNULIB_UNLINKAT@
+GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@
+GNULIB_UNSETENV = @GNULIB_UNSETENV@
+GNULIB_USLEEP = @GNULIB_USLEEP@
+GNULIB_VASPRINTF = @GNULIB_VASPRINTF@
+GNULIB_VDPRINTF = @GNULIB_VDPRINTF@
+GNULIB_VFPRINTF = @GNULIB_VFPRINTF@
+GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@
+GNULIB_VFSCANF = @GNULIB_VFSCANF@
+GNULIB_VPRINTF = @GNULIB_VPRINTF@
+GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@
+GNULIB_VSCANF = @GNULIB_VSCANF@
+GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@
+GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@
+GNULIB_WCTOMB = @GNULIB_WCTOMB@
+GNULIB_WRITE = @GNULIB_WRITE@
+GNULIB__EXIT = @GNULIB__EXIT@
+GREP = @GREP@
+GUILE_CFLAGS = @GUILE_CFLAGS@
+GUILE_LIBS = @GUILE_LIBS@
+HAVE_ALLOCA_H = @HAVE_ALLOCA_H@
+HAVE_ATOLL = @HAVE_ATOLL@
+HAVE_C99_STDINT_H = @HAVE_C99_STDINT_H@
+HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@
+HAVE_CHOWN = @HAVE_CHOWN@
+HAVE_COPY_FILE_RANGE = @HAVE_COPY_FILE_RANGE@
+HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@
+HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@
+HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@
+HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@
+HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@
+HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@
+HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@
+HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@
+HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@
+HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@
+HAVE_DECL_GETLOGIN = @HAVE_DECL_GETLOGIN@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
+HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_INITSTATE = @HAVE_DECL_INITSTATE@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
+HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
+HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@
+HAVE_DECL_SETSTATE = @HAVE_DECL_SETSTATE@
+HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_TRUNCATE = @HAVE_DECL_TRUNCATE@
+HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@
+HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@
+HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@
+HAVE_DPRINTF = @HAVE_DPRINTF@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_DUP3 = @HAVE_DUP3@
+HAVE_EUIDACCESS = @HAVE_EUIDACCESS@
+HAVE_EXPLICIT_BZERO = @HAVE_EXPLICIT_BZERO@
+HAVE_FACCESSAT = @HAVE_FACCESSAT@
+HAVE_FCHDIR = @HAVE_FCHDIR@
+HAVE_FCHOWNAT = @HAVE_FCHOWNAT@
+HAVE_FCNTL = @HAVE_FCNTL@
+HAVE_FDATASYNC = @HAVE_FDATASYNC@
+HAVE_FFSL = @HAVE_FFSL@
+HAVE_FFSLL = @HAVE_FFSLL@
+HAVE_FSEEKO = @HAVE_FSEEKO@
+HAVE_FSYNC = @HAVE_FSYNC@
+HAVE_FTELLO = @HAVE_FTELLO@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@
+HAVE_GETGROUPS = @HAVE_GETGROUPS@
+HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@
+HAVE_GETLOGIN = @HAVE_GETLOGIN@
+HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
+HAVE_GETPASS = @HAVE_GETPASS@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_GRANTPT = @HAVE_GRANTPT@
+HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
+HAVE_INITSTATE = @HAVE_INITSTATE@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_LCHOWN = @HAVE_LCHOWN@
+HAVE_LINK = @HAVE_LINK@
+HAVE_LINKAT = @HAVE_LINKAT@
+HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@
+HAVE_MBSLEN = @HAVE_MBSLEN@
+HAVE_MBTOWC = @HAVE_MBTOWC@
+HAVE_MEMCHR = @HAVE_MEMCHR@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_MKOSTEMP = @HAVE_MKOSTEMP@
+HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@
+HAVE_MKSTEMP = @HAVE_MKSTEMP@
+HAVE_MKSTEMPS = @HAVE_MKSTEMPS@
+HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@
+HAVE_OPENAT = @HAVE_OPENAT@
+HAVE_OS_H = @HAVE_OS_H@
+HAVE_PCLOSE = @HAVE_PCLOSE@
+HAVE_PIPE = @HAVE_PIPE@
+HAVE_PIPE2 = @HAVE_PIPE2@
+HAVE_POPEN = @HAVE_POPEN@
+HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@
+HAVE_PREAD = @HAVE_PREAD@
+HAVE_PTSNAME = @HAVE_PTSNAME@
+HAVE_PTSNAME_R = @HAVE_PTSNAME_R@
+HAVE_PWRITE = @HAVE_PWRITE@
+HAVE_QSORT_R = @HAVE_QSORT_R@
+HAVE_RANDOM = @HAVE_RANDOM@
+HAVE_RANDOM_H = @HAVE_RANDOM_H@
+HAVE_RANDOM_R = @HAVE_RANDOM_R@
+HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@
+HAVE_READLINK = @HAVE_READLINK@
+HAVE_READLINKAT = @HAVE_READLINKAT@
+HAVE_REALLOCARRAY = @HAVE_REALLOCARRAY@
+HAVE_REALPATH = @HAVE_REALPATH@
+HAVE_RENAMEAT = @HAVE_RENAMEAT@
+HAVE_RPMATCH = @HAVE_RPMATCH@
+HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
+HAVE_SETENV = @HAVE_SETENV@
+HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@
+HAVE_SETSTATE = @HAVE_SETSTATE@
+HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
+HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@
+HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@
+HAVE_SLEEP = @HAVE_SLEEP@
+HAVE_STDINT_H = @HAVE_STDINT_H@
+HAVE_STPCPY = @HAVE_STPCPY@
+HAVE_STPNCPY = @HAVE_STPNCPY@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_STRTOD = @HAVE_STRTOD@
+HAVE_STRTOLD = @HAVE_STRTOLD@
+HAVE_STRTOLL = @HAVE_STRTOLL@
+HAVE_STRTOULL = @HAVE_STRTOULL@
+HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@
+HAVE_STRVERSCMP = @HAVE_STRVERSCMP@
+HAVE_SYMLINK = @HAVE_SYMLINK@
+HAVE_SYMLINKAT = @HAVE_SYMLINKAT@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@
+HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNLINKAT = @HAVE_UNLINKAT@
+HAVE_UNLOCKPT = @HAVE_UNLOCKPT@
+HAVE_USLEEP = @HAVE_USLEEP@
+HAVE_VASPRINTF = @HAVE_VASPRINTF@
+HAVE_VDPRINTF = @HAVE_VDPRINTF@
+HAVE_WCHAR_H = @HAVE_WCHAR_H@
+HAVE_WCHAR_T = @HAVE_WCHAR_T@
+HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@
+HAVE__BOOL = @HAVE__BOOL@
+HAVE__EXIT = @HAVE__EXIT@
+HOST_CPU = @HOST_CPU@
+HOST_CPU_C_ABI = @HOST_CPU_C_ABI@
+INCLUDE_NEXT = @INCLUDE_NEXT@
+INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LDFLAGS = @LDFLAGS@
+LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@
+LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIMITS_H = @LIMITS_H@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAKE_HOST = @MAKE_HOST@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@
+NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@
+NEXT_AS_FIRST_DIRECTIVE_LIMITS_H = @NEXT_AS_FIRST_DIRECTIVE_LIMITS_H@
+NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
+NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
+NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
+NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
+NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
+NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@
+NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@
+NEXT_ERRNO_H = @NEXT_ERRNO_H@
+NEXT_FCNTL_H = @NEXT_FCNTL_H@
+NEXT_LIMITS_H = @NEXT_LIMITS_H@
+NEXT_STDDEF_H = @NEXT_STDDEF_H@
+NEXT_STDINT_H = @NEXT_STDINT_H@
+NEXT_STDIO_H = @NEXT_STDIO_H@
+NEXT_STDLIB_H = @NEXT_STDLIB_H@
+NEXT_STRING_H = @NEXT_STRING_H@
+NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@
+NEXT_UNISTD_H = @NEXT_UNISTD_H@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POSUB = @POSUB@
+PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
+PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REMOTE = @REMOTE@
+REPLACE_ACCESS = @REPLACE_ACCESS@
+REPLACE_CALLOC = @REPLACE_CALLOC@
+REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_CLOSE = @REPLACE_CLOSE@
+REPLACE_CREAT = @REPLACE_CREAT@
+REPLACE_DPRINTF = @REPLACE_DPRINTF@
+REPLACE_DUP = @REPLACE_DUP@
+REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_FACCESSAT = @REPLACE_FACCESSAT@
+REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
+REPLACE_FCLOSE = @REPLACE_FCLOSE@
+REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FDOPEN = @REPLACE_FDOPEN@
+REPLACE_FFLUSH = @REPLACE_FFLUSH@
+REPLACE_FOPEN = @REPLACE_FOPEN@
+REPLACE_FPRINTF = @REPLACE_FPRINTF@
+REPLACE_FPURGE = @REPLACE_FPURGE@
+REPLACE_FREOPEN = @REPLACE_FREOPEN@
+REPLACE_FSEEK = @REPLACE_FSEEK@
+REPLACE_FSEEKO = @REPLACE_FSEEKO@
+REPLACE_FTELL = @REPLACE_FTELL@
+REPLACE_FTELLO = @REPLACE_FTELLO@
+REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_GETDELIM = @REPLACE_GETDELIM@
+REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
+REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@
+REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
+REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
+REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
+REPLACE_GETPASS = @REPLACE_GETPASS@
+REPLACE_INITSTATE = @REPLACE_INITSTATE@
+REPLACE_ISATTY = @REPLACE_ISATTY@
+REPLACE_LCHOWN = @REPLACE_LCHOWN@
+REPLACE_LINK = @REPLACE_LINK@
+REPLACE_LINKAT = @REPLACE_LINKAT@
+REPLACE_LSEEK = @REPLACE_LSEEK@
+REPLACE_MALLOC = @REPLACE_MALLOC@
+REPLACE_MBTOWC = @REPLACE_MBTOWC@
+REPLACE_MEMCHR = @REPLACE_MEMCHR@
+REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+REPLACE_NULL = @REPLACE_NULL@
+REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@
+REPLACE_OPEN = @REPLACE_OPEN@
+REPLACE_OPENAT = @REPLACE_OPENAT@
+REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_POPEN = @REPLACE_POPEN@
+REPLACE_PREAD = @REPLACE_PREAD@
+REPLACE_PRINTF = @REPLACE_PRINTF@
+REPLACE_PTSNAME = @REPLACE_PTSNAME@
+REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@
+REPLACE_PUTENV = @REPLACE_PUTENV@
+REPLACE_PWRITE = @REPLACE_PWRITE@
+REPLACE_QSORT_R = @REPLACE_QSORT_R@
+REPLACE_RANDOM = @REPLACE_RANDOM@
+REPLACE_RANDOM_R = @REPLACE_RANDOM_R@
+REPLACE_READ = @REPLACE_READ@
+REPLACE_READLINK = @REPLACE_READLINK@
+REPLACE_READLINKAT = @REPLACE_READLINKAT@
+REPLACE_REALLOC = @REPLACE_REALLOC@
+REPLACE_REALPATH = @REPLACE_REALPATH@
+REPLACE_REMOVE = @REPLACE_REMOVE@
+REPLACE_RENAME = @REPLACE_RENAME@
+REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
+REPLACE_RMDIR = @REPLACE_RMDIR@
+REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETSTATE = @REPLACE_SETSTATE@
+REPLACE_SLEEP = @REPLACE_SLEEP@
+REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
+REPLACE_SPRINTF = @REPLACE_SPRINTF@
+REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
+REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPNCPY = @REPLACE_STPNCPY@
+REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
+REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
+REPLACE_STRDUP = @REPLACE_STRDUP@
+REPLACE_STRERROR = @REPLACE_STRERROR@
+REPLACE_STRERROR_R = @REPLACE_STRERROR_R@
+REPLACE_STRNCAT = @REPLACE_STRNCAT@
+REPLACE_STRNDUP = @REPLACE_STRNDUP@
+REPLACE_STRNLEN = @REPLACE_STRNLEN@
+REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@
+REPLACE_STRSTR = @REPLACE_STRSTR@
+REPLACE_STRTOD = @REPLACE_STRTOD@
+REPLACE_STRTOK_R = @REPLACE_STRTOK_R@
+REPLACE_STRTOLD = @REPLACE_STRTOLD@
+REPLACE_SYMLINK = @REPLACE_SYMLINK@
+REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@
+REPLACE_TMPFILE = @REPLACE_TMPFILE@
+REPLACE_TRUNCATE = @REPLACE_TRUNCATE@
+REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
+REPLACE_UNLINK = @REPLACE_UNLINK@
+REPLACE_UNLINKAT = @REPLACE_UNLINKAT@
+REPLACE_UNSETENV = @REPLACE_UNSETENV@
+REPLACE_USLEEP = @REPLACE_USLEEP@
+REPLACE_VASPRINTF = @REPLACE_VASPRINTF@
+REPLACE_VDPRINTF = @REPLACE_VDPRINTF@
+REPLACE_VFPRINTF = @REPLACE_VFPRINTF@
+REPLACE_VPRINTF = @REPLACE_VPRINTF@
+REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
+REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
+REPLACE_WCTOMB = @REPLACE_WCTOMB@
+REPLACE_WRITE = @REPLACE_WRITE@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@
+SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
+STDBOOL_H = @STDBOOL_H@
+STDDEF_H = @STDDEF_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@
+UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@
+UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+USE_NLS = @USE_NLS@
+USE_SYSTEM_GLOB = @USE_SYSTEM_GLOB@
+VERSION = @VERSION@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@
+WINDOWS_STAT_INODES = @WINDOWS_STAT_INODES@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+gl_LIBOBJS = @gl_LIBOBJS@
+gl_LTLIBOBJS = @gl_LTLIBOBJS@
+gltests_LIBOBJS = @gltests_LIBOBJS@
+gltests_LTLIBOBJS = @gltests_LTLIBOBJS@
+gltests_WITNESS = @gltests_WITNESS@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.11 gnits
+SUBDIRS =
+noinst_HEADERS =
+noinst_LIBRARIES = libgnu.a
+noinst_LTLIBRARIES =
+EXTRA_DIST = access.c alloca.c alloca.in.h close.c concat-filename.h \
+ dirname.h dosname.h dup2.c errno.in.h error.c error.h \
+ exitfail.h fcntl.c fcntl.in.h fd-hook.h filename.h \
+ getdtablesize.c getloadavg.c intprops.h limits.in.h \
+ fnmatch.in.h glob.in.h malloc.c msvc-inval.c msvc-inval.h \
+ msvc-nothrow.c msvc-nothrow.h _Noreturn.h arg-nonnull.h \
+ c++defs.h warn-on-use.h stdbool.in.h stddef.in.h stdint.in.h \
+ stdio.in.h stdlib.in.h stpcpy.c strerror.c strerror-override.c \
+ strerror-override.h string.in.h sys_types.in.h unistd.in.h \
+ verify.h xalloc.h xalloc-oversized.h concat-filename.h
+BUILT_SOURCES = $(ALLOCA_H) $(ERRNO_H) fcntl.h $(LIMITS_H) \
+ $(am__append_2) $(STDBOOL_H) $(STDDEF_H) $(STDINT_H) stdio.h \
+ stdlib.h string.h sys/types.h unistd.h
+SUFFIXES =
+MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t errno.h \
+ errno.h-t fcntl.h fcntl.h-t limits.h limits.h-t \
+ $(am__append_3) stdbool.h stdbool.h-t stddef.h stddef.h-t \
+ stdint.h stdint.h-t stdio.h stdio.h-t stdlib.h stdlib.h-t \
+ string.h string.h-t sys/types.h sys/types.h-t unistd.h \
+ unistd.h-t
+MOSTLYCLEANDIRS =
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+# No GNU Make output.
+AM_CPPFLAGS =
+AM_CFLAGS =
+libgnu_a_SOURCES = concat-filename.c dirname-lgpl.c basename-lgpl.c \
+ stripslash.c exitfail.c fd-hook.c findprog.h findprog-in.c \
+ getprogname.h getprogname.c gettext.h $(am__append_1) unistd.c \
+ xmalloc.c xalloc-die.c xconcat-filename.c
+libgnu_a_LIBADD = $(gl_LIBOBJS) @ALLOCA@
+libgnu_a_DEPENDENCIES = $(gl_LIBOBJS) @ALLOCA@
+EXTRA_libgnu_a_SOURCES = access.c alloca.c close.c dup2.c error.c \
+ fcntl.c getdtablesize.c getloadavg.c malloc.c msvc-inval.c \
+ msvc-nothrow.c stpcpy.c strerror.c strerror-override.c
+
+# Use this preprocessor expression to decide whether #include_next works.
+# Do not rely on a 'configure'-time test for this, since the expression
+# might appear in an installed header, which is used by some other compiler.
+HAVE_INCLUDE_NEXT = (__GNUC__ || 60000000 <= __DECC_VER)
+
+# Because this Makefile snippet defines a variable used by other
+# gnulib Makefile snippets, it must be present in all makefiles that
+# need it. This is ensured by the applicability 'all' defined above.
+_NORETURN_H = $(srcdir)/_Noreturn.h
+
+# Because this Makefile snippet defines a variable used by other
+# gnulib Makefile snippets, it must be present in all makefiles that
+# need it. This is ensured by the applicability 'all' defined above.
+ARG_NONNULL_H = $(srcdir)/arg-nonnull.h
+
+# Because this Makefile snippet defines a variable used by other
+# gnulib Makefile snippets, it must be present in all makefiles that
+# need it. This is ensured by the applicability 'all' defined above.
+CXXDEFS_H = $(srcdir)/c++defs.h
+
+# Because this Makefile snippet defines a variable used by other
+# gnulib Makefile snippets, it must be present in all makefiles that
+# need it. This is ensured by the applicability 'all' defined above.
+WARN_ON_USE_H = $(srcdir)/warn-on-use.h
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnits lib/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+libgnu.a: $(libgnu_a_OBJECTS) $(libgnu_a_DEPENDENCIES) $(EXTRA_libgnu_a_DEPENDENCIES)
+ $(AM_V_at)-rm -f libgnu.a
+ $(AM_V_AR)$(libgnu_a_AR) libgnu.a $(libgnu_a_OBJECTS) $(libgnu_a_LIBADD)
+ $(AM_V_at)$(RANLIB) libgnu.a
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/access.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alloca.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename-lgpl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/concat-filename.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirname-lgpl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dup2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exitfail.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fcntl.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fd-hook.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/findprog-in.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fnmatch.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdtablesize.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getloadavg.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getprogname.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glob.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/malloc.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msvc-inval.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msvc-nothrow.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stpcpy.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror-override.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strerror.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stripslash.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unistd.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xalloc-die.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xconcat-filename.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+ @$(MKDIR_P) $(@D)
+ @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+# (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+ @fail=; \
+ if $(am__make_keepgoing); then \
+ failcom='fail=yes'; \
+ else \
+ failcom='exit 1'; \
+ fi; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ $(am__make_dryrun) \
+ || test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS)
+installdirs: installdirs-recursive
+installdirs-am:
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+ -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-recursive
+
+clean-am: clean-generic clean-noinstLIBRARIES clean-noinstLTLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f ./$(DEPDIR)/access.Po
+ -rm -f ./$(DEPDIR)/alloca.Po
+ -rm -f ./$(DEPDIR)/basename-lgpl.Po
+ -rm -f ./$(DEPDIR)/close.Po
+ -rm -f ./$(DEPDIR)/concat-filename.Po
+ -rm -f ./$(DEPDIR)/dirname-lgpl.Po
+ -rm -f ./$(DEPDIR)/dup2.Po
+ -rm -f ./$(DEPDIR)/error.Po
+ -rm -f ./$(DEPDIR)/exitfail.Po
+ -rm -f ./$(DEPDIR)/fcntl.Po
+ -rm -f ./$(DEPDIR)/fd-hook.Po
+ -rm -f ./$(DEPDIR)/findprog-in.Po
+ -rm -f ./$(DEPDIR)/fnmatch.Po
+ -rm -f ./$(DEPDIR)/getdtablesize.Po
+ -rm -f ./$(DEPDIR)/getloadavg.Po
+ -rm -f ./$(DEPDIR)/getprogname.Po
+ -rm -f ./$(DEPDIR)/glob.Po
+ -rm -f ./$(DEPDIR)/malloc.Po
+ -rm -f ./$(DEPDIR)/msvc-inval.Po
+ -rm -f ./$(DEPDIR)/msvc-nothrow.Po
+ -rm -f ./$(DEPDIR)/stpcpy.Po
+ -rm -f ./$(DEPDIR)/strerror-override.Po
+ -rm -f ./$(DEPDIR)/strerror.Po
+ -rm -f ./$(DEPDIR)/stripslash.Po
+ -rm -f ./$(DEPDIR)/unistd.Po
+ -rm -f ./$(DEPDIR)/xalloc-die.Po
+ -rm -f ./$(DEPDIR)/xconcat-filename.Po
+ -rm -f ./$(DEPDIR)/xmalloc.Po
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f ./$(DEPDIR)/access.Po
+ -rm -f ./$(DEPDIR)/alloca.Po
+ -rm -f ./$(DEPDIR)/basename-lgpl.Po
+ -rm -f ./$(DEPDIR)/close.Po
+ -rm -f ./$(DEPDIR)/concat-filename.Po
+ -rm -f ./$(DEPDIR)/dirname-lgpl.Po
+ -rm -f ./$(DEPDIR)/dup2.Po
+ -rm -f ./$(DEPDIR)/error.Po
+ -rm -f ./$(DEPDIR)/exitfail.Po
+ -rm -f ./$(DEPDIR)/fcntl.Po
+ -rm -f ./$(DEPDIR)/fd-hook.Po
+ -rm -f ./$(DEPDIR)/findprog-in.Po
+ -rm -f ./$(DEPDIR)/fnmatch.Po
+ -rm -f ./$(DEPDIR)/getdtablesize.Po
+ -rm -f ./$(DEPDIR)/getloadavg.Po
+ -rm -f ./$(DEPDIR)/getprogname.Po
+ -rm -f ./$(DEPDIR)/glob.Po
+ -rm -f ./$(DEPDIR)/malloc.Po
+ -rm -f ./$(DEPDIR)/msvc-inval.Po
+ -rm -f ./$(DEPDIR)/msvc-nothrow.Po
+ -rm -f ./$(DEPDIR)/stpcpy.Po
+ -rm -f ./$(DEPDIR)/strerror-override.Po
+ -rm -f ./$(DEPDIR)/strerror.Po
+ -rm -f ./$(DEPDIR)/stripslash.Po
+ -rm -f ./$(DEPDIR)/unistd.Po
+ -rm -f ./$(DEPDIR)/xalloc-die.Po
+ -rm -f ./$(DEPDIR)/xconcat-filename.Po
+ -rm -f ./$(DEPDIR)/xmalloc.Po
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-local
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(am__recursive_targets) all check install install-am \
+ install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+ am--depfiles check check-am clean clean-generic \
+ clean-noinstLIBRARIES clean-noinstLTLIBRARIES cscopelist-am \
+ ctags ctags-am distclean distclean-compile distclean-generic \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ installdirs-am maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-local pdf pdf-am ps ps-am tags tags-am uninstall \
+ uninstall-am
+
+.PRECIOUS: Makefile
+
+
+# We need the following in order to create <alloca.h> when the system
+# doesn't have one that works with the given compiler.
+@GL_GENERATE_ALLOCA_H_TRUE@alloca.h: alloca.in.h $(top_builddir)/config.status
+@GL_GENERATE_ALLOCA_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_ALLOCA_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+@GL_GENERATE_ALLOCA_H_TRUE@ sed -e 's|@''HAVE_ALLOCA_H''@|$(HAVE_ALLOCA_H)|g' < $(srcdir)/alloca.in.h; \
+@GL_GENERATE_ALLOCA_H_TRUE@ } > $@-t && \
+@GL_GENERATE_ALLOCA_H_TRUE@ mv -f $@-t $@
+@GL_GENERATE_ALLOCA_H_FALSE@alloca.h: $(top_builddir)/config.status
+@GL_GENERATE_ALLOCA_H_FALSE@ rm -f $@
+
+# We need the following in order to create <errno.h> when the system
+# doesn't have one that is POSIX compliant.
+@GL_GENERATE_ERRNO_H_TRUE@errno.h: errno.in.h $(top_builddir)/config.status
+@GL_GENERATE_ERRNO_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_ERRNO_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+@GL_GENERATE_ERRNO_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''NEXT_ERRNO_H''@|$(NEXT_ERRNO_H)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EMULTIHOP_HIDDEN''@|$(EMULTIHOP_HIDDEN)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EMULTIHOP_VALUE''@|$(EMULTIHOP_VALUE)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''ENOLINK_HIDDEN''@|$(ENOLINK_HIDDEN)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''ENOLINK_VALUE''@|$(ENOLINK_VALUE)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EOVERFLOW_HIDDEN''@|$(EOVERFLOW_HIDDEN)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@ -e 's|@''EOVERFLOW_VALUE''@|$(EOVERFLOW_VALUE)|g' \
+@GL_GENERATE_ERRNO_H_TRUE@ < $(srcdir)/errno.in.h; \
+@GL_GENERATE_ERRNO_H_TRUE@ } > $@-t && \
+@GL_GENERATE_ERRNO_H_TRUE@ mv $@-t $@
+@GL_GENERATE_ERRNO_H_FALSE@errno.h: $(top_builddir)/config.status
+@GL_GENERATE_ERRNO_H_FALSE@ rm -f $@
+
+# We need the following in order to create <fcntl.h> when the system
+# doesn't have one that works with the given compiler.
+fcntl.h: fcntl.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_FCNTL_H''@|$(NEXT_FCNTL_H)|g' \
+ -e 's/@''GNULIB_CREAT''@/$(GNULIB_CREAT)/g' \
+ -e 's/@''GNULIB_FCNTL''@/$(GNULIB_FCNTL)/g' \
+ -e 's/@''GNULIB_NONBLOCKING''@/$(GNULIB_NONBLOCKING)/g' \
+ -e 's/@''GNULIB_OPEN''@/$(GNULIB_OPEN)/g' \
+ -e 's/@''GNULIB_OPENAT''@/$(GNULIB_OPENAT)/g' \
+ -e 's|@''HAVE_FCNTL''@|$(HAVE_FCNTL)|g' \
+ -e 's|@''HAVE_OPENAT''@|$(HAVE_OPENAT)|g' \
+ -e 's|@''REPLACE_CREAT''@|$(REPLACE_CREAT)|g' \
+ -e 's|@''REPLACE_FCNTL''@|$(REPLACE_FCNTL)|g' \
+ -e 's|@''REPLACE_OPEN''@|$(REPLACE_OPEN)|g' \
+ -e 's|@''REPLACE_OPENAT''@|$(REPLACE_OPENAT)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
+ < $(srcdir)/fcntl.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+
+# We need the following in order to create <limits.h> when the system
+# doesn't have one that is compatible with GNU.
+@GL_GENERATE_LIMITS_H_TRUE@limits.h: limits.in.h $(top_builddir)/config.status
+@GL_GENERATE_LIMITS_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_LIMITS_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+@GL_GENERATE_LIMITS_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+@GL_GENERATE_LIMITS_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+@GL_GENERATE_LIMITS_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+@GL_GENERATE_LIMITS_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+@GL_GENERATE_LIMITS_H_TRUE@ -e 's|@''NEXT_LIMITS_H''@|$(NEXT_LIMITS_H)|g' \
+@GL_GENERATE_LIMITS_H_TRUE@ < $(srcdir)/limits.in.h; \
+@GL_GENERATE_LIMITS_H_TRUE@ } > $@-t && \
+@GL_GENERATE_LIMITS_H_TRUE@ mv $@-t $@
+@GL_GENERATE_LIMITS_H_FALSE@limits.h: $(top_builddir)/config.status
+@GL_GENERATE_LIMITS_H_FALSE@ rm -f $@
+
+@USE_SYSTEM_GLOB_FALSE@fnmatch.h: fnmatch.in.h $(top_builddir)/config.status
+@USE_SYSTEM_GLOB_FALSE@ $(AM_V_GEN)rm -f $@-t $@ && \
+@USE_SYSTEM_GLOB_FALSE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+@USE_SYSTEM_GLOB_FALSE@ cat $(srcdir)/fnmatch.in.h; \
+@USE_SYSTEM_GLOB_FALSE@ } > $@-t && \
+@USE_SYSTEM_GLOB_FALSE@ mv -f $@-t $@
+
+@USE_SYSTEM_GLOB_FALSE@glob.h: glob.in.h $(top_builddir)/config.status
+@USE_SYSTEM_GLOB_FALSE@ $(AM_V_GEN)rm -f $@-t $@ && \
+@USE_SYSTEM_GLOB_FALSE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+@USE_SYSTEM_GLOB_FALSE@ cat $(srcdir)/glob.in.h; \
+@USE_SYSTEM_GLOB_FALSE@ } > $@-t && \
+@USE_SYSTEM_GLOB_FALSE@ mv -f $@-t $@
+
+# We need the following in order to create <stdbool.h> when the system
+# doesn't have one that works.
+@GL_GENERATE_STDBOOL_H_TRUE@stdbool.h: stdbool.in.h $(top_builddir)/config.status
+@GL_GENERATE_STDBOOL_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_STDBOOL_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+@GL_GENERATE_STDBOOL_H_TRUE@ sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool.in.h; \
+@GL_GENERATE_STDBOOL_H_TRUE@ } > $@-t && \
+@GL_GENERATE_STDBOOL_H_TRUE@ mv $@-t $@
+@GL_GENERATE_STDBOOL_H_FALSE@stdbool.h: $(top_builddir)/config.status
+@GL_GENERATE_STDBOOL_H_FALSE@ rm -f $@
+
+# We need the following in order to create <stddef.h> when the system
+# doesn't have one that works with the given compiler.
+@GL_GENERATE_STDDEF_H_TRUE@stddef.h: stddef.in.h $(top_builddir)/config.status
+@GL_GENERATE_STDDEF_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_STDDEF_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+@GL_GENERATE_STDDEF_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''NEXT_STDDEF_H''@|$(NEXT_STDDEF_H)|g' \
+@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''HAVE_MAX_ALIGN_T''@|$(HAVE_MAX_ALIGN_T)|g' \
+@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''HAVE_WCHAR_T''@|$(HAVE_WCHAR_T)|g' \
+@GL_GENERATE_STDDEF_H_TRUE@ -e 's|@''REPLACE_NULL''@|$(REPLACE_NULL)|g' \
+@GL_GENERATE_STDDEF_H_TRUE@ < $(srcdir)/stddef.in.h; \
+@GL_GENERATE_STDDEF_H_TRUE@ } > $@-t && \
+@GL_GENERATE_STDDEF_H_TRUE@ mv $@-t $@
+@GL_GENERATE_STDDEF_H_FALSE@stddef.h: $(top_builddir)/config.status
+@GL_GENERATE_STDDEF_H_FALSE@ rm -f $@
+
+# We need the following in order to create <stdint.h> when the system
+# doesn't have one that works with the given compiler.
+@GL_GENERATE_STDINT_H_TRUE@stdint.h: stdint.in.h $(top_builddir)/config.status
+@GL_GENERATE_STDINT_H_TRUE@ $(AM_V_GEN)rm -f $@-t $@ && \
+@GL_GENERATE_STDINT_H_TRUE@ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+@GL_GENERATE_STDINT_H_TRUE@ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's|@''NEXT_STDINT_H''@|$(NEXT_STDINT_H)|g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_C99_STDINT_H''@/$(HAVE_C99_STDINT_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_TYPES_H''@/$(HAVE_SYS_TYPES_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_INTTYPES_H''@/$(HAVE_SYS_INTTYPES_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SYS_BITYPES_H''@/$(HAVE_SYS_BITYPES_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_WCHAR_H''@/$(HAVE_WCHAR_H)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''APPLE_UNIVERSAL_BUILD''@/$(APPLE_UNIVERSAL_BUILD)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_PTRDIFF_T''@/$(BITSIZEOF_PTRDIFF_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''PTRDIFF_T_SUFFIX''@/$(PTRDIFF_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_SIG_ATOMIC_T''@/$(BITSIZEOF_SIG_ATOMIC_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_SIG_ATOMIC_T''@/$(HAVE_SIGNED_SIG_ATOMIC_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''SIG_ATOMIC_T_SUFFIX''@/$(SIG_ATOMIC_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_SIZE_T''@/$(BITSIZEOF_SIZE_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''SIZE_T_SUFFIX''@/$(SIZE_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_WCHAR_T''@/$(BITSIZEOF_WCHAR_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_WCHAR_T''@/$(HAVE_SIGNED_WCHAR_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''WCHAR_T_SUFFIX''@/$(WCHAR_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''BITSIZEOF_WINT_T''@/$(BITSIZEOF_WINT_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''HAVE_SIGNED_WINT_T''@/$(HAVE_SIGNED_WINT_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''WINT_T_SUFFIX''@/$(WINT_T_SUFFIX)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ -e 's/@''GNULIB_OVERRIDES_WINT_T''@/$(GNULIB_OVERRIDES_WINT_T)/g' \
+@GL_GENERATE_STDINT_H_TRUE@ < $(srcdir)/stdint.in.h; \
+@GL_GENERATE_STDINT_H_TRUE@ } > $@-t && \
+@GL_GENERATE_STDINT_H_TRUE@ mv $@-t $@
+@GL_GENERATE_STDINT_H_FALSE@stdint.h: $(top_builddir)/config.status
+@GL_GENERATE_STDINT_H_FALSE@ rm -f $@
+
+# We need the following in order to create <stdio.h> when the system
+# doesn't have one that works with the given compiler.
+stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_STDIO_H''@|$(NEXT_STDIO_H)|g' \
+ -e 's/@''GNULIB_DPRINTF''@/$(GNULIB_DPRINTF)/g' \
+ -e 's/@''GNULIB_FCLOSE''@/$(GNULIB_FCLOSE)/g' \
+ -e 's/@''GNULIB_FDOPEN''@/$(GNULIB_FDOPEN)/g' \
+ -e 's/@''GNULIB_FFLUSH''@/$(GNULIB_FFLUSH)/g' \
+ -e 's/@''GNULIB_FGETC''@/$(GNULIB_FGETC)/g' \
+ -e 's/@''GNULIB_FGETS''@/$(GNULIB_FGETS)/g' \
+ -e 's/@''GNULIB_FOPEN''@/$(GNULIB_FOPEN)/g' \
+ -e 's/@''GNULIB_FPRINTF''@/$(GNULIB_FPRINTF)/g' \
+ -e 's/@''GNULIB_FPRINTF_POSIX''@/$(GNULIB_FPRINTF_POSIX)/g' \
+ -e 's/@''GNULIB_FPURGE''@/$(GNULIB_FPURGE)/g' \
+ -e 's/@''GNULIB_FPUTC''@/$(GNULIB_FPUTC)/g' \
+ -e 's/@''GNULIB_FPUTS''@/$(GNULIB_FPUTS)/g' \
+ -e 's/@''GNULIB_FREAD''@/$(GNULIB_FREAD)/g' \
+ -e 's/@''GNULIB_FREOPEN''@/$(GNULIB_FREOPEN)/g' \
+ -e 's/@''GNULIB_FSCANF''@/$(GNULIB_FSCANF)/g' \
+ -e 's/@''GNULIB_FSEEK''@/$(GNULIB_FSEEK)/g' \
+ -e 's/@''GNULIB_FSEEKO''@/$(GNULIB_FSEEKO)/g' \
+ -e 's/@''GNULIB_FTELL''@/$(GNULIB_FTELL)/g' \
+ -e 's/@''GNULIB_FTELLO''@/$(GNULIB_FTELLO)/g' \
+ -e 's/@''GNULIB_FWRITE''@/$(GNULIB_FWRITE)/g' \
+ -e 's/@''GNULIB_GETC''@/$(GNULIB_GETC)/g' \
+ -e 's/@''GNULIB_GETCHAR''@/$(GNULIB_GETCHAR)/g' \
+ -e 's/@''GNULIB_GETDELIM''@/$(GNULIB_GETDELIM)/g' \
+ -e 's/@''GNULIB_GETLINE''@/$(GNULIB_GETLINE)/g' \
+ -e 's/@''GNULIB_OBSTACK_PRINTF''@/$(GNULIB_OBSTACK_PRINTF)/g' \
+ -e 's/@''GNULIB_OBSTACK_PRINTF_POSIX''@/$(GNULIB_OBSTACK_PRINTF_POSIX)/g' \
+ -e 's/@''GNULIB_PCLOSE''@/$(GNULIB_PCLOSE)/g' \
+ -e 's/@''GNULIB_PERROR''@/$(GNULIB_PERROR)/g' \
+ -e 's/@''GNULIB_POPEN''@/$(GNULIB_POPEN)/g' \
+ -e 's/@''GNULIB_PRINTF''@/$(GNULIB_PRINTF)/g' \
+ -e 's/@''GNULIB_PRINTF_POSIX''@/$(GNULIB_PRINTF_POSIX)/g' \
+ -e 's/@''GNULIB_PUTC''@/$(GNULIB_PUTC)/g' \
+ -e 's/@''GNULIB_PUTCHAR''@/$(GNULIB_PUTCHAR)/g' \
+ -e 's/@''GNULIB_PUTS''@/$(GNULIB_PUTS)/g' \
+ -e 's/@''GNULIB_REMOVE''@/$(GNULIB_REMOVE)/g' \
+ -e 's/@''GNULIB_RENAME''@/$(GNULIB_RENAME)/g' \
+ -e 's/@''GNULIB_RENAMEAT''@/$(GNULIB_RENAMEAT)/g' \
+ -e 's/@''GNULIB_SCANF''@/$(GNULIB_SCANF)/g' \
+ -e 's/@''GNULIB_SNPRINTF''@/$(GNULIB_SNPRINTF)/g' \
+ -e 's/@''GNULIB_SPRINTF_POSIX''@/$(GNULIB_SPRINTF_POSIX)/g' \
+ -e 's/@''GNULIB_STDIO_H_NONBLOCKING''@/$(GNULIB_STDIO_H_NONBLOCKING)/g' \
+ -e 's/@''GNULIB_STDIO_H_SIGPIPE''@/$(GNULIB_STDIO_H_SIGPIPE)/g' \
+ -e 's/@''GNULIB_TMPFILE''@/$(GNULIB_TMPFILE)/g' \
+ -e 's/@''GNULIB_VASPRINTF''@/$(GNULIB_VASPRINTF)/g' \
+ -e 's/@''GNULIB_VDPRINTF''@/$(GNULIB_VDPRINTF)/g' \
+ -e 's/@''GNULIB_VFPRINTF''@/$(GNULIB_VFPRINTF)/g' \
+ -e 's/@''GNULIB_VFPRINTF_POSIX''@/$(GNULIB_VFPRINTF_POSIX)/g' \
+ -e 's/@''GNULIB_VFSCANF''@/$(GNULIB_VFSCANF)/g' \
+ -e 's/@''GNULIB_VSCANF''@/$(GNULIB_VSCANF)/g' \
+ -e 's/@''GNULIB_VPRINTF''@/$(GNULIB_VPRINTF)/g' \
+ -e 's/@''GNULIB_VPRINTF_POSIX''@/$(GNULIB_VPRINTF_POSIX)/g' \
+ -e 's/@''GNULIB_VSNPRINTF''@/$(GNULIB_VSNPRINTF)/g' \
+ -e 's/@''GNULIB_VSPRINTF_POSIX''@/$(GNULIB_VSPRINTF_POSIX)/g' \
+ < $(srcdir)/stdio.in.h | \
+ sed -e 's|@''HAVE_DECL_FPURGE''@|$(HAVE_DECL_FPURGE)|g' \
+ -e 's|@''HAVE_DECL_FSEEKO''@|$(HAVE_DECL_FSEEKO)|g' \
+ -e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \
+ -e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \
+ -e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \
+ -e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \
+ -e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \
+ -e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \
+ -e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \
+ -e 's|@''HAVE_FSEEKO''@|$(HAVE_FSEEKO)|g' \
+ -e 's|@''HAVE_FTELLO''@|$(HAVE_FTELLO)|g' \
+ -e 's|@''HAVE_PCLOSE''@|$(HAVE_PCLOSE)|g' \
+ -e 's|@''HAVE_POPEN''@|$(HAVE_POPEN)|g' \
+ -e 's|@''HAVE_RENAMEAT''@|$(HAVE_RENAMEAT)|g' \
+ -e 's|@''HAVE_VASPRINTF''@|$(HAVE_VASPRINTF)|g' \
+ -e 's|@''HAVE_VDPRINTF''@|$(HAVE_VDPRINTF)|g' \
+ -e 's|@''REPLACE_DPRINTF''@|$(REPLACE_DPRINTF)|g' \
+ -e 's|@''REPLACE_FCLOSE''@|$(REPLACE_FCLOSE)|g' \
+ -e 's|@''REPLACE_FDOPEN''@|$(REPLACE_FDOPEN)|g' \
+ -e 's|@''REPLACE_FFLUSH''@|$(REPLACE_FFLUSH)|g' \
+ -e 's|@''REPLACE_FOPEN''@|$(REPLACE_FOPEN)|g' \
+ -e 's|@''REPLACE_FPRINTF''@|$(REPLACE_FPRINTF)|g' \
+ -e 's|@''REPLACE_FPURGE''@|$(REPLACE_FPURGE)|g' \
+ -e 's|@''REPLACE_FREOPEN''@|$(REPLACE_FREOPEN)|g' \
+ -e 's|@''REPLACE_FSEEK''@|$(REPLACE_FSEEK)|g' \
+ -e 's|@''REPLACE_FSEEKO''@|$(REPLACE_FSEEKO)|g' \
+ -e 's|@''REPLACE_FTELL''@|$(REPLACE_FTELL)|g' \
+ -e 's|@''REPLACE_FTELLO''@|$(REPLACE_FTELLO)|g' \
+ -e 's|@''REPLACE_GETDELIM''@|$(REPLACE_GETDELIM)|g' \
+ -e 's|@''REPLACE_GETLINE''@|$(REPLACE_GETLINE)|g' \
+ -e 's|@''REPLACE_OBSTACK_PRINTF''@|$(REPLACE_OBSTACK_PRINTF)|g' \
+ -e 's|@''REPLACE_PERROR''@|$(REPLACE_PERROR)|g' \
+ -e 's|@''REPLACE_POPEN''@|$(REPLACE_POPEN)|g' \
+ -e 's|@''REPLACE_PRINTF''@|$(REPLACE_PRINTF)|g' \
+ -e 's|@''REPLACE_REMOVE''@|$(REPLACE_REMOVE)|g' \
+ -e 's|@''REPLACE_RENAME''@|$(REPLACE_RENAME)|g' \
+ -e 's|@''REPLACE_RENAMEAT''@|$(REPLACE_RENAMEAT)|g' \
+ -e 's|@''REPLACE_SNPRINTF''@|$(REPLACE_SNPRINTF)|g' \
+ -e 's|@''REPLACE_SPRINTF''@|$(REPLACE_SPRINTF)|g' \
+ -e 's|@''REPLACE_STDIO_READ_FUNCS''@|$(REPLACE_STDIO_READ_FUNCS)|g' \
+ -e 's|@''REPLACE_STDIO_WRITE_FUNCS''@|$(REPLACE_STDIO_WRITE_FUNCS)|g' \
+ -e 's|@''REPLACE_TMPFILE''@|$(REPLACE_TMPFILE)|g' \
+ -e 's|@''REPLACE_VASPRINTF''@|$(REPLACE_VASPRINTF)|g' \
+ -e 's|@''REPLACE_VDPRINTF''@|$(REPLACE_VDPRINTF)|g' \
+ -e 's|@''REPLACE_VFPRINTF''@|$(REPLACE_VFPRINTF)|g' \
+ -e 's|@''REPLACE_VPRINTF''@|$(REPLACE_VPRINTF)|g' \
+ -e 's|@''REPLACE_VSNPRINTF''@|$(REPLACE_VSNPRINTF)|g' \
+ -e 's|@''REPLACE_VSPRINTF''@|$(REPLACE_VSPRINTF)|g' \
+ -e 's|@''ASM_SYMBOL_PREFIX''@|$(ASM_SYMBOL_PREFIX)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+ } > $@-t && \
+ mv $@-t $@
+
+# We need the following in order to create <stdlib.h> when the system
+# doesn't have one that works with the given compiler.
+stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
+ $(_NORETURN_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_STDLIB_H''@|$(NEXT_STDLIB_H)|g' \
+ -e 's/@''GNULIB__EXIT''@/$(GNULIB__EXIT)/g' \
+ -e 's/@''GNULIB_ATOLL''@/$(GNULIB_ATOLL)/g' \
+ -e 's/@''GNULIB_CALLOC_POSIX''@/$(GNULIB_CALLOC_POSIX)/g' \
+ -e 's/@''GNULIB_CANONICALIZE_FILE_NAME''@/$(GNULIB_CANONICALIZE_FILE_NAME)/g' \
+ -e 's/@''GNULIB_GETLOADAVG''@/$(GNULIB_GETLOADAVG)/g' \
+ -e 's/@''GNULIB_GETSUBOPT''@/$(GNULIB_GETSUBOPT)/g' \
+ -e 's/@''GNULIB_GRANTPT''@/$(GNULIB_GRANTPT)/g' \
+ -e 's/@''GNULIB_MALLOC_POSIX''@/$(GNULIB_MALLOC_POSIX)/g' \
+ -e 's/@''GNULIB_MBTOWC''@/$(GNULIB_MBTOWC)/g' \
+ -e 's/@''GNULIB_MKDTEMP''@/$(GNULIB_MKDTEMP)/g' \
+ -e 's/@''GNULIB_MKOSTEMP''@/$(GNULIB_MKOSTEMP)/g' \
+ -e 's/@''GNULIB_MKOSTEMPS''@/$(GNULIB_MKOSTEMPS)/g' \
+ -e 's/@''GNULIB_MKSTEMP''@/$(GNULIB_MKSTEMP)/g' \
+ -e 's/@''GNULIB_MKSTEMPS''@/$(GNULIB_MKSTEMPS)/g' \
+ -e 's/@''GNULIB_POSIX_OPENPT''@/$(GNULIB_POSIX_OPENPT)/g' \
+ -e 's/@''GNULIB_PTSNAME''@/$(GNULIB_PTSNAME)/g' \
+ -e 's/@''GNULIB_PTSNAME_R''@/$(GNULIB_PTSNAME_R)/g' \
+ -e 's/@''GNULIB_PUTENV''@/$(GNULIB_PUTENV)/g' \
+ -e 's/@''GNULIB_QSORT_R''@/$(GNULIB_QSORT_R)/g' \
+ -e 's/@''GNULIB_RANDOM''@/$(GNULIB_RANDOM)/g' \
+ -e 's/@''GNULIB_RANDOM_R''@/$(GNULIB_RANDOM_R)/g' \
+ -e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \
+ -e 's/@''GNULIB_REALLOCARRAY''@/$(GNULIB_REALLOCARRAY)/g' \
+ -e 's/@''GNULIB_REALPATH''@/$(GNULIB_REALPATH)/g' \
+ -e 's/@''GNULIB_RPMATCH''@/$(GNULIB_RPMATCH)/g' \
+ -e 's/@''GNULIB_SECURE_GETENV''@/$(GNULIB_SECURE_GETENV)/g' \
+ -e 's/@''GNULIB_SETENV''@/$(GNULIB_SETENV)/g' \
+ -e 's/@''GNULIB_STRTOD''@/$(GNULIB_STRTOD)/g' \
+ -e 's/@''GNULIB_STRTOLD''@/$(GNULIB_STRTOLD)/g' \
+ -e 's/@''GNULIB_STRTOLL''@/$(GNULIB_STRTOLL)/g' \
+ -e 's/@''GNULIB_STRTOULL''@/$(GNULIB_STRTOULL)/g' \
+ -e 's/@''GNULIB_SYSTEM_POSIX''@/$(GNULIB_SYSTEM_POSIX)/g' \
+ -e 's/@''GNULIB_UNLOCKPT''@/$(GNULIB_UNLOCKPT)/g' \
+ -e 's/@''GNULIB_UNSETENV''@/$(GNULIB_UNSETENV)/g' \
+ -e 's/@''GNULIB_WCTOMB''@/$(GNULIB_WCTOMB)/g' \
+ < $(srcdir)/stdlib.in.h | \
+ sed -e 's|@''HAVE__EXIT''@|$(HAVE__EXIT)|g' \
+ -e 's|@''HAVE_ATOLL''@|$(HAVE_ATOLL)|g' \
+ -e 's|@''HAVE_CANONICALIZE_FILE_NAME''@|$(HAVE_CANONICALIZE_FILE_NAME)|g' \
+ -e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \
+ -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
+ -e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \
+ -e 's|@''HAVE_INITSTATE''@|$(HAVE_INITSTATE)|g' \
+ -e 's|@''HAVE_DECL_INITSTATE''@|$(HAVE_DECL_INITSTATE)|g' \
+ -e 's|@''HAVE_MBTOWC''@|$(HAVE_MBTOWC)|g' \
+ -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \
+ -e 's|@''HAVE_MKOSTEMP''@|$(HAVE_MKOSTEMP)|g' \
+ -e 's|@''HAVE_MKOSTEMPS''@|$(HAVE_MKOSTEMPS)|g' \
+ -e 's|@''HAVE_MKSTEMP''@|$(HAVE_MKSTEMP)|g' \
+ -e 's|@''HAVE_MKSTEMPS''@|$(HAVE_MKSTEMPS)|g' \
+ -e 's|@''HAVE_POSIX_OPENPT''@|$(HAVE_POSIX_OPENPT)|g' \
+ -e 's|@''HAVE_PTSNAME''@|$(HAVE_PTSNAME)|g' \
+ -e 's|@''HAVE_PTSNAME_R''@|$(HAVE_PTSNAME_R)|g' \
+ -e 's|@''HAVE_QSORT_R''@|$(HAVE_QSORT_R)|g' \
+ -e 's|@''HAVE_RANDOM''@|$(HAVE_RANDOM)|g' \
+ -e 's|@''HAVE_RANDOM_H''@|$(HAVE_RANDOM_H)|g' \
+ -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \
+ -e 's|@''HAVE_REALLOCARRAY''@|$(HAVE_REALLOCARRAY)|g' \
+ -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \
+ -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \
+ -e 's|@''HAVE_SECURE_GETENV''@|$(HAVE_SECURE_GETENV)|g' \
+ -e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \
+ -e 's|@''HAVE_SETSTATE''@|$(HAVE_SETSTATE)|g' \
+ -e 's|@''HAVE_DECL_SETSTATE''@|$(HAVE_DECL_SETSTATE)|g' \
+ -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \
+ -e 's|@''HAVE_STRTOLD''@|$(HAVE_STRTOLD)|g' \
+ -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \
+ -e 's|@''HAVE_STRTOULL''@|$(HAVE_STRTOULL)|g' \
+ -e 's|@''HAVE_STRUCT_RANDOM_DATA''@|$(HAVE_STRUCT_RANDOM_DATA)|g' \
+ -e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \
+ -e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \
+ -e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \
+ -e 's|@''REPLACE_CALLOC''@|$(REPLACE_CALLOC)|g' \
+ -e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \
+ -e 's|@''REPLACE_INITSTATE''@|$(REPLACE_INITSTATE)|g' \
+ -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \
+ -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \
+ -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
+ -e 's|@''REPLACE_PTSNAME''@|$(REPLACE_PTSNAME)|g' \
+ -e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \
+ -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
+ -e 's|@''REPLACE_QSORT_R''@|$(REPLACE_QSORT_R)|g' \
+ -e 's|@''REPLACE_RANDOM''@|$(REPLACE_RANDOM)|g' \
+ -e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \
+ -e 's|@''REPLACE_REALLOC''@|$(REPLACE_REALLOC)|g' \
+ -e 's|@''REPLACE_REALPATH''@|$(REPLACE_REALPATH)|g' \
+ -e 's|@''REPLACE_SETENV''@|$(REPLACE_SETENV)|g' \
+ -e 's|@''REPLACE_SETSTATE''@|$(REPLACE_SETSTATE)|g' \
+ -e 's|@''REPLACE_STRTOD''@|$(REPLACE_STRTOD)|g' \
+ -e 's|@''REPLACE_STRTOLD''@|$(REPLACE_STRTOLD)|g' \
+ -e 's|@''REPLACE_UNSETENV''@|$(REPLACE_UNSETENV)|g' \
+ -e 's|@''REPLACE_WCTOMB''@|$(REPLACE_WCTOMB)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ -e '/definition of _Noreturn/r $(_NORETURN_H)' \
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+ } > $@-t && \
+ mv $@-t $@
+
+# We need the following in order to create <string.h> when the system
+# doesn't have one that works with the given compiler.
+string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
+ -e 's/@''GNULIB_EXPLICIT_BZERO''@/$(GNULIB_EXPLICIT_BZERO)/g' \
+ -e 's/@''GNULIB_FFSL''@/$(GNULIB_FFSL)/g' \
+ -e 's/@''GNULIB_FFSLL''@/$(GNULIB_FFSLL)/g' \
+ -e 's/@''GNULIB_MBSLEN''@/$(GNULIB_MBSLEN)/g' \
+ -e 's/@''GNULIB_MBSNLEN''@/$(GNULIB_MBSNLEN)/g' \
+ -e 's/@''GNULIB_MBSCHR''@/$(GNULIB_MBSCHR)/g' \
+ -e 's/@''GNULIB_MBSRCHR''@/$(GNULIB_MBSRCHR)/g' \
+ -e 's/@''GNULIB_MBSSTR''@/$(GNULIB_MBSSTR)/g' \
+ -e 's/@''GNULIB_MBSCASECMP''@/$(GNULIB_MBSCASECMP)/g' \
+ -e 's/@''GNULIB_MBSNCASECMP''@/$(GNULIB_MBSNCASECMP)/g' \
+ -e 's/@''GNULIB_MBSPCASECMP''@/$(GNULIB_MBSPCASECMP)/g' \
+ -e 's/@''GNULIB_MBSCASESTR''@/$(GNULIB_MBSCASESTR)/g' \
+ -e 's/@''GNULIB_MBSCSPN''@/$(GNULIB_MBSCSPN)/g' \
+ -e 's/@''GNULIB_MBSPBRK''@/$(GNULIB_MBSPBRK)/g' \
+ -e 's/@''GNULIB_MBSSPN''@/$(GNULIB_MBSSPN)/g' \
+ -e 's/@''GNULIB_MBSSEP''@/$(GNULIB_MBSSEP)/g' \
+ -e 's/@''GNULIB_MBSTOK_R''@/$(GNULIB_MBSTOK_R)/g' \
+ -e 's/@''GNULIB_MEMCHR''@/$(GNULIB_MEMCHR)/g' \
+ -e 's/@''GNULIB_MEMMEM''@/$(GNULIB_MEMMEM)/g' \
+ -e 's/@''GNULIB_MEMPCPY''@/$(GNULIB_MEMPCPY)/g' \
+ -e 's/@''GNULIB_MEMRCHR''@/$(GNULIB_MEMRCHR)/g' \
+ -e 's/@''GNULIB_RAWMEMCHR''@/$(GNULIB_RAWMEMCHR)/g' \
+ -e 's/@''GNULIB_STPCPY''@/$(GNULIB_STPCPY)/g' \
+ -e 's/@''GNULIB_STPNCPY''@/$(GNULIB_STPNCPY)/g' \
+ -e 's/@''GNULIB_STRCHRNUL''@/$(GNULIB_STRCHRNUL)/g' \
+ -e 's/@''GNULIB_STRDUP''@/$(GNULIB_STRDUP)/g' \
+ -e 's/@''GNULIB_STRNCAT''@/$(GNULIB_STRNCAT)/g' \
+ -e 's/@''GNULIB_STRNDUP''@/$(GNULIB_STRNDUP)/g' \
+ -e 's/@''GNULIB_STRNLEN''@/$(GNULIB_STRNLEN)/g' \
+ -e 's/@''GNULIB_STRPBRK''@/$(GNULIB_STRPBRK)/g' \
+ -e 's/@''GNULIB_STRSEP''@/$(GNULIB_STRSEP)/g' \
+ -e 's/@''GNULIB_STRSTR''@/$(GNULIB_STRSTR)/g' \
+ -e 's/@''GNULIB_STRCASESTR''@/$(GNULIB_STRCASESTR)/g' \
+ -e 's/@''GNULIB_STRTOK_R''@/$(GNULIB_STRTOK_R)/g' \
+ -e 's/@''GNULIB_STRERROR''@/$(GNULIB_STRERROR)/g' \
+ -e 's/@''GNULIB_STRERROR_R''@/$(GNULIB_STRERROR_R)/g' \
+ -e 's/@''GNULIB_STRSIGNAL''@/$(GNULIB_STRSIGNAL)/g' \
+ -e 's/@''GNULIB_STRVERSCMP''@/$(GNULIB_STRVERSCMP)/g' \
+ < $(srcdir)/string.in.h | \
+ sed -e 's|@''HAVE_EXPLICIT_BZERO''@|$(HAVE_EXPLICIT_BZERO)|g' \
+ -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \
+ -e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \
+ -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \
+ -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \
+ -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
+ -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
+ -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+ -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \
+ -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
+ -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+ -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+ -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+ -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
+ -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
+ -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
+ -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
+ -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
+ -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+ -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \
+ -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
+ -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+ -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
+ -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
+ -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \
+ -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \
+ -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
+ -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \
+ -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \
+ -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \
+ -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
+ -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
+ -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \
+ -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+ -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \
+ -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
+ -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+ < $(srcdir)/string.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+
+# We need the following in order to create <sys/types.h> when the system
+# doesn't have one that works with the given compiler.
+sys/types.h: sys_types.in.h $(top_builddir)/config.status
+ $(AM_V_at)$(MKDIR_P) sys
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_SYS_TYPES_H''@|$(NEXT_SYS_TYPES_H)|g' \
+ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \
+ -e 's|@''WINDOWS_STAT_INODES''@|$(WINDOWS_STAT_INODES)|g' \
+ < $(srcdir)/sys_types.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+
+# We need the following in order to create an empty placeholder for
+# <unistd.h> when the system doesn't have one.
+unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_UNISTD_H''@|$(NEXT_UNISTD_H)|g' \
+ -e 's|@''WINDOWS_64_BIT_OFF_T''@|$(WINDOWS_64_BIT_OFF_T)|g' \
+ -e 's/@''GNULIB_ACCESS''@/$(GNULIB_ACCESS)/g' \
+ -e 's/@''GNULIB_CHDIR''@/$(GNULIB_CHDIR)/g' \
+ -e 's/@''GNULIB_CHOWN''@/$(GNULIB_CHOWN)/g' \
+ -e 's/@''GNULIB_CLOSE''@/$(GNULIB_CLOSE)/g' \
+ -e 's/@''GNULIB_COPY_FILE_RANGE''@/$(GNULIB_COPY_FILE_RANGE)/g' \
+ -e 's/@''GNULIB_DUP''@/$(GNULIB_DUP)/g' \
+ -e 's/@''GNULIB_DUP2''@/$(GNULIB_DUP2)/g' \
+ -e 's/@''GNULIB_DUP3''@/$(GNULIB_DUP3)/g' \
+ -e 's/@''GNULIB_ENVIRON''@/$(GNULIB_ENVIRON)/g' \
+ -e 's/@''GNULIB_EUIDACCESS''@/$(GNULIB_EUIDACCESS)/g' \
+ -e 's/@''GNULIB_FACCESSAT''@/$(GNULIB_FACCESSAT)/g' \
+ -e 's/@''GNULIB_FCHDIR''@/$(GNULIB_FCHDIR)/g' \
+ -e 's/@''GNULIB_FCHOWNAT''@/$(GNULIB_FCHOWNAT)/g' \
+ -e 's/@''GNULIB_FDATASYNC''@/$(GNULIB_FDATASYNC)/g' \
+ -e 's/@''GNULIB_FSYNC''@/$(GNULIB_FSYNC)/g' \
+ -e 's/@''GNULIB_FTRUNCATE''@/$(GNULIB_FTRUNCATE)/g' \
+ -e 's/@''GNULIB_GETCWD''@/$(GNULIB_GETCWD)/g' \
+ -e 's/@''GNULIB_GETDOMAINNAME''@/$(GNULIB_GETDOMAINNAME)/g' \
+ -e 's/@''GNULIB_GETDTABLESIZE''@/$(GNULIB_GETDTABLESIZE)/g' \
+ -e 's/@''GNULIB_GETGROUPS''@/$(GNULIB_GETGROUPS)/g' \
+ -e 's/@''GNULIB_GETHOSTNAME''@/$(GNULIB_GETHOSTNAME)/g' \
+ -e 's/@''GNULIB_GETLOGIN''@/$(GNULIB_GETLOGIN)/g' \
+ -e 's/@''GNULIB_GETLOGIN_R''@/$(GNULIB_GETLOGIN_R)/g' \
+ -e 's/@''GNULIB_GETPAGESIZE''@/$(GNULIB_GETPAGESIZE)/g' \
+ -e 's/@''GNULIB_GETPASS''@/$(GNULIB_GETPASS)/g' \
+ -e 's/@''GNULIB_GETUSERSHELL''@/$(GNULIB_GETUSERSHELL)/g' \
+ -e 's/@''GNULIB_GROUP_MEMBER''@/$(GNULIB_GROUP_MEMBER)/g' \
+ -e 's/@''GNULIB_ISATTY''@/$(GNULIB_ISATTY)/g' \
+ -e 's/@''GNULIB_LCHOWN''@/$(GNULIB_LCHOWN)/g' \
+ -e 's/@''GNULIB_LINK''@/$(GNULIB_LINK)/g' \
+ -e 's/@''GNULIB_LINKAT''@/$(GNULIB_LINKAT)/g' \
+ -e 's/@''GNULIB_LSEEK''@/$(GNULIB_LSEEK)/g' \
+ -e 's/@''GNULIB_PIPE''@/$(GNULIB_PIPE)/g' \
+ -e 's/@''GNULIB_PIPE2''@/$(GNULIB_PIPE2)/g' \
+ -e 's/@''GNULIB_PREAD''@/$(GNULIB_PREAD)/g' \
+ -e 's/@''GNULIB_PWRITE''@/$(GNULIB_PWRITE)/g' \
+ -e 's/@''GNULIB_READ''@/$(GNULIB_READ)/g' \
+ -e 's/@''GNULIB_READLINK''@/$(GNULIB_READLINK)/g' \
+ -e 's/@''GNULIB_READLINKAT''@/$(GNULIB_READLINKAT)/g' \
+ -e 's/@''GNULIB_RMDIR''@/$(GNULIB_RMDIR)/g' \
+ -e 's/@''GNULIB_SETHOSTNAME''@/$(GNULIB_SETHOSTNAME)/g' \
+ -e 's/@''GNULIB_SLEEP''@/$(GNULIB_SLEEP)/g' \
+ -e 's/@''GNULIB_SYMLINK''@/$(GNULIB_SYMLINK)/g' \
+ -e 's/@''GNULIB_SYMLINKAT''@/$(GNULIB_SYMLINKAT)/g' \
+ -e 's/@''GNULIB_TRUNCATE''@/$(GNULIB_TRUNCATE)/g' \
+ -e 's/@''GNULIB_TTYNAME_R''@/$(GNULIB_TTYNAME_R)/g' \
+ -e 's/@''GNULIB_UNISTD_H_GETOPT''@/0$(GNULIB_GL_UNISTD_H_GETOPT)/g' \
+ -e 's/@''GNULIB_UNISTD_H_NONBLOCKING''@/$(GNULIB_UNISTD_H_NONBLOCKING)/g' \
+ -e 's/@''GNULIB_UNISTD_H_SIGPIPE''@/$(GNULIB_UNISTD_H_SIGPIPE)/g' \
+ -e 's/@''GNULIB_UNLINK''@/$(GNULIB_UNLINK)/g' \
+ -e 's/@''GNULIB_UNLINKAT''@/$(GNULIB_UNLINKAT)/g' \
+ -e 's/@''GNULIB_USLEEP''@/$(GNULIB_USLEEP)/g' \
+ -e 's/@''GNULIB_WRITE''@/$(GNULIB_WRITE)/g' \
+ < $(srcdir)/unistd.in.h | \
+ sed -e 's|@''HAVE_CHOWN''@|$(HAVE_CHOWN)|g' \
+ -e 's|@''HAVE_COPY_FILE_RANGE''@|$(HAVE_COPY_FILE_RANGE)|g' \
+ -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
+ -e 's|@''HAVE_DUP3''@|$(HAVE_DUP3)|g' \
+ -e 's|@''HAVE_EUIDACCESS''@|$(HAVE_EUIDACCESS)|g' \
+ -e 's|@''HAVE_FACCESSAT''@|$(HAVE_FACCESSAT)|g' \
+ -e 's|@''HAVE_FCHDIR''@|$(HAVE_FCHDIR)|g' \
+ -e 's|@''HAVE_FCHOWNAT''@|$(HAVE_FCHOWNAT)|g' \
+ -e 's|@''HAVE_FDATASYNC''@|$(HAVE_FDATASYNC)|g' \
+ -e 's|@''HAVE_FSYNC''@|$(HAVE_FSYNC)|g' \
+ -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
+ -e 's|@''HAVE_GETDTABLESIZE''@|$(HAVE_GETDTABLESIZE)|g' \
+ -e 's|@''HAVE_GETGROUPS''@|$(HAVE_GETGROUPS)|g' \
+ -e 's|@''HAVE_GETHOSTNAME''@|$(HAVE_GETHOSTNAME)|g' \
+ -e 's|@''HAVE_GETPAGESIZE''@|$(HAVE_GETPAGESIZE)|g' \
+ -e 's|@''HAVE_GETPASS''@|$(HAVE_GETPASS)|g' \
+ -e 's|@''HAVE_GROUP_MEMBER''@|$(HAVE_GROUP_MEMBER)|g' \
+ -e 's|@''HAVE_LCHOWN''@|$(HAVE_LCHOWN)|g' \
+ -e 's|@''HAVE_LINK''@|$(HAVE_LINK)|g' \
+ -e 's|@''HAVE_LINKAT''@|$(HAVE_LINKAT)|g' \
+ -e 's|@''HAVE_PIPE''@|$(HAVE_PIPE)|g' \
+ -e 's|@''HAVE_PIPE2''@|$(HAVE_PIPE2)|g' \
+ -e 's|@''HAVE_PREAD''@|$(HAVE_PREAD)|g' \
+ -e 's|@''HAVE_PWRITE''@|$(HAVE_PWRITE)|g' \
+ -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
+ -e 's|@''HAVE_READLINKAT''@|$(HAVE_READLINKAT)|g' \
+ -e 's|@''HAVE_SETHOSTNAME''@|$(HAVE_SETHOSTNAME)|g' \
+ -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
+ -e 's|@''HAVE_SYMLINK''@|$(HAVE_SYMLINK)|g' \
+ -e 's|@''HAVE_SYMLINKAT''@|$(HAVE_SYMLINKAT)|g' \
+ -e 's|@''HAVE_UNLINKAT''@|$(HAVE_UNLINKAT)|g' \
+ -e 's|@''HAVE_USLEEP''@|$(HAVE_USLEEP)|g' \
+ -e 's|@''HAVE_DECL_ENVIRON''@|$(HAVE_DECL_ENVIRON)|g' \
+ -e 's|@''HAVE_DECL_FCHDIR''@|$(HAVE_DECL_FCHDIR)|g' \
+ -e 's|@''HAVE_DECL_FDATASYNC''@|$(HAVE_DECL_FDATASYNC)|g' \
+ -e 's|@''HAVE_DECL_GETDOMAINNAME''@|$(HAVE_DECL_GETDOMAINNAME)|g' \
+ -e 's|@''HAVE_DECL_GETLOGIN''@|$(HAVE_DECL_GETLOGIN)|g' \
+ -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+ -e 's|@''HAVE_DECL_GETPAGESIZE''@|$(HAVE_DECL_GETPAGESIZE)|g' \
+ -e 's|@''HAVE_DECL_GETUSERSHELL''@|$(HAVE_DECL_GETUSERSHELL)|g' \
+ -e 's|@''HAVE_DECL_SETHOSTNAME''@|$(HAVE_DECL_SETHOSTNAME)|g' \
+ -e 's|@''HAVE_DECL_TRUNCATE''@|$(HAVE_DECL_TRUNCATE)|g' \
+ -e 's|@''HAVE_DECL_TTYNAME_R''@|$(HAVE_DECL_TTYNAME_R)|g' \
+ -e 's|@''HAVE_OS_H''@|$(HAVE_OS_H)|g' \
+ -e 's|@''HAVE_SYS_PARAM_H''@|$(HAVE_SYS_PARAM_H)|g' \
+ | \
+ sed -e 's|@''REPLACE_ACCESS''@|$(REPLACE_ACCESS)|g' \
+ -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
+ -e 's|@''REPLACE_CLOSE''@|$(REPLACE_CLOSE)|g' \
+ -e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \
+ -e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
+ -e 's|@''REPLACE_FACCESSAT''@|$(REPLACE_FACCESSAT)|g' \
+ -e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \
+ -e 's|@''REPLACE_FTRUNCATE''@|$(REPLACE_FTRUNCATE)|g' \
+ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
+ -e 's|@''REPLACE_GETDOMAINNAME''@|$(REPLACE_GETDOMAINNAME)|g' \
+ -e 's|@''REPLACE_GETDTABLESIZE''@|$(REPLACE_GETDTABLESIZE)|g' \
+ -e 's|@''REPLACE_GETLOGIN_R''@|$(REPLACE_GETLOGIN_R)|g' \
+ -e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \
+ -e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \
+ -e 's|@''REPLACE_GETPASS''@|$(REPLACE_GETPASS)|g' \
+ -e 's|@''REPLACE_ISATTY''@|$(REPLACE_ISATTY)|g' \
+ -e 's|@''REPLACE_LCHOWN''@|$(REPLACE_LCHOWN)|g' \
+ -e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \
+ -e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \
+ -e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
+ -e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \
+ -e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \
+ -e 's|@''REPLACE_READ''@|$(REPLACE_READ)|g' \
+ -e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \
+ -e 's|@''REPLACE_READLINKAT''@|$(REPLACE_READLINKAT)|g' \
+ -e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \
+ -e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \
+ -e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \
+ -e 's|@''REPLACE_SYMLINKAT''@|$(REPLACE_SYMLINKAT)|g' \
+ -e 's|@''REPLACE_TRUNCATE''@|$(REPLACE_TRUNCATE)|g' \
+ -e 's|@''REPLACE_TTYNAME_R''@|$(REPLACE_TTYNAME_R)|g' \
+ -e 's|@''REPLACE_UNLINK''@|$(REPLACE_UNLINK)|g' \
+ -e 's|@''REPLACE_UNLINKAT''@|$(REPLACE_UNLINKAT)|g' \
+ -e 's|@''REPLACE_USLEEP''@|$(REPLACE_USLEEP)|g' \
+ -e 's|@''REPLACE_WRITE''@|$(REPLACE_WRITE)|g' \
+ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H''@|$(UNISTD_H_HAVE_WINSOCK2_H)|g' \
+ -e 's|@''UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS''@|$(UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+ } > $@-t && \
+ mv $@-t $@
+
+mostlyclean-local: mostlyclean-generic
+ @for dir in '' $(MOSTLYCLEANDIRS); do \
+ if test -n "$$dir" && test -d $$dir; then \
+ echo "rmdir $$dir"; rmdir $$dir; \
+ fi; \
+ done; \
+ :
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/lib/_Noreturn.h b/lib/_Noreturn.h
new file mode 100644
index 0000000..0d4b9c2
--- /dev/null
+++ b/lib/_Noreturn.h
@@ -0,0 +1,40 @@
+/* A C macro for declaring that a function does not return.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _Noreturn
+# if (defined __cplusplus \
+ && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
+ || (defined _MSC_VER && 1900 <= _MSC_VER)) \
+ && 0)
+ /* [[noreturn]] is not practically usable, because with it the syntax
+ extern _Noreturn void func (...);
+ would not be valid; such a declaration would only be valid with 'extern'
+ and '_Noreturn' swapped, or without the 'extern' keyword. However, some
+ AIX system header files and several gnulib header files use precisely
+ this syntax with 'extern'. */
+# define _Noreturn [[noreturn]]
+# elif ((!defined __cplusplus || defined __clang__) \
+ && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
+ || 4 < __GNUC__ + (7 <= __GNUC_MINOR__)))
+ /* _Noreturn works as-is. */
+# elif 2 < __GNUC__ + (8 <= __GNUC_MINOR__) || 0x5110 <= __SUNPRO_C
+# define _Noreturn __attribute__ ((__noreturn__))
+# elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0)
+# define _Noreturn __declspec (noreturn)
+# else
+# define _Noreturn
+# endif
+#endif
diff --git a/lib/access.c b/lib/access.c
new file mode 100644
index 0000000..ba515cc
--- /dev/null
+++ b/lib/access.c
@@ -0,0 +1,31 @@
+/* Test the access rights of a file.
+ Copyright (C) 2019-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <unistd.h>
+
+#include <fcntl.h>
+#include <io.h>
+
+int
+access (const char *file, int mode)
+{
+ if ((mode & X_OK) != 0)
+ mode = (mode & ~X_OK) | R_OK;
+ return _access (file, mode);
+}
diff --git a/alloca.c b/lib/alloca.c
index 02ac921..d0476d5 100644
--- a/alloca.c
+++ b/lib/alloca.c
@@ -21,19 +21,22 @@
allocating any. It is a good idea to use alloca(0) in
your main control loop, etc. to force garbage collection. */
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
-#ifdef HAVE_STRING_H
+#include <alloca.h>
+
#include <string.h>
-#endif
-#ifdef HAVE_STDLIB_H
#include <stdlib.h>
-#endif
#ifdef emacs
-#include "blockinput.h"
+# include "lisp.h"
+# include "blockinput.h"
+# ifdef EMACS_FREE
+# undef free
+# define free EMACS_FREE
+# endif
+#else
+# define memory_full() abort ()
#endif
/* If compiling with GCC 2, this file's not needed. */
@@ -41,56 +44,33 @@
/* If someone has defined alloca as a macro,
there must be some other way alloca is supposed to work. */
-#ifndef alloca
+# ifndef alloca
-#ifdef emacs
-#ifdef static
+# ifdef emacs
+# ifdef static
/* actually, only want this if static is defined as ""
-- this is for usg, in which emacs must undefine static
in order to make unexec workable
*/
-#ifndef STACK_DIRECTION
+# ifndef STACK_DIRECTION
you
lose
-- must know STACK_DIRECTION at compile-time
-#endif /* STACK_DIRECTION undefined */
-#endif /* static */
-#endif /* emacs */
+/* Using #error here is not wise since this file should work for
+ old and obscure compilers. */
+# endif /* STACK_DIRECTION undefined */
+# endif /* static */
+# endif /* emacs */
/* If your stack is a linked list of frames, you have to
provide an "address metric" ADDRESS_FUNCTION macro. */
-#if defined (CRAY) && defined (CRAY_STACKSEG_END)
+# if defined (CRAY) && defined (CRAY_STACKSEG_END)
long i00afunc ();
-#define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg))
-#else
-#define ADDRESS_FUNCTION(arg) &(arg)
-#endif
-
-#if __STDC__
-typedef void *pointer;
-#else
-typedef char *pointer;
-#endif
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-/* Different portions of Emacs need to call different versions of
- malloc. The Emacs executable needs alloca to call xmalloc, because
- ordinary malloc isn't protected from input signals. On the other
- hand, the utilities in lib-src need alloca to call malloc; some of
- them are very simple, and don't have an xmalloc routine.
-
- Non-Emacs programs expect this to call use xmalloc.
-
- Callers below should use malloc. */
-
-#ifndef emacs
-#define malloc xmalloc
-#endif
-extern pointer malloc ();
+# define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg))
+# else
+# define ADDRESS_FUNCTION(arg) &(arg)
+# endif
/* Define STACK_DIRECTION if you know the direction of stack
growth for your system; otherwise it will be automatically
@@ -100,42 +80,31 @@ extern pointer malloc ();
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown */
-#ifndef STACK_DIRECTION
-#define STACK_DIRECTION 0 /* Direction unknown. */
-#endif
+# ifndef STACK_DIRECTION
+# define STACK_DIRECTION 0 /* Direction unknown. */
+# endif
-#if STACK_DIRECTION != 0
+# if STACK_DIRECTION != 0
-#define STACK_DIR STACK_DIRECTION /* Known at compile-time. */
+# define STACK_DIR STACK_DIRECTION /* Known at compile-time. */
-#else /* STACK_DIRECTION == 0; need run-time code. */
+# else /* STACK_DIRECTION == 0; need run-time code. */
-static int stack_dir; /* 1 or -1 once known. */
-#define STACK_DIR stack_dir
+static int stack_dir; /* 1 or -1 once known. */
+# define STACK_DIR stack_dir
-static void
-find_stack_direction (void)
+static int
+find_stack_direction (int *addr, int depth)
{
- static char *addr = NULL; /* Address of first 'dummy', once known. */
- auto char dummy; /* To get stack address. */
-
- if (addr == NULL)
- { /* Initial entry. */
- addr = ADDRESS_FUNCTION (dummy);
-
- find_stack_direction (); /* Recurse once. */
- }
- else
- {
- /* Second entry. */
- if (ADDRESS_FUNCTION (dummy) > addr)
- stack_dir = 1; /* Stack grew upward. */
- else
- stack_dir = -1; /* Stack grew downward. */
- }
+ int dir, dummy = 0;
+ if (! addr)
+ addr = &dummy;
+ *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
+ dir = depth ? find_stack_direction (addr, depth - 1) : 0;
+ return dir + dummy;
}
-#endif /* STACK_DIRECTION == 0 */
+# endif /* STACK_DIRECTION == 0 */
/* An "alloca header" is used to:
(a) chain together all alloca'ed blocks;
@@ -144,21 +113,21 @@ find_stack_direction (void)
It is very important that sizeof(header) agree with malloc
alignment chunk size. The following default should work okay. */
-#ifndef ALIGN_SIZE
-#define ALIGN_SIZE sizeof(double)
-#endif
+# ifndef ALIGN_SIZE
+# define ALIGN_SIZE sizeof(double)
+# endif
typedef union hdr
{
- char align[ALIGN_SIZE]; /* To force sizeof(header). */
+ char align[ALIGN_SIZE]; /* To force sizeof(header). */
struct
{
- union hdr *next; /* For chaining headers. */
- char *deep; /* For stack depth measure. */
+ union hdr *next; /* For chaining headers. */
+ char *deep; /* For stack depth measure. */
} h;
} header;
-static header *last_alloca_header = NULL; /* -> last alloca header. */
+static header *last_alloca_header = NULL; /* -> last alloca header. */
/* Return a pointer to at least SIZE bytes of storage,
which will be automatically reclaimed upon exit from
@@ -167,86 +136,92 @@ static header *last_alloca_header = NULL; /* -> last alloca header. */
caller, but that method cannot be made to work for some
implementations of C, for example under Gould's UTX/32. */
-pointer
-alloca (unsigned size)
+void *
+alloca (size_t size)
{
- auto char probe; /* Probes stack depth: */
+ auto char probe; /* Probes stack depth: */
register char *depth = ADDRESS_FUNCTION (probe);
-#if STACK_DIRECTION == 0
- if (STACK_DIR == 0) /* Unknown growth direction. */
- find_stack_direction ();
-#endif
+# if STACK_DIRECTION == 0
+ if (STACK_DIR == 0) /* Unknown growth direction. */
+ STACK_DIR = find_stack_direction (NULL, (size & 1) + 20);
+# endif
/* Reclaim garbage, defined as all alloca'd storage that
was allocated from deeper in the stack than currently. */
{
- register header *hp; /* Traverses linked list. */
+ register header *hp; /* Traverses linked list. */
-#ifdef emacs
+# ifdef emacs
BLOCK_INPUT;
-#endif
+# endif
for (hp = last_alloca_header; hp != NULL;)
if ((STACK_DIR > 0 && hp->h.deep > depth)
- || (STACK_DIR < 0 && hp->h.deep < depth))
- {
- register header *np = hp->h.next;
+ || (STACK_DIR < 0 && hp->h.deep < depth))
+ {
+ register header *np = hp->h.next;
- free ((pointer) hp); /* Collect garbage. */
+ free (hp); /* Collect garbage. */
- hp = np; /* -> next header. */
- }
+ hp = np; /* -> next header. */
+ }
else
- break; /* Rest are not deeper. */
+ break; /* Rest are not deeper. */
- last_alloca_header = hp; /* -> last valid storage. */
+ last_alloca_header = hp; /* -> last valid storage. */
-#ifdef emacs
+# ifdef emacs
UNBLOCK_INPUT;
-#endif
+# endif
}
if (size == 0)
- return NULL; /* No allocation required. */
+ return NULL; /* No allocation required. */
/* Allocate combined header + user data storage. */
{
- register pointer new = malloc (sizeof (header) + size);
/* Address of header. */
+ register header *new;
+
+ size_t combined_size = sizeof (header) + size;
+ if (combined_size < sizeof (header))
+ memory_full ();
- if (new == 0)
- abort();
+ new = malloc (combined_size);
- ((header *) new)->h.next = last_alloca_header;
- ((header *) new)->h.deep = depth;
+ if (! new)
+ memory_full ();
- last_alloca_header = (header *) new;
+ new->h.next = last_alloca_header;
+ new->h.deep = depth;
+
+ last_alloca_header = new;
/* User storage begins just after header. */
- return (pointer) ((char *) new + sizeof (header));
+ return (void *) (new + 1);
}
}
-#if defined (CRAY) && defined (CRAY_STACKSEG_END)
+# if defined (CRAY) && defined (CRAY_STACKSEG_END)
-#ifdef DEBUG_I00AFUNC
-#include <stdio.h>
-#endif
+# ifdef DEBUG_I00AFUNC
+# include <stdio.h>
+# endif
-#ifndef CRAY_STACK
-#define CRAY_STACK
-#ifndef CRAY2
+# ifndef CRAY_STACK
+# define CRAY_STACK
+# ifndef CRAY2
/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */
struct stack_control_header
{
- long shgrow:32; /* Number of times stack has grown. */
- long shaseg:32; /* Size of increments to stack. */
- long shhwm:32; /* High water mark of stack. */
- long shsize:32; /* Current size of stack (all segments). */
+ long shgrow:32; /* Number of times stack has grown. */
+ long shaseg:32; /* Size of increments to stack. */
+ long shhwm:32; /* High water mark of stack. */
+ long shsize:32; /* Current size of stack (all segments). */
};
/* The stack segment linkage control information occurs at
@@ -258,21 +233,21 @@ struct stack_control_header
struct stack_segment_linkage
{
- long ss[0200]; /* 0200 overflow words. */
- long sssize:32; /* Number of words in this segment. */
- long ssbase:32; /* Offset to stack base. */
+ long ss[0200]; /* 0200 overflow words. */
+ long sssize:32; /* Number of words in this segment. */
+ long ssbase:32; /* Offset to stack base. */
long:32;
- long sspseg:32; /* Offset to linkage control of previous
- segment of stack. */
+ long sspseg:32; /* Offset to linkage control of previous
+ segment of stack. */
long:32;
- long sstcpt:32; /* Pointer to task common address block. */
- long sscsnm; /* Private control structure number for
- microtasking. */
- long ssusr1; /* Reserved for user. */
- long ssusr2; /* Reserved for user. */
- long sstpid; /* Process ID for pid based multi-tasking. */
- long ssgvup; /* Pointer to multitasking thread giveup. */
- long sscray[7]; /* Reserved for Cray Research. */
+ long sstcpt:32; /* Pointer to task common address block. */
+ long sscsnm; /* Private control structure number for
+ microtasking. */
+ long ssusr1; /* Reserved for user. */
+ long ssusr2; /* Reserved for user. */
+ long sstpid; /* Process ID for pid based multi-tasking. */
+ long ssgvup; /* Pointer to multitasking thread giveup. */
+ long sscray[7]; /* Reserved for Cray Research. */
long ssa0;
long ssa1;
long ssa2;
@@ -291,32 +266,32 @@ struct stack_segment_linkage
long sss7;
};
-#else /* CRAY2 */
+# else /* CRAY2 */
/* The following structure defines the vector of words
returned by the STKSTAT library routine. */
struct stk_stat
{
- long now; /* Current total stack size. */
- long maxc; /* Amount of contiguous space which would
- be required to satisfy the maximum
- stack demand to date. */
- long high_water; /* Stack high-water mark. */
- long overflows; /* Number of stack overflow ($STKOFEN) calls. */
- long hits; /* Number of internal buffer hits. */
- long extends; /* Number of block extensions. */
- long stko_mallocs; /* Block allocations by $STKOFEN. */
- long underflows; /* Number of stack underflow calls ($STKRETN). */
- long stko_free; /* Number of deallocations by $STKRETN. */
- long stkm_free; /* Number of deallocations by $STKMRET. */
- long segments; /* Current number of stack segments. */
- long maxs; /* Maximum number of stack segments so far. */
- long pad_size; /* Stack pad size. */
- long current_address; /* Current stack segment address. */
- long current_size; /* Current stack segment size. This
- number is actually corrupted by STKSTAT to
- include the fifteen word trailer area. */
- long initial_address; /* Address of initial segment. */
- long initial_size; /* Size of initial segment. */
+ long now; /* Current total stack size. */
+ long maxc; /* Amount of contiguous space which would
+ be required to satisfy the maximum
+ stack demand to date. */
+ long high_water; /* Stack high-water mark. */
+ long overflows; /* Number of stack overflow ($STKOFEN) calls. */
+ long hits; /* Number of internal buffer hits. */
+ long extends; /* Number of block extensions. */
+ long stko_mallocs; /* Block allocations by $STKOFEN. */
+ long underflows; /* Number of stack underflow calls ($STKRETN). */
+ long stko_free; /* Number of deallocations by $STKRETN. */
+ long stkm_free; /* Number of deallocations by $STKMRET. */
+ long segments; /* Current number of stack segments. */
+ long maxs; /* Maximum number of stack segments so far. */
+ long pad_size; /* Stack pad size. */
+ long current_address; /* Current stack segment address. */
+ long current_size; /* Current stack segment size. This
+ number is actually corrupted by STKSTAT to
+ include the fifteen word trailer area. */
+ long initial_address; /* Address of initial segment. */
+ long initial_size; /* Size of initial segment. */
};
/* The following structure describes the data structure which trails
@@ -325,13 +300,13 @@ struct stk_stat
struct stk_trailer
{
- long this_address; /* Address of this block. */
- long this_size; /* Size of this block (does not include
- this trailer). */
+ long this_address; /* Address of this block. */
+ long this_size; /* Size of this block (does not include
+ this trailer). */
long unknown2;
long unknown3;
- long link; /* Address of trailer block of previous
- segment. */
+ long link; /* Address of trailer block of previous
+ segment. */
long unknown5;
long unknown6;
long unknown7;
@@ -344,10 +319,10 @@ struct stk_trailer
long unknown14;
};
-#endif /* CRAY2 */
-#endif /* not CRAY_STACK */
+# endif /* CRAY2 */
+# endif /* not CRAY_STACK */
-#ifdef CRAY2
+# ifdef CRAY2
/* Determine a "stack measure" for an arbitrary ADDRESS.
I doubt that "lint" will like this much. */
@@ -369,26 +344,26 @@ i00afunc (long *address)
/* Set up the iteration. */
trailer = (struct stk_trailer *) (status.current_address
- + status.current_size
- - 15);
+ + status.current_size
+ - 15);
/* There must be at least one stack segment. Therefore it is
a fatal error if "trailer" is null. */
- if (trailer == 0)
+ if (trailer == NULL)
abort ();
/* Discard segments that do not contain our argument address. */
- while (trailer != 0)
+ while (trailer != NULL)
{
block = (long *) trailer->this_address;
size = trailer->this_size;
- if (block == 0 || size == 0)
- abort ();
+ if (block == NULL || size == 0)
+ abort ();
trailer = (struct stk_trailer *) trailer->link;
if ((block <= address) && (address < (block + size)))
- break;
+ break;
}
/* Set the result to the offset in this segment and add the sizes
@@ -396,7 +371,7 @@ i00afunc (long *address)
result = address - block;
- if (trailer == 0)
+ if (trailer == NULL)
{
return result;
}
@@ -404,11 +379,11 @@ i00afunc (long *address)
do
{
if (trailer->this_size <= 0)
- abort ();
+ abort ();
result += trailer->this_size;
trailer = (struct stk_trailer *) trailer->link;
}
- while (trailer != 0);
+ while (trailer != NULL);
/* We are done. Note that if you present a bogus address (one
not in any segment), you will get a different number back, formed
@@ -418,7 +393,7 @@ i00afunc (long *address)
return (result);
}
-#else /* not CRAY2 */
+# else /* not CRAY2 */
/* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP.
Determine the number of the cell within the stack,
given the address of the cell. The purpose of this
@@ -463,11 +438,11 @@ i00afunc (long address)
while (!(this_segment <= address && address <= stkl))
{
-#ifdef DEBUG_I00AFUNC
+# ifdef DEBUG_I00AFUNC
fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl);
-#endif
+# endif
if (pseg == 0)
- break;
+ break;
stkl = stkl - pseg;
ssptr = (struct stack_segment_linkage *) stkl;
size = ssptr->sssize;
@@ -484,9 +459,9 @@ i00afunc (long address)
while (pseg != 0)
{
-#ifdef DEBUG_I00AFUNC
+# ifdef DEBUG_I00AFUNC
fprintf (stderr, "%011o %011o\n", pseg, size);
-#endif
+# endif
stkl = stkl - pseg;
ssptr = (struct stack_segment_linkage *) stkl;
size = ssptr->sssize;
@@ -496,8 +471,8 @@ i00afunc (long address)
return (result);
}
-#endif /* not CRAY2 */
-#endif /* CRAY */
+# endif /* not CRAY2 */
+# endif /* CRAY */
-#endif /* no alloca */
-#endif /* not GCC version 2 */
+# endif /* no alloca */
+#endif /* not GCC 2 */
diff --git a/lib/alloca.in.h b/lib/alloca.in.h
new file mode 100644
index 0000000..c7187e6
--- /dev/null
+++ b/lib/alloca.in.h
@@ -0,0 +1,71 @@
+/* Memory allocation on the stack.
+
+ Copyright (C) 1995, 1999, 2001-2004, 2006-2020 Free Software Foundation,
+ Inc.
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program; if not, see
+ <https://www.gnu.org/licenses/>.
+ */
+
+/* Avoid using the symbol _ALLOCA_H here, as Bison assumes _ALLOCA_H
+ means there is a real alloca function. */
+#ifndef _GL_ALLOCA_H
+#define _GL_ALLOCA_H
+
+/* alloca (N) returns a pointer to N bytes of memory
+ allocated on the stack, which will last until the function returns.
+ Use of alloca should be avoided:
+ - inside arguments of function calls - undefined behaviour,
+ - in inline functions - the allocation may actually last until the
+ calling function returns,
+ - for huge N (say, N >= 65536) - you never know how large (or small)
+ the stack is, and when the stack cannot fulfill the memory allocation
+ request, the program just crashes.
+ */
+
+#ifndef alloca
+# ifdef __GNUC__
+ /* Some version of mingw have an <alloca.h> that causes trouble when
+ included after 'alloca' gets defined as a macro. As a workaround, include
+ this <alloca.h> first and define 'alloca' as a macro afterwards. */
+# if (defined _WIN32 && ! defined __CYGWIN__) && @HAVE_ALLOCA_H@
+# include_next <alloca.h>
+# endif
+# define alloca __builtin_alloca
+# elif defined _AIX
+# define alloca __alloca
+# elif defined _MSC_VER
+# include <malloc.h>
+# define alloca _alloca
+# elif defined __DECC && defined __VMS
+# define alloca __ALLOCA
+# elif defined __TANDEM && defined _TNS_E_TARGET
+# ifdef __cplusplus
+extern "C"
+# endif
+void *_alloca (unsigned short);
+# pragma intrinsic (_alloca)
+# define alloca _alloca
+# elif defined __MVS__
+# include <stdlib.h>
+# else
+# include <stddef.h>
+# ifdef __cplusplus
+extern "C"
+# endif
+void *alloca (size_t);
+# endif
+#endif
+
+#endif /* _GL_ALLOCA_H */
diff --git a/lib/arg-nonnull.h b/lib/arg-nonnull.h
new file mode 100644
index 0000000..ac26ca8
--- /dev/null
+++ b/lib/arg-nonnull.h
@@ -0,0 +1,26 @@
+/* A C macro for declaring that specific arguments must not be NULL.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
+ that the values passed as arguments n, ..., m must be non-NULL pointers.
+ n = 1 stands for the first argument, n = 2 for the second argument etc. */
+#ifndef _GL_ARG_NONNULL
+# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
+# define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
+# else
+# define _GL_ARG_NONNULL(params)
+# endif
+#endif
diff --git a/lib/basename-lgpl.c b/lib/basename-lgpl.c
new file mode 100644
index 0000000..565469e
--- /dev/null
+++ b/lib/basename-lgpl.c
@@ -0,0 +1,75 @@
+/* basename.c -- return the last element in a file name
+
+ Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2020 Free Software
+ Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "dirname.h"
+
+#include <string.h>
+
+/* Return the address of the last file name component of NAME. If
+ NAME has no relative file name components because it is a file
+ system root, return the empty string. */
+
+char *
+last_component (char const *name)
+{
+ char const *base = name + FILE_SYSTEM_PREFIX_LEN (name);
+ char const *p;
+ bool saw_slash = false;
+
+ while (ISSLASH (*base))
+ base++;
+
+ for (p = base; *p; p++)
+ {
+ if (ISSLASH (*p))
+ saw_slash = true;
+ else if (saw_slash)
+ {
+ base = p;
+ saw_slash = false;
+ }
+ }
+
+ return (char *) base;
+}
+
+/* Return the length of the basename NAME. Typically NAME is the
+ value returned by base_name or last_component. Act like strlen
+ (NAME), except omit all trailing slashes. */
+
+size_t
+base_len (char const *name)
+{
+ size_t len;
+ size_t prefix_len = FILE_SYSTEM_PREFIX_LEN (name);
+
+ for (len = strlen (name); 1 < len && ISSLASH (name[len - 1]); len--)
+ continue;
+
+ if (DOUBLE_SLASH_IS_DISTINCT_ROOT && len == 1
+ && ISSLASH (name[0]) && ISSLASH (name[1]) && ! name[2])
+ return 2;
+
+ if (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE && prefix_len
+ && len == prefix_len && ISSLASH (name[prefix_len]))
+ return prefix_len + 1;
+
+ return len;
+}
diff --git a/lib/c++defs.h b/lib/c++defs.h
new file mode 100644
index 0000000..7a05763
--- /dev/null
+++ b/lib/c++defs.h
@@ -0,0 +1,316 @@
+/* C++ compatible function declaration macros.
+ Copyright (C) 2010-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _GL_CXXDEFS_H
+#define _GL_CXXDEFS_H
+
+/* Begin/end the GNULIB_NAMESPACE namespace. */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_BEGIN_NAMESPACE namespace GNULIB_NAMESPACE {
+# define _GL_END_NAMESPACE }
+#else
+# define _GL_BEGIN_NAMESPACE
+# define _GL_END_NAMESPACE
+#endif
+
+/* The three most frequent use cases of these macros are:
+
+ * For providing a substitute for a function that is missing on some
+ platforms, but is declared and works fine on the platforms on which
+ it exists:
+
+ #if @GNULIB_FOO@
+ # if !@HAVE_FOO@
+ _GL_FUNCDECL_SYS (foo, ...);
+ # endif
+ _GL_CXXALIAS_SYS (foo, ...);
+ _GL_CXXALIASWARN (foo);
+ #elif defined GNULIB_POSIXCHECK
+ ...
+ #endif
+
+ * For providing a replacement for a function that exists on all platforms,
+ but is broken/insufficient and needs to be replaced on some platforms:
+
+ #if @GNULIB_FOO@
+ # if @REPLACE_FOO@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+ # undef foo
+ # define foo rpl_foo
+ # endif
+ _GL_FUNCDECL_RPL (foo, ...);
+ _GL_CXXALIAS_RPL (foo, ...);
+ # else
+ _GL_CXXALIAS_SYS (foo, ...);
+ # endif
+ _GL_CXXALIASWARN (foo);
+ #elif defined GNULIB_POSIXCHECK
+ ...
+ #endif
+
+ * For providing a replacement for a function that exists on some platforms
+ but is broken/insufficient and needs to be replaced on some of them and
+ is additionally either missing or undeclared on some other platforms:
+
+ #if @GNULIB_FOO@
+ # if @REPLACE_FOO@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+ # undef foo
+ # define foo rpl_foo
+ # endif
+ _GL_FUNCDECL_RPL (foo, ...);
+ _GL_CXXALIAS_RPL (foo, ...);
+ # else
+ # if !@HAVE_FOO@ or if !@HAVE_DECL_FOO@
+ _GL_FUNCDECL_SYS (foo, ...);
+ # endif
+ _GL_CXXALIAS_SYS (foo, ...);
+ # endif
+ _GL_CXXALIASWARN (foo);
+ #elif defined GNULIB_POSIXCHECK
+ ...
+ #endif
+*/
+
+/* _GL_EXTERN_C declaration;
+ performs the declaration with C linkage. */
+#if defined __cplusplus
+# define _GL_EXTERN_C extern "C"
+#else
+# define _GL_EXTERN_C extern
+#endif
+
+/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
+ declares a replacement function, named rpl_func, with the given prototype,
+ consisting of return type, parameters, and attributes.
+ Example:
+ _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
+ _GL_ARG_NONNULL ((1)));
+ */
+#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
+ _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
+#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
+ _GL_EXTERN_C rettype rpl_func parameters_and_attributes
+
+/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
+ declares the system function, named func, with the given prototype,
+ consisting of return type, parameters, and attributes.
+ Example:
+ _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
+ _GL_ARG_NONNULL ((1)));
+ */
+#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
+ _GL_EXTERN_C rettype func parameters_and_attributes
+
+/* _GL_CXXALIAS_RPL (func, rettype, parameters);
+ declares a C++ alias called GNULIB_NAMESPACE::func
+ that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
+ Example:
+ _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
+
+ Wrapping rpl_func in an object with an inline conversion operator
+ avoids a reference to rpl_func unless GNULIB_NAMESPACE::func is
+ actually used in the program. */
+#define _GL_CXXALIAS_RPL(func,rettype,parameters) \
+ _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
+ namespace GNULIB_NAMESPACE \
+ { \
+ static const struct _gl_ ## func ## _wrapper \
+ { \
+ typedef rettype (*type) parameters; \
+ \
+ inline operator type () const \
+ { \
+ return ::rpl_func; \
+ } \
+ } func = {}; \
+ } \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#else
+# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
+ is like _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
+ except that the C function rpl_func may have a slightly different
+ declaration. A cast is used to silence the "invalid conversion" error
+ that would otherwise occur. */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
+ namespace GNULIB_NAMESPACE \
+ { \
+ static const struct _gl_ ## func ## _wrapper \
+ { \
+ typedef rettype (*type) parameters; \
+ \
+ inline operator type () const \
+ { \
+ return reinterpret_cast<type>(::rpl_func); \
+ } \
+ } func = {}; \
+ } \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#else
+# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+/* _GL_CXXALIAS_SYS (func, rettype, parameters);
+ declares a C++ alias called GNULIB_NAMESPACE::func
+ that redirects to the system provided function func, if GNULIB_NAMESPACE
+ is defined.
+ Example:
+ _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
+
+ Wrapping func in an object with an inline conversion operator
+ avoids a reference to func unless GNULIB_NAMESPACE::func is
+ actually used in the program. */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
+ namespace GNULIB_NAMESPACE \
+ { \
+ static const struct _gl_ ## func ## _wrapper \
+ { \
+ typedef rettype (*type) parameters; \
+ \
+ inline operator type () const \
+ { \
+ return ::func; \
+ } \
+ } func = {}; \
+ } \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#else
+# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
+ is like _GL_CXXALIAS_SYS (func, rettype, parameters);
+ except that the C function func may have a slightly different declaration.
+ A cast is used to silence the "invalid conversion" error that would
+ otherwise occur. */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
+ namespace GNULIB_NAMESPACE \
+ { \
+ static const struct _gl_ ## func ## _wrapper \
+ { \
+ typedef rettype (*type) parameters; \
+ \
+ inline operator type () const \
+ { \
+ return reinterpret_cast<type>(::func); \
+ } \
+ } func = {}; \
+ } \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#else
+# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
+ is like _GL_CXXALIAS_SYS (func, rettype, parameters);
+ except that the C function is picked among a set of overloaded functions,
+ namely the one with rettype2 and parameters2. Two consecutive casts
+ are used to silence the "cannot find a match" and "invalid conversion"
+ errors that would otherwise occur. */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+ /* The outer cast must be a reinterpret_cast.
+ The inner cast: When the function is defined as a set of overloaded
+ functions, it works as a static_cast<>, choosing the designated variant.
+ When the function is defined as a single variant, it works as a
+ reinterpret_cast<>. The parenthesized cast syntax works both ways. */
+# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
+ namespace GNULIB_NAMESPACE \
+ { \
+ static const struct _gl_ ## func ## _wrapper \
+ { \
+ typedef rettype (*type) parameters; \
+ \
+ inline operator type () const \
+ { \
+ return reinterpret_cast<type>((rettype2 (*) parameters2)(::func)); \
+ } \
+ } func = {}; \
+ } \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#else
+# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+/* _GL_CXXALIASWARN (func);
+ causes a warning to be emitted when ::func is used but not when
+ GNULIB_NAMESPACE::func is used. func must be defined without overloaded
+ variants. */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIASWARN(func) \
+ _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
+# define _GL_CXXALIASWARN_1(func,namespace) \
+ _GL_CXXALIASWARN_2 (func, namespace)
+/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
+ we enable the warning only when not optimizing. */
+# if !__OPTIMIZE__
+# define _GL_CXXALIASWARN_2(func,namespace) \
+ _GL_WARN_ON_USE (func, \
+ "The symbol ::" #func " refers to the system function. " \
+ "Use " #namespace "::" #func " instead.")
+# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+# define _GL_CXXALIASWARN_2(func,namespace) \
+ extern __typeof__ (func) func
+# else
+# define _GL_CXXALIASWARN_2(func,namespace) \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+# endif
+#else
+# define _GL_CXXALIASWARN(func) \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
+ causes a warning to be emitted when the given overloaded variant of ::func
+ is used but not when GNULIB_NAMESPACE::func is used. */
+#if defined __cplusplus && defined GNULIB_NAMESPACE
+# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
+ _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
+ GNULIB_NAMESPACE)
+# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
+ _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
+/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
+ we enable the warning only when not optimizing. */
+# if !__OPTIMIZE__
+# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
+ _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
+ "The symbol ::" #func " refers to the system function. " \
+ "Use " #namespace "::" #func " instead.")
+# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
+ extern __typeof__ (func) func
+# else
+# define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+# endif
+#else
+# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
+ _GL_EXTERN_C int _gl_cxxalias_dummy
+#endif
+
+#endif /* _GL_CXXDEFS_H */
diff --git a/lib/close.c b/lib/close.c
new file mode 100644
index 0000000..0c8780d
--- /dev/null
+++ b/lib/close.c
@@ -0,0 +1,71 @@
+/* close replacement.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <unistd.h>
+
+#include <errno.h>
+
+#include "fd-hook.h"
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+# include "msvc-inval.h"
+#endif
+
+#undef close
+
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+static int
+close_nothrow (int fd)
+{
+ int result;
+
+ TRY_MSVC_INVAL
+ {
+ result = close (fd);
+ }
+ CATCH_MSVC_INVAL
+ {
+ result = -1;
+ errno = EBADF;
+ }
+ DONE_MSVC_INVAL;
+
+ return result;
+}
+#else
+# define close_nothrow close
+#endif
+
+/* Override close() to call into other gnulib modules. */
+
+int
+rpl_close (int fd)
+{
+#if WINDOWS_SOCKETS
+ int retval = execute_all_close_hooks (close_nothrow, fd);
+#else
+ int retval = close_nothrow (fd);
+#endif
+
+#if REPLACE_FCHDIR
+ if (retval >= 0)
+ _gl_unregister_fd (fd);
+#endif
+
+ return retval;
+}
diff --git a/lib/concat-filename.c b/lib/concat-filename.c
new file mode 100644
index 0000000..367e41d
--- /dev/null
+++ b/lib/concat-filename.c
@@ -0,0 +1,73 @@
+/* Construct a full filename from a directory and a relative filename.
+ Copyright (C) 2001-2004, 2006-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 3 of the License, or any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <haible@clisp.cons.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "concat-filename.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "filename.h"
+
+/* Concatenate a directory filename, a relative filename and an optional
+ suffix. The directory may end with the directory separator. The second
+ argument may not start with the directory separator (it is relative).
+ Return a freshly allocated filename. Return NULL and set errno
+ upon memory allocation failure. */
+char *
+concatenated_filename (const char *directory, const char *filename,
+ const char *suffix)
+{
+ char *result;
+ char *p;
+
+ if (strcmp (directory, ".") == 0)
+ {
+ /* No need to prepend the directory. */
+ result = (char *) malloc (strlen (filename)
+ + (suffix != NULL ? strlen (suffix) : 0)
+ + 1);
+ if (result == NULL)
+ return NULL; /* errno is set here */
+ p = result;
+ }
+ else
+ {
+ size_t directory_len = strlen (directory);
+ int need_slash =
+ (directory_len > FILE_SYSTEM_PREFIX_LEN (directory)
+ && !ISSLASH (directory[directory_len - 1]));
+ result = (char *) malloc (directory_len + need_slash
+ + strlen (filename)
+ + (suffix != NULL ? strlen (suffix) : 0)
+ + 1);
+ if (result == NULL)
+ return NULL; /* errno is set here */
+ memcpy (result, directory, directory_len);
+ p = result + directory_len;
+ if (need_slash)
+ *p++ = '/';
+ }
+ p = stpcpy (p, filename);
+ if (suffix != NULL)
+ stpcpy (p, suffix);
+ return result;
+}
diff --git a/lib/concat-filename.h b/lib/concat-filename.h
new file mode 100644
index 0000000..64b461e
--- /dev/null
+++ b/lib/concat-filename.h
@@ -0,0 +1,41 @@
+/* Construct a full filename from a directory and a relative filename.
+ Copyright (C) 2001-2004, 2007-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _CONCAT_FILENAME_H
+#define _CONCAT_FILENAME_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Concatenate a directory filename, a relative filename and an optional
+ suffix. Return a freshly allocated filename. Return NULL and set errno
+ upon memory allocation failure. */
+extern char *concatenated_filename (const char *directory,
+ const char *filename, const char *suffix);
+
+/* Concatenate a directory filename, a relative filename and an optional
+ suffix. Return a freshly allocated filename. */
+extern char *xconcatenated_filename (const char *directory,
+ const char *filename, const char *suffix);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CONCAT_FILENAME_H */
diff --git a/lib/dirname-lgpl.c b/lib/dirname-lgpl.c
new file mode 100644
index 0000000..27d4374
--- /dev/null
+++ b/lib/dirname-lgpl.c
@@ -0,0 +1,86 @@
+/* dirname.c -- return all but the last element in a file name
+
+ Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2020 Free Software
+ Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "dirname.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+/* Return the length of the prefix of FILE that will be used by
+ dir_name. If FILE is in the working directory, this returns zero
+ even though 'dir_name (FILE)' will return ".". Works properly even
+ if there are trailing slashes (by effectively ignoring them). */
+
+size_t
+dir_len (char const *file)
+{
+ size_t prefix_length = FILE_SYSTEM_PREFIX_LEN (file);
+ size_t length;
+
+ /* Advance prefix_length beyond important leading slashes. */
+ prefix_length += (prefix_length != 0
+ ? (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
+ && ISSLASH (file[prefix_length]))
+ : (ISSLASH (file[0])
+ ? ((DOUBLE_SLASH_IS_DISTINCT_ROOT
+ && ISSLASH (file[1]) && ! ISSLASH (file[2])
+ ? 2 : 1))
+ : 0));
+
+ /* Strip the basename and any redundant slashes before it. */
+ for (length = last_component (file) - file;
+ prefix_length < length; length--)
+ if (! ISSLASH (file[length - 1]))
+ break;
+ return length;
+}
+
+
+/* In general, we can't use the builtin 'dirname' function if available,
+ since it has different meanings in different environments.
+ In some environments the builtin 'dirname' modifies its argument.
+
+ Return the leading directories part of FILE, allocated with malloc.
+ Works properly even if there are trailing slashes (by effectively
+ ignoring them). Return NULL on failure.
+
+ If lstat (FILE) would succeed, then { chdir (dir_name (FILE));
+ lstat (base_name (FILE)); } will access the same file. Likewise,
+ if the sequence { chdir (dir_name (FILE));
+ rename (base_name (FILE), "foo"); } succeeds, you have renamed FILE
+ to "foo" in the same directory FILE was in. */
+
+char *
+mdir_name (char const *file)
+{
+ size_t length = dir_len (file);
+ bool append_dot = (length == 0
+ || (FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
+ && length == FILE_SYSTEM_PREFIX_LEN (file)
+ && file[2] != '\0' && ! ISSLASH (file[2])));
+ char *dir = malloc (length + append_dot + 1);
+ if (!dir)
+ return NULL;
+ memcpy (dir, file, length);
+ if (append_dot)
+ dir[length++] = '.';
+ dir[length] = '\0';
+ return dir;
+}
diff --git a/lib/dirname.h b/lib/dirname.h
new file mode 100644
index 0000000..8c12d93
--- /dev/null
+++ b/lib/dirname.h
@@ -0,0 +1,54 @@
+/* Take file names apart into directory and base names.
+
+ Copyright (C) 1998, 2001, 2003-2006, 2009-2020 Free Software Foundation,
+ Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef DIRNAME_H_
+# define DIRNAME_H_ 1
+
+# include <stdbool.h>
+# include <stddef.h>
+# include "dosname.h"
+
+# ifndef DIRECTORY_SEPARATOR
+# define DIRECTORY_SEPARATOR '/'
+# endif
+
+# ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT
+# define DOUBLE_SLASH_IS_DISTINCT_ROOT 0
+# endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+# if GNULIB_DIRNAME
+char *base_name (char const *file) _GL_ATTRIBUTE_MALLOC;
+char *dir_name (char const *file);
+# endif
+
+char *mdir_name (char const *file);
+size_t base_len (char const *file) _GL_ATTRIBUTE_PURE;
+size_t dir_len (char const *file) _GL_ATTRIBUTE_PURE;
+char *last_component (char const *file) _GL_ATTRIBUTE_PURE;
+
+bool strip_trailing_slashes (char *file);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* not DIRNAME_H_ */
diff --git a/lib/dosname.h b/lib/dosname.h
new file mode 100644
index 0000000..5782960
--- /dev/null
+++ b/lib/dosname.h
@@ -0,0 +1,52 @@
+/* File names on MS-DOS/Windows systems.
+
+ Copyright (C) 2000-2001, 2004-2006, 2009-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+ From Paul Eggert and Jim Meyering. */
+
+#ifndef _DOSNAME_H
+#define _DOSNAME_H
+
+#if (defined _WIN32 || defined __CYGWIN__ \
+ || defined __EMX__ || defined __MSDOS__ || defined __DJGPP__)
+ /* This internal macro assumes ASCII, but all hosts that support drive
+ letters use ASCII. */
+# define _IS_DRIVE_LETTER(C) (((unsigned int) (C) | ('a' - 'A')) - 'a' \
+ <= 'z' - 'a')
+# define FILE_SYSTEM_PREFIX_LEN(Filename) \
+ (_IS_DRIVE_LETTER ((Filename)[0]) && (Filename)[1] == ':' ? 2 : 0)
+# ifndef __CYGWIN__
+# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 1
+# endif
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+#else
+# define FILE_SYSTEM_PREFIX_LEN(Filename) 0
+# define ISSLASH(C) ((C) == '/')
+#endif
+
+#ifndef FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
+# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0
+#endif
+
+#if FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
+# define IS_ABSOLUTE_FILE_NAME(F) ISSLASH ((F)[FILE_SYSTEM_PREFIX_LEN (F)])
+# else
+# define IS_ABSOLUTE_FILE_NAME(F) \
+ (ISSLASH ((F)[0]) || FILE_SYSTEM_PREFIX_LEN (F) != 0)
+#endif
+#define IS_RELATIVE_FILE_NAME(F) (! IS_ABSOLUTE_FILE_NAME (F))
+
+#endif /* DOSNAME_H_ */
diff --git a/lib/dup2.c b/lib/dup2.c
new file mode 100644
index 0000000..88ef259
--- /dev/null
+++ b/lib/dup2.c
@@ -0,0 +1,235 @@
+/* Duplicate an open file descriptor to a specified file descriptor.
+
+ Copyright (C) 1999, 2004-2007, 2009-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* written by Paul Eggert */
+
+#include <config.h>
+
+/* Specification. */
+#include <unistd.h>
+
+#include <errno.h>
+#include <fcntl.h>
+
+#if HAVE_DUP2
+
+# undef dup2
+
+# if defined _WIN32 && ! defined __CYGWIN__
+
+/* Get declarations of the native Windows API functions. */
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+
+# if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+# include "msvc-inval.h"
+# endif
+
+/* Get _get_osfhandle. */
+# if GNULIB_MSVC_NOTHROW
+# include "msvc-nothrow.h"
+# else
+# include <io.h>
+# endif
+
+# if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+static int
+dup2_nothrow (int fd, int desired_fd)
+{
+ int result;
+
+ TRY_MSVC_INVAL
+ {
+ result = dup2 (fd, desired_fd);
+ }
+ CATCH_MSVC_INVAL
+ {
+ errno = EBADF;
+ result = -1;
+ }
+ DONE_MSVC_INVAL;
+
+ return result;
+}
+# else
+# define dup2_nothrow dup2
+# endif
+
+static int
+ms_windows_dup2 (int fd, int desired_fd)
+{
+ int result;
+
+ /* If fd is closed, mingw hangs on dup2 (fd, fd). If fd is open,
+ dup2 (fd, fd) returns 0, but all further attempts to use fd in
+ future dup2 calls will hang. */
+ if (fd == desired_fd)
+ {
+ if ((HANDLE) _get_osfhandle (fd) == INVALID_HANDLE_VALUE)
+ {
+ errno = EBADF;
+ return -1;
+ }
+ return fd;
+ }
+
+ /* Wine 1.0.1 return 0 when desired_fd is negative but not -1:
+ https://bugs.winehq.org/show_bug.cgi?id=21289 */
+ if (desired_fd < 0)
+ {
+ errno = EBADF;
+ return -1;
+ }
+
+ result = dup2_nothrow (fd, desired_fd);
+
+ if (result == 0)
+ result = desired_fd;
+
+ return result;
+}
+
+# define dup2 ms_windows_dup2
+
+# elif defined __KLIBC__
+
+# include <InnoTekLIBC/backend.h>
+
+static int
+klibc_dup2dirfd (int fd, int desired_fd)
+{
+ int tempfd;
+ int dupfd;
+
+ tempfd = open ("NUL", O_RDONLY);
+ if (tempfd == -1)
+ return -1;
+
+ if (tempfd == desired_fd)
+ {
+ close (tempfd);
+
+ char path[_MAX_PATH];
+ if (__libc_Back_ioFHToPath (fd, path, sizeof (path)))
+ return -1;
+
+ return open(path, O_RDONLY);
+ }
+
+ dupfd = klibc_dup2dirfd (fd, desired_fd);
+
+ close (tempfd);
+
+ return dupfd;
+}
+
+static int
+klibc_dup2 (int fd, int desired_fd)
+{
+ int dupfd;
+ struct stat sbuf;
+
+ dupfd = dup2 (fd, desired_fd);
+ if (dupfd == -1 && errno == ENOTSUP \
+ && !fstat (fd, &sbuf) && S_ISDIR (sbuf.st_mode))
+ {
+ close (desired_fd);
+
+ return klibc_dup2dirfd (fd, desired_fd);
+ }
+
+ return dupfd;
+}
+
+# define dup2 klibc_dup2
+# endif
+
+int
+rpl_dup2 (int fd, int desired_fd)
+{
+ int result;
+
+# ifdef F_GETFL
+ /* On Linux kernels 2.6.26-2.6.29, dup2 (fd, fd) returns -EBADF.
+ On Cygwin 1.5.x, dup2 (1, 1) returns 0.
+ On Cygwin 1.7.17, dup2 (1, -1) dumps core.
+ On Cygwin 1.7.25, dup2 (1, 256) can dump core.
+ On Haiku, dup2 (fd, fd) mistakenly clears FD_CLOEXEC. */
+# if HAVE_SETDTABLESIZE
+ setdtablesize (desired_fd + 1);
+# endif
+ if (desired_fd < 0)
+ fd = desired_fd;
+ if (fd == desired_fd)
+ return fcntl (fd, F_GETFL) == -1 ? -1 : fd;
+# endif
+
+ result = dup2 (fd, desired_fd);
+
+ /* Correct an errno value on FreeBSD 6.1 and Cygwin 1.5.x. */
+ if (result == -1 && errno == EMFILE)
+ errno = EBADF;
+# if REPLACE_FCHDIR
+ if (fd != desired_fd && result != -1)
+ result = _gl_register_dup (fd, result);
+# endif
+ return result;
+}
+
+#else /* !HAVE_DUP2 */
+
+/* On older platforms, dup2 did not exist. */
+
+# ifndef F_DUPFD
+static int
+dupfd (int fd, int desired_fd)
+{
+ int duplicated_fd = dup (fd);
+ if (duplicated_fd < 0 || duplicated_fd == desired_fd)
+ return duplicated_fd;
+ else
+ {
+ int r = dupfd (fd, desired_fd);
+ int e = errno;
+ close (duplicated_fd);
+ errno = e;
+ return r;
+ }
+}
+# endif
+
+int
+dup2 (int fd, int desired_fd)
+{
+ int result = fcntl (fd, F_GETFL) < 0 ? -1 : fd;
+ if (result == -1 || fd == desired_fd)
+ return result;
+ close (desired_fd);
+# ifdef F_DUPFD
+ result = fcntl (fd, F_DUPFD, desired_fd);
+# if REPLACE_FCHDIR
+ if (0 <= result)
+ result = _gl_register_dup (fd, result);
+# endif
+# else
+ result = dupfd (fd, desired_fd);
+# endif
+ if (result == -1 && (errno == EMFILE || errno == EINVAL))
+ errno = EBADF;
+ return result;
+}
+#endif /* !HAVE_DUP2 */
diff --git a/lib/errno.in.h b/lib/errno.in.h
new file mode 100644
index 0000000..c27e0c7
--- /dev/null
+++ b/lib/errno.in.h
@@ -0,0 +1,279 @@
+/* A POSIX-like <errno.h>.
+
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _@GUARD_PREFIX@_ERRNO_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* The include_next requires a split double-inclusion guard. */
+#@INCLUDE_NEXT@ @NEXT_ERRNO_H@
+
+#ifndef _@GUARD_PREFIX@_ERRNO_H
+#define _@GUARD_PREFIX@_ERRNO_H
+
+
+/* On native Windows platforms, many macros are not defined. */
+# if defined _WIN32 && ! defined __CYGWIN__
+
+/* These are the same values as defined by MSVC 10, for interoperability. */
+
+# ifndef ENOMSG
+# define ENOMSG 122
+# define GNULIB_defined_ENOMSG 1
+# endif
+
+# ifndef EIDRM
+# define EIDRM 111
+# define GNULIB_defined_EIDRM 1
+# endif
+
+# ifndef ENOLINK
+# define ENOLINK 121
+# define GNULIB_defined_ENOLINK 1
+# endif
+
+# ifndef EPROTO
+# define EPROTO 134
+# define GNULIB_defined_EPROTO 1
+# endif
+
+# ifndef EBADMSG
+# define EBADMSG 104
+# define GNULIB_defined_EBADMSG 1
+# endif
+
+# ifndef EOVERFLOW
+# define EOVERFLOW 132
+# define GNULIB_defined_EOVERFLOW 1
+# endif
+
+# ifndef ENOTSUP
+# define ENOTSUP 129
+# define GNULIB_defined_ENOTSUP 1
+# endif
+
+# ifndef ENETRESET
+# define ENETRESET 117
+# define GNULIB_defined_ENETRESET 1
+# endif
+
+# ifndef ECONNABORTED
+# define ECONNABORTED 106
+# define GNULIB_defined_ECONNABORTED 1
+# endif
+
+# ifndef ECANCELED
+# define ECANCELED 105
+# define GNULIB_defined_ECANCELED 1
+# endif
+
+# ifndef EOWNERDEAD
+# define EOWNERDEAD 133
+# define GNULIB_defined_EOWNERDEAD 1
+# endif
+
+# ifndef ENOTRECOVERABLE
+# define ENOTRECOVERABLE 127
+# define GNULIB_defined_ENOTRECOVERABLE 1
+# endif
+
+# ifndef EINPROGRESS
+# define EINPROGRESS 112
+# define EALREADY 103
+# define ENOTSOCK 128
+# define EDESTADDRREQ 109
+# define EMSGSIZE 115
+# define EPROTOTYPE 136
+# define ENOPROTOOPT 123
+# define EPROTONOSUPPORT 135
+# define EOPNOTSUPP 130
+# define EAFNOSUPPORT 102
+# define EADDRINUSE 100
+# define EADDRNOTAVAIL 101
+# define ENETDOWN 116
+# define ENETUNREACH 118
+# define ECONNRESET 108
+# define ENOBUFS 119
+# define EISCONN 113
+# define ENOTCONN 126
+# define ETIMEDOUT 138
+# define ECONNREFUSED 107
+# define ELOOP 114
+# define EHOSTUNREACH 110
+# define EWOULDBLOCK 140
+# define GNULIB_defined_ESOCK 1
+# endif
+
+# ifndef ETXTBSY
+# define ETXTBSY 139
+# define ENODATA 120 /* not required by POSIX */
+# define ENOSR 124 /* not required by POSIX */
+# define ENOSTR 125 /* not required by POSIX */
+# define ETIME 137 /* not required by POSIX */
+# define EOTHER 131 /* not required by POSIX */
+# define GNULIB_defined_ESTREAMS 1
+# endif
+
+/* These are intentionally the same values as the WSA* error numbers, defined
+ in <winsock2.h>. */
+# define ESOCKTNOSUPPORT 10044 /* not required by POSIX */
+# define EPFNOSUPPORT 10046 /* not required by POSIX */
+# define ESHUTDOWN 10058 /* not required by POSIX */
+# define ETOOMANYREFS 10059 /* not required by POSIX */
+# define EHOSTDOWN 10064 /* not required by POSIX */
+# define EPROCLIM 10067 /* not required by POSIX */
+# define EUSERS 10068 /* not required by POSIX */
+# define EDQUOT 10069
+# define ESTALE 10070
+# define EREMOTE 10071 /* not required by POSIX */
+# define GNULIB_defined_EWINSOCK 1
+
+# endif
+
+
+/* On OSF/1 5.1, when _XOPEN_SOURCE_EXTENDED is not defined, the macros
+ EMULTIHOP, ENOLINK, EOVERFLOW are not defined. */
+# if @EMULTIHOP_HIDDEN@
+# define EMULTIHOP @EMULTIHOP_VALUE@
+# define GNULIB_defined_EMULTIHOP 1
+# endif
+# if @ENOLINK_HIDDEN@
+# define ENOLINK @ENOLINK_VALUE@
+# define GNULIB_defined_ENOLINK 1
+# endif
+# if @EOVERFLOW_HIDDEN@
+# define EOVERFLOW @EOVERFLOW_VALUE@
+# define GNULIB_defined_EOVERFLOW 1
+# endif
+
+
+/* On OpenBSD 4.0 and on native Windows, the macros ENOMSG, EIDRM, ENOLINK,
+ EPROTO, EMULTIHOP, EBADMSG, EOVERFLOW, ENOTSUP, ECANCELED are not defined.
+ Likewise, on NonStop Kernel, EDQUOT is not defined.
+ Define them here. Values >= 2000 seem safe to use: Solaris ESTALE = 151,
+ HP-UX EWOULDBLOCK = 246, IRIX EDQUOT = 1133.
+
+ Note: When one of these systems defines some of these macros some day,
+ binaries will have to be recompiled so that they recognizes the new
+ errno values from the system. */
+
+# ifndef ENOMSG
+# define ENOMSG 2000
+# define GNULIB_defined_ENOMSG 1
+# endif
+
+# ifndef EIDRM
+# define EIDRM 2001
+# define GNULIB_defined_EIDRM 1
+# endif
+
+# ifndef ENOLINK
+# define ENOLINK 2002
+# define GNULIB_defined_ENOLINK 1
+# endif
+
+# ifndef EPROTO
+# define EPROTO 2003
+# define GNULIB_defined_EPROTO 1
+# endif
+
+# ifndef EMULTIHOP
+# define EMULTIHOP 2004
+# define GNULIB_defined_EMULTIHOP 1
+# endif
+
+# ifndef EBADMSG
+# define EBADMSG 2005
+# define GNULIB_defined_EBADMSG 1
+# endif
+
+# ifndef EOVERFLOW
+# define EOVERFLOW 2006
+# define GNULIB_defined_EOVERFLOW 1
+# endif
+
+# ifndef ENOTSUP
+# define ENOTSUP 2007
+# define GNULIB_defined_ENOTSUP 1
+# endif
+
+# ifndef ENETRESET
+# define ENETRESET 2011
+# define GNULIB_defined_ENETRESET 1
+# endif
+
+# ifndef ECONNABORTED
+# define ECONNABORTED 2012
+# define GNULIB_defined_ECONNABORTED 1
+# endif
+
+# ifndef ESTALE
+# define ESTALE 2009
+# define GNULIB_defined_ESTALE 1
+# endif
+
+# ifndef EDQUOT
+# define EDQUOT 2010
+# define GNULIB_defined_EDQUOT 1
+# endif
+
+# ifndef ECANCELED
+# define ECANCELED 2008
+# define GNULIB_defined_ECANCELED 1
+# endif
+
+/* On many platforms, the macros EOWNERDEAD and ENOTRECOVERABLE are not
+ defined. */
+
+# ifndef EOWNERDEAD
+# if defined __sun
+ /* Use the same values as defined for Solaris >= 8, for
+ interoperability. */
+# define EOWNERDEAD 58
+# define ENOTRECOVERABLE 59
+# elif defined _WIN32 && ! defined __CYGWIN__
+ /* We have a conflict here: pthreads-win32 defines these values
+ differently than MSVC 10. It's hairy to decide which one to use. */
+# if defined __MINGW32__ && !defined USE_WINDOWS_THREADS
+ /* Use the same values as defined by pthreads-win32, for
+ interoperability. */
+# define EOWNERDEAD 43
+# define ENOTRECOVERABLE 44
+# else
+ /* Use the same values as defined by MSVC 10, for
+ interoperability. */
+# define EOWNERDEAD 133
+# define ENOTRECOVERABLE 127
+# endif
+# else
+# define EOWNERDEAD 2013
+# define ENOTRECOVERABLE 2014
+# endif
+# define GNULIB_defined_EOWNERDEAD 1
+# define GNULIB_defined_ENOTRECOVERABLE 1
+# endif
+
+# ifndef EILSEQ
+# define EILSEQ 2015
+# define GNULIB_defined_EILSEQ 1
+# endif
+
+#endif /* _@GUARD_PREFIX@_ERRNO_H */
+#endif /* _@GUARD_PREFIX@_ERRNO_H */
diff --git a/lib/error.c b/lib/error.c
new file mode 100644
index 0000000..3657b51
--- /dev/null
+++ b/lib/error.c
@@ -0,0 +1,411 @@
+/* Error handler for noninteractive utilities
+ Copyright (C) 1990-1998, 2000-2007, 2009-2020 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
+
+#if !_LIBC
+# include <config.h>
+#endif
+
+#include "error.h"
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#if !_LIBC && ENABLE_NLS
+# include "gettext.h"
+# define _(msgid) gettext (msgid)
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+# include <stdbool.h>
+# include <stdint.h>
+# include <wchar.h>
+# define mbsrtowcs __mbsrtowcs
+# define USE_UNLOCKED_IO 0
+# define _GL_ATTRIBUTE_FORMAT_PRINTF(a, b)
+# define _GL_ARG_NONNULL(a)
+#else
+# include "getprogname.h"
+#endif
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#ifndef _
+# define _(String) String
+#endif
+
+/* If NULL, error will flush stdout, then print on stderr the program
+ name, a colon and a space. Otherwise, error will call this
+ function without parameters instead. */
+void (*error_print_progname) (void);
+
+/* This variable is incremented each time 'error' is called. */
+unsigned int error_message_count;
+
+#ifdef _LIBC
+/* In the GNU C library, there is a predefined variable for this. */
+
+# define program_name program_invocation_name
+# include <errno.h>
+# include <limits.h>
+# include <libio/libioP.h>
+
+/* In GNU libc we want do not want to use the common name 'error' directly.
+ Instead make it a weak alias. */
+extern void __error (int status, int errnum, const char *message, ...)
+ __attribute__ ((__format__ (__printf__, 3, 4)));
+extern void __error_at_line (int status, int errnum, const char *file_name,
+ unsigned int line_number, const char *message,
+ ...)
+ __attribute__ ((__format__ (__printf__, 5, 6)));
+# define error __error
+# define error_at_line __error_at_line
+
+# include <libio/iolibio.h>
+# define fflush(s) _IO_fflush (s)
+# undef putc
+# define putc(c, fp) _IO_putc (c, fp)
+
+# include <bits/libc-lock.h>
+
+#else /* not _LIBC */
+
+# include <fcntl.h>
+# include <unistd.h>
+
+# if defined _WIN32 && ! defined __CYGWIN__
+/* Get declarations of the native Windows API functions. */
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+/* Get _get_osfhandle. */
+# if GNULIB_MSVC_NOTHROW
+# include "msvc-nothrow.h"
+# else
+# include <io.h>
+# endif
+# endif
+
+/* The gnulib override of fcntl is not needed in this file. */
+# undef fcntl
+
+# if !(GNULIB_STRERROR_R_POSIX || HAVE_DECL_STRERROR_R)
+# ifndef HAVE_DECL_STRERROR_R
+"this configure-time declaration test was not run"
+# endif
+# if STRERROR_R_CHAR_P
+char *strerror_r (int errnum, char *buf, size_t buflen);
+# else
+int strerror_r (int errnum, char *buf, size_t buflen);
+# endif
+# endif
+
+# define program_name getprogname ()
+
+# if GNULIB_STRERROR_R_POSIX || HAVE_STRERROR_R || defined strerror_r
+# define __strerror_r strerror_r
+# endif /* GNULIB_STRERROR_R_POSIX || HAVE_STRERROR_R || defined strerror_r */
+#endif /* not _LIBC */
+
+#if !_LIBC
+/* Return non-zero if FD is open. */
+static int
+is_open (int fd)
+{
+# if defined _WIN32 && ! defined __CYGWIN__
+ /* On native Windows: The initial state of unassigned standard file
+ descriptors is that they are open but point to an INVALID_HANDLE_VALUE.
+ There is no fcntl, and the gnulib replacement fcntl does not support
+ F_GETFL. */
+ return (HANDLE) _get_osfhandle (fd) != INVALID_HANDLE_VALUE;
+# else
+# ifndef F_GETFL
+# error Please port fcntl to your platform
+# endif
+ return 0 <= fcntl (fd, F_GETFL);
+# endif
+}
+#endif
+
+static void
+flush_stdout (void)
+{
+#if !_LIBC
+ int stdout_fd;
+
+# if GNULIB_FREOPEN_SAFER
+ /* Use of gnulib's freopen-safer module normally ensures that
+ fileno (stdout) == 1
+ whenever stdout is open. */
+ stdout_fd = STDOUT_FILENO;
+# else
+ /* POSIX states that fileno (stdout) after fclose is unspecified. But in
+ practice it is not a problem, because stdout is statically allocated and
+ the fd of a FILE stream is stored as a field in its allocated memory. */
+ stdout_fd = fileno (stdout);
+# endif
+ /* POSIX states that fflush (stdout) after fclose is unspecified; it
+ is safe in glibc, but not on all other platforms. fflush (NULL)
+ is always defined, but too draconian. */
+ if (0 <= stdout_fd && is_open (stdout_fd))
+#endif
+ fflush (stdout);
+}
+
+static void
+print_errno_message (int errnum)
+{
+ char const *s;
+
+#if _LIBC || GNULIB_STRERROR_R_POSIX || defined HAVE_STRERROR_R
+ char errbuf[1024];
+# if _LIBC || (!GNULIB_STRERROR_R_POSIX && STRERROR_R_CHAR_P)
+ s = __strerror_r (errnum, errbuf, sizeof errbuf);
+# else
+ if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0)
+ s = errbuf;
+ else
+ s = 0;
+# endif
+#else
+ s = strerror (errnum);
+#endif
+
+#if !_LIBC
+ if (! s)
+ s = _("Unknown system error");
+#endif
+
+#if _LIBC
+ __fxprintf (NULL, ": %s", s);
+#else
+ fprintf (stderr, ": %s", s);
+#endif
+}
+
+static void _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0) _GL_ARG_NONNULL ((3))
+error_tail (int status, int errnum, const char *message, va_list args)
+{
+#if _LIBC
+ if (_IO_fwide (stderr, 0) > 0)
+ {
+ size_t len = strlen (message) + 1;
+ wchar_t *wmessage = NULL;
+ mbstate_t st;
+ size_t res;
+ const char *tmp;
+ bool use_malloc = false;
+
+ while (1)
+ {
+ if (__libc_use_alloca (len * sizeof (wchar_t)))
+ wmessage = (wchar_t *) alloca (len * sizeof (wchar_t));
+ else
+ {
+ if (!use_malloc)
+ wmessage = NULL;
+
+ wchar_t *p = (wchar_t *) realloc (wmessage,
+ len * sizeof (wchar_t));
+ if (p == NULL)
+ {
+ free (wmessage);
+ fputws_unlocked (L"out of memory\n", stderr);
+ return;
+ }
+ wmessage = p;
+ use_malloc = true;
+ }
+
+ memset (&st, '\0', sizeof (st));
+ tmp = message;
+
+ res = mbsrtowcs (wmessage, &tmp, len, &st);
+ if (res != len)
+ break;
+
+ if (__builtin_expect (len >= SIZE_MAX / sizeof (wchar_t) / 2, 0))
+ {
+ /* This really should not happen if everything is fine. */
+ res = (size_t) -1;
+ break;
+ }
+
+ len *= 2;
+ }
+
+ if (res == (size_t) -1)
+ {
+ /* The string cannot be converted. */
+ if (use_malloc)
+ {
+ free (wmessage);
+ use_malloc = false;
+ }
+ wmessage = (wchar_t *) L"???";
+ }
+
+ __vfwprintf (stderr, wmessage, args);
+
+ if (use_malloc)
+ free (wmessage);
+ }
+ else
+#endif
+ vfprintf (stderr, message, args);
+
+ ++error_message_count;
+ if (errnum)
+ print_errno_message (errnum);
+#if _LIBC
+ __fxprintf (NULL, "\n");
+#else
+ putc ('\n', stderr);
+#endif
+ fflush (stderr);
+ if (status)
+ exit (status);
+}
+
+
+/* Print the program name and error message MESSAGE, which is a printf-style
+ format string with optional args.
+ If ERRNUM is nonzero, print its corresponding system error message.
+ Exit with status STATUS if it is nonzero. */
+void
+error (int status, int errnum, const char *message, ...)
+{
+ va_list args;
+
+#if defined _LIBC && defined __libc_ptf_call
+ /* We do not want this call to be cut short by a thread
+ cancellation. Therefore disable cancellation for now. */
+ int state = PTHREAD_CANCEL_ENABLE;
+ __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
+ 0);
+#endif
+
+ flush_stdout ();
+#ifdef _LIBC
+ _IO_flockfile (stderr);
+#endif
+ if (error_print_progname)
+ (*error_print_progname) ();
+ else
+ {
+#if _LIBC
+ __fxprintf (NULL, "%s: ", program_name);
+#else
+ fprintf (stderr, "%s: ", program_name);
+#endif
+ }
+
+ va_start (args, message);
+ error_tail (status, errnum, message, args);
+ va_end (args);
+
+#ifdef _LIBC
+ _IO_funlockfile (stderr);
+# ifdef __libc_ptf_call
+ __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
+# endif
+#endif
+}
+
+/* Sometimes we want to have at most one error per line. This
+ variable controls whether this mode is selected or not. */
+int error_one_per_line;
+
+void
+error_at_line (int status, int errnum, const char *file_name,
+ unsigned int line_number, const char *message, ...)
+{
+ va_list args;
+
+ if (error_one_per_line)
+ {
+ static const char *old_file_name;
+ static unsigned int old_line_number;
+
+ if (old_line_number == line_number
+ && (file_name == old_file_name
+ || (old_file_name != NULL
+ && file_name != NULL
+ && strcmp (old_file_name, file_name) == 0)))
+
+ /* Simply return and print nothing. */
+ return;
+
+ old_file_name = file_name;
+ old_line_number = line_number;
+ }
+
+#if defined _LIBC && defined __libc_ptf_call
+ /* We do not want this call to be cut short by a thread
+ cancellation. Therefore disable cancellation for now. */
+ int state = PTHREAD_CANCEL_ENABLE;
+ __libc_ptf_call (pthread_setcancelstate, (PTHREAD_CANCEL_DISABLE, &state),
+ 0);
+#endif
+
+ flush_stdout ();
+#ifdef _LIBC
+ _IO_flockfile (stderr);
+#endif
+ if (error_print_progname)
+ (*error_print_progname) ();
+ else
+ {
+#if _LIBC
+ __fxprintf (NULL, "%s:", program_name);
+#else
+ fprintf (stderr, "%s:", program_name);
+#endif
+ }
+
+#if _LIBC
+ __fxprintf (NULL, file_name != NULL ? "%s:%u: " : " ",
+ file_name, line_number);
+#else
+ fprintf (stderr, file_name != NULL ? "%s:%u: " : " ",
+ file_name, line_number);
+#endif
+
+ va_start (args, message);
+ error_tail (status, errnum, message, args);
+ va_end (args);
+
+#ifdef _LIBC
+ _IO_funlockfile (stderr);
+# ifdef __libc_ptf_call
+ __libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
+# endif
+#endif
+}
+
+#ifdef _LIBC
+/* Make the weak alias. */
+# undef error
+# undef error_at_line
+weak_alias (__error, error)
+weak_alias (__error_at_line, error_at_line)
+#endif
diff --git a/lib/error.h b/lib/error.h
new file mode 100644
index 0000000..bad47a1
--- /dev/null
+++ b/lib/error.h
@@ -0,0 +1,75 @@
+/* Declaration for error-reporting function
+ Copyright (C) 1995-1997, 2003, 2006, 2008-2020 Free Software Foundation,
+ Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _ERROR_H
+#define _ERROR_H 1
+
+/* The __attribute__ feature is available in gcc versions 2.5 and later.
+ The __-protected variants of the attributes 'format' and 'printf' are
+ accepted by gcc versions 2.6.4 (effectively 2.7) and later.
+ We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because
+ gnulib and libintl do '#define printf __printf__' when they override
+ the 'printf' function. */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
+#else
+# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
+#endif
+
+/* On mingw, the flavor of printf depends on whether the extensions module
+ * is in use; the check for <stdio.h> determines the witness macro. */
+#ifndef _GL_ATTRIBUTE_SPEC_PRINTF
+# if GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU
+# define _GL_ATTRIBUTE_SPEC_PRINTF __gnu_printf__
+# else
+# define _GL_ATTRIBUTE_SPEC_PRINTF __printf__
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Print a message with 'fprintf (stderr, FORMAT, ...)';
+ if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
+ If STATUS is nonzero, terminate the program with 'exit (STATUS)'. */
+
+extern void error (int __status, int __errnum, const char *__format, ...)
+ _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF, 3, 4));
+
+extern void error_at_line (int __status, int __errnum, const char *__fname,
+ unsigned int __lineno, const char *__format, ...)
+ _GL_ATTRIBUTE_FORMAT ((_GL_ATTRIBUTE_SPEC_PRINTF, 5, 6));
+
+/* If NULL, error will flush stdout, then print on stderr the program
+ name, a colon and a space. Otherwise, error will call this
+ function without parameters instead. */
+extern void (*error_print_progname) (void);
+
+/* This variable is incremented each time 'error' is called. */
+extern unsigned int error_message_count;
+
+/* Sometimes we want to have at most one error per line. This
+ variable controls whether this mode is selected or not. */
+extern int error_one_per_line;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* error.h */
diff --git a/lib/exitfail.c b/lib/exitfail.c
new file mode 100644
index 0000000..189fa16
--- /dev/null
+++ b/lib/exitfail.c
@@ -0,0 +1,24 @@
+/* Failure exit status
+
+ Copyright (C) 2002-2003, 2005-2007, 2009-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "exitfail.h"
+
+#include <stdlib.h>
+
+int volatile exit_failure = EXIT_FAILURE;
diff --git a/lib/exitfail.h b/lib/exitfail.h
new file mode 100644
index 0000000..a69a03b
--- /dev/null
+++ b/lib/exitfail.h
@@ -0,0 +1,18 @@
+/* Failure exit status
+
+ Copyright (C) 2002, 2009-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+extern int volatile exit_failure;
diff --git a/lib/fcntl.c b/lib/fcntl.c
new file mode 100644
index 0000000..6b9927e
--- /dev/null
+++ b/lib/fcntl.c
@@ -0,0 +1,627 @@
+/* Provide file descriptor control.
+
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* Written by Eric Blake <ebb9@byu.net>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <fcntl.h>
+
+#include <errno.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#ifdef __KLIBC__
+# define INCL_DOS
+# include <os2.h>
+#endif
+
+#if defined _WIN32 && ! defined __CYGWIN__
+/* Get declarations of the native Windows API functions. */
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+
+/* Get _get_osfhandle. */
+# if GNULIB_MSVC_NOTHROW
+# include "msvc-nothrow.h"
+# else
+# include <io.h>
+# endif
+
+/* Upper bound on getdtablesize(). See lib/getdtablesize.c. */
+# define OPEN_MAX_MAX 0x10000
+
+/* Duplicate OLDFD into the first available slot of at least NEWFD,
+ which must be positive, with FLAGS determining whether the duplicate
+ will be inheritable. */
+static int
+dupfd (int oldfd, int newfd, int flags)
+{
+ /* Mingw has no way to create an arbitrary fd. Iterate until all
+ file descriptors less than newfd are filled up. */
+ HANDLE curr_process = GetCurrentProcess ();
+ HANDLE old_handle = (HANDLE) _get_osfhandle (oldfd);
+ unsigned char fds_to_close[OPEN_MAX_MAX / CHAR_BIT];
+ unsigned int fds_to_close_bound = 0;
+ int result;
+ BOOL inherit = flags & O_CLOEXEC ? FALSE : TRUE;
+ int mode;
+
+ if (newfd < 0 || getdtablesize () <= newfd)
+ {
+ errno = EINVAL;
+ return -1;
+ }
+ if (old_handle == INVALID_HANDLE_VALUE
+ || (mode = setmode (oldfd, O_BINARY)) == -1)
+ {
+ /* oldfd is not open, or is an unassigned standard file
+ descriptor. */
+ errno = EBADF;
+ return -1;
+ }
+ setmode (oldfd, mode);
+ flags |= mode;
+
+ for (;;)
+ {
+ HANDLE new_handle;
+ int duplicated_fd;
+ unsigned int index;
+
+ if (!DuplicateHandle (curr_process, /* SourceProcessHandle */
+ old_handle, /* SourceHandle */
+ curr_process, /* TargetProcessHandle */
+ (PHANDLE) &new_handle, /* TargetHandle */
+ (DWORD) 0, /* DesiredAccess */
+ inherit, /* InheritHandle */
+ DUPLICATE_SAME_ACCESS)) /* Options */
+ {
+ switch (GetLastError ())
+ {
+ case ERROR_TOO_MANY_OPEN_FILES:
+ errno = EMFILE;
+ break;
+ case ERROR_INVALID_HANDLE:
+ case ERROR_INVALID_TARGET_HANDLE:
+ case ERROR_DIRECT_ACCESS_HANDLE:
+ errno = EBADF;
+ break;
+ case ERROR_INVALID_PARAMETER:
+ case ERROR_INVALID_FUNCTION:
+ case ERROR_INVALID_ACCESS:
+ errno = EINVAL;
+ break;
+ default:
+ errno = EACCES;
+ break;
+ }
+ result = -1;
+ break;
+ }
+ duplicated_fd = _open_osfhandle ((intptr_t) new_handle, flags);
+ if (duplicated_fd < 0)
+ {
+ CloseHandle (new_handle);
+ result = -1;
+ break;
+ }
+ if (newfd <= duplicated_fd)
+ {
+ result = duplicated_fd;
+ break;
+ }
+
+ /* Set the bit duplicated_fd in fds_to_close[]. */
+ index = (unsigned int) duplicated_fd / CHAR_BIT;
+ if (fds_to_close_bound <= index)
+ {
+ if (sizeof fds_to_close <= index)
+ /* Need to increase OPEN_MAX_MAX. */
+ abort ();
+ memset (fds_to_close + fds_to_close_bound, '\0',
+ index + 1 - fds_to_close_bound);
+ fds_to_close_bound = index + 1;
+ }
+ fds_to_close[index] |= 1 << ((unsigned int) duplicated_fd % CHAR_BIT);
+ }
+
+ /* Close the previous fds that turned out to be too small. */
+ {
+ int saved_errno = errno;
+ unsigned int duplicated_fd;
+
+ for (duplicated_fd = 0;
+ duplicated_fd < fds_to_close_bound * CHAR_BIT;
+ duplicated_fd++)
+ if ((fds_to_close[duplicated_fd / CHAR_BIT]
+ >> (duplicated_fd % CHAR_BIT))
+ & 1)
+ close (duplicated_fd);
+
+ errno = saved_errno;
+ }
+
+# if REPLACE_FCHDIR
+ if (0 <= result)
+ result = _gl_register_dup (oldfd, result);
+# endif
+ return result;
+}
+#endif /* W32 */
+
+/* Forward declarations, because we '#undef fcntl' in the middle of this
+ compilation unit. */
+/* Our implementation of fcntl (fd, F_DUPFD, target). */
+static int rpl_fcntl_DUPFD (int fd, int target);
+/* Our implementation of fcntl (fd, F_DUPFD_CLOEXEC, target). */
+static int rpl_fcntl_DUPFD_CLOEXEC (int fd, int target);
+#ifdef __KLIBC__
+/* Adds support for fcntl on directories. */
+static int klibc_fcntl (int fd, int action, /* arg */...);
+#endif
+
+
+/* Perform the specified ACTION on the file descriptor FD, possibly
+ using the argument ARG further described below. This replacement
+ handles the following actions, and forwards all others on to the
+ native fcntl. An unrecognized ACTION returns -1 with errno set to
+ EINVAL.
+
+ F_DUPFD - duplicate FD, with int ARG being the minimum target fd.
+ If successful, return the duplicate, which will be inheritable;
+ otherwise return -1 and set errno.
+
+ F_DUPFD_CLOEXEC - duplicate FD, with int ARG being the minimum
+ target fd. If successful, return the duplicate, which will not be
+ inheritable; otherwise return -1 and set errno.
+
+ F_GETFD - ARG need not be present. If successful, return a
+ non-negative value containing the descriptor flags of FD (only
+ FD_CLOEXEC is portable, but other flags may be present); otherwise
+ return -1 and set errno. */
+
+int
+fcntl (int fd, int action, /* arg */...)
+#undef fcntl
+#ifdef __KLIBC__
+# define fcntl klibc_fcntl
+#endif
+{
+ va_list arg;
+ int result = -1;
+ va_start (arg, action);
+ switch (action)
+ {
+ case F_DUPFD:
+ {
+ int target = va_arg (arg, int);
+ result = rpl_fcntl_DUPFD (fd, target);
+ break;
+ }
+
+ case F_DUPFD_CLOEXEC:
+ {
+ int target = va_arg (arg, int);
+ result = rpl_fcntl_DUPFD_CLOEXEC (fd, target);
+ break;
+ }
+
+#if !HAVE_FCNTL
+ case F_GETFD:
+ {
+# if defined _WIN32 && ! defined __CYGWIN__
+ HANDLE handle = (HANDLE) _get_osfhandle (fd);
+ DWORD flags;
+ if (handle == INVALID_HANDLE_VALUE
+ || GetHandleInformation (handle, &flags) == 0)
+ errno = EBADF;
+ else
+ result = (flags & HANDLE_FLAG_INHERIT) ? 0 : FD_CLOEXEC;
+# else /* !W32 */
+ /* Use dup2 to reject invalid file descriptors. No way to
+ access this information, so punt. */
+ if (0 <= dup2 (fd, fd))
+ result = 0;
+# endif /* !W32 */
+ break;
+ } /* F_GETFD */
+#endif /* !HAVE_FCNTL */
+
+ /* Implementing F_SETFD on mingw is not trivial - there is no
+ API for changing the O_NOINHERIT bit on an fd, and merely
+ changing the HANDLE_FLAG_INHERIT bit on the underlying handle
+ can lead to odd state. It may be possible by duplicating the
+ handle, using _open_osfhandle with the right flags, then
+ using dup2 to move the duplicate onto the original, but that
+ is not supported for now. */
+
+ default:
+ {
+#if HAVE_FCNTL
+ switch (action)
+ {
+ #ifdef F_BARRIERFSYNC /* macOS */
+ case F_BARRIERFSYNC:
+ #endif
+ #ifdef F_CHKCLEAN /* macOS */
+ case F_CHKCLEAN:
+ #endif
+ #ifdef F_CLOSEM /* NetBSD, HP-UX */
+ case F_CLOSEM:
+ #endif
+ #ifdef F_FLUSH_DATA /* macOS */
+ case F_FLUSH_DATA:
+ #endif
+ #ifdef F_FREEZE_FS /* macOS */
+ case F_FREEZE_FS:
+ #endif
+ #ifdef F_FULLFSYNC /* macOS */
+ case F_FULLFSYNC:
+ #endif
+ #ifdef F_GETCONFINED /* macOS */
+ case F_GETCONFINED:
+ #endif
+ #ifdef F_GETDEFAULTPROTLEVEL /* macOS */
+ case F_GETDEFAULTPROTLEVEL:
+ #endif
+ #ifdef F_GETFD /* POSIX */
+ case F_GETFD:
+ #endif
+ #ifdef F_GETFL /* POSIX */
+ case F_GETFL:
+ #endif
+ #ifdef F_GETLEASE /* Linux */
+ case F_GETLEASE:
+ #endif
+ #ifdef F_GETNOSIGPIPE /* macOS */
+ case F_GETNOSIGPIPE:
+ #endif
+ #ifdef F_GETOWN /* POSIX */
+ case F_GETOWN:
+ #endif
+ #ifdef F_GETPIPE_SZ /* Linux */
+ case F_GETPIPE_SZ:
+ #endif
+ #ifdef F_GETPROTECTIONCLASS /* macOS */
+ case F_GETPROTECTIONCLASS:
+ #endif
+ #ifdef F_GETPROTECTIONLEVEL /* macOS */
+ case F_GETPROTECTIONLEVEL:
+ #endif
+ #ifdef F_GET_SEALS /* Linux */
+ case F_GET_SEALS:
+ #endif
+ #ifdef F_GETSIG /* Linux */
+ case F_GETSIG:
+ #endif
+ #ifdef F_MAXFD /* NetBSD */
+ case F_MAXFD:
+ #endif
+ #ifdef F_RECYCLE /* macOS */
+ case F_RECYCLE:
+ #endif
+ #ifdef F_SETFIFOENH /* HP-UX */
+ case F_SETFIFOENH:
+ #endif
+ #ifdef F_THAW_FS /* macOS */
+ case F_THAW_FS:
+ #endif
+ /* These actions take no argument. */
+ result = fcntl (fd, action);
+ break;
+
+ #ifdef F_ADD_SEALS /* Linux */
+ case F_ADD_SEALS:
+ #endif
+ #ifdef F_BADFD /* Solaris */
+ case F_BADFD:
+ #endif
+ #ifdef F_CHECK_OPENEVT /* macOS */
+ case F_CHECK_OPENEVT:
+ #endif
+ #ifdef F_DUP2FD /* FreeBSD, AIX, Solaris */
+ case F_DUP2FD:
+ #endif
+ #ifdef F_DUP2FD_CLOEXEC /* FreeBSD, Solaris */
+ case F_DUP2FD_CLOEXEC:
+ #endif
+ #ifdef F_DUP2FD_CLOFORK /* Solaris */
+ case F_DUP2FD_CLOFORK:
+ #endif
+ #ifdef F_DUPFD /* POSIX */
+ case F_DUPFD:
+ #endif
+ #ifdef F_DUPFD_CLOEXEC /* POSIX */
+ case F_DUPFD_CLOEXEC:
+ #endif
+ #ifdef F_DUPFD_CLOFORK /* Solaris */
+ case F_DUPFD_CLOFORK:
+ #endif
+ #ifdef F_GETXFL /* Solaris */
+ case F_GETXFL:
+ #endif
+ #ifdef F_GLOBAL_NOCACHE /* macOS */
+ case F_GLOBAL_NOCACHE:
+ #endif
+ #ifdef F_MAKECOMPRESSED /* macOS */
+ case F_MAKECOMPRESSED:
+ #endif
+ #ifdef F_MOVEDATAEXTENTS /* macOS */
+ case F_MOVEDATAEXTENTS:
+ #endif
+ #ifdef F_NOCACHE /* macOS */
+ case F_NOCACHE:
+ #endif
+ #ifdef F_NODIRECT /* macOS */
+ case F_NODIRECT:
+ #endif
+ #ifdef F_NOTIFY /* Linux */
+ case F_NOTIFY:
+ #endif
+ #ifdef F_OPLKACK /* IRIX */
+ case F_OPLKACK:
+ #endif
+ #ifdef F_OPLKREG /* IRIX */
+ case F_OPLKREG:
+ #endif
+ #ifdef F_RDAHEAD /* macOS */
+ case F_RDAHEAD:
+ #endif
+ #ifdef F_SETBACKINGSTORE /* macOS */
+ case F_SETBACKINGSTORE:
+ #endif
+ #ifdef F_SETCONFINED /* macOS */
+ case F_SETCONFINED:
+ #endif
+ #ifdef F_SETFD /* POSIX */
+ case F_SETFD:
+ #endif
+ #ifdef F_SETFL /* POSIX */
+ case F_SETFL:
+ #endif
+ #ifdef F_SETLEASE /* Linux */
+ case F_SETLEASE:
+ #endif
+ #ifdef F_SETNOSIGPIPE /* macOS */
+ case F_SETNOSIGPIPE:
+ #endif
+ #ifdef F_SETOWN /* POSIX */
+ case F_SETOWN:
+ #endif
+ #ifdef F_SETPIPE_SZ /* Linux */
+ case F_SETPIPE_SZ:
+ #endif
+ #ifdef F_SETPROTECTIONCLASS /* macOS */
+ case F_SETPROTECTIONCLASS:
+ #endif
+ #ifdef F_SETSIG /* Linux */
+ case F_SETSIG:
+ #endif
+ #ifdef F_SINGLE_WRITER /* macOS */
+ case F_SINGLE_WRITER:
+ #endif
+ /* These actions take an 'int' argument. */
+ {
+ int x = va_arg (arg, int);
+ result = fcntl (fd, action, x);
+ }
+ break;
+
+ default:
+ /* Other actions take a pointer argument. */
+ {
+ void *p = va_arg (arg, void *);
+ result = fcntl (fd, action, p);
+ }
+ break;
+ }
+#else
+ errno = EINVAL;
+#endif
+ break;
+ }
+ }
+ va_end (arg);
+ return result;
+}
+
+static int
+rpl_fcntl_DUPFD (int fd, int target)
+{
+ int result;
+#if !HAVE_FCNTL
+ result = dupfd (fd, target, 0);
+#elif FCNTL_DUPFD_BUGGY || REPLACE_FCHDIR
+ /* Detect invalid target; needed for cygwin 1.5.x. */
+ if (target < 0 || getdtablesize () <= target)
+ {
+ result = -1;
+ errno = EINVAL;
+ }
+ else
+ {
+ /* Haiku alpha 2 loses fd flags on original. */
+ int flags = fcntl (fd, F_GETFD);
+ if (flags < 0)
+ result = -1;
+ else
+ {
+ result = fcntl (fd, F_DUPFD, target);
+ if (0 <= result && fcntl (fd, F_SETFD, flags) == -1)
+ {
+ int saved_errno = errno;
+ close (result);
+ result = -1;
+ errno = saved_errno;
+ }
+# if REPLACE_FCHDIR
+ if (0 <= result)
+ result = _gl_register_dup (fd, result);
+# endif
+ }
+ }
+#else
+ result = fcntl (fd, F_DUPFD, target);
+#endif
+ return result;
+}
+
+static int
+rpl_fcntl_DUPFD_CLOEXEC (int fd, int target)
+{
+ int result;
+#if !HAVE_FCNTL
+ result = dupfd (fd, target, O_CLOEXEC);
+#else /* HAVE_FCNTL */
+# if defined __HAIKU__
+ /* On Haiku, the system fcntl (fd, F_DUPFD_CLOEXEC, target) sets
+ the FD_CLOEXEC flag on fd, not on target. Therefore avoid the
+ system fcntl in this case. */
+# define have_dupfd_cloexec -1
+# else
+ /* Try the system call first, if the headers claim it exists
+ (that is, if GNULIB_defined_F_DUPFD_CLOEXEC is 0), since we
+ may be running with a glibc that has the macro but with an
+ older kernel that does not support it. Cache the
+ information on whether the system call really works, but
+ avoid caching failure if the corresponding F_DUPFD fails
+ for any reason. 0 = unknown, 1 = yes, -1 = no. */
+ static int have_dupfd_cloexec = GNULIB_defined_F_DUPFD_CLOEXEC ? -1 : 0;
+ if (0 <= have_dupfd_cloexec)
+ {
+ result = fcntl (fd, F_DUPFD_CLOEXEC, target);
+ if (0 <= result || errno != EINVAL)
+ {
+ have_dupfd_cloexec = 1;
+# if REPLACE_FCHDIR
+ if (0 <= result)
+ result = _gl_register_dup (fd, result);
+# endif
+ }
+ else
+ {
+ result = rpl_fcntl_DUPFD (fd, target);
+ if (result >= 0)
+ have_dupfd_cloexec = -1;
+ }
+ }
+ else
+# endif
+ result = rpl_fcntl_DUPFD (fd, target);
+ if (0 <= result && have_dupfd_cloexec == -1)
+ {
+ int flags = fcntl (result, F_GETFD);
+ if (flags < 0 || fcntl (result, F_SETFD, flags | FD_CLOEXEC) == -1)
+ {
+ int saved_errno = errno;
+ close (result);
+ errno = saved_errno;
+ result = -1;
+ }
+ }
+#endif /* HAVE_FCNTL */
+ return result;
+}
+
+#undef fcntl
+
+#ifdef __KLIBC__
+
+static int
+klibc_fcntl (int fd, int action, /* arg */...)
+{
+ va_list arg_ptr;
+ int arg;
+ struct stat sbuf;
+ int result;
+
+ va_start (arg_ptr, action);
+ arg = va_arg (arg_ptr, int);
+ result = fcntl (fd, action, arg);
+ /* EPERM for F_DUPFD, ENOTSUP for others */
+ if (result == -1 && (errno == EPERM || errno == ENOTSUP)
+ && !fstat (fd, &sbuf) && S_ISDIR (sbuf.st_mode))
+ {
+ ULONG ulMode;
+
+ switch (action)
+ {
+ case F_DUPFD:
+ /* Find available fd */
+ while (fcntl (arg, F_GETFL) != -1 || errno != EBADF)
+ arg++;
+
+ result = dup2 (fd, arg);
+ break;
+
+ /* Using underlying APIs is right ? */
+ case F_GETFD:
+ if (DosQueryFHState (fd, &ulMode))
+ break;
+
+ result = (ulMode & OPEN_FLAGS_NOINHERIT) ? FD_CLOEXEC : 0;
+ break;
+
+ case F_SETFD:
+ if (arg & ~FD_CLOEXEC)
+ break;
+
+ if (DosQueryFHState (fd, &ulMode))
+ break;
+
+ if (arg & FD_CLOEXEC)
+ ulMode |= OPEN_FLAGS_NOINHERIT;
+ else
+ ulMode &= ~OPEN_FLAGS_NOINHERIT;
+
+ /* Filter supported flags. */
+ ulMode &= (OPEN_FLAGS_WRITE_THROUGH | OPEN_FLAGS_FAIL_ON_ERROR
+ | OPEN_FLAGS_NO_CACHE | OPEN_FLAGS_NOINHERIT);
+
+ if (DosSetFHState (fd, ulMode))
+ break;
+
+ result = 0;
+ break;
+
+ case F_GETFL:
+ result = 0;
+ break;
+
+ case F_SETFL:
+ if (arg != 0)
+ break;
+
+ result = 0;
+ break;
+
+ default:
+ errno = EINVAL;
+ break;
+ }
+ }
+
+ va_end (arg_ptr);
+
+ return result;
+}
+
+#endif
diff --git a/lib/fcntl.in.h b/lib/fcntl.in.h
new file mode 100644
index 0000000..b2e1e51
--- /dev/null
+++ b/lib/fcntl.in.h
@@ -0,0 +1,392 @@
+/* Like <fcntl.h>, but with non-working flags defined to 0.
+
+ Copyright (C) 2006-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* written by Paul Eggert */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if defined __need_system_fcntl_h
+/* Special invocation convention. */
+
+/* Needed before <sys/stat.h>.
+ May also define off_t to a 64-bit type on native Windows. */
+#include <sys/types.h>
+/* On some systems other than glibc, <sys/stat.h> is a prerequisite of
+ <fcntl.h>. On glibc systems, we would like to avoid namespace pollution.
+ But on glibc systems, <fcntl.h> includes <sys/stat.h> inside an
+ extern "C" { ... } block, which leads to errors in C++ mode with the
+ overridden <sys/stat.h> from gnulib. These errors are known to be gone
+ with g++ version >= 4.3. */
+#if !(defined __GLIBC__ || defined __UCLIBC__) || (defined __cplusplus && defined GNULIB_NAMESPACE && (defined __ICC || !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))))
+# include <sys/stat.h>
+#endif
+#@INCLUDE_NEXT@ @NEXT_FCNTL_H@
+
+/* Native Windows platforms declare open(), creat() in <io.h>. */
+#if (@GNULIB_CREAT@ || @GNULIB_OPEN@ || defined GNULIB_POSIXCHECK) \
+ && (defined _WIN32 && ! defined __CYGWIN__)
+# include <io.h>
+#endif
+
+#else
+/* Normal invocation convention. */
+
+#ifndef _@GUARD_PREFIX@_FCNTL_H
+
+/* Needed before <sys/stat.h>.
+ May also define off_t to a 64-bit type on native Windows. */
+#include <sys/types.h>
+/* On some systems other than glibc, <sys/stat.h> is a prerequisite of
+ <fcntl.h>. On glibc systems, we would like to avoid namespace pollution.
+ But on glibc systems, <fcntl.h> includes <sys/stat.h> inside an
+ extern "C" { ... } block, which leads to errors in C++ mode with the
+ overridden <sys/stat.h> from gnulib. These errors are known to be gone
+ with g++ version >= 4.3. */
+#if !(defined __GLIBC__ || defined __UCLIBC__) || (defined __cplusplus && defined GNULIB_NAMESPACE && (defined __ICC || !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))))
+# include <sys/stat.h>
+#endif
+/* The include_next requires a split double-inclusion guard. */
+#@INCLUDE_NEXT@ @NEXT_FCNTL_H@
+
+/* Native Windows platforms declare open(), creat() in <io.h>. */
+#if (@GNULIB_CREAT@ || @GNULIB_OPEN@ || defined GNULIB_POSIXCHECK) \
+ && (defined _WIN32 && ! defined __CYGWIN__)
+# include <io.h>
+#endif
+
+#ifndef _@GUARD_PREFIX@_FCNTL_H
+#define _@GUARD_PREFIX@_FCNTL_H
+
+#ifndef __GLIBC__ /* Avoid namespace pollution on glibc systems. */
+# include <unistd.h>
+#endif
+
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
+
+/* The definition of _GL_ARG_NONNULL is copied here. */
+
+/* The definition of _GL_WARN_ON_USE is copied here. */
+
+
+/* Declare overridden functions. */
+
+#if @GNULIB_CREAT@
+# if @REPLACE_CREAT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef creat
+# define creat rpl_creat
+# endif
+_GL_FUNCDECL_RPL (creat, int, (const char *filename, mode_t mode)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (creat, int, (const char *filename, mode_t mode));
+# else
+_GL_CXXALIAS_SYS (creat, int, (const char *filename, mode_t mode));
+# endif
+_GL_CXXALIASWARN (creat);
+#elif defined GNULIB_POSIXCHECK
+# undef creat
+/* Assume creat is always declared. */
+_GL_WARN_ON_USE (creat, "creat is not always POSIX compliant - "
+ "use gnulib module creat for portability");
+#endif
+
+#if @GNULIB_FCNTL@
+# if @REPLACE_FCNTL@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fcntl
+# define fcntl rpl_fcntl
+# endif
+_GL_FUNCDECL_RPL (fcntl, int, (int fd, int action, ...));
+_GL_CXXALIAS_RPL (fcntl, int, (int fd, int action, ...));
+# else
+# if !@HAVE_FCNTL@
+_GL_FUNCDECL_SYS (fcntl, int, (int fd, int action, ...));
+# endif
+_GL_CXXALIAS_SYS (fcntl, int, (int fd, int action, ...));
+# endif
+_GL_CXXALIASWARN (fcntl);
+#elif defined GNULIB_POSIXCHECK
+# undef fcntl
+# if HAVE_RAW_DECL_FCNTL
+_GL_WARN_ON_USE (fcntl, "fcntl is not always POSIX compliant - "
+ "use gnulib module fcntl for portability");
+# endif
+#endif
+
+#if @GNULIB_OPEN@
+# if @REPLACE_OPEN@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef open
+# define open rpl_open
+# endif
+_GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
+# else
+_GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
+# endif
+/* On HP-UX 11, in C++ mode, open() is defined as an inline function with a
+ default argument. _GL_CXXALIASWARN does not work in this case. */
+# if !defined __hpux
+_GL_CXXALIASWARN (open);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef open
+/* Assume open is always declared. */
+_GL_WARN_ON_USE (open, "open is not always POSIX compliant - "
+ "use gnulib module open for portability");
+#endif
+
+#if @GNULIB_OPENAT@
+# if @REPLACE_OPENAT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef openat
+# define openat rpl_openat
+# endif
+_GL_FUNCDECL_RPL (openat, int,
+ (int fd, char const *file, int flags, /* mode_t mode */ ...)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (openat, int,
+ (int fd, char const *file, int flags, /* mode_t mode */ ...));
+# else
+# if !@HAVE_OPENAT@
+_GL_FUNCDECL_SYS (openat, int,
+ (int fd, char const *file, int flags, /* mode_t mode */ ...)
+ _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (openat, int,
+ (int fd, char const *file, int flags, /* mode_t mode */ ...));
+# endif
+_GL_CXXALIASWARN (openat);
+#elif defined GNULIB_POSIXCHECK
+# undef openat
+# if HAVE_RAW_DECL_OPENAT
+_GL_WARN_ON_USE (openat, "openat is not portable - "
+ "use gnulib module openat for portability");
+# endif
+#endif
+
+
+/* Fix up the FD_* macros, only known to be missing on mingw. */
+
+#ifndef FD_CLOEXEC
+# define FD_CLOEXEC 1
+#endif
+
+/* Fix up the supported F_* macros. Intentionally leave other F_*
+ macros undefined. Only known to be missing on mingw. */
+
+#ifndef F_DUPFD_CLOEXEC
+# define F_DUPFD_CLOEXEC 0x40000000
+/* Witness variable: 1 if gnulib defined F_DUPFD_CLOEXEC, 0 otherwise. */
+# define GNULIB_defined_F_DUPFD_CLOEXEC 1
+#else
+# define GNULIB_defined_F_DUPFD_CLOEXEC 0
+#endif
+
+#ifndef F_DUPFD
+# define F_DUPFD 1
+#endif
+
+#ifndef F_GETFD
+# define F_GETFD 2
+#endif
+
+/* Fix up the O_* macros. */
+
+/* AIX 7.1 with XL C 12.1 defines O_CLOEXEC, O_NOFOLLOW, and O_TTY_INIT
+ to values outside 'int' range, so omit these misdefinitions.
+ But avoid namespace pollution on non-AIX systems. */
+#ifdef _AIX
+# include <limits.h>
+# if defined O_CLOEXEC && ! (INT_MIN <= O_CLOEXEC && O_CLOEXEC <= INT_MAX)
+# undef O_CLOEXEC
+# endif
+# if defined O_NOFOLLOW && ! (INT_MIN <= O_NOFOLLOW && O_NOFOLLOW <= INT_MAX)
+# undef O_NOFOLLOW
+# endif
+# if defined O_TTY_INIT && ! (INT_MIN <= O_TTY_INIT && O_TTY_INIT <= INT_MAX)
+# undef O_TTY_INIT
+# endif
+#endif
+
+#if !defined O_DIRECT && defined O_DIRECTIO
+/* Tru64 spells it 'O_DIRECTIO'. */
+# define O_DIRECT O_DIRECTIO
+#endif
+
+#if !defined O_CLOEXEC && defined O_NOINHERIT
+/* Mingw spells it 'O_NOINHERIT'. */
+# define O_CLOEXEC O_NOINHERIT
+#endif
+
+#ifndef O_CLOEXEC
+# define O_CLOEXEC 0x40000000 /* Try to not collide with system O_* flags. */
+# define GNULIB_defined_O_CLOEXEC 1
+#else
+# define GNULIB_defined_O_CLOEXEC 0
+#endif
+
+#ifndef O_DIRECT
+# define O_DIRECT 0
+#endif
+
+#ifndef O_DIRECTORY
+# define O_DIRECTORY 0
+#endif
+
+#ifndef O_DSYNC
+# define O_DSYNC 0
+#endif
+
+#ifndef O_EXEC
+# define O_EXEC O_RDONLY /* This is often close enough in older systems. */
+#endif
+
+#ifndef O_IGNORE_CTTY
+# define O_IGNORE_CTTY 0
+#endif
+
+#ifndef O_NDELAY
+# define O_NDELAY 0
+#endif
+
+#ifndef O_NOATIME
+# define O_NOATIME 0
+#endif
+
+#ifndef O_NONBLOCK
+# define O_NONBLOCK O_NDELAY
+#endif
+
+/* If the gnulib module 'nonblocking' is in use, guarantee a working non-zero
+ value of O_NONBLOCK. Otherwise, O_NONBLOCK is defined (above) to O_NDELAY
+ or to 0 as fallback. */
+#if @GNULIB_NONBLOCKING@
+# if O_NONBLOCK
+# define GNULIB_defined_O_NONBLOCK 0
+# else
+# define GNULIB_defined_O_NONBLOCK 1
+# undef O_NONBLOCK
+# define O_NONBLOCK 0x40000000
+# endif
+#endif
+
+#ifndef O_NOCTTY
+# define O_NOCTTY 0
+#endif
+
+#ifndef O_NOFOLLOW
+# define O_NOFOLLOW 0
+#endif
+
+#ifndef O_NOLINK
+# define O_NOLINK 0
+#endif
+
+#ifndef O_NOLINKS
+# define O_NOLINKS 0
+#endif
+
+#ifndef O_NOTRANS
+# define O_NOTRANS 0
+#endif
+
+#ifndef O_RSYNC
+# define O_RSYNC 0
+#endif
+
+#ifndef O_SEARCH
+# define O_SEARCH O_RDONLY /* This is often close enough in older systems. */
+#endif
+
+#ifndef O_SYNC
+# define O_SYNC 0
+#endif
+
+#ifndef O_TTY_INIT
+# define O_TTY_INIT 0
+#endif
+
+#if ~O_ACCMODE & (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH)
+# undef O_ACCMODE
+# define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH)
+#endif
+
+/* For systems that distinguish between text and binary I/O.
+ O_BINARY is usually declared in fcntl.h */
+#if !defined O_BINARY && defined _O_BINARY
+ /* For MSC-compatible compilers. */
+# define O_BINARY _O_BINARY
+# define O_TEXT _O_TEXT
+#endif
+
+#if defined __BEOS__ || defined __HAIKU__
+ /* BeOS 5 and Haiku have O_BINARY and O_TEXT, but they have no effect. */
+# undef O_BINARY
+# undef O_TEXT
+#endif
+
+#ifndef O_BINARY
+# define O_BINARY 0
+# define O_TEXT 0
+#endif
+
+/* Fix up the AT_* macros. */
+
+/* Work around a bug in Solaris 9 and 10: AT_FDCWD is positive. Its
+ value exceeds INT_MAX, so its use as an int doesn't conform to the
+ C standard, and GCC and Sun C complain in some cases. If the bug
+ is present, undef AT_FDCWD here, so it can be redefined below. */
+#if 0 < AT_FDCWD && AT_FDCWD == 0xffd19553
+# undef AT_FDCWD
+#endif
+
+/* Use the same bit pattern as Solaris 9, but with the proper
+ signedness. The bit pattern is important, in case this actually is
+ Solaris with the above workaround. */
+#ifndef AT_FDCWD
+# define AT_FDCWD (-3041965)
+#endif
+
+/* Use the same values as Solaris 9. This shouldn't matter, but
+ there's no real reason to differ. */
+#ifndef AT_SYMLINK_NOFOLLOW
+# define AT_SYMLINK_NOFOLLOW 4096
+#endif
+
+#ifndef AT_REMOVEDIR
+# define AT_REMOVEDIR 1
+#endif
+
+/* Solaris 9 lacks these two, so just pick unique values. */
+#ifndef AT_SYMLINK_FOLLOW
+# define AT_SYMLINK_FOLLOW 2
+#endif
+
+#ifndef AT_EACCESS
+# define AT_EACCESS 4
+#endif
+
+
+#endif /* _@GUARD_PREFIX@_FCNTL_H */
+#endif /* _@GUARD_PREFIX@_FCNTL_H */
+#endif
diff --git a/lib/fd-hook.c b/lib/fd-hook.c
new file mode 100644
index 0000000..8840f63
--- /dev/null
+++ b/lib/fd-hook.c
@@ -0,0 +1,116 @@
+/* Hook for making file descriptor functions close(), ioctl() extensible.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2009.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "fd-hook.h"
+
+#include <stdlib.h>
+
+/* Currently, this entire code is only needed for the handling of sockets
+ on native Windows platforms. */
+#if WINDOWS_SOCKETS
+
+/* The first and last link in the doubly linked list.
+ Initially the list is empty. */
+static struct fd_hook anchor = { &anchor, &anchor, NULL, NULL };
+
+int
+execute_close_hooks (const struct fd_hook *remaining_list, gl_close_fn primary,
+ int fd)
+{
+ if (remaining_list == &anchor)
+ /* End of list reached. */
+ return primary (fd);
+ else
+ return remaining_list->private_close_fn (remaining_list->private_next,
+ primary, fd);
+}
+
+int
+execute_all_close_hooks (gl_close_fn primary, int fd)
+{
+ return execute_close_hooks (anchor.private_next, primary, fd);
+}
+
+int
+execute_ioctl_hooks (const struct fd_hook *remaining_list, gl_ioctl_fn primary,
+ int fd, int request, void *arg)
+{
+ if (remaining_list == &anchor)
+ /* End of list reached. */
+ return primary (fd, request, arg);
+ else
+ return remaining_list->private_ioctl_fn (remaining_list->private_next,
+ primary, fd, request, arg);
+}
+
+int
+execute_all_ioctl_hooks (gl_ioctl_fn primary,
+ int fd, int request, void *arg)
+{
+ return execute_ioctl_hooks (anchor.private_next, primary, fd, request, arg);
+}
+
+void
+register_fd_hook (close_hook_fn close_hook, ioctl_hook_fn ioctl_hook, struct fd_hook *link)
+{
+ if (close_hook == NULL)
+ close_hook = execute_close_hooks;
+ if (ioctl_hook == NULL)
+ ioctl_hook = execute_ioctl_hooks;
+
+ if (link->private_next == NULL && link->private_prev == NULL)
+ {
+ /* Add the link to the doubly linked list. */
+ link->private_next = anchor.private_next;
+ link->private_prev = &anchor;
+ link->private_close_fn = close_hook;
+ link->private_ioctl_fn = ioctl_hook;
+ anchor.private_next->private_prev = link;
+ anchor.private_next = link;
+ }
+ else
+ {
+ /* The link is already in use. */
+ if (link->private_close_fn != close_hook
+ || link->private_ioctl_fn != ioctl_hook)
+ abort ();
+ }
+}
+
+void
+unregister_fd_hook (struct fd_hook *link)
+{
+ struct fd_hook *next = link->private_next;
+ struct fd_hook *prev = link->private_prev;
+
+ if (next != NULL && prev != NULL)
+ {
+ /* The link is in use. Remove it from the doubly linked list. */
+ prev->private_next = next;
+ next->private_prev = prev;
+ /* Clear the link, to mark it unused. */
+ link->private_next = NULL;
+ link->private_prev = NULL;
+ link->private_close_fn = NULL;
+ link->private_ioctl_fn = NULL;
+ }
+}
+
+#endif
diff --git a/lib/fd-hook.h b/lib/fd-hook.h
new file mode 100644
index 0000000..ed1a15a
--- /dev/null
+++ b/lib/fd-hook.h
@@ -0,0 +1,119 @@
+/* Hook for making file descriptor functions close(), ioctl() extensible.
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+
+#ifndef FD_HOOK_H
+#define FD_HOOK_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Currently, this entire code is only needed for the handling of sockets
+ on native Windows platforms. */
+#if WINDOWS_SOCKETS
+
+
+/* Type of function that closes FD. */
+typedef int (*gl_close_fn) (int fd);
+
+/* Type of function that applies a control request to FD. */
+typedef int (*gl_ioctl_fn) (int fd, int request, void *arg);
+
+/* An element of the list of file descriptor hooks.
+ In CLOS (Common Lisp Object System) speak, it consists of an "around"
+ method for the close() function and an "around" method for the ioctl()
+ function.
+ The fields of this structure are considered private. */
+struct fd_hook
+{
+ /* Doubly linked list. */
+ struct fd_hook *private_next;
+ struct fd_hook *private_prev;
+ /* Function that treats the types of FD that it knows about and calls
+ execute_close_hooks (REMAINING_LIST, PRIMARY, FD) as a fallback. */
+ int (*private_close_fn) (const struct fd_hook *remaining_list,
+ gl_close_fn primary,
+ int fd);
+ /* Function that treats the types of FD that it knows about and calls
+ execute_ioctl_hooks (REMAINING_LIST, PRIMARY, FD, REQUEST, ARG) as a
+ fallback. */
+ int (*private_ioctl_fn) (const struct fd_hook *remaining_list,
+ gl_ioctl_fn primary,
+ int fd, int request, void *arg);
+};
+
+/* This type of function closes FD, applying special knowledge for the FD
+ types it knows about, and calls
+ execute_close_hooks (REMAINING_LIST, PRIMARY, FD)
+ for the other FD types.
+ In CLOS speak, REMAINING_LIST is the remaining list of "around" methods,
+ and PRIMARY is the "primary" method for close(). */
+typedef int (*close_hook_fn) (const struct fd_hook *remaining_list,
+ gl_close_fn primary,
+ int fd);
+
+/* Execute the close hooks in REMAINING_LIST, with PRIMARY as "primary" method.
+ Return 0 or -1, like close() would do. */
+extern int execute_close_hooks (const struct fd_hook *remaining_list,
+ gl_close_fn primary,
+ int fd);
+
+/* Execute all close hooks, with PRIMARY as "primary" method.
+ Return 0 or -1, like close() would do. */
+extern int execute_all_close_hooks (gl_close_fn primary, int fd);
+
+/* This type of function applies a control request to FD, applying special
+ knowledge for the FD types it knows about, and calls
+ execute_ioctl_hooks (REMAINING_LIST, PRIMARY, FD, REQUEST, ARG)
+ for the other FD types.
+ In CLOS speak, REMAINING_LIST is the remaining list of "around" methods,
+ and PRIMARY is the "primary" method for ioctl(). */
+typedef int (*ioctl_hook_fn) (const struct fd_hook *remaining_list,
+ gl_ioctl_fn primary,
+ int fd, int request, void *arg);
+
+/* Execute the ioctl hooks in REMAINING_LIST, with PRIMARY as "primary" method.
+ Return 0 or -1, like ioctl() would do. */
+extern int execute_ioctl_hooks (const struct fd_hook *remaining_list,
+ gl_ioctl_fn primary,
+ int fd, int request, void *arg);
+
+/* Execute all ioctl hooks, with PRIMARY as "primary" method.
+ Return 0 or -1, like ioctl() would do. */
+extern int execute_all_ioctl_hooks (gl_ioctl_fn primary,
+ int fd, int request, void *arg);
+
+/* Add a function pair to the list of file descriptor hooks.
+ CLOSE_HOOK and IOCTL_HOOK may be NULL, indicating no change.
+ The LINK variable points to a piece of memory which is guaranteed to be
+ accessible until the corresponding call to unregister_fd_hook. */
+extern void register_fd_hook (close_hook_fn close_hook, ioctl_hook_fn ioctl_hook,
+ struct fd_hook *link);
+
+/* Removes a hook from the list of file descriptor hooks. */
+extern void unregister_fd_hook (struct fd_hook *link);
+
+
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* FD_HOOK_H */
diff --git a/lib/filename.h b/lib/filename.h
new file mode 100644
index 0000000..d4c7020
--- /dev/null
+++ b/lib/filename.h
@@ -0,0 +1,54 @@
+/* Basic filename support macros.
+ Copyright (C) 2001-2004, 2007-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _FILENAME_H
+#define _FILENAME_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Pathname support.
+ ISSLASH(C) tests whether C is a directory separator character.
+ IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not,
+ it may be concatenated to a directory pathname.
+ IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
+ */
+#if defined _WIN32 || defined __CYGWIN__ || defined __EMX__ || defined __DJGPP__
+ /* Native Windows, Cygwin, OS/2, DOS */
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+# define HAS_DEVICE(P) \
+ ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
+ && (P)[1] == ':')
+# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P))
+# define IS_PATH_WITH_DIR(P) \
+ (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P))
+# define FILE_SYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0)
+#else
+ /* Unix */
+# define ISSLASH(C) ((C) == '/')
+# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0])
+# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL)
+# define FILE_SYSTEM_PREFIX_LEN(P) 0
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FILENAME_H */
diff --git a/lib/findprog-in.c b/lib/findprog-in.c
new file mode 100644
index 0000000..c254f2f
--- /dev/null
+++ b/lib/findprog-in.c
@@ -0,0 +1,251 @@
+/* Locating a program in a given path.
+ Copyright (C) 2001-2004, 2006-2020 Free Software Foundation, Inc.
+ Written by Bruno Haible <haible@clisp.cons.org>, 2001, 2019.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+
+#include <config.h>
+
+/* Specification. */
+#include "findprog.h"
+
+#include <errno.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "filename.h"
+#include "concat-filename.h"
+#include "xalloc.h"
+
+#if (defined _WIN32 && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__
+ /* Native Windows, OS/2, DOS */
+# define NATIVE_SLASH '\\'
+#else
+ /* Unix */
+# define NATIVE_SLASH '/'
+#endif
+
+/* Separator in PATH like lists of pathnames. */
+#if (defined _WIN32 && !defined __CYGWIN__) || defined __EMX__ || defined __DJGPP__
+ /* Native Windows, OS/2, DOS */
+# define PATH_SEPARATOR ';'
+#else
+ /* Unix */
+# define PATH_SEPARATOR ':'
+#endif
+
+/* The list of suffixes that the execlp/execvp function tries when searching
+ for the program. */
+static const char * const suffixes[] =
+ {
+ #if defined _WIN32 && !defined __CYGWIN__ /* Native Windows */
+ "", ".com", ".exe", ".bat", ".cmd"
+ /* Note: Files without any suffix are not considered executable. */
+ /* Note: The cmd.exe program does a different lookup: It searches according
+ to the PATHEXT environment variable.
+ See <https://stackoverflow.com/questions/7839150/>.
+ Also, it executes files ending .bat and .cmd directly without letting the
+ kernel interpret the program file. */
+ #elif defined __CYGWIN__
+ "", ".exe", ".com"
+ #elif defined __EMX__
+ "", ".exe"
+ #elif defined __DJGPP__
+ "", ".com", ".exe", ".bat"
+ #else /* Unix */
+ ""
+ #endif
+ };
+
+const char *
+find_in_given_path (const char *progname, const char *path,
+ bool optimize_for_exec)
+{
+ {
+ bool has_slash = false;
+ {
+ const char *p;
+
+ for (p = progname; *p != '\0'; p++)
+ if (ISSLASH (*p))
+ {
+ has_slash = true;
+ break;
+ }
+ }
+ if (has_slash)
+ {
+ /* If progname contains a slash, it is either absolute or relative to
+ the current directory. PATH is not used. */
+ if (optimize_for_exec)
+ /* The execl/execv/execlp/execvp functions will try the various
+ suffixes anyway and fail if no executable is found. */
+ return progname;
+ else
+ {
+ /* Try the various suffixes and see whether one of the files
+ with such a suffix is actually executable. */
+ int failure_errno;
+ size_t i;
+ #if defined _WIN32 && !defined __CYGWIN__ /* Native Windows */
+ const char *progbasename;
+
+ {
+ const char *p;
+
+ progbasename = progname;
+ for (p = progname; *p != '\0'; p++)
+ if (ISSLASH (*p))
+ progbasename = p + 1;
+ }
+ #endif
+
+ /* Try all platform-dependent suffixes. */
+ failure_errno = ENOENT;
+ for (i = 0; i < sizeof (suffixes) / sizeof (suffixes[0]); i++)
+ {
+ const char *suffix = suffixes[i];
+
+ #if defined _WIN32 && !defined __CYGWIN__ /* Native Windows */
+ /* File names without a '.' are not considered executable, and
+ for file names with a '.' no additional suffix is tried. */
+ if ((*suffix != '\0') != (strchr (progbasename, '.') != NULL))
+ #endif
+ {
+ /* Concatenate progname and suffix. */
+ char *progpathname =
+ xconcatenated_filename ("", progname, suffix);
+
+ /* On systems which have the eaccess() system call, let's
+ use it. On other systems, let's hope that this program
+ is not installed setuid or setgid, so that it is ok to
+ call access() despite its design flaw. */
+ if (eaccess (progpathname, X_OK) == 0)
+ {
+ /* Found! */
+ if (strcmp (progpathname, progname) == 0)
+ {
+ free (progpathname);
+ return progname;
+ }
+ else
+ return progpathname;
+ }
+
+ if (errno != ENOENT)
+ failure_errno = errno;
+
+ free (progpathname);
+ }
+ }
+
+ errno = failure_errno;
+ return NULL;
+ }
+ }
+ }
+
+ if (path == NULL)
+ /* If PATH is not set, the default search path is implementation dependent.
+ In practice, it is treated like an empty PATH. */
+ path = "";
+
+ {
+ int failure_errno;
+ /* Make a copy, to prepare for destructive modifications. */
+ char *path_copy = xstrdup (path);
+ char *path_rest;
+ char *cp;
+
+ failure_errno = ENOENT;
+ for (path_rest = path_copy; ; path_rest = cp + 1)
+ {
+ const char *dir;
+ bool last;
+ size_t i;
+
+ /* Extract next directory in PATH. */
+ dir = path_rest;
+ for (cp = path_rest; *cp != '\0' && *cp != PATH_SEPARATOR; cp++)
+ ;
+ last = (*cp == '\0');
+ *cp = '\0';
+
+ /* Empty PATH components designate the current directory. */
+ if (dir == cp)
+ dir = ".";
+
+ /* Try all platform-dependent suffixes. */
+ for (i = 0; i < sizeof (suffixes) / sizeof (suffixes[0]); i++)
+ {
+ const char *suffix = suffixes[i];
+
+ #if defined _WIN32 && !defined __CYGWIN__ /* Native Windows */
+ /* File names without a '.' are not considered executable, and
+ for file names with a '.' no additional suffix is tried. */
+ if ((*suffix != '\0') != (strchr (progname, '.') != NULL))
+ #endif
+ {
+ /* Concatenate dir, progname, and suffix. */
+ char *progpathname =
+ xconcatenated_filename (dir, progname, suffix);
+
+ /* On systems which have the eaccess() system call, let's
+ use it. On other systems, let's hope that this program
+ is not installed setuid or setgid, so that it is ok to
+ call access() despite its design flaw. */
+ if (eaccess (progpathname, X_OK) == 0)
+ {
+ /* Found! */
+ if (strcmp (progpathname, progname) == 0)
+ {
+ free (progpathname);
+
+ /* Add the "./" prefix for real, that
+ xconcatenated_filename() optimized away. This
+ avoids a second PATH search when the caller uses
+ execl/execv/execlp/execvp. */
+ progpathname =
+ XNMALLOC (2 + strlen (progname) + 1, char);
+ progpathname[0] = '.';
+ progpathname[1] = NATIVE_SLASH;
+ memcpy (progpathname + 2, progname,
+ strlen (progname) + 1);
+ }
+
+ free (path_copy);
+ return progpathname;
+ }
+
+ if (errno != ENOENT)
+ failure_errno = errno;
+
+ free (progpathname);
+ }
+ }
+
+ if (last)
+ break;
+ }
+
+ /* Not found in PATH. */
+ free (path_copy);
+
+ errno = failure_errno;
+ return NULL;
+ }
+}
diff --git a/lib/findprog.h b/lib/findprog.h
new file mode 100644
index 0000000..aef6289
--- /dev/null
+++ b/lib/findprog.h
@@ -0,0 +1,71 @@
+/* Locating a program in PATH.
+ Copyright (C) 2001-2003, 2009-2020 Free Software Foundation, Inc.
+ Written by Bruno Haible <haible@clisp.cons.org>, 2001.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _FINDPROG_H
+#define _FINDPROG_H
+
+#include <stdbool.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Looks up a program in the PATH.
+ Attempts to determine the pathname that would be called by execlp/execvp
+ of PROGNAME. If successful, it returns a pathname containing a slash
+ (either absolute or relative to the current directory). Otherwise, it
+ returns PROGNAME unmodified.
+ Because of the latter case, callers should use execlp/execvp, not
+ execl/execv on the returned pathname.
+ The returned string is freshly malloc()ed if it is != PROGNAME. */
+extern const char *find_in_path (const char *progname);
+
+/* Looks up a program in the given PATH-like string.
+
+ The PATH argument consists of a list of directories, separated by ':' or
+ (on native Windows) by ';'. An empty PATH element designates the current
+ directory. A null PATH is equivalent to an empty PATH, that is, to the
+ singleton list that contains only the current directory.
+
+ Determines the pathname that would be called by execlp/execvp of PROGNAME.
+ - If successful, it returns a pathname containing a slash (either absolute
+ or relative to the current directory). The returned string can be used
+ with either execl/execv or execlp/execvp. It is freshly malloc()ed if it
+ is != PROGNAME.
+ - Otherwise, it sets errno and returns NULL.
+ Specific errno values include:
+ - ENOENT: means that the program's file was not found.
+ - EACCES: means that the program's file cannot be accessed (due to some
+ issue with one of the ancestor directories) or lacks the execute
+ permissions.
+ If OPTIMIZE_FOR_EXEC is true, the function saves some work, under the
+ assumption that the resulting pathname will not be accessed directly,
+ only through execl/execv or execlp/execvp.
+
+ Here, a "slash" means:
+ - On POSIX systems excluding Cygwin: a '/',
+ - On Windows, OS/2, DOS platforms: a '/' or '\'. */
+extern const char *find_in_given_path (const char *progname, const char *path,
+ bool optimize_for_exec);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FINDPROG_H */
diff --git a/glob/fnmatch.c b/lib/fnmatch.c
index 4da8c5f..4da8c5f 100644
--- a/glob/fnmatch.c
+++ b/lib/fnmatch.c
diff --git a/glob/fnmatch.h b/lib/fnmatch.in.h
index a788c8e..a788c8e 100644
--- a/glob/fnmatch.h
+++ b/lib/fnmatch.in.h
diff --git a/lib/getdtablesize.c b/lib/getdtablesize.c
new file mode 100644
index 0000000..0fe7092
--- /dev/null
+++ b/lib/getdtablesize.c
@@ -0,0 +1,124 @@
+/* getdtablesize() function: Return maximum possible file descriptor value + 1.
+ Copyright (C) 2008-2020 Free Software Foundation, Inc.
+ Written by Bruno Haible <bruno@clisp.org>, 2008.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <unistd.h>
+
+#if defined _WIN32 && ! defined __CYGWIN__
+
+# include <stdio.h>
+
+# if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+# include "msvc-inval.h"
+# endif
+
+# if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+static int
+_setmaxstdio_nothrow (int newmax)
+{
+ int result;
+
+ TRY_MSVC_INVAL
+ {
+ result = _setmaxstdio (newmax);
+ }
+ CATCH_MSVC_INVAL
+ {
+ result = -1;
+ }
+ DONE_MSVC_INVAL;
+
+ return result;
+}
+# else
+# define _setmaxstdio_nothrow _setmaxstdio
+# endif
+
+/* Cache for the previous getdtablesize () result. Safe to cache because
+ Windows also lacks setrlimit. */
+static int dtablesize;
+
+int
+getdtablesize (void)
+{
+ if (dtablesize == 0)
+ {
+ /* We are looking for the number N such that the valid file descriptors
+ are 0..N-1. It can be obtained through a loop as follows:
+ {
+ int fd;
+ for (fd = 3; fd < 65536; fd++)
+ if (dup2 (0, fd) == -1)
+ break;
+ return fd;
+ }
+ On Windows XP, the result is 2048.
+ The drawback of this loop is that it allocates memory for a libc
+ internal array that is never freed.
+
+ The number N can also be obtained as the upper bound for
+ _getmaxstdio (). _getmaxstdio () returns the maximum number of open
+ FILE objects. The sanity check in _setmaxstdio reveals the maximum
+ number of file descriptors. This too allocates memory, but it is
+ freed when we call _setmaxstdio with the original value. */
+ int orig_max_stdio = _getmaxstdio ();
+ unsigned int bound;
+ for (bound = 0x10000; _setmaxstdio_nothrow (bound) < 0; bound = bound / 2)
+ ;
+ _setmaxstdio_nothrow (orig_max_stdio);
+ dtablesize = bound;
+ }
+ return dtablesize;
+}
+
+#else
+
+# include <limits.h>
+# include <sys/resource.h>
+
+# ifndef RLIM_SAVED_CUR
+# define RLIM_SAVED_CUR RLIM_INFINITY
+# endif
+# ifndef RLIM_SAVED_MAX
+# define RLIM_SAVED_MAX RLIM_INFINITY
+# endif
+
+# ifdef __CYGWIN__
+ /* Cygwin 1.7.25 auto-increases the RLIMIT_NOFILE soft limit until it
+ hits the compile-time constant hard limit of 3200. We might as
+ well just report the hard limit. */
+# define rlim_cur rlim_max
+# endif
+
+int
+getdtablesize (void)
+{
+ struct rlimit lim;
+
+ if (getrlimit (RLIMIT_NOFILE, &lim) == 0
+ && 0 <= lim.rlim_cur && lim.rlim_cur <= INT_MAX
+ && lim.rlim_cur != RLIM_INFINITY
+ && lim.rlim_cur != RLIM_SAVED_CUR
+ && lim.rlim_cur != RLIM_SAVED_MAX)
+ return lim.rlim_cur;
+
+ return INT_MAX;
+}
+
+#endif
diff --git a/getloadavg.c b/lib/getloadavg.c
index 10ae56a..ebb6f5d 100644
--- a/getloadavg.c
+++ b/lib/getloadavg.c
@@ -1,66 +1,74 @@
/* Get the system load averages.
-Copyright (C) 1985-2016 Free Software Foundation, Inc.
-GNU Make is free software; you can redistribute it and/or modify it under the
-terms of the GNU General Public License as published by the Free Software
-Foundation; either version 3 of the License, or (at your option) any later
-version.
+ Copyright (C) 1985-1989, 1991-1995, 1997, 1999-2000, 2003-2020 Free Software
+ Foundation, Inc.
-GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ NOTE: The canonical source of this file is maintained with gnulib.
+ Bugs can be reported to bug-gnulib@gnu.org.
-You should have received a copy of the GNU General Public License along with
-this program. If not, see <http://www.gnu.org/licenses/>. */
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
/* Compile-time symbols that this file uses:
- HAVE_PSTAT_GETDYNAMIC Define this if your system has the
+ HAVE_PSTAT_GETDYNAMIC Define this if your system has the
pstat_getdynamic function. I think it
- is unique to HPUX9. The best way to get the
- definition is through the AC_FUNC_GETLOADAVG
- macro that comes with autoconf 2.13 or newer.
- If that isn't an option, then just put
- AC_CHECK_FUNCS(pstat_getdynamic) in your
- configure.in file.
- FIXUP_KERNEL_SYMBOL_ADDR() Adjust address in returned struct nlist.
- KERNEL_FILE Pathname of the kernel to nlist.
- LDAV_CVT() Scale the load average from the kernel.
- Returns a double.
- LDAV_SYMBOL Name of kernel symbol giving load average.
- LOAD_AVE_TYPE Type of the load average array in the kernel.
- Must be defined unless one of
- apollo, DGUX, NeXT, or UMAX is defined;
+ is unique to HPUX9. The best way to get the
+ definition is through the AC_FUNC_GETLOADAVG
+ macro that comes with autoconf 2.13 or newer.
+ If that isn't an option, then just put
+ AC_CHECK_FUNCS(pstat_getdynamic) in your
+ configure.ac file.
+ HAVE_LIBPERFSTAT Define this if your system has the
+ perfstat_cpu_total function in libperfstat (AIX).
+ FIXUP_KERNEL_SYMBOL_ADDR() Adjust address in returned struct nlist.
+ KERNEL_FILE Name of the kernel file to nlist.
+ LDAV_CVT() Scale the load average from the kernel.
+ Returns a double.
+ LDAV_SYMBOL Name of kernel symbol giving load average.
+ LOAD_AVE_TYPE Type of the load average array in the kernel.
+ Must be defined unless one of
+ apollo, DGUX, NeXT, or UMAX is defined;
or we have libkstat;
- otherwise, no load average is available.
- NLIST_STRUCT Include nlist.h, not a.out.h, and
- the nlist n_name element is a pointer,
- not an array.
- HAVE_STRUCT_NLIST_N_UN_N_NAME struct nlist has an n_un member, not n_name.
- LINUX_LDAV_FILE [__linux__]: File containing load averages.
+ otherwise, no load average is available.
+ HAVE_NLIST_H nlist.h is available. NLIST_STRUCT defaults
+ to this.
+ NLIST_STRUCT Include nlist.h, not a.out.h.
+ N_NAME_POINTER The nlist n_name element is a pointer,
+ not an array.
+ HAVE_STRUCT_NLIST_N_UN_N_NAME 'n_un.n_name' is member of 'struct nlist'.
+ LINUX_LDAV_FILE [__linux__, __ANDROID__, __CYGWIN__]: File
+ containing load averages.
Specific system predefines this file uses, aside from setting
default values if not emacs:
apollo
- BSD Real BSD, not just BSD-like.
- convex
+ BSD Real BSD, not just BSD-like.
DGUX
- eunice UNIX emulator under VMS.
+ eunice UNIX emulator under VMS.
hpux
- __MSDOS__ No-op for MSDOS.
+ __MSDOS__ No-op for MSDOS.
NeXT
sgi
- sequent Sequent Dynix 3.x.x (BSD)
- _SEQUENT_ Sequent DYNIX/ptx 1.x.x (SYSV)
- sony_news NEWS-OS (works at least for 4.1C)
UMAX
UMAX4_3
VMS
- WINDOWS32 No-op for Windows95/NT.
- __linux__ Linux: assumes /proc filesystem mounted.
- Support from Michael K. Johnson.
- __NetBSD__ NetBSD: assumes /kern filesystem mounted.
+ _WIN32 Native Windows (possibly also defined on Cygwin)
+ __linux__, __ANDROID__ Linux: assumes /proc file system mounted.
+ Support from Michael K. Johnson.
+ __CYGWIN__ Cygwin emulates linux /proc/loadavg.
+ __NetBSD__ NetBSD: assumes /kern file system mounted.
In addition, to avoid nesting many #ifdefs, we internally set
LDAV_DONE to indicate that the load average has been computed.
@@ -68,60 +76,25 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
We also #define LDAV_PRIVILEGED if a program will require
special installation to be able to call getloadavg. */
-/* This should always be first. */
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <sys/types.h>
-
-/* Both the Emacs and non-Emacs sections want this. Some
- configuration files' definitions for the LOAD_AVE_CVT macro (like
- sparc.h's) use macros like FSCALE, defined here. */
-#if defined (unix) || defined (__unix)
-# include <sys/param.h>
-#endif
+#include <config.h>
-
-/* Exclude all the code except the test program at the end
- if the system has its own 'getloadavg' function.
-
- The declaration of 'errno' is needed by the test program
- as well as the function itself, so it comes first. */
+/* Specification. */
+#include <stdlib.h>
#include <errno.h>
+#include <stdbool.h>
+#include <stdio.h>
-#ifndef errno
-extern int errno;
-#endif
-
-#if HAVE_LOCALE_H
-# include <locale.h>
-#endif
-#if !HAVE_SETLOCALE
-# define setlocale(Category, Locale) /* empty */
-#endif
+# include <sys/types.h>
-#ifndef HAVE_GETLOADAVG
-
-
-/* The existing Emacs configuration files define a macro called
- LOAD_AVE_CVT, which accepts a value of type LOAD_AVE_TYPE, and
- returns the load average multiplied by 100. What we actually want
- is a macro called LDAV_CVT, which returns the load average as an
- unmultiplied double.
-
- For backwards compatibility, we'll define LDAV_CVT in terms of
- LOAD_AVE_CVT, but future machine config files should just define
- LDAV_CVT directly. */
-
-# if !defined(LDAV_CVT) && defined(LOAD_AVE_CVT)
-# define LDAV_CVT(n) (LOAD_AVE_CVT (n) / 100.0)
+# if HAVE_SYS_PARAM_H
+# include <sys/param.h>
# endif
-# if !defined (BSD) && defined (ultrix)
-/* Ultrix behaves like BSD on Vaxen. */
-# define BSD
+# include "intprops.h"
+
+# if defined _WIN32 && ! defined __CYGWIN__ && ! defined WINDOWS32
+# define WINDOWS32
# endif
# ifdef NeXT
@@ -159,19 +132,15 @@ extern int errno;
# define sun
# endif
-# if defined(hp300) && !defined(hpux)
+# if defined (hp300) && !defined (hpux)
# define MORE_BSD
# endif
-# if defined(ultrix) && defined(mips)
-# define decstation
-# endif
-
# if defined (__SVR4) && !defined (SVR4)
# define SVR4
# endif
-# if (defined(sun) && defined(SVR4)) || defined (SOLARIS2)
+# if (defined (sun) && defined (SVR4)) || defined (SOLARIS2)
# define SUNOS_5
# endif
@@ -181,6 +150,8 @@ extern int errno;
# include <sys/socket.h>
# include <net/route.h>
# include <sys/table.h>
+/* Tru64 4.0D's table.h redefines sys */
+# undef sys
# endif
# if defined (__osf__) && (defined (mips) || defined (__mips__))
@@ -188,17 +159,6 @@ extern int errno;
# include <sys/table.h>
# endif
-/* UTek's /bin/cc on the 4300 has no architecture specific cpp define by
- default, but _MACH_IND_SYS_TYPES is defined in <sys/types.h>. Combine
- that with a couple of other things and we'll have a unique match. */
-# if !defined (tek4300) && defined (unix) && defined (m68k) && defined (mc68000) && defined (mc68020) && defined (_MACH_IND_SYS_TYPES)
-# define tek4300 /* Define by emacs, but not by other users. */
-# endif
-
-/* AC_FUNC_GETLOADAVG thinks QNX is SVR4, but it isn't. */
-# if defined(__QNX__)
-# undef SVR4
-# endif
/* VAX C can't handle multi-line #ifs, or lines longer than 256 chars. */
# ifndef LOAD_AVE_TYPE
@@ -211,14 +171,6 @@ extern int errno;
# define LOAD_AVE_TYPE long
# endif
-# ifdef decstation
-# define LOAD_AVE_TYPE long
-# endif
-
-# ifdef _SEQUENT_
-# define LOAD_AVE_TYPE long
-# endif
-
# ifdef sgi
# define LOAD_AVE_TYPE long
# endif
@@ -227,41 +179,14 @@ extern int errno;
# define LOAD_AVE_TYPE long
# endif
-# ifdef sony_news
-# define LOAD_AVE_TYPE long
-# endif
-
-# ifdef sequent
-# define LOAD_AVE_TYPE long
-# endif
-
# ifdef OSF_ALPHA
# define LOAD_AVE_TYPE long
# endif
-# if defined (ardent) && defined (titan)
-# define LOAD_AVE_TYPE long
-# endif
-
-# ifdef tek4300
-# define LOAD_AVE_TYPE long
-# endif
-
-# if defined(alliant) && defined(i860) /* Alliant FX/2800 */
+# if defined _AIX && ! defined HAVE_LIBPERFSTAT
# define LOAD_AVE_TYPE long
# endif
-# ifdef _AIX
-# define LOAD_AVE_TYPE long
-# endif
-
-# ifdef convex
-# define LOAD_AVE_TYPE double
-# ifndef LDAV_CVT
-# define LDAV_CVT(n) (n)
-# endif
-# endif
-
# endif /* No LOAD_AVE_TYPE. */
# ifdef OSF_ALPHA
@@ -271,15 +196,8 @@ extern int errno;
# define FSCALE 1024.0
# endif
-# if defined(alliant) && defined(i860) /* Alliant FX/2800 */
-/* <sys/param.h> defines an incorrect value for FSCALE on an
- Alliant FX/2800 Concentrix 2.2, according to ghazi@noc.rutgers.edu. */
-# undef FSCALE
-# define FSCALE 100.0
-# endif
-
-# ifndef FSCALE
+# ifndef FSCALE
/* SunOS and some others define FSCALE in sys/param.h. */
@@ -287,59 +205,48 @@ extern int errno;
# define FSCALE 2048.0
# endif
-# if defined(MIPS) || defined(SVR4) || defined(decstation)
+# if defined (MIPS) || defined (SVR4)
# define FSCALE 256
# endif
-# if defined (sgi) || defined (sequent)
+# if defined (sgi)
/* Sometimes both MIPS and sgi are defined, so FSCALE was just defined
above under #ifdef MIPS. But we want the sgi value. */
# undef FSCALE
-# define FSCALE 1000.0
-# endif
-
-# if defined (ardent) && defined (titan)
-# define FSCALE 65536.0
-# endif
-
-# ifdef tek4300
-# define FSCALE 100.0
+# define FSCALE 1000.0
# endif
-# ifdef _AIX
+# if defined _AIX && !defined HAVE_LIBPERFSTAT
# define FSCALE 65536.0
# endif
-# endif /* Not FSCALE. */
+# endif /* Not FSCALE. */
# if !defined (LDAV_CVT) && defined (FSCALE)
-# define LDAV_CVT(n) (((double) (n)) / FSCALE)
+# define LDAV_CVT(n) (((double) (n)) / FSCALE)
# endif
+# ifndef NLIST_STRUCT
+# if HAVE_NLIST_H
+# define NLIST_STRUCT
+# endif
+# endif
-# if defined(sgi) || (defined(mips) && !defined(BSD))
+# if defined (sgi) || (defined (mips) && !defined (BSD))
# define FIXUP_KERNEL_SYMBOL_ADDR(nl) ((nl)[0].n_value &= ~(1 << 31))
# endif
-# if !defined (KERNEL_FILE) && defined (sequent)
-# define KERNEL_FILE "/dynix"
-# endif
-
# if !defined (KERNEL_FILE) && defined (hpux)
# define KERNEL_FILE "/hp-ux"
# endif
-# if !defined(KERNEL_FILE) && (defined(_SEQUENT_) || defined(MIPS) || defined(SVR4) || defined(ISC) || defined (sgi) || (defined (ardent) && defined (titan)))
+# if !defined (KERNEL_FILE) && (defined (MIPS) || defined (SVR4) || defined (ISC) || defined (sgi))
# define KERNEL_FILE "/unix"
# endif
-# if !defined (LDAV_SYMBOL) && defined (alliant)
-# define LDAV_SYMBOL "_Loadavg"
-# endif
-
-# if !defined(LDAV_SYMBOL) && ((defined(hpux) && !defined(hp9000s300)) || defined(_SEQUENT_) || defined(SVR4) || defined(ISC) || defined(sgi) || (defined (ardent) && defined (titan)) || defined (_AIX))
+# if !defined (LDAV_SYMBOL) && (defined (hpux) || defined (SVR4) || defined (ISC) || defined (sgi) || (defined (_AIX) && !defined(HAVE_LIBPERFSTAT)))
# define LDAV_SYMBOL "avenrun"
# endif
@@ -347,26 +254,23 @@ extern int errno;
# include <unistd.h>
# endif
-# include <stdio.h>
-
/* LOAD_AVE_TYPE should only get defined if we're going to use the
nlist method. */
-# if !defined(LOAD_AVE_TYPE) && (defined(BSD) || defined(LDAV_CVT) || defined(KERNEL_FILE) || defined(LDAV_SYMBOL)) && !defined(__riscos__)
+# if !defined (LOAD_AVE_TYPE) && (defined (BSD) || defined (LDAV_CVT) || defined (KERNEL_FILE) || defined (LDAV_SYMBOL))
# define LOAD_AVE_TYPE double
# endif
# ifdef LOAD_AVE_TYPE
-# ifndef VMS
-# ifndef __linux__
-# ifdef HAVE_NLIST_H
-# include <nlist.h>
-# else
+# ifndef __VMS
+# if !(defined __linux__ || defined __ANDROID__)
+# ifndef NLIST_STRUCT
# include <a.out.h>
-# endif
+# else /* NLIST_STRUCT */
+# include <nlist.h>
+# endif /* NLIST_STRUCT */
# ifdef SUNOS_5
-# include <fcntl.h>
# include <kvm.h>
# include <kstat.h>
# endif
@@ -382,9 +286,9 @@ extern int errno;
# ifndef LDAV_SYMBOL
# define LDAV_SYMBOL "_avenrun"
# endif /* LDAV_SYMBOL */
-# endif /* __linux__ */
+# endif /* __linux__ || __ANDROID__ */
-# else /* VMS */
+# else /* __VMS */
# ifndef eunice
# include <iodef.h>
@@ -392,7 +296,7 @@ extern int errno;
# else /* eunice */
# include <vms/iodef.h>
# endif /* eunice */
-# endif /* VMS */
+# endif /* __VMS */
# ifndef LDAV_CVT
# define LDAV_CVT(n) ((double) (n))
@@ -400,7 +304,16 @@ extern int errno;
# endif /* LOAD_AVE_TYPE */
-# if defined(__GNU__) && !defined (NeXT)
+# if defined HAVE_LIBPERFSTAT
+# include <sys/protosw.h>
+# include <libperfstat.h>
+# include <sys/proc.h>
+# ifndef SBITS
+# define SBITS 16
+# endif
+# endif
+
+# if defined (__GNU__) && !defined (NeXT)
/* Note that NeXT Openstep defines __GNU__ even though it should not. */
/* GNU system acts much like NeXT, for load average purposes,
but not exactly. */
@@ -421,7 +334,6 @@ extern int errno;
# endif /* sgi */
# ifdef UMAX
-# include <stdio.h>
# include <signal.h>
# include <sys/time.h>
# include <sys/wait.h>
@@ -447,18 +359,17 @@ extern int errno;
# include <sys/dg_sys_info.h>
# endif
-# if defined(HAVE_FCNTL_H) || defined(_POSIX_VERSION)
+# if (defined __linux__ || defined __ANDROID__ \
+ || defined __CYGWIN__ || defined SUNOS_5 \
+ || (defined LOAD_AVE_TYPE && ! defined __VMS))
# include <fcntl.h>
-# else
-# include <sys/file.h>
# endif
-
/* Avoid static vars inside a function since in HPUX they dump as pure. */
# ifdef NeXT
static processor_set_t default_set;
-static int getloadavg_initialized;
+static bool getloadavg_initialized;
# endif /* NeXT */
# ifdef UMAX
@@ -467,64 +378,63 @@ static unsigned int samples;
# endif /* UMAX */
# ifdef DGUX
-static struct dg_sys_info_load_info load_info; /* what-a-mouthful! */
+static struct dg_sys_info_load_info load_info; /* what-a-mouthful! */
# endif /* DGUX */
-#if !defined(HAVE_LIBKSTAT) && defined(LOAD_AVE_TYPE)
+# if !defined (HAVE_LIBKSTAT) && defined (LOAD_AVE_TYPE)
/* File descriptor open to /dev/kmem or VMS load ave driver. */
static int channel;
-/* Nonzero iff channel is valid. */
-static int getloadavg_initialized;
+/* True if channel is valid. */
+static bool getloadavg_initialized;
/* Offset in kmem to seek to read load average, or 0 means invalid. */
static long offset;
-#if !defined(VMS) && !defined(sgi) && !defined(__linux__)
-static struct nlist nl[2];
-#endif /* Not VMS or sgi */
+# if ! defined __VMS && ! defined sgi && ! (defined __linux__ || defined __ANDROID__)
+static struct nlist name_list[2];
+# endif
-#ifdef SUNOS_5
+# ifdef SUNOS_5
static kvm_t *kd;
-#endif /* SUNOS_5 */
+# endif /* SUNOS_5 */
-#endif /* LOAD_AVE_TYPE && !HAVE_LIBKSTAT */
+# endif /* LOAD_AVE_TYPE && !HAVE_LIBKSTAT */
/* Put the 1 minute, 5 minute and 15 minute load averages
into the first NELEM elements of LOADAVG.
Return the number written (never more than 3, but may be less than NELEM),
- or -1 if an error occurred. */
+ or -1 (setting errno) if an error occurred. */
int
getloadavg (double loadavg[], int nelem)
{
- int elem = 0; /* Return value. */
+ int elem = 0; /* Return value. */
# ifdef NO_GET_LOAD_AVG
# define LDAV_DONE
- /* Set errno to zero to indicate that there was no particular error;
- this function just can't work at all on this system. */
- errno = 0;
+ errno = ENOSYS;
elem = -1;
# endif
-# if !defined (LDAV_DONE) && defined (HAVE_LIBKSTAT)
+# if !defined (LDAV_DONE) && defined (HAVE_LIBKSTAT) /* Solaris <= 2.6 */
/* Use libkstat because we don't have to be root. */
# define LDAV_DONE
kstat_ctl_t *kc;
kstat_t *ksp;
kstat_named_t *kn;
+ int saved_errno;
kc = kstat_open ();
- if (kc == 0)
+ if (kc == NULL)
return -1;
ksp = kstat_lookup (kc, "unix", 0, "system_misc");
- if (ksp == 0 )
+ if (ksp == NULL)
return -1;
if (kstat_read (kc, ksp, 0) == -1)
return -1;
kn = kstat_data_lookup (ksp, "avenrun_1min");
- if (kn == 0)
+ if (kn == NULL)
{
/* Return -1 if no load average information is available. */
nelem = 0;
@@ -532,28 +442,31 @@ getloadavg (double loadavg[], int nelem)
}
if (nelem >= 1)
- loadavg[elem++] = (double) kn->value.ul/FSCALE;
+ loadavg[elem++] = (double) kn->value.ul / FSCALE;
if (nelem >= 2)
{
kn = kstat_data_lookup (ksp, "avenrun_5min");
- if (kn != 0)
- {
- loadavg[elem++] = (double) kn->value.ul/FSCALE;
-
- if (nelem >= 3)
- {
- kn = kstat_data_lookup (ksp, "avenrun_15min");
- if (kn != 0)
- loadavg[elem++] = (double) kn->value.ul/FSCALE;
- }
- }
+ if (kn != NULL)
+ {
+ loadavg[elem++] = (double) kn->value.ul / FSCALE;
+
+ if (nelem >= 3)
+ {
+ kn = kstat_data_lookup (ksp, "avenrun_15min");
+ if (kn != NULL)
+ loadavg[elem++] = (double) kn->value.ul / FSCALE;
+ }
+ }
}
+ saved_errno = errno;
kstat_close (kc);
+ errno = saved_errno;
# endif /* HAVE_LIBKSTAT */
# if !defined (LDAV_DONE) && defined (hpux) && defined (HAVE_PSTAT_GETDYNAMIC)
+ /* HP-UX */
/* Use pstat_getdynamic() because we don't have to be root. */
# define LDAV_DONE
# undef LOAD_AVE_TYPE
@@ -570,7 +483,24 @@ getloadavg (double loadavg[], int nelem)
# endif /* hpux && HAVE_PSTAT_GETDYNAMIC */
-# if !defined (LDAV_DONE) && defined (__linux__)
+# if ! defined LDAV_DONE && defined HAVE_LIBPERFSTAT /* AIX */
+# define LDAV_DONE
+# undef LOAD_AVE_TYPE
+/* Use perfstat_cpu_total because we don't have to be root. */
+ {
+ perfstat_cpu_total_t cpu_stats;
+ int result = perfstat_cpu_total (NULL, &cpu_stats, sizeof cpu_stats, 1);
+ if (result == -1)
+ return result;
+ loadavg[0] = cpu_stats.loadavg[0] / (double)(1 << SBITS);
+ loadavg[1] = cpu_stats.loadavg[1] / (double)(1 << SBITS);
+ loadavg[2] = cpu_stats.loadavg[2] / (double)(1 << SBITS);
+ elem = 3;
+ }
+# endif
+
+# if !defined (LDAV_DONE) && (defined __linux__ || defined __ANDROID__ || defined __CYGWIN__)
+ /* Linux without glibc, Android, Cygwin */
# define LDAV_DONE
# undef LOAD_AVE_TYPE
@@ -578,34 +508,56 @@ getloadavg (double loadavg[], int nelem)
# define LINUX_LDAV_FILE "/proc/loadavg"
# endif
- char ldavgbuf[40];
- double load_ave[3];
- int fd, count;
+ char ldavgbuf[3 * (INT_STRLEN_BOUND (int) + sizeof ".00 ")];
+ char const *ptr = ldavgbuf;
+ int fd, count, saved_errno;
fd = open (LINUX_LDAV_FILE, O_RDONLY);
if (fd == -1)
return -1;
- count = read (fd, ldavgbuf, 40);
+ count = read (fd, ldavgbuf, sizeof ldavgbuf - 1);
+ saved_errno = errno;
(void) close (fd);
+ errno = saved_errno;
if (count <= 0)
return -1;
+ ldavgbuf[count] = '\0';
- /* The following sscanf must use the C locale. */
- setlocale (LC_NUMERIC, "C");
- count = sscanf (ldavgbuf, "%lf %lf %lf",
- &load_ave[0], &load_ave[1], &load_ave[2]);
- setlocale (LC_NUMERIC, "");
- if (count < 1)
- return -1;
+ for (elem = 0; elem < nelem; elem++)
+ {
+ double numerator = 0;
+ double denominator = 1;
- for (elem = 0; elem < nelem && elem < count; elem++)
- loadavg[elem] = load_ave[elem];
+ while (*ptr == ' ')
+ ptr++;
+
+ /* Finish if this number is missing, and report an error if all
+ were missing. */
+ if (! ('0' <= *ptr && *ptr <= '9'))
+ {
+ if (elem == 0)
+ {
+ errno = ENOTSUP;
+ return -1;
+ }
+ break;
+ }
+
+ while ('0' <= *ptr && *ptr <= '9')
+ numerator = 10 * numerator + (*ptr++ - '0');
+
+ if (*ptr == '.')
+ for (ptr++; '0' <= *ptr && *ptr <= '9'; ptr++)
+ numerator = 10 * numerator + (*ptr - '0'), denominator *= 10;
+
+ loadavg[elem++] = numerator / denominator;
+ }
return elem;
-# endif /* __linux__ */
+# endif /* __linux__ || __ANDROID__ || __CYGWIN__ */
-# if !defined (LDAV_DONE) && defined (__NetBSD__)
+# if !defined (LDAV_DONE) && defined (__NetBSD__) /* NetBSD < 0.9 */
# define LDAV_DONE
# undef LOAD_AVE_TYPE
@@ -621,11 +573,14 @@ getloadavg (double loadavg[], int nelem)
if (fp == NULL)
return -1;
count = fscanf (fp, "%lu %lu %lu %lu\n",
- &load_ave[0], &load_ave[1], &load_ave[2],
- &scale);
+ &load_ave[0], &load_ave[1], &load_ave[2],
+ &scale);
(void) fclose (fp);
if (count != 4)
- return -1;
+ {
+ errno = ENOTSUP;
+ return -1;
+ }
for (elem = 0; elem < nelem; elem++)
loadavg[elem] = (double) load_ave[elem] / (double) scale;
@@ -634,13 +589,13 @@ getloadavg (double loadavg[], int nelem)
# endif /* __NetBSD__ */
-# if !defined (LDAV_DONE) && defined (NeXT)
+# if !defined (LDAV_DONE) && defined (NeXT) /* NeXTStep */
# define LDAV_DONE
/* The NeXT code was adapted from iscreen 3.2. */
host_t host;
struct processor_set_basic_info info;
- unsigned info_count;
+ unsigned int info_count;
/* We only know how to get the 1-minute average for this system,
so even if the caller asks for more than 1, we only return 1. */
@@ -648,25 +603,28 @@ getloadavg (double loadavg[], int nelem)
if (!getloadavg_initialized)
{
if (processor_set_default (host_self (), &default_set) == KERN_SUCCESS)
- getloadavg_initialized = 1;
+ getloadavg_initialized = true;
}
if (getloadavg_initialized)
{
info_count = PROCESSOR_SET_BASIC_INFO_COUNT;
if (processor_set_info (default_set, PROCESSOR_SET_BASIC_INFO, &host,
- (processor_set_info_t) &info, &info_count)
- != KERN_SUCCESS)
- getloadavg_initialized = 0;
+ (processor_set_info_t) &info, &info_count)
+ != KERN_SUCCESS)
+ getloadavg_initialized = false;
else
- {
- if (nelem > 0)
- loadavg[elem++] = (double) info.load_average / LOAD_SCALE;
- }
+ {
+ if (nelem > 0)
+ loadavg[elem++] = (double) info.load_average / LOAD_SCALE;
+ }
}
if (!getloadavg_initialized)
- return -1;
+ {
+ errno = ENOTSUP;
+ return -1;
+ }
# endif /* NeXT */
# if !defined (LDAV_DONE) && defined (UMAX)
@@ -694,24 +652,24 @@ getloadavg (double loadavg[], int nelem)
desc.sd_size = sizeof conf;
if (inq_stats (1, &desc))
- return -1;
+ return -1;
c = 0;
for (i = 0; i < conf.config_maxclass; ++i)
- {
- struct class_stats stats;
- memset (&stats, '\0', sizeof stats);
+ {
+ struct class_stats stats;
+ memset (&stats, 0, sizeof stats);
- desc.sd_type = CPUTYPE_CLASS;
- desc.sd_objid = i;
- desc.sd_addr = (char *) &stats;
- desc.sd_size = sizeof stats;
+ desc.sd_type = CPUTYPE_CLASS;
+ desc.sd_objid = i;
+ desc.sd_addr = (char *) &stats;
+ desc.sd_size = sizeof stats;
- if (inq_stats (1, &desc))
- return -1;
+ if (inq_stats (1, &desc))
+ return -1;
- c += stats.class_numcpus;
- }
+ c += stats.class_numcpus;
+ }
cpus = c;
samples = cpus < 2 ? 3 : (2 * cpus / 3);
}
@@ -732,7 +690,7 @@ getloadavg (double loadavg[], int nelem)
{
load += proc_sum_data.ps_nrun[j];
if (j++ == PS_NRUNSIZE)
- j = 0;
+ j = 0;
}
if (nelem > 0)
@@ -745,8 +703,8 @@ getloadavg (double loadavg[], int nelem)
it's not supposed to fail. The first argument is for no
apparent reason of type 'long int *'. */
dg_sys_info ((long int *) &load_info,
- DG_SYS_INFO_LOAD_INFO_TYPE,
- DG_SYS_INFO_LOAD_VERSION_0);
+ DG_SYS_INFO_LOAD_INFO_TYPE,
+ DG_SYS_INFO_LOAD_VERSION_0);
if (nelem > 0)
loadavg[elem++] = load_info.one_minute;
@@ -790,9 +748,10 @@ getloadavg (double loadavg[], int nelem)
= (load_ave.tl_lscale == 0
? load_ave.tl_avenrun.d[0]
: (load_ave.tl_avenrun.l[0] / (double) load_ave.tl_lscale));
-# endif /* OSF_MIPS */
+# endif /* OSF_MIPS */
# if !defined (LDAV_DONE) && (defined (__MSDOS__) || defined (WINDOWS32))
+ /* DJGPP */
# define LDAV_DONE
/* A faithful emulation is going to have to be saved for a rainy day. */
@@ -802,7 +761,7 @@ getloadavg (double loadavg[], int nelem)
}
# endif /* __MSDOS__ || WINDOWS32 */
-# if !defined (LDAV_DONE) && defined (OSF_ALPHA)
+# if !defined (LDAV_DONE) && defined (OSF_ALPHA) /* OSF/1 */
# define LDAV_DONE
struct tbl_loadavg load_ave;
@@ -810,15 +769,15 @@ getloadavg (double loadavg[], int nelem)
for (elem = 0; elem < nelem; elem++)
loadavg[elem]
= (load_ave.tl_lscale == 0
- ? load_ave.tl_avenrun.d[elem]
- : (load_ave.tl_avenrun.l[elem] / (double) load_ave.tl_lscale));
+ ? load_ave.tl_avenrun.d[elem]
+ : (load_ave.tl_avenrun.l[elem] / (double) load_ave.tl_lscale));
# endif /* OSF_ALPHA */
-# if !defined (LDAV_DONE) && defined (VMS)
+# if ! defined LDAV_DONE && defined __VMS /* VMS */
/* VMS specific code -- read from the Load Ave driver. */
LOAD_AVE_TYPE load_ave[3];
- static int getloadavg_initialized = 0;
+ static bool getloadavg_initialized;
# ifdef eunice
struct
{
@@ -838,27 +797,31 @@ getloadavg (double loadavg[], int nelem)
$DESCRIPTOR (descriptor, "LAV0:");
# endif
if (sys$assign (&descriptor, &channel, 0, 0) & 1)
- getloadavg_initialized = 1;
+ getloadavg_initialized = true;
}
/* Read the load average vector. */
if (getloadavg_initialized
&& !(sys$qiow (0, channel, IO$_READVBLK, 0, 0, 0,
- load_ave, 12, 0, 0, 0, 0) & 1))
+ load_ave, 12, 0, 0, 0, 0) & 1))
{
sys$dassgn (channel);
- getloadavg_initialized = 0;
+ getloadavg_initialized = false;
}
if (!getloadavg_initialized)
- return -1;
-# endif /* VMS */
+ {
+ errno = ENOTSUP;
+ return -1;
+ }
+# endif /* ! defined LDAV_DONE && defined __VMS */
-# if !defined (LDAV_DONE) && defined(LOAD_AVE_TYPE) && !defined(VMS)
+# if ! defined LDAV_DONE && defined LOAD_AVE_TYPE && ! defined __VMS
+ /* IRIX, other old systems */
/* UNIX-specific code -- read the average from /dev/kmem. */
-# define LDAV_PRIVILEGED /* This code requires special installation. */
+# define LDAV_PRIVILEGED /* This code requires special installation. */
LOAD_AVE_TYPE load_ave[3];
@@ -866,41 +829,39 @@ getloadavg (double loadavg[], int nelem)
if (offset == 0)
{
# ifndef sgi
-# ifndef NLIST_STRUCT
- strcpy (nl[0].n_name, LDAV_SYMBOL);
- strcpy (nl[1].n_name, "");
+# if ! defined NLIST_STRUCT || ! defined N_NAME_POINTER
+ strcpy (name_list[0].n_name, LDAV_SYMBOL);
+ strcpy (name_list[1].n_name, "");
# else /* NLIST_STRUCT */
# ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME
- nl[0].n_un.n_name = LDAV_SYMBOL;
- nl[1].n_un.n_name = 0;
+ name_list[0].n_un.n_name = LDAV_SYMBOL;
+ name_list[1].n_un.n_name = 0;
# else /* not HAVE_STRUCT_NLIST_N_UN_N_NAME */
- nl[0].n_name = LDAV_SYMBOL;
- nl[1].n_name = 0;
+ name_list[0].n_name = LDAV_SYMBOL;
+ name_list[1].n_name = 0;
# endif /* not HAVE_STRUCT_NLIST_N_UN_N_NAME */
# endif /* NLIST_STRUCT */
# ifndef SUNOS_5
if (
-# if !(defined (_AIX) && !defined (ps2))
- nlist (KERNEL_FILE, nl)
+# if !defined (_AIX)
+ nlist (KERNEL_FILE, name_list)
# else /* _AIX */
- knlist (nl, 1, sizeof (nl[0]))
+ knlist (name_list, 1, sizeof (name_list[0]))
# endif
- >= 0)
- /* Omit "&& nl[0].n_type != 0 " -- it breaks on Sun386i. */
- {
+ >= 0)
+ /* Omit "&& name_list[0].n_type != 0 " -- it breaks on Sun386i. */
+ {
# ifdef FIXUP_KERNEL_SYMBOL_ADDR
- FIXUP_KERNEL_SYMBOL_ADDR (nl);
+ FIXUP_KERNEL_SYMBOL_ADDR (name_list);
# endif
- offset = nl[0].n_value;
- }
+ offset = name_list[0].n_value;
+ }
# endif /* !SUNOS_5 */
# else /* sgi */
- int ldav_off;
-
- ldav_off = sysmp (MP_KERNADDR, MPKA_AVENRUN);
+ ptrdiff_t ldav_off = sysmp (MP_KERNADDR, MPKA_AVENRUN);
if (ldav_off != -1)
- offset = (long) ldav_off & 0x7fffffff;
+ offset = (long int) ldav_off & 0x7fffffff;
# endif /* sgi */
}
@@ -908,30 +869,39 @@ getloadavg (double loadavg[], int nelem)
if (!getloadavg_initialized)
{
# ifndef SUNOS_5
- channel = open ("/dev/kmem", 0);
- if (channel >= 0)
- {
- /* Set the channel to close on exec, so it does not
- litter any child's descriptor table. */
-# ifdef F_SETFD
-# ifndef FD_CLOEXEC
-# define FD_CLOEXEC 1
-# endif
- (void) fcntl (channel, F_SETFD, FD_CLOEXEC);
+ /* Set the channel to close on exec, so it does not
+ litter any child's descriptor table. */
+# ifndef O_CLOEXEC
+# define O_CLOEXEC 0
+# endif
+ int fd = open ("/dev/kmem", O_RDONLY | O_CLOEXEC);
+ if (0 <= fd)
+ {
+# if F_DUPFD_CLOEXEC
+ if (fd <= STDERR_FILENO)
+ {
+ int fd1 = fcntl (fd, F_DUPFD_CLOEXEC, STDERR_FILENO + 1);
+ close (fd);
+ fd = fd1;
+ }
# endif
- getloadavg_initialized = 1;
- }
+ if (0 <= fd)
+ {
+ channel = fd;
+ getloadavg_initialized = true;
+ }
+ }
# else /* SUNOS_5 */
/* We pass 0 for the kernel, corefile, and swapfile names
- to use the currently running kernel. */
+ to use the currently running kernel. */
kd = kvm_open (0, 0, 0, O_RDONLY, 0);
- if (kd != 0)
- {
- /* nlist the currently running kernel. */
- kvm_nlist (kd, nl);
- offset = nl[0].n_value;
- getloadavg_initialized = 1;
- }
+ if (kd != NULL)
+ {
+ /* nlist the currently running kernel. */
+ kvm_nlist (kd, name_list);
+ offset = name_list[0].n_value;
+ getloadavg_initialized = true;
+ }
# endif /* SUNOS_5 */
}
@@ -941,25 +911,28 @@ getloadavg (double loadavg[], int nelem)
/* Try to read the load. */
# ifndef SUNOS_5
if (lseek (channel, offset, 0) == -1L
- || read (channel, (char *) load_ave, sizeof (load_ave))
- != sizeof (load_ave))
- {
- close (channel);
- getloadavg_initialized = 0;
- }
+ || read (channel, (char *) load_ave, sizeof (load_ave))
+ != sizeof (load_ave))
+ {
+ close (channel);
+ getloadavg_initialized = false;
+ }
# else /* SUNOS_5 */
if (kvm_read (kd, offset, (char *) load_ave, sizeof (load_ave))
- != sizeof (load_ave))
+ != sizeof (load_ave))
{
kvm_close (kd);
- getloadavg_initialized = 0;
- }
+ getloadavg_initialized = false;
+ }
# endif /* SUNOS_5 */
}
if (offset == 0 || !getloadavg_initialized)
- return -1;
-# endif /* LOAD_AVE_TYPE and not VMS */
+ {
+ errno = ENOTSUP;
+ return -1;
+ }
+# endif /* ! defined LDAV_DONE && defined LOAD_AVE_TYPE && ! defined __VMS */
# if !defined (LDAV_DONE) && defined (LOAD_AVE_TYPE) /* Including VMS. */
if (nelem > 0)
@@ -972,55 +945,9 @@ getloadavg (double loadavg[], int nelem)
# define LDAV_DONE
# endif /* !LDAV_DONE && LOAD_AVE_TYPE */
-# ifdef LDAV_DONE
- return elem;
-# else
- /* Set errno to zero to indicate that there was no particular error;
- this function just can't work at all on this system. */
- errno = 0;
- return -1;
+# if !defined LDAV_DONE
+ errno = ENOSYS;
+ elem = -1;
# endif
+ return elem;
}
-
-#endif /* ! HAVE_GETLOADAVG */
-
-#ifdef TEST
-#include "makeint.h"
-
-int
-main (int argc, char **argv)
-{
- int naptime = 0;
-
- if (argc > 1)
- naptime = atoi (argv[1]);
-
- while (1)
- {
- double avg[3];
- int loads;
-
- errno = 0; /* Don't be misled if it doesn't set errno. */
- loads = getloadavg (avg, 3);
- if (loads == -1)
- {
- perror ("Error getting load average");
- exit (1);
- }
- if (loads > 0)
- printf ("1-minute: %f ", avg[0]);
- if (loads > 1)
- printf ("5-minute: %f ", avg[1]);
- if (loads > 2)
- printf ("15-minute: %f ", avg[2]);
- if (loads > 0)
- putchar ('\n');
-
- if (naptime == 0)
- break;
- sleep (naptime);
- }
-
- exit (0);
-}
-#endif /* TEST */
diff --git a/lib/getprogname.c b/lib/getprogname.c
new file mode 100644
index 0000000..9f69f5a
--- /dev/null
+++ b/lib/getprogname.c
@@ -0,0 +1,260 @@
+/* Program name management.
+ Copyright (C) 2016-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "getprogname.h"
+
+#include <errno.h> /* get program_invocation_name declaration */
+#include <stdlib.h> /* get __argv declaration */
+
+#ifdef _AIX
+# include <unistd.h>
+# include <procinfo.h>
+# include <string.h>
+#endif
+
+#ifdef __MVS__
+# ifndef _OPEN_SYS
+# define _OPEN_SYS
+# endif
+# include <string.h>
+# include <sys/ps.h>
+#endif
+
+#ifdef __hpux
+# include <unistd.h>
+# include <sys/param.h>
+# include <sys/pstat.h>
+# include <string.h>
+#endif
+
+#ifdef __sgi
+# include <string.h>
+# include <unistd.h>
+# include <stdio.h>
+# include <fcntl.h>
+# include <sys/procfs.h>
+#endif
+
+#include "dirname.h"
+
+#ifndef HAVE_GETPROGNAME /* not Mac OS X, FreeBSD, NetBSD, OpenBSD >= 5.4, Cygwin */
+char const *
+getprogname (void)
+{
+# if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME /* glibc, BeOS */
+ /* https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html */
+ return program_invocation_short_name;
+# elif HAVE_DECL_PROGRAM_INVOCATION_NAME /* glibc, BeOS */
+ /* https://www.gnu.org/software/libc/manual/html_node/Error-Messages.html */
+ return last_component (program_invocation_name);
+# elif HAVE_GETEXECNAME /* Solaris */
+ /* https://docs.oracle.com/cd/E19253-01/816-5168/6mbb3hrb1/index.html */
+ const char *p = getexecname ();
+ if (!p)
+ p = "?";
+ return last_component (p);
+# elif HAVE_DECL___ARGV /* mingw, MSVC */
+ /* https://docs.microsoft.com/en-us/cpp/c-runtime-library/argc-argv-wargv */
+ const char *p = __argv && __argv[0] ? __argv[0] : "?";
+ return last_component (p);
+# elif HAVE_VAR___PROGNAME /* OpenBSD, Android, QNX */
+ /* https://man.openbsd.org/style.9 */
+ /* http://www.qnx.de/developers/docs/6.5.0/index.jsp?topic=%2Fcom.qnx.doc.neutrino_lib_ref%2Fp%2F__progname.html */
+ /* Be careful to declare this only when we absolutely need it
+ (OpenBSD 5.1), rather than when it's available. Otherwise,
+ its mere declaration makes program_invocation_short_name
+ malfunction (have zero length) with Fedora 25's glibc. */
+ extern char *__progname;
+ const char *p = __progname;
+# if defined __ANDROID__
+ return last_component (p);
+# else
+ return p && p[0] ? p : "?";
+# endif
+# elif _AIX /* AIX */
+ /* Idea by Bastien ROUCARIÈS,
+ https://lists.gnu.org/r/bug-gnulib/2010-12/msg00095.html
+ Reference: https://www.ibm.com/support/knowledgecenter/en/ssw_aix_61/com.ibm.aix.basetrf1/getprocs.htm
+ */
+ static char *p;
+ static int first = 1;
+ if (first)
+ {
+ first = 0;
+ pid_t pid = getpid ();
+ struct procentry64 procs;
+ p = (0 < getprocs64 (&procs, sizeof procs, NULL, 0, &pid, 1)
+ ? strdup (procs.pi_comm)
+ : NULL);
+ if (!p)
+ p = "?";
+ }
+ return p;
+# elif defined __hpux
+ static char *p;
+ static int first = 1;
+ if (first)
+ {
+ first = 0;
+ pid_t pid = getpid ();
+ struct pst_status status;
+ if (pstat_getproc (&status, sizeof status, 0, pid) > 0)
+ {
+ char *ucomm = status.pst_ucomm;
+ char *cmd = status.pst_cmd;
+ if (strlen (ucomm) < PST_UCOMMLEN - 1)
+ p = ucomm;
+ else
+ {
+ /* ucomm is truncated to length PST_UCOMMLEN - 1.
+ Look at cmd instead. */
+ char *space = strchr (cmd, ' ');
+ if (space != NULL)
+ *space = '\0';
+ p = strrchr (cmd, '/');
+ if (p != NULL)
+ p++;
+ else
+ p = cmd;
+ if (strlen (p) > PST_UCOMMLEN - 1
+ && memcmp (p, ucomm, PST_UCOMMLEN - 1) == 0)
+ /* p is less truncated than ucomm. */
+ ;
+ else
+ p = ucomm;
+ }
+ p = strdup (p);
+ }
+ else
+ {
+# if !defined __LP64__
+ /* Support for 32-bit programs running in 64-bit HP-UX.
+ The documented way to do this is to use the same source code
+ as above, but in a compilation unit where '#define _PSTAT64 1'
+ is in effect. I prefer a single compilation unit; the struct
+ size and the offsets are not going to change. */
+ char status64[1216];
+ if (__pstat_getproc64 (status64, sizeof status64, 0, pid) > 0)
+ {
+ char *ucomm = status64 + 288;
+ char *cmd = status64 + 168;
+ if (strlen (ucomm) < PST_UCOMMLEN - 1)
+ p = ucomm;
+ else
+ {
+ /* ucomm is truncated to length PST_UCOMMLEN - 1.
+ Look at cmd instead. */
+ char *space = strchr (cmd, ' ');
+ if (space != NULL)
+ *space = '\0';
+ p = strrchr (cmd, '/');
+ if (p != NULL)
+ p++;
+ else
+ p = cmd;
+ if (strlen (p) > PST_UCOMMLEN - 1
+ && memcmp (p, ucomm, PST_UCOMMLEN - 1) == 0)
+ /* p is less truncated than ucomm. */
+ ;
+ else
+ p = ucomm;
+ }
+ p = strdup (p);
+ }
+ else
+# endif
+ p = NULL;
+ }
+ if (!p)
+ p = "?";
+ }
+ return p;
+# elif __MVS__ /* z/OS */
+ /* https://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.bpxbd00/rtwgetp.htm */
+ static char *p = "?";
+ static int first = 1;
+ if (first)
+ {
+ pid_t pid = getpid ();
+ int token;
+ W_PSPROC buf;
+ first = 0;
+ memset (&buf, 0, sizeof(buf));
+ buf.ps_cmdptr = (char *) malloc (buf.ps_cmdlen = PS_CMDBLEN_LONG);
+ buf.ps_conttyptr = (char *) malloc (buf.ps_conttylen = PS_CONTTYBLEN);
+ buf.ps_pathptr = (char *) malloc (buf.ps_pathlen = PS_PATHBLEN);
+ if (buf.ps_cmdptr && buf.ps_conttyptr && buf.ps_pathptr)
+ {
+ for (token = 0; token >= 0;
+ token = w_getpsent (token, &buf, sizeof(buf)))
+ {
+ if (token > 0 && buf.ps_pid == pid)
+ {
+ char *s = strdup (last_component (buf.ps_pathptr));
+ if (s)
+ p = s;
+ break;
+ }
+ }
+ }
+ free (buf.ps_cmdptr);
+ free (buf.ps_conttyptr);
+ free (buf.ps_pathptr);
+ }
+ return p;
+# elif defined __sgi /* IRIX */
+ char filename[50];
+ int fd;
+
+ sprintf (filename, "/proc/pinfo/%d", (int) getpid ());
+ fd = open (filename, O_RDONLY);
+ if (0 <= fd)
+ {
+ prpsinfo_t buf;
+ int ioctl_ok = 0 <= ioctl (fd, PIOCPSINFO, &buf);
+ close (fd);
+ if (ioctl_ok)
+ {
+ char *name = buf.pr_fname;
+ size_t namesize = sizeof buf.pr_fname;
+ /* It may not be NUL-terminated. */
+ char *namenul = memchr (name, '\0', namesize);
+ size_t namelen = namenul ? namenul - name : namesize;
+ char *namecopy = malloc (namelen + 1);
+ if (namecopy)
+ {
+ namecopy[namelen] = '\0';
+ return memcpy (namecopy, name, namelen);
+ }
+ }
+ }
+ return NULL;
+# else
+# error "getprogname module not ported to this OS"
+# endif
+}
+
+#endif
+
+/*
+ * Hey Emacs!
+ * Local Variables:
+ * coding: utf-8
+ * End:
+ */
diff --git a/lib/getprogname.h b/lib/getprogname.h
new file mode 100644
index 0000000..676912b
--- /dev/null
+++ b/lib/getprogname.h
@@ -0,0 +1,40 @@
+/* Program name management.
+ Copyright (C) 2016-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _GL_GETPROGNAME_H
+#define _GL_GETPROGNAME_H
+
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Return the base name of the executing program.
+ On native Windows this will usually end in ".exe" or ".EXE". */
+#ifndef HAVE_GETPROGNAME
+extern char const *getprogname (void)
+# ifdef HAVE_DECL_PROGRAM_INVOCATION_NAME
+ _GL_ATTRIBUTE_PURE
+# endif
+ ;
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/lib/gettext.h b/lib/gettext.h
new file mode 100644
index 0000000..0bd1e13
--- /dev/null
+++ b/lib/gettext.h
@@ -0,0 +1,301 @@
+/* Convenience header for conditional use of GNU <libintl.h>.
+ Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2020 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _LIBGETTEXT_H
+#define _LIBGETTEXT_H 1
+
+/* NLS can be disabled through the configure --disable-nls option
+ or through "#define ENABLE NLS 0" before including this file. */
+#if defined ENABLE_NLS && ENABLE_NLS
+
+/* Get declarations of GNU message catalog functions. */
+# include <libintl.h>
+
+/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by
+ the gettext() and ngettext() macros. This is an alternative to calling
+ textdomain(), and is useful for libraries. */
+# ifdef DEFAULT_TEXT_DOMAIN
+# undef gettext
+# define gettext(Msgid) \
+ dgettext (DEFAULT_TEXT_DOMAIN, Msgid)
+# undef ngettext
+# define ngettext(Msgid1, Msgid2, N) \
+ dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N)
+# endif
+
+#else
+
+/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
+ chokes if dcgettext is defined as a macro. So include it now, to make
+ later inclusions of <locale.h> a NOP. We don't include <libintl.h>
+ as well because people using "gettext.h" will not include <libintl.h>,
+ and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
+ is OK. */
+#if defined(__sun)
+# include <locale.h>
+#endif
+
+/* Many header files from the libstdc++ coming with g++ 3.3 or newer include
+ <libintl.h>, which chokes if dcgettext is defined as a macro. So include
+ it now, to make later inclusions of <libintl.h> a NOP. */
+#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
+# include <cstdlib>
+# if (__GLIBC__ >= 2 && !defined __UCLIBC__) || _GLIBCXX_HAVE_LIBINTL_H
+# include <libintl.h>
+# endif
+#endif
+
+/* Disabled NLS.
+ The casts to 'const char *' serve the purpose of producing warnings
+ for invalid uses of the value returned from these functions.
+ On pre-ANSI systems without 'const', the config.h file is supposed to
+ contain "#define const". */
+# undef gettext
+# define gettext(Msgid) ((const char *) (Msgid))
+# undef dgettext
+# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))
+# undef dcgettext
+# define dcgettext(Domainname, Msgid, Category) \
+ ((void) (Category), dgettext (Domainname, Msgid))
+# undef ngettext
+# define ngettext(Msgid1, Msgid2, N) \
+ ((N) == 1 \
+ ? ((void) (Msgid2), (const char *) (Msgid1)) \
+ : ((void) (Msgid1), (const char *) (Msgid2)))
+# undef dngettext
+# define dngettext(Domainname, Msgid1, Msgid2, N) \
+ ((void) (Domainname), ngettext (Msgid1, Msgid2, N))
+# undef dcngettext
+# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
+ ((void) (Category), dngettext (Domainname, Msgid1, Msgid2, N))
+# undef textdomain
+# define textdomain(Domainname) ((const char *) (Domainname))
+# undef bindtextdomain
+# define bindtextdomain(Domainname, Dirname) \
+ ((void) (Domainname), (const char *) (Dirname))
+# undef bind_textdomain_codeset
+# define bind_textdomain_codeset(Domainname, Codeset) \
+ ((void) (Domainname), (const char *) (Codeset))
+
+#endif
+
+/* Prefer gnulib's setlocale override over libintl's setlocale override. */
+#ifdef GNULIB_defined_setlocale
+# undef setlocale
+# define setlocale rpl_setlocale
+#endif
+
+/* A pseudo function call that serves as a marker for the automated
+ extraction of messages, but does not call gettext(). The run-time
+ translation is done at a different place in the code.
+ The argument, String, should be a literal string. Concatenated strings
+ and other string expressions won't work.
+ The macro's expansion is not parenthesized, so that it is suitable as
+ initializer for static 'char[]' or 'const char[]' variables. */
+#define gettext_noop(String) String
+
+/* The separator between msgctxt and msgid in a .mo file. */
+#define GETTEXT_CONTEXT_GLUE "\004"
+
+/* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a
+ MSGID. MSGCTXT and MSGID must be string literals. MSGCTXT should be
+ short and rarely need to change.
+ The letter 'p' stands for 'particular' or 'special'. */
+#ifdef DEFAULT_TEXT_DOMAIN
+# define pgettext(Msgctxt, Msgid) \
+ pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#else
+# define pgettext(Msgctxt, Msgid) \
+ pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#endif
+#define dpgettext(Domainname, Msgctxt, Msgid) \
+ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
+#define dcpgettext(Domainname, Msgctxt, Msgid, Category) \
+ pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category)
+#ifdef DEFAULT_TEXT_DOMAIN
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+ npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#else
+# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
+ npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#endif
+#define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
+ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
+#define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \
+ npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+pgettext_aux (const char *domain,
+ const char *msg_ctxt_id, const char *msgid,
+ int category)
+{
+ const char *translation = dcgettext (domain, msg_ctxt_id, category);
+ if (translation == msg_ctxt_id)
+ return msgid;
+ else
+ return translation;
+}
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+npgettext_aux (const char *domain,
+ const char *msg_ctxt_id, const char *msgid,
+ const char *msgid_plural, unsigned long int n,
+ int category)
+{
+ const char *translation =
+ dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+ if (translation == msg_ctxt_id || translation == msgid_plural)
+ return (n == 1 ? msgid : msgid_plural);
+ else
+ return translation;
+}
+
+/* The same thing extended for non-constant arguments. Here MSGCTXT and MSGID
+ can be arbitrary expressions. But for string literals these macros are
+ less efficient than those above. */
+
+#include <string.h>
+
+/* GNULIB_NO_VLA can be defined to disable use of VLAs even if supported.
+ This relates to the -Wvla and -Wvla-larger-than warnings, enabled in
+ the default GCC many warnings set. This allows programs to disable use
+ of VLAs, which may be unintended, or may be awkward to support portably,
+ or may have security implications due to non-deterministic stack usage. */
+
+#if (!defined GNULIB_NO_VLA \
+ && (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \
+ /* || (__STDC_VERSION__ == 199901L && !defined __HP_cc)
+ || (__STDC_VERSION__ >= 201112L && !defined __STDC_NO_VLA__) */ ))
+# define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 1
+#else
+# define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 0
+#endif
+
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+#include <stdlib.h>
+#endif
+
+#define pgettext_expr(Msgctxt, Msgid) \
+ dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES)
+#define dpgettext_expr(Domainname, Msgctxt, Msgid) \
+ dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+dcpgettext_expr (const char *domain,
+ const char *msgctxt, const char *msgid,
+ int category)
+{
+ size_t msgctxt_len = strlen (msgctxt) + 1;
+ size_t msgid_len = strlen (msgid) + 1;
+ const char *translation;
+#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ char msg_ctxt_id[msgctxt_len + msgid_len];
+#else
+ char buf[1024];
+ char *msg_ctxt_id =
+ (msgctxt_len + msgid_len <= sizeof (buf)
+ ? buf
+ : (char *) malloc (msgctxt_len + msgid_len));
+ if (msg_ctxt_id != NULL)
+#endif
+ {
+ int found_translation;
+ memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
+ msg_ctxt_id[msgctxt_len - 1] = '\004';
+ memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
+ translation = dcgettext (domain, msg_ctxt_id, category);
+ found_translation = (translation != msg_ctxt_id);
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ if (msg_ctxt_id != buf)
+ free (msg_ctxt_id);
+#endif
+ if (found_translation)
+ return translation;
+ }
+ return msgid;
+}
+
+#define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \
+ dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
+#define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
+ dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static const char *
+dcnpgettext_expr (const char *domain,
+ const char *msgctxt, const char *msgid,
+ const char *msgid_plural, unsigned long int n,
+ int category)
+{
+ size_t msgctxt_len = strlen (msgctxt) + 1;
+ size_t msgid_len = strlen (msgid) + 1;
+ const char *translation;
+#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ char msg_ctxt_id[msgctxt_len + msgid_len];
+#else
+ char buf[1024];
+ char *msg_ctxt_id =
+ (msgctxt_len + msgid_len <= sizeof (buf)
+ ? buf
+ : (char *) malloc (msgctxt_len + msgid_len));
+ if (msg_ctxt_id != NULL)
+#endif
+ {
+ int found_translation;
+ memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
+ msg_ctxt_id[msgctxt_len - 1] = '\004';
+ memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
+ translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
+ found_translation = !(translation == msg_ctxt_id || translation == msgid_plural);
+#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
+ if (msg_ctxt_id != buf)
+ free (msg_ctxt_id);
+#endif
+ if (found_translation)
+ return translation;
+ }
+ return (n == 1 ? msgid : msgid_plural);
+}
+
+#endif /* _LIBGETTEXT_H */
diff --git a/glob/glob.c b/lib/glob.c
index f3911bc..adad16f 100644
--- a/glob/glob.c
+++ b/lib/glob.c
@@ -117,7 +117,7 @@ extern int errno;
/* When used in the GNU libc the symbol _DIRENT_HAVE_D_TYPE is available
if the `d_type' member for `struct dirent' is available. */
-#ifdef _DIRENT_HAVE_D_TYPE
+#if defined(_DIRENT_HAVE_D_TYPE) || defined(HAVE_STRUCT_DIRENT_D_TYPE)
# define HAVE_D_TYPE 1
#endif
@@ -226,9 +226,6 @@ extern char *alloca ();
# endif /* Not _AIX. */
# endif /* sparc or HAVE_ALLOCA_H. */
# endif /* GCC. */
-
-# define __alloca alloca
-
#endif
#ifndef __GNU_LIBRARY__
@@ -283,6 +280,14 @@ extern char *alloca ();
#endif
#include <glob.h>
+#if !defined __alloca
+# define __alloca alloca
+#endif
+
+#if !defined __stat
+# define __stat stat
+#endif
+
#ifdef HAVE_GETLOGIN_R
extern int getlogin_r __P ((char *, size_t));
#else
@@ -369,7 +374,7 @@ glob (pattern, flags, errfunc, pglob)
const char *dirname;
size_t dirlen;
int status;
- int oldcount;
+ size_t oldcount;
if (pattern == NULL || pglob == NULL || (flags & ~__GLOB_FLAGS) != 0)
{
@@ -389,7 +394,7 @@ glob (pattern, flags, errfunc, pglob)
{
/* Allocate working buffer large enough for our work. Note that
we have at least an opening and closing brace. */
- int firstc;
+ size_t firstc;
char *alt_start;
const char *p;
const char *next;
@@ -860,7 +865,7 @@ glob (pattern, flags, errfunc, pglob)
have to glob for the directory, and then glob for
the pattern in each directory found. */
glob_t dirs;
- register int i;
+ register size_t i;
status = glob (dirname,
((flags & (GLOB_ERR | GLOB_NOCHECK | GLOB_NOESCAPE))
@@ -1010,7 +1015,7 @@ glob (pattern, flags, errfunc, pglob)
if (dirlen > 0)
{
/* Stick the directory on the front of each name. */
- int ignore = oldcount;
+ size_t ignore = oldcount;
if ((flags & GLOB_DOOFFS) && ignore < pglob->gl_offs)
ignore = pglob->gl_offs;
@@ -1028,7 +1033,7 @@ glob (pattern, flags, errfunc, pglob)
if (flags & GLOB_MARK)
{
/* Append slashes to directory names. */
- int i;
+ size_t i;
struct stat st;
for (i = oldcount; i < pglob->gl_pathc; ++i)
if (((flags & GLOB_ALTDIRFUNC)
@@ -1072,7 +1077,7 @@ globfree (pglob)
{
if (pglob->gl_pathv != NULL)
{
- register int i;
+ register size_t i;
for (i = 0; i < pglob->gl_pathc; ++i)
if (pglob->gl_pathv[i] != NULL)
free ((__ptr_t) pglob->gl_pathv[i]);
@@ -1330,7 +1335,7 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob)
/* If we shall match only directories use the information
provided by the dirent call if possible. */
if ((flags & GLOB_ONLYDIR)
- && d->d_type != DT_UNKNOWN && d->d_type != DT_DIR)
+ && d->d_type != DT_UNKNOWN && d->d_type != DT_DIR && d->d_type != DT_LNK)
continue;
#endif
@@ -1413,7 +1418,7 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob)
memory_error:
{
- int save = errno;
+ save = errno;
if (flags & GLOB_ALTDIRFUNC)
(*pglob->gl_closedir) (stream);
else
diff --git a/glob/glob.h b/lib/glob.in.h
index 0992de3..0992de3 100644
--- a/glob/glob.h
+++ b/lib/glob.in.h
diff --git a/lib/intprops.h b/lib/intprops.h
new file mode 100644
index 0000000..dfbcaae
--- /dev/null
+++ b/lib/intprops.h
@@ -0,0 +1,584 @@
+/* intprops.h -- properties of integer types
+
+ Copyright (C) 2001-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* Written by Paul Eggert. */
+
+#ifndef _GL_INTPROPS_H
+#define _GL_INTPROPS_H
+
+#include <limits.h>
+
+/* Return a value with the common real type of E and V and the value of V.
+ Do not evaluate E. */
+#define _GL_INT_CONVERT(e, v) ((1 ? 0 : (e)) + (v))
+
+/* Act like _GL_INT_CONVERT (E, -V) but work around a bug in IRIX 6.5 cc; see
+ <https://lists.gnu.org/r/bug-gnulib/2011-05/msg00406.html>. */
+#define _GL_INT_NEGATE_CONVERT(e, v) ((1 ? 0 : (e)) - (v))
+
+/* The extra casts in the following macros work around compiler bugs,
+ e.g., in Cray C 5.0.3.0. */
+
+/* True if the arithmetic type T is an integer type. bool counts as
+ an integer. */
+#define TYPE_IS_INTEGER(t) ((t) 1.5 == 1)
+
+/* True if the real type T is signed. */
+#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+
+/* Return 1 if the real expression E, after promotion, has a
+ signed or floating type. Do not evaluate E. */
+#define EXPR_SIGNED(e) (_GL_INT_NEGATE_CONVERT (e, 1) < 0)
+
+
+/* Minimum and maximum values for integer types and expressions. */
+
+/* The width in bits of the integer type or expression T.
+ Do not evaluate T.
+ Padding bits are not supported; this is checked at compile-time below. */
+#define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT)
+
+/* The maximum and minimum values for the integer type T. */
+#define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t))
+#define TYPE_MAXIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) -1 \
+ : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1)))
+
+/* The maximum and minimum values for the type of the expression E,
+ after integer promotion. E is not evaluated. */
+#define _GL_INT_MINIMUM(e) \
+ (EXPR_SIGNED (e) \
+ ? ~ _GL_SIGNED_INT_MAXIMUM (e) \
+ : _GL_INT_CONVERT (e, 0))
+#define _GL_INT_MAXIMUM(e) \
+ (EXPR_SIGNED (e) \
+ ? _GL_SIGNED_INT_MAXIMUM (e) \
+ : _GL_INT_NEGATE_CONVERT (e, 1))
+#define _GL_SIGNED_INT_MAXIMUM(e) \
+ (((_GL_INT_CONVERT (e, 1) << (TYPE_WIDTH ((e) + 0) - 2)) - 1) * 2 + 1)
+
+/* Work around OpenVMS incompatibility with C99. */
+#if !defined LLONG_MAX && defined __INT64_MAX
+# define LLONG_MAX __INT64_MAX
+# define LLONG_MIN __INT64_MIN
+#endif
+
+/* This include file assumes that signed types are two's complement without
+ padding bits; the above macros have undefined behavior otherwise.
+ If this is a problem for you, please let us know how to fix it for your host.
+ This assumption is tested by the intprops-tests module. */
+
+/* Does the __typeof__ keyword work? This could be done by
+ 'configure', but for now it's easier to do it by hand. */
+#if (2 <= __GNUC__ \
+ || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \
+ || (0x5110 <= __SUNPRO_C && !__STDC__))
+# define _GL_HAVE___TYPEOF__ 1
+#else
+# define _GL_HAVE___TYPEOF__ 0
+#endif
+
+/* Return 1 if the integer type or expression T might be signed. Return 0
+ if it is definitely unsigned. This macro does not evaluate its argument,
+ and expands to an integer constant expression. */
+#if _GL_HAVE___TYPEOF__
+# define _GL_SIGNED_TYPE_OR_EXPR(t) TYPE_SIGNED (__typeof__ (t))
+#else
+# define _GL_SIGNED_TYPE_OR_EXPR(t) 1
+#endif
+
+/* Bound on length of the string representing an unsigned integer
+ value representable in B bits. log10 (2.0) < 146/485. The
+ smallest value of B where this bound is not tight is 2621. */
+#define INT_BITS_STRLEN_BOUND(b) (((b) * 146 + 484) / 485)
+
+/* Bound on length of the string representing an integer type or expression T.
+ Subtract 1 for the sign bit if T is signed, and then add 1 more for
+ a minus sign if needed.
+
+ Because _GL_SIGNED_TYPE_OR_EXPR sometimes returns 1 when its argument is
+ unsigned, this macro may overestimate the true bound by one byte when
+ applied to unsigned types of size 2, 4, 16, ... bytes. */
+#define INT_STRLEN_BOUND(t) \
+ (INT_BITS_STRLEN_BOUND (TYPE_WIDTH (t) - _GL_SIGNED_TYPE_OR_EXPR (t)) \
+ + _GL_SIGNED_TYPE_OR_EXPR (t))
+
+/* Bound on buffer size needed to represent an integer type or expression T,
+ including the terminating null. */
+#define INT_BUFSIZE_BOUND(t) (INT_STRLEN_BOUND (t) + 1)
+
+
+/* Range overflow checks.
+
+ The INT_<op>_RANGE_OVERFLOW macros return 1 if the corresponding C
+ operators might not yield numerically correct answers due to
+ arithmetic overflow. They do not rely on undefined or
+ implementation-defined behavior. Their implementations are simple
+ and straightforward, but they are a bit harder to use than the
+ INT_<op>_OVERFLOW macros described below.
+
+ Example usage:
+
+ long int i = ...;
+ long int j = ...;
+ if (INT_MULTIPLY_RANGE_OVERFLOW (i, j, LONG_MIN, LONG_MAX))
+ printf ("multiply would overflow");
+ else
+ printf ("product is %ld", i * j);
+
+ Restrictions on *_RANGE_OVERFLOW macros:
+
+ These macros do not check for all possible numerical problems or
+ undefined or unspecified behavior: they do not check for division
+ by zero, for bad shift counts, or for shifting negative numbers.
+
+ These macros may evaluate their arguments zero or multiple times,
+ so the arguments should not have side effects. The arithmetic
+ arguments (including the MIN and MAX arguments) must be of the same
+ integer type after the usual arithmetic conversions, and the type
+ must have minimum value MIN and maximum MAX. Unsigned types should
+ use a zero MIN of the proper type.
+
+ These macros are tuned for constant MIN and MAX. For commutative
+ operations such as A + B, they are also tuned for constant B. */
+
+/* Return 1 if A + B would overflow in [MIN,MAX] arithmetic.
+ See above for restrictions. */
+#define INT_ADD_RANGE_OVERFLOW(a, b, min, max) \
+ ((b) < 0 \
+ ? (a) < (min) - (b) \
+ : (max) - (b) < (a))
+
+/* Return 1 if A - B would overflow in [MIN,MAX] arithmetic.
+ See above for restrictions. */
+#define INT_SUBTRACT_RANGE_OVERFLOW(a, b, min, max) \
+ ((b) < 0 \
+ ? (max) + (b) < (a) \
+ : (a) < (min) + (b))
+
+/* Return 1 if - A would overflow in [MIN,MAX] arithmetic.
+ See above for restrictions. */
+#define INT_NEGATE_RANGE_OVERFLOW(a, min, max) \
+ ((min) < 0 \
+ ? (a) < - (max) \
+ : 0 < (a))
+
+/* Return 1 if A * B would overflow in [MIN,MAX] arithmetic.
+ See above for restrictions. Avoid && and || as they tickle
+ bugs in Sun C 5.11 2010/08/13 and other compilers; see
+ <https://lists.gnu.org/r/bug-gnulib/2011-05/msg00401.html>. */
+#define INT_MULTIPLY_RANGE_OVERFLOW(a, b, min, max) \
+ ((b) < 0 \
+ ? ((a) < 0 \
+ ? (a) < (max) / (b) \
+ : (b) == -1 \
+ ? 0 \
+ : (min) / (b) < (a)) \
+ : (b) == 0 \
+ ? 0 \
+ : ((a) < 0 \
+ ? (a) < (min) / (b) \
+ : (max) / (b) < (a)))
+
+/* Return 1 if A / B would overflow in [MIN,MAX] arithmetic.
+ See above for restrictions. Do not check for division by zero. */
+#define INT_DIVIDE_RANGE_OVERFLOW(a, b, min, max) \
+ ((min) < 0 && (b) == -1 && (a) < - (max))
+
+/* Return 1 if A % B would overflow in [MIN,MAX] arithmetic.
+ See above for restrictions. Do not check for division by zero.
+ Mathematically, % should never overflow, but on x86-like hosts
+ INT_MIN % -1 traps, and the C standard permits this, so treat this
+ as an overflow too. */
+#define INT_REMAINDER_RANGE_OVERFLOW(a, b, min, max) \
+ INT_DIVIDE_RANGE_OVERFLOW (a, b, min, max)
+
+/* Return 1 if A << B would overflow in [MIN,MAX] arithmetic.
+ See above for restrictions. Here, MIN and MAX are for A only, and B need
+ not be of the same type as the other arguments. The C standard says that
+ behavior is undefined for shifts unless 0 <= B < wordwidth, and that when
+ A is negative then A << B has undefined behavior and A >> B has
+ implementation-defined behavior, but do not check these other
+ restrictions. */
+#define INT_LEFT_SHIFT_RANGE_OVERFLOW(a, b, min, max) \
+ ((a) < 0 \
+ ? (a) < (min) >> (b) \
+ : (max) >> (b) < (a))
+
+/* True if __builtin_add_overflow (A, B, P) and __builtin_sub_overflow
+ (A, B, P) work when P is non-null. */
+#if 5 <= __GNUC__ && !defined __ICC
+# define _GL_HAS_BUILTIN_ADD_OVERFLOW 1
+#elif defined __has_builtin
+# define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow)
+#else
+# define _GL_HAS_BUILTIN_ADD_OVERFLOW 0
+#endif
+
+/* True if __builtin_mul_overflow (A, B, P) works when P is non-null. */
+#ifdef __clang__
+/* Work around Clang bug <https://bugs.llvm.org/show_bug.cgi?id=16404>. */
+# define _GL_HAS_BUILTIN_MUL_OVERFLOW 0
+#else
+# define _GL_HAS_BUILTIN_MUL_OVERFLOW _GL_HAS_BUILTIN_ADD_OVERFLOW
+#endif
+
+/* True if __builtin_add_overflow_p (A, B, C) works, and similarly for
+ __builtin_mul_overflow_p and __builtin_mul_overflow_p. */
+#define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__)
+
+/* The _GL*_OVERFLOW macros have the same restrictions as the
+ *_RANGE_OVERFLOW macros, except that they do not assume that operands
+ (e.g., A and B) have the same type as MIN and MAX. Instead, they assume
+ that the result (e.g., A + B) has that type. */
+#if _GL_HAS_BUILTIN_OVERFLOW_P
+# define _GL_ADD_OVERFLOW(a, b, min, max) \
+ __builtin_add_overflow_p (a, b, (__typeof__ ((a) + (b))) 0)
+# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \
+ __builtin_sub_overflow_p (a, b, (__typeof__ ((a) - (b))) 0)
+# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \
+ __builtin_mul_overflow_p (a, b, (__typeof__ ((a) * (b))) 0)
+#else
+# define _GL_ADD_OVERFLOW(a, b, min, max) \
+ ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \
+ : (a) < 0 ? (b) <= (a) + (b) \
+ : (b) < 0 ? (a) <= (a) + (b) \
+ : (a) + (b) < (b))
+# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \
+ ((min) < 0 ? INT_SUBTRACT_RANGE_OVERFLOW (a, b, min, max) \
+ : (a) < 0 ? 1 \
+ : (b) < 0 ? (a) - (b) <= (a) \
+ : (a) < (b))
+# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \
+ (((min) == 0 && (((a) < 0 && 0 < (b)) || ((b) < 0 && 0 < (a)))) \
+ || INT_MULTIPLY_RANGE_OVERFLOW (a, b, min, max))
+#endif
+#define _GL_DIVIDE_OVERFLOW(a, b, min, max) \
+ ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \
+ : (a) < 0 ? (b) <= (a) + (b) - 1 \
+ : (b) < 0 && (a) + (b) <= (a))
+#define _GL_REMAINDER_OVERFLOW(a, b, min, max) \
+ ((min) < 0 ? (b) == _GL_INT_NEGATE_CONVERT (min, 1) && (a) < - (max) \
+ : (a) < 0 ? (a) % (b) != ((max) - (b) + 1) % (b) \
+ : (b) < 0 && ! _GL_UNSIGNED_NEG_MULTIPLE (a, b, max))
+
+/* Return a nonzero value if A is a mathematical multiple of B, where
+ A is unsigned, B is negative, and MAX is the maximum value of A's
+ type. A's type must be the same as (A % B)'s type. Normally (A %
+ -B == 0) suffices, but things get tricky if -B would overflow. */
+#define _GL_UNSIGNED_NEG_MULTIPLE(a, b, max) \
+ (((b) < -_GL_SIGNED_INT_MAXIMUM (b) \
+ ? (_GL_SIGNED_INT_MAXIMUM (b) == (max) \
+ ? (a) \
+ : (a) % (_GL_INT_CONVERT (a, _GL_SIGNED_INT_MAXIMUM (b)) + 1)) \
+ : (a) % - (b)) \
+ == 0)
+
+/* Check for integer overflow, and report low order bits of answer.
+
+ The INT_<op>_OVERFLOW macros return 1 if the corresponding C operators
+ might not yield numerically correct answers due to arithmetic overflow.
+ The INT_<op>_WRAPV macros compute the low-order bits of the sum,
+ difference, and product of two C integers, and return 1 if these
+ low-order bits are not numerically correct.
+ These macros work correctly on all known practical hosts, and do not rely
+ on undefined behavior due to signed arithmetic overflow.
+
+ Example usage, assuming A and B are long int:
+
+ if (INT_MULTIPLY_OVERFLOW (a, b))
+ printf ("result would overflow\n");
+ else
+ printf ("result is %ld (no overflow)\n", a * b);
+
+ Example usage with WRAPV flavor:
+
+ long int result;
+ bool overflow = INT_MULTIPLY_WRAPV (a, b, &result);
+ printf ("result is %ld (%s)\n", result,
+ overflow ? "after overflow" : "no overflow");
+
+ Restrictions on these macros:
+
+ These macros do not check for all possible numerical problems or
+ undefined or unspecified behavior: they do not check for division
+ by zero, for bad shift counts, or for shifting negative numbers.
+
+ These macros may evaluate their arguments zero or multiple times, so the
+ arguments should not have side effects.
+
+ The WRAPV macros are not constant expressions. They support only
+ +, binary -, and *. Because the WRAPV macros convert the result,
+ they report overflow in different circumstances than the OVERFLOW
+ macros do.
+
+ These macros are tuned for their last input argument being a constant.
+
+ Return 1 if the integer expressions A * B, A - B, -A, A * B, A / B,
+ A % B, and A << B would overflow, respectively. */
+
+#define INT_ADD_OVERFLOW(a, b) \
+ _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW)
+#define INT_SUBTRACT_OVERFLOW(a, b) \
+ _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW)
+#if _GL_HAS_BUILTIN_OVERFLOW_P
+# define INT_NEGATE_OVERFLOW(a) INT_SUBTRACT_OVERFLOW (0, a)
+#else
+# define INT_NEGATE_OVERFLOW(a) \
+ INT_NEGATE_RANGE_OVERFLOW (a, _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a))
+#endif
+#define INT_MULTIPLY_OVERFLOW(a, b) \
+ _GL_BINARY_OP_OVERFLOW (a, b, _GL_MULTIPLY_OVERFLOW)
+#define INT_DIVIDE_OVERFLOW(a, b) \
+ _GL_BINARY_OP_OVERFLOW (a, b, _GL_DIVIDE_OVERFLOW)
+#define INT_REMAINDER_OVERFLOW(a, b) \
+ _GL_BINARY_OP_OVERFLOW (a, b, _GL_REMAINDER_OVERFLOW)
+#define INT_LEFT_SHIFT_OVERFLOW(a, b) \
+ INT_LEFT_SHIFT_RANGE_OVERFLOW (a, b, \
+ _GL_INT_MINIMUM (a), _GL_INT_MAXIMUM (a))
+
+/* Return 1 if the expression A <op> B would overflow,
+ where OP_RESULT_OVERFLOW (A, B, MIN, MAX) does the actual test,
+ assuming MIN and MAX are the minimum and maximum for the result type.
+ Arguments should be free of side effects. */
+#define _GL_BINARY_OP_OVERFLOW(a, b, op_result_overflow) \
+ op_result_overflow (a, b, \
+ _GL_INT_MINIMUM (_GL_INT_CONVERT (a, b)), \
+ _GL_INT_MAXIMUM (_GL_INT_CONVERT (a, b)))
+
+/* Store the low-order bits of A + B, A - B, A * B, respectively, into *R.
+ Return 1 if the result overflows. See above for restrictions. */
+#if _GL_HAS_BUILTIN_ADD_OVERFLOW
+# define INT_ADD_WRAPV(a, b, r) __builtin_add_overflow (a, b, r)
+# define INT_SUBTRACT_WRAPV(a, b, r) __builtin_sub_overflow (a, b, r)
+#else
+# define INT_ADD_WRAPV(a, b, r) \
+ _GL_INT_OP_WRAPV (a, b, r, +, _GL_INT_ADD_RANGE_OVERFLOW)
+# define INT_SUBTRACT_WRAPV(a, b, r) \
+ _GL_INT_OP_WRAPV (a, b, r, -, _GL_INT_SUBTRACT_RANGE_OVERFLOW)
+#endif
+#if _GL_HAS_BUILTIN_MUL_OVERFLOW
+# if (9 < __GNUC__ + (3 <= __GNUC_MINOR__) \
+ || (__GNUC__ == 8 && 4 <= __GNUC_MINOR__))
+# define INT_MULTIPLY_WRAPV(a, b, r) __builtin_mul_overflow (a, b, r)
+# else
+ /* Work around GCC bug 91450. */
+# define INT_MULTIPLY_WRAPV(a, b, r) \
+ ((!_GL_SIGNED_TYPE_OR_EXPR (*(r)) && EXPR_SIGNED (a) && EXPR_SIGNED (b) \
+ && _GL_INT_MULTIPLY_RANGE_OVERFLOW (a, b, 0, (__typeof__ (*(r))) -1)) \
+ ? ((void) __builtin_mul_overflow (a, b, r), 1) \
+ : __builtin_mul_overflow (a, b, r))
+# endif
+#else
+# define INT_MULTIPLY_WRAPV(a, b, r) \
+ _GL_INT_OP_WRAPV (a, b, r, *, _GL_INT_MULTIPLY_RANGE_OVERFLOW)
+#endif
+
+/* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See:
+ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193
+ https://llvm.org/bugs/show_bug.cgi?id=25390
+ For now, assume all versions of GCC-like compilers generate bogus
+ warnings for _Generic. This matters only for compilers that
+ lack relevant builtins. */
+#if __GNUC__
+# define _GL__GENERIC_BOGUS 1
+#else
+# define _GL__GENERIC_BOGUS 0
+#endif
+
+/* Store the low-order bits of A <op> B into *R, where OP specifies
+ the operation and OVERFLOW the overflow predicate. Return 1 if the
+ result overflows. See above for restrictions. */
+#if 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS
+# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \
+ (_Generic \
+ (*(r), \
+ signed char: \
+ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+ signed char, SCHAR_MIN, SCHAR_MAX), \
+ unsigned char: \
+ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+ unsigned char, 0, UCHAR_MAX), \
+ short int: \
+ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+ short int, SHRT_MIN, SHRT_MAX), \
+ unsigned short int: \
+ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+ unsigned short int, 0, USHRT_MAX), \
+ int: \
+ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+ int, INT_MIN, INT_MAX), \
+ unsigned int: \
+ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+ unsigned int, 0, UINT_MAX), \
+ long int: \
+ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
+ long int, LONG_MIN, LONG_MAX), \
+ unsigned long int: \
+ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
+ unsigned long int, 0, ULONG_MAX), \
+ long long int: \
+ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \
+ long long int, LLONG_MIN, LLONG_MAX), \
+ unsigned long long int: \
+ _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \
+ unsigned long long int, 0, ULLONG_MAX)))
+#else
+/* Store the low-order bits of A <op> B into *R, where OP specifies
+ the operation and OVERFLOW the overflow predicate. If *R is
+ signed, its type is ST with bounds SMIN..SMAX; otherwise its type
+ is UT with bounds U..UMAX. ST and UT are narrower than int.
+ Return 1 if the result overflows. See above for restrictions. */
+# if _GL_HAVE___TYPEOF__
+# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \
+ (TYPE_SIGNED (__typeof__ (*(r))) \
+ ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, st, smin, smax) \
+ : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, ut, 0, umax))
+# else
+# define _GL_INT_OP_WRAPV_SMALLISH(a,b,r,op,overflow,st,smin,smax,ut,umax) \
+ (overflow (a, b, smin, smax) \
+ ? (overflow (a, b, 0, umax) \
+ ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 1) \
+ : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) < 0) \
+ : (overflow (a, b, 0, umax) \
+ ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st)) >= 0 \
+ : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a,b,op,unsigned,st), 0)))
+# endif
+
+# define _GL_INT_OP_WRAPV(a, b, r, op, overflow) \
+ (sizeof *(r) == sizeof (signed char) \
+ ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \
+ signed char, SCHAR_MIN, SCHAR_MAX, \
+ unsigned char, UCHAR_MAX) \
+ : sizeof *(r) == sizeof (short int) \
+ ? _GL_INT_OP_WRAPV_SMALLISH (a, b, r, op, overflow, \
+ short int, SHRT_MIN, SHRT_MAX, \
+ unsigned short int, USHRT_MAX) \
+ : sizeof *(r) == sizeof (int) \
+ ? (EXPR_SIGNED (*(r)) \
+ ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+ int, INT_MIN, INT_MAX) \
+ : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned int, \
+ unsigned int, 0, UINT_MAX)) \
+ : _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow))
+# ifdef LLONG_MAX
+# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \
+ (sizeof *(r) == sizeof (long int) \
+ ? (EXPR_SIGNED (*(r)) \
+ ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
+ long int, LONG_MIN, LONG_MAX) \
+ : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
+ unsigned long int, 0, ULONG_MAX)) \
+ : (EXPR_SIGNED (*(r)) \
+ ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \
+ long long int, LLONG_MIN, LLONG_MAX) \
+ : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long long int, \
+ unsigned long long int, 0, ULLONG_MAX)))
+# else
+# define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \
+ (EXPR_SIGNED (*(r)) \
+ ? _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
+ long int, LONG_MIN, LONG_MAX) \
+ : _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \
+ unsigned long int, 0, ULONG_MAX))
+# endif
+#endif
+
+/* Store the low-order bits of A <op> B into *R, where the operation
+ is given by OP. Use the unsigned type UT for calculation to avoid
+ overflow problems. *R's type is T, with extrema TMIN and TMAX.
+ T must be a signed integer type. Return 1 if the result overflows. */
+#define _GL_INT_OP_CALC(a, b, r, op, overflow, ut, t, tmin, tmax) \
+ (overflow (a, b, tmin, tmax) \
+ ? (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 1) \
+ : (*(r) = _GL_INT_OP_WRAPV_VIA_UNSIGNED (a, b, op, ut, t), 0))
+
+/* Return the low-order bits of A <op> B, where the operation is given
+ by OP. Use the unsigned type UT for calculation to avoid undefined
+ behavior on signed integer overflow, and convert the result to type T.
+ UT is at least as wide as T and is no narrower than unsigned int,
+ T is two's complement, and there is no padding or trap representations.
+ Assume that converting UT to T yields the low-order bits, as is
+ done in all known two's-complement C compilers. E.g., see:
+ https://gcc.gnu.org/onlinedocs/gcc/Integers-implementation.html
+
+ According to the C standard, converting UT to T yields an
+ implementation-defined result or signal for values outside T's
+ range. However, code that works around this theoretical problem
+ runs afoul of a compiler bug in Oracle Studio 12.3 x86. See:
+ https://lists.gnu.org/r/bug-gnulib/2017-04/msg00049.html
+ As the compiler bug is real, don't try to work around the
+ theoretical problem. */
+
+#define _GL_INT_OP_WRAPV_VIA_UNSIGNED(a, b, op, ut, t) \
+ ((t) ((ut) (a) op (ut) (b)))
+
+/* Return true if the numeric values A + B, A - B, A * B fall outside
+ the range TMIN..TMAX. Arguments should be integer expressions
+ without side effects. TMIN should be signed and nonpositive.
+ TMAX should be positive, and should be signed unless TMIN is zero. */
+#define _GL_INT_ADD_RANGE_OVERFLOW(a, b, tmin, tmax) \
+ ((b) < 0 \
+ ? (((tmin) \
+ ? ((EXPR_SIGNED (_GL_INT_CONVERT (a, (tmin) - (b))) || (b) < (tmin)) \
+ && (a) < (tmin) - (b)) \
+ : (a) <= -1 - (b)) \
+ || ((EXPR_SIGNED (a) ? 0 <= (a) : (tmax) < (a)) && (tmax) < (a) + (b))) \
+ : (a) < 0 \
+ ? (((tmin) \
+ ? ((EXPR_SIGNED (_GL_INT_CONVERT (b, (tmin) - (a))) || (a) < (tmin)) \
+ && (b) < (tmin) - (a)) \
+ : (b) <= -1 - (a)) \
+ || ((EXPR_SIGNED (_GL_INT_CONVERT (a, b)) || (tmax) < (b)) \
+ && (tmax) < (a) + (b))) \
+ : (tmax) < (b) || (tmax) - (b) < (a))
+#define _GL_INT_SUBTRACT_RANGE_OVERFLOW(a, b, tmin, tmax) \
+ (((a) < 0) == ((b) < 0) \
+ ? ((a) < (b) \
+ ? !(tmin) || -1 - (tmin) < (b) - (a) - 1 \
+ : (tmax) < (a) - (b)) \
+ : (a) < 0 \
+ ? ((!EXPR_SIGNED (_GL_INT_CONVERT ((a) - (tmin), b)) && (a) - (tmin) < 0) \
+ || (a) - (tmin) < (b)) \
+ : ((! (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \
+ && EXPR_SIGNED (_GL_INT_CONVERT ((tmax) + (b), a))) \
+ && (tmax) <= -1 - (b)) \
+ || (tmax) + (b) < (a)))
+#define _GL_INT_MULTIPLY_RANGE_OVERFLOW(a, b, tmin, tmax) \
+ ((b) < 0 \
+ ? ((a) < 0 \
+ ? (EXPR_SIGNED (_GL_INT_CONVERT (tmax, b)) \
+ ? (a) < (tmax) / (b) \
+ : ((INT_NEGATE_OVERFLOW (b) \
+ ? _GL_INT_CONVERT (b, tmax) >> (TYPE_WIDTH (b) - 1) \
+ : (tmax) / -(b)) \
+ <= -1 - (a))) \
+ : INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (b, tmin)) && (b) == -1 \
+ ? (EXPR_SIGNED (a) \
+ ? 0 < (a) + (tmin) \
+ : 0 < (a) && -1 - (tmin) < (a) - 1) \
+ : (tmin) / (b) < (a)) \
+ : (b) == 0 \
+ ? 0 \
+ : ((a) < 0 \
+ ? (INT_NEGATE_OVERFLOW (_GL_INT_CONVERT (a, tmin)) && (a) == -1 \
+ ? (EXPR_SIGNED (b) ? 0 < (b) + (tmin) : -1 - (tmin) < (b) - 1) \
+ : (tmin) / (a) < (b)) \
+ : (tmax) / (b) < (a)))
+
+#endif /* _GL_INTPROPS_H */
diff --git a/lib/limits.in.h b/lib/limits.in.h
new file mode 100644
index 0000000..90c273f
--- /dev/null
+++ b/lib/limits.in.h
@@ -0,0 +1,104 @@
+/* A GNU-like <limits.h>.
+
+ Copyright 2016-2020 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation; either version 3, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _@GUARD_PREFIX@_LIMITS_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* The include_next requires a split double-inclusion guard. */
+#@INCLUDE_NEXT@ @NEXT_LIMITS_H@
+
+#ifndef _@GUARD_PREFIX@_LIMITS_H
+#define _@GUARD_PREFIX@_LIMITS_H
+
+#ifndef LLONG_MIN
+# if defined LONG_LONG_MIN /* HP-UX 11.31 */
+# define LLONG_MIN LONG_LONG_MIN
+# elif defined LONGLONG_MIN /* IRIX 6.5 */
+# define LLONG_MIN LONGLONG_MIN
+# elif defined __GNUC__
+# define LLONG_MIN (- __LONG_LONG_MAX__ - 1LL)
+# endif
+#endif
+#ifndef LLONG_MAX
+# if defined LONG_LONG_MAX /* HP-UX 11.31 */
+# define LLONG_MAX LONG_LONG_MAX
+# elif defined LONGLONG_MAX /* IRIX 6.5 */
+# define LLONG_MAX LONGLONG_MAX
+# elif defined __GNUC__
+# define LLONG_MAX __LONG_LONG_MAX__
+# endif
+#endif
+#ifndef ULLONG_MAX
+# if defined ULONG_LONG_MAX /* HP-UX 11.31 */
+# define ULLONG_MAX ULONG_LONG_MAX
+# elif defined ULONGLONG_MAX /* IRIX 6.5 */
+# define ULLONG_MAX ULONGLONG_MAX
+# elif defined __GNUC__
+# define ULLONG_MAX (__LONG_LONG_MAX__ * 2ULL + 1ULL)
+# endif
+#endif
+
+/* The number of usable bits in an unsigned or signed integer type
+ with minimum value MIN and maximum value MAX, as an int expression
+ suitable in #if. Cover all known practical hosts. This
+ implementation exploits the fact that MAX is 1 less than a power of
+ 2, and merely counts the number of 1 bits in MAX; "COBn" means
+ "count the number of 1 bits in the low-order n bits"). */
+#define _GL_INTEGER_WIDTH(min, max) (((min) < 0) + _GL_COB128 (max))
+#define _GL_COB128(n) (_GL_COB64 ((n) >> 31 >> 31 >> 2) + _GL_COB64 (n))
+#define _GL_COB64(n) (_GL_COB32 ((n) >> 31 >> 1) + _GL_COB32 (n))
+#define _GL_COB32(n) (_GL_COB16 ((n) >> 16) + _GL_COB16 (n))
+#define _GL_COB16(n) (_GL_COB8 ((n) >> 8) + _GL_COB8 (n))
+#define _GL_COB8(n) (_GL_COB4 ((n) >> 4) + _GL_COB4 (n))
+#define _GL_COB4(n) (!!((n) & 8) + !!((n) & 4) + !!((n) & 2) + !!((n) & 1))
+
+#ifndef WORD_BIT
+/* Assume 'int' is 32 bits wide. */
+# define WORD_BIT 32
+#endif
+#ifndef LONG_BIT
+/* Assume 'long' is 32 or 64 bits wide. */
+# if LONG_MAX == INT_MAX
+# define LONG_BIT 32
+# else
+# define LONG_BIT 64
+# endif
+#endif
+
+/* Macros specified by ISO/IEC TS 18661-1:2014. */
+
+#if (! defined ULLONG_WIDTH \
+ && (defined _GNU_SOURCE || defined __STDC_WANT_IEC_60559_BFP_EXT__))
+# define CHAR_WIDTH _GL_INTEGER_WIDTH (CHAR_MIN, CHAR_MAX)
+# define SCHAR_WIDTH _GL_INTEGER_WIDTH (SCHAR_MIN, SCHAR_MAX)
+# define UCHAR_WIDTH _GL_INTEGER_WIDTH (0, UCHAR_MAX)
+# define SHRT_WIDTH _GL_INTEGER_WIDTH (SHRT_MIN, SHRT_MAX)
+# define USHRT_WIDTH _GL_INTEGER_WIDTH (0, USHRT_MAX)
+# define INT_WIDTH _GL_INTEGER_WIDTH (INT_MIN, INT_MAX)
+# define UINT_WIDTH _GL_INTEGER_WIDTH (0, UINT_MAX)
+# define LONG_WIDTH _GL_INTEGER_WIDTH (LONG_MIN, LONG_MAX)
+# define ULONG_WIDTH _GL_INTEGER_WIDTH (0, ULONG_MAX)
+# define LLONG_WIDTH _GL_INTEGER_WIDTH (LLONG_MIN, LLONG_MAX)
+# define ULLONG_WIDTH _GL_INTEGER_WIDTH (0, ULLONG_MAX)
+#endif /* !ULLONG_WIDTH && (_GNU_SOURCE || __STDC_WANT_IEC_60559_BFP_EXT__) */
+
+#endif /* _@GUARD_PREFIX@_LIMITS_H */
+#endif /* _@GUARD_PREFIX@_LIMITS_H */
diff --git a/lib/malloc.c b/lib/malloc.c
new file mode 100644
index 0000000..7232f1e
--- /dev/null
+++ b/lib/malloc.c
@@ -0,0 +1,56 @@
+/* malloc() function that is glibc compatible.
+
+ Copyright (C) 1997-1998, 2006-2007, 2009-2020 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <https://www.gnu.org/licenses/>. */
+
+/* written by Jim Meyering and Bruno Haible */
+
+#define _GL_USE_STDLIB_ALLOC 1
+#include <config.h>
+/* Only the AC_FUNC_MALLOC macro defines 'malloc' already in config.h. */
+#ifdef malloc
+# define NEED_MALLOC_GNU 1
+# undef malloc
+/* Whereas the gnulib module 'malloc-gnu' defines HAVE_MALLOC_GNU. */
+#elif GNULIB_MALLOC_GNU && !HAVE_MALLOC_GNU
+# define NEED_MALLOC_GNU 1
+#endif
+
+#include <stdlib.h>
+
+#include <errno.h>
+
+/* Allocate an N-byte block of memory from the heap.
+ If N is zero, allocate a 1-byte block. */
+
+void *
+rpl_malloc (size_t n)
+{
+ void *result;
+
+#if NEED_MALLOC_GNU
+ if (n == 0)
+ n = 1;
+#endif
+
+ result = malloc (n);
+
+#if !HAVE_MALLOC_POSIX
+ if (result == NULL)
+ errno = ENOMEM;
+#endif
+
+ return result;
+}
diff --git a/lib/msvc-inval.c b/lib/msvc-inval.c
new file mode 100644
index 0000000..8636688
--- /dev/null
+++ b/lib/msvc-inval.c
@@ -0,0 +1,129 @@
+/* Invalid parameter handler for MSVC runtime libraries.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "msvc-inval.h"
+
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER \
+ && !(MSVC_INVALID_PARAMETER_HANDLING == SANE_LIBRARY_HANDLING)
+
+/* Get _invalid_parameter_handler type and _set_invalid_parameter_handler
+ declaration. */
+# include <stdlib.h>
+
+# if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING
+
+static void __cdecl
+gl_msvc_invalid_parameter_handler (const wchar_t *expression,
+ const wchar_t *function,
+ const wchar_t *file,
+ unsigned int line,
+ uintptr_t dummy)
+{
+}
+
+# else
+
+/* Get declarations of the native Windows API functions. */
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+
+# if defined _MSC_VER
+
+static void __cdecl
+gl_msvc_invalid_parameter_handler (const wchar_t *expression,
+ const wchar_t *function,
+ const wchar_t *file,
+ unsigned int line,
+ uintptr_t dummy)
+{
+ RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL);
+}
+
+# else
+
+/* An index to thread-local storage. */
+static DWORD tls_index;
+static int tls_initialized /* = 0 */;
+
+/* Used as a fallback only. */
+static struct gl_msvc_inval_per_thread not_per_thread;
+
+struct gl_msvc_inval_per_thread *
+gl_msvc_inval_current (void)
+{
+ if (!tls_initialized)
+ {
+ tls_index = TlsAlloc ();
+ tls_initialized = 1;
+ }
+ if (tls_index == TLS_OUT_OF_INDEXES)
+ /* TlsAlloc had failed. */
+ return &not_per_thread;
+ else
+ {
+ struct gl_msvc_inval_per_thread *pointer =
+ (struct gl_msvc_inval_per_thread *) TlsGetValue (tls_index);
+ if (pointer == NULL)
+ {
+ /* First call. Allocate a new 'struct gl_msvc_inval_per_thread'. */
+ pointer =
+ (struct gl_msvc_inval_per_thread *)
+ malloc (sizeof (struct gl_msvc_inval_per_thread));
+ if (pointer == NULL)
+ /* Could not allocate memory. Use the global storage. */
+ pointer = &not_per_thread;
+ TlsSetValue (tls_index, pointer);
+ }
+ return pointer;
+ }
+}
+
+static void __cdecl
+gl_msvc_invalid_parameter_handler (const wchar_t *expression,
+ const wchar_t *function,
+ const wchar_t *file,
+ unsigned int line,
+ uintptr_t dummy)
+{
+ struct gl_msvc_inval_per_thread *current = gl_msvc_inval_current ();
+ if (current->restart_valid)
+ longjmp (current->restart, 1);
+ else
+ /* An invalid parameter notification from outside the gnulib code.
+ Give the caller a chance to intervene. */
+ RaiseException (STATUS_GNULIB_INVALID_PARAMETER, 0, 0, NULL);
+}
+
+# endif
+
+# endif
+
+static int gl_msvc_inval_initialized /* = 0 */;
+
+void
+gl_msvc_inval_ensure_handler (void)
+{
+ if (gl_msvc_inval_initialized == 0)
+ {
+ _set_invalid_parameter_handler (gl_msvc_invalid_parameter_handler);
+ gl_msvc_inval_initialized = 1;
+ }
+}
+
+#endif
diff --git a/lib/msvc-inval.h b/lib/msvc-inval.h
new file mode 100644
index 0000000..93ee785
--- /dev/null
+++ b/lib/msvc-inval.h
@@ -0,0 +1,222 @@
+/* Invalid parameter handler for MSVC runtime libraries.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _MSVC_INVAL_H
+#define _MSVC_INVAL_H
+
+/* With MSVC runtime libraries with the "invalid parameter handler" concept,
+ functions like fprintf(), dup2(), or close() crash when the caller passes
+ an invalid argument. But POSIX wants error codes (such as EINVAL or EBADF)
+ instead.
+ This file defines macros that turn such an invalid parameter notification
+ into a non-local exit. An error code can then be produced at the target
+ of this exit. You can thus write code like
+
+ TRY_MSVC_INVAL
+ {
+ <Code that can trigger an invalid parameter notification
+ but does not do 'return', 'break', 'continue', nor 'goto'.>
+ }
+ CATCH_MSVC_INVAL
+ {
+ <Code that handles an invalid parameter notification
+ but does not do 'return', 'break', 'continue', nor 'goto'.>
+ }
+ DONE_MSVC_INVAL;
+
+ This entire block expands to a single statement.
+
+ The handling of invalid parameters can be done in three ways:
+
+ * The default way, which is reasonable for programs (not libraries):
+ AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [DEFAULT_HANDLING])
+
+ * The way for libraries that make "hairy" calls (like close(-1), or
+ fclose(fp) where fileno(fp) is closed, or simply getdtablesize()):
+ AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [HAIRY_LIBRARY_HANDLING])
+
+ * The way for libraries that make no "hairy" calls:
+ AC_DEFINE([MSVC_INVALID_PARAMETER_HANDLING], [SANE_LIBRARY_HANDLING])
+ */
+
+#define DEFAULT_HANDLING 0
+#define HAIRY_LIBRARY_HANDLING 1
+#define SANE_LIBRARY_HANDLING 2
+
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER \
+ && !(MSVC_INVALID_PARAMETER_HANDLING == SANE_LIBRARY_HANDLING)
+/* A native Windows platform with the "invalid parameter handler" concept,
+ and either DEFAULT_HANDLING or HAIRY_LIBRARY_HANDLING. */
+
+# if MSVC_INVALID_PARAMETER_HANDLING == DEFAULT_HANDLING
+/* Default handling. */
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+/* Ensure that the invalid parameter handler in installed that just returns.
+ Because we assume no other part of the program installs a different
+ invalid parameter handler, this solution is multithread-safe. */
+extern void gl_msvc_inval_ensure_handler (void);
+
+# ifdef __cplusplus
+}
+# endif
+
+# define TRY_MSVC_INVAL \
+ do \
+ { \
+ gl_msvc_inval_ensure_handler (); \
+ if (1)
+# define CATCH_MSVC_INVAL \
+ else
+# define DONE_MSVC_INVAL \
+ } \
+ while (0)
+
+# else
+/* Handling for hairy libraries. */
+
+# include <excpt.h>
+
+/* Gnulib can define its own status codes, as described in the page
+ "Raising Software Exceptions" on microsoft.com
+ <https://docs.microsoft.com/en-us/cpp/cpp/raising-software-exceptions>.
+ Our status codes are composed of
+ - 0xE0000000, mandatory for all user-defined status codes,
+ - 0x474E550, a API identifier ("GNU"),
+ - 0, 1, 2, ..., used to distinguish different status codes from the
+ same API. */
+# define STATUS_GNULIB_INVALID_PARAMETER (0xE0000000 + 0x474E550 + 0)
+
+# if defined _MSC_VER
+/* A compiler that supports __try/__except, as described in the page
+ "try-except statement" on microsoft.com
+ <https://docs.microsoft.com/en-us/cpp/cpp/try-except-statement>.
+ With __try/__except, we can use the multithread-safe exception handling. */
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+/* Ensure that the invalid parameter handler in installed that raises a
+ software exception with code STATUS_GNULIB_INVALID_PARAMETER.
+ Because we assume no other part of the program installs a different
+ invalid parameter handler, this solution is multithread-safe. */
+extern void gl_msvc_inval_ensure_handler (void);
+
+# ifdef __cplusplus
+}
+# endif
+
+# define TRY_MSVC_INVAL \
+ do \
+ { \
+ gl_msvc_inval_ensure_handler (); \
+ __try
+# define CATCH_MSVC_INVAL \
+ __except (GetExceptionCode () == STATUS_GNULIB_INVALID_PARAMETER \
+ ? EXCEPTION_EXECUTE_HANDLER \
+ : EXCEPTION_CONTINUE_SEARCH)
+# define DONE_MSVC_INVAL \
+ } \
+ while (0)
+
+# else
+/* Any compiler.
+ We can only use setjmp/longjmp. */
+
+# include <setjmp.h>
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+struct gl_msvc_inval_per_thread
+{
+ /* The restart that will resume execution at the code between
+ CATCH_MSVC_INVAL and DONE_MSVC_INVAL. It is enabled only between
+ TRY_MSVC_INVAL and CATCH_MSVC_INVAL. */
+ jmp_buf restart;
+
+ /* Tells whether the contents of restart is valid. */
+ int restart_valid;
+};
+
+/* Ensure that the invalid parameter handler in installed that passes
+ control to the gl_msvc_inval_restart if it is valid, or raises a
+ software exception with code STATUS_GNULIB_INVALID_PARAMETER otherwise.
+ Because we assume no other part of the program installs a different
+ invalid parameter handler, this solution is multithread-safe. */
+extern void gl_msvc_inval_ensure_handler (void);
+
+/* Return a pointer to the per-thread data for the current thread. */
+extern struct gl_msvc_inval_per_thread *gl_msvc_inval_current (void);
+
+# ifdef __cplusplus
+}
+# endif
+
+# define TRY_MSVC_INVAL \
+ do \
+ { \
+ struct gl_msvc_inval_per_thread *msvc_inval_current; \
+ gl_msvc_inval_ensure_handler (); \
+ msvc_inval_current = gl_msvc_inval_current (); \
+ /* First, initialize gl_msvc_inval_restart. */ \
+ if (setjmp (msvc_inval_current->restart) == 0) \
+ { \
+ /* Then, mark it as valid. */ \
+ msvc_inval_current->restart_valid = 1;
+# define CATCH_MSVC_INVAL \
+ /* Execution completed. \
+ Mark gl_msvc_inval_restart as invalid. */ \
+ msvc_inval_current->restart_valid = 0; \
+ } \
+ else \
+ { \
+ /* Execution triggered an invalid parameter notification. \
+ Mark gl_msvc_inval_restart as invalid. */ \
+ msvc_inval_current->restart_valid = 0;
+# define DONE_MSVC_INVAL \
+ } \
+ } \
+ while (0)
+
+# endif
+
+# endif
+
+#else
+/* A platform that does not need to the invalid parameter handler,
+ or when SANE_LIBRARY_HANDLING is desired. */
+
+/* The braces here avoid GCC warnings like
+ "warning: suggest explicit braces to avoid ambiguous 'else'". */
+# define TRY_MSVC_INVAL \
+ do \
+ { \
+ if (1)
+# define CATCH_MSVC_INVAL \
+ else
+# define DONE_MSVC_INVAL \
+ } \
+ while (0)
+
+#endif
+
+#endif /* _MSVC_INVAL_H */
diff --git a/lib/msvc-nothrow.c b/lib/msvc-nothrow.c
new file mode 100644
index 0000000..bf93b88
--- /dev/null
+++ b/lib/msvc-nothrow.c
@@ -0,0 +1,51 @@
+/* Wrappers that don't throw invalid parameter notifications
+ with MSVC runtime libraries.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "msvc-nothrow.h"
+
+/* Get declarations of the native Windows API functions. */
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+# include "msvc-inval.h"
+#endif
+
+#undef _get_osfhandle
+
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+intptr_t
+_gl_nothrow_get_osfhandle (int fd)
+{
+ intptr_t result;
+
+ TRY_MSVC_INVAL
+ {
+ result = _get_osfhandle (fd);
+ }
+ CATCH_MSVC_INVAL
+ {
+ result = (intptr_t) INVALID_HANDLE_VALUE;
+ }
+ DONE_MSVC_INVAL;
+
+ return result;
+}
+#endif
diff --git a/lib/msvc-nothrow.h b/lib/msvc-nothrow.h
new file mode 100644
index 0000000..fca5415
--- /dev/null
+++ b/lib/msvc-nothrow.h
@@ -0,0 +1,43 @@
+/* Wrappers that don't throw invalid parameter notifications
+ with MSVC runtime libraries.
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _MSVC_NOTHROW_H
+#define _MSVC_NOTHROW_H
+
+/* With MSVC runtime libraries with the "invalid parameter handler" concept,
+ functions like fprintf(), dup2(), or close() crash when the caller passes
+ an invalid argument. But POSIX wants error codes (such as EINVAL or EBADF)
+ instead.
+ This file defines wrappers that turn such an invalid parameter notification
+ into an error code. */
+
+#if defined _WIN32 && ! defined __CYGWIN__
+
+/* Get original declaration of _get_osfhandle. */
+# include <io.h>
+
+# if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+
+/* Override _get_osfhandle. */
+extern intptr_t _gl_nothrow_get_osfhandle (int fd);
+# define _get_osfhandle _gl_nothrow_get_osfhandle
+
+# endif
+
+#endif
+
+#endif /* _MSVC_NOTHROW_H */
diff --git a/lib/stdbool.in.h b/lib/stdbool.in.h
new file mode 100644
index 0000000..baacf98
--- /dev/null
+++ b/lib/stdbool.in.h
@@ -0,0 +1,132 @@
+/* Copyright (C) 2001-2003, 2006-2020 Free Software Foundation, Inc.
+ Written by Bruno Haible <haible@clisp.cons.org>, 2001.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _GL_STDBOOL_H
+#define _GL_STDBOOL_H
+
+/* ISO C 99 <stdbool.h> for platforms that lack it. */
+
+/* Usage suggestions:
+
+ Programs that use <stdbool.h> should be aware of some limitations
+ and standards compliance issues.
+
+ Standards compliance:
+
+ - <stdbool.h> must be #included before 'bool', 'false', 'true'
+ can be used.
+
+ - You cannot assume that sizeof (bool) == 1.
+
+ - Programs should not undefine the macros bool, true, and false,
+ as C99 lists that as an "obsolescent feature".
+
+ Limitations of this substitute, when used in a C89 environment:
+
+ - <stdbool.h> must be #included before the '_Bool' type can be used.
+
+ - You cannot assume that _Bool is a typedef; it might be a macro.
+
+ - Bit-fields of type 'bool' are not supported. Portable code
+ should use 'unsigned int foo : 1;' rather than 'bool foo : 1;'.
+
+ - In C99, casts and automatic conversions to '_Bool' or 'bool' are
+ performed in such a way that every nonzero value gets converted
+ to 'true', and zero gets converted to 'false'. This doesn't work
+ with this substitute. With this substitute, only the values 0 and 1
+ give the expected result when converted to _Bool' or 'bool'.
+
+ - C99 allows the use of (_Bool)0.0 in constant expressions, but
+ this substitute cannot always provide this property.
+
+ Also, it is suggested that programs use 'bool' rather than '_Bool';
+ this isn't required, but 'bool' is more common. */
+
+
+/* 7.16. Boolean type and values */
+
+/* BeOS <sys/socket.h> already #defines false 0, true 1. We use the same
+ definitions below, but temporarily we have to #undef them. */
+#if defined __BEOS__ && !defined __HAIKU__
+# include <OS.h> /* defines bool but not _Bool */
+# undef false
+# undef true
+#endif
+
+#ifdef __cplusplus
+# define _Bool bool
+# define bool bool
+#else
+# if defined __BEOS__ && !defined __HAIKU__
+ /* A compiler known to have 'bool'. */
+ /* If the compiler already has both 'bool' and '_Bool', we can assume they
+ are the same types. */
+# if !@HAVE__BOOL@
+typedef bool _Bool;
+# endif
+# else
+# if !defined __GNUC__
+ /* If @HAVE__BOOL@:
+ Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when
+ the built-in _Bool type is used. See
+ https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html
+ https://lists.gnu.org/r/bug-coreutils/2005-10/msg00086.html
+ Similar bugs are likely with other compilers as well; this file
+ wouldn't be used if <stdbool.h> was working.
+ So we override the _Bool type.
+ If !@HAVE__BOOL@:
+ Need to define _Bool ourselves. As 'signed char' or as an enum type?
+ Use of a typedef, with SunPRO C, leads to a stupid
+ "warning: _Bool is a keyword in ISO C99".
+ Use of an enum type, with IRIX cc, leads to a stupid
+ "warning(1185): enumerated type mixed with another type".
+ Even the existence of an enum type, without a typedef,
+ "Invalid enumerator. (badenum)" with HP-UX cc on Tru64.
+ The only benefit of the enum, debuggability, is not important
+ with these compilers. So use 'signed char' and no enum. */
+# define _Bool signed char
+# else
+ /* With this compiler, trust the _Bool type if the compiler has it. */
+# if !@HAVE__BOOL@
+ /* For the sake of symbolic names in gdb, define true and false as
+ enum constants, not only as macros.
+ It is tempting to write
+ typedef enum { false = 0, true = 1 } _Bool;
+ so that gdb prints values of type 'bool' symbolically. But then
+ values of type '_Bool' might promote to 'int' or 'unsigned int'
+ (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int'
+ (see ISO C 99 6.3.1.1.(2)). So add a negative value to the
+ enum; this ensures that '_Bool' promotes to 'int'. */
+typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool;
+# endif
+# endif
+# endif
+# define bool _Bool
+#endif
+
+/* The other macros must be usable in preprocessor directives. */
+#ifdef __cplusplus
+# define false false
+# define true true
+#else
+# define false 0
+# define true 1
+#endif
+
+#define __bool_true_false_are_defined 1
+
+#endif /* _GL_STDBOOL_H */
diff --git a/lib/stddef.in.h b/lib/stddef.in.h
new file mode 100644
index 0000000..2e50a1f
--- /dev/null
+++ b/lib/stddef.in.h
@@ -0,0 +1,121 @@
+/* A substitute for POSIX 2008 <stddef.h>, for platforms that have issues.
+
+ Copyright (C) 2009-2020 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <https://www.gnu.org/licenses/>. */
+
+/* Written by Eric Blake. */
+
+/*
+ * POSIX 2008 <stddef.h> for platforms that have issues.
+ * <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stddef.h.html>
+ */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if defined __need_wchar_t || defined __need_size_t \
+ || defined __need_ptrdiff_t || defined __need_NULL \
+ || defined __need_wint_t
+/* Special invocation convention inside gcc header files. In
+ particular, gcc provides a version of <stddef.h> that blindly
+ redefines NULL even when __need_wint_t was defined, even though
+ wint_t is not normally provided by <stddef.h>. Hence, we must
+ remember if special invocation has ever been used to obtain wint_t,
+ in which case we need to clean up NULL yet again. */
+
+# if !(defined _@GUARD_PREFIX@_STDDEF_H && defined _GL_STDDEF_WINT_T)
+# ifdef __need_wint_t
+# define _GL_STDDEF_WINT_T
+# endif
+# @INCLUDE_NEXT@ @NEXT_STDDEF_H@
+# endif
+
+#else
+/* Normal invocation convention. */
+
+# ifndef _@GUARD_PREFIX@_STDDEF_H
+
+/* The include_next requires a split double-inclusion guard. */
+
+# @INCLUDE_NEXT@ @NEXT_STDDEF_H@
+
+/* On NetBSD 5.0, the definition of NULL lacks proper parentheses. */
+# if (@REPLACE_NULL@ \
+ && (!defined _@GUARD_PREFIX@_STDDEF_H || defined _GL_STDDEF_WINT_T))
+# undef NULL
+# ifdef __cplusplus
+ /* ISO C++ says that the macro NULL must expand to an integer constant
+ expression, hence '((void *) 0)' is not allowed in C++. */
+# if __GNUG__ >= 3
+ /* GNU C++ has a __null macro that behaves like an integer ('int' or
+ 'long') but has the same size as a pointer. Use that, to avoid
+ warnings. */
+# define NULL __null
+# else
+# define NULL 0L
+# endif
+# else
+# define NULL ((void *) 0)
+# endif
+# endif
+
+# ifndef _@GUARD_PREFIX@_STDDEF_H
+# define _@GUARD_PREFIX@_STDDEF_H
+
+/* Some platforms lack wchar_t. */
+#if !@HAVE_WCHAR_T@
+# define wchar_t int
+#endif
+
+/* Some platforms lack max_align_t. The check for _GCC_MAX_ALIGN_T is
+ a hack in case the configure-time test was done with g++ even though
+ we are currently compiling with gcc.
+ On MSVC, max_align_t is defined only in C++ mode, after <cstddef> was
+ included. Its definition is good since it has an alignment of 8 (on x86
+ and x86_64). */
+#if defined _MSC_VER && defined __cplusplus
+# include <cstddef>
+#else
+# if ! (@HAVE_MAX_ALIGN_T@ || defined _GCC_MAX_ALIGN_T)
+# if !GNULIB_defined_max_align_t
+/* On the x86, the maximum storage alignment of double, long, etc. is 4,
+ but GCC's C11 ABI for x86 says that max_align_t has an alignment of 8,
+ and the C11 standard allows this. Work around this problem by
+ using __alignof__ (which returns 8 for double) rather than _Alignof
+ (which returns 4), and align each union member accordingly. */
+# ifdef __GNUC__
+# define _GL_STDDEF_ALIGNAS(type) \
+ __attribute__ ((__aligned__ (__alignof__ (type))))
+# else
+# define _GL_STDDEF_ALIGNAS(type) /* */
+# endif
+typedef union
+{
+ char *__p _GL_STDDEF_ALIGNAS (char *);
+ double __d _GL_STDDEF_ALIGNAS (double);
+ long double __ld _GL_STDDEF_ALIGNAS (long double);
+ long int __i _GL_STDDEF_ALIGNAS (long int);
+} rpl_max_align_t;
+# define max_align_t rpl_max_align_t
+# define GNULIB_defined_max_align_t 1
+# endif
+# endif
+#endif
+
+# endif /* _@GUARD_PREFIX@_STDDEF_H */
+# endif /* _@GUARD_PREFIX@_STDDEF_H */
+#endif /* __need_XXX */
diff --git a/lib/stdint.in.h b/lib/stdint.in.h
new file mode 100644
index 0000000..994c0c7
--- /dev/null
+++ b/lib/stdint.in.h
@@ -0,0 +1,746 @@
+/* Copyright (C) 2001-2002, 2004-2020 Free Software Foundation, Inc.
+ Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
+ This file is part of gnulib.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <https://www.gnu.org/licenses/>. */
+
+/*
+ * ISO C 99 <stdint.h> for platforms that lack it.
+ * <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stdint.h.html>
+ */
+
+#ifndef _@GUARD_PREFIX@_STDINT_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+/* When including a system file that in turn includes <inttypes.h>,
+ use the system <inttypes.h>, not our substitute. This avoids
+ problems with (for example) VMS, whose <sys/bitypes.h> includes
+ <inttypes.h>. */
+#define _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+
+/* On Android (Bionic libc), <sys/types.h> includes this file before
+ having defined 'time_t'. Therefore in this case avoid including
+ other system header files; just include the system's <stdint.h>.
+ Ideally we should test __BIONIC__ here, but it is only defined after
+ <sys/cdefs.h> has been included; hence test __ANDROID__ instead. */
+#if defined __ANDROID__ && defined _GL_INCLUDING_SYS_TYPES_H
+# @INCLUDE_NEXT@ @NEXT_STDINT_H@
+#else
+
+/* Get those types that are already defined in other system include
+ files, so that we can "#define int8_t signed char" below without
+ worrying about a later system include file containing a "typedef
+ signed char int8_t;" that will get messed up by our macro. Our
+ macros should all be consistent with the system versions, except
+ for the "fast" types and macros, which we recommend against using
+ in public interfaces due to compiler differences. */
+
+#if @HAVE_STDINT_H@
+# if defined __sgi && ! defined __c99
+ /* Bypass IRIX's <stdint.h> if in C89 mode, since it merely annoys users
+ with "This header file is to be used only for c99 mode compilations"
+ diagnostics. */
+# define __STDINT_H__
+# endif
+
+ /* Some pre-C++11 <stdint.h> implementations need this. */
+# ifdef __cplusplus
+# ifndef __STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS 1
+# endif
+# ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS 1
+# endif
+# endif
+
+ /* Other systems may have an incomplete or buggy <stdint.h>.
+ Include it before <inttypes.h>, since any "#include <stdint.h>"
+ in <inttypes.h> would reinclude us, skipping our contents because
+ _@GUARD_PREFIX@_STDINT_H is defined.
+ The include_next requires a split double-inclusion guard. */
+# @INCLUDE_NEXT@ @NEXT_STDINT_H@
+#endif
+
+#if ! defined _@GUARD_PREFIX@_STDINT_H && ! defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+#define _@GUARD_PREFIX@_STDINT_H
+
+/* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX,
+ LONG_MIN, LONG_MAX, ULONG_MAX, _GL_INTEGER_WIDTH. */
+#include <limits.h>
+
+/* Override WINT_MIN and WINT_MAX if gnulib's <wchar.h> or <wctype.h> overrides
+ wint_t. */
+#if @GNULIB_OVERRIDES_WINT_T@
+# undef WINT_MIN
+# undef WINT_MAX
+# define WINT_MIN 0x0U
+# define WINT_MAX 0xffffffffU
+#endif
+
+#if ! @HAVE_C99_STDINT_H@
+
+/* <sys/types.h> defines some of the stdint.h types as well, on glibc,
+ IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
+ AIX 5.2 <sys/types.h> isn't needed and causes troubles.
+ Mac OS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
+ relies on the system <stdint.h> definitions, so include
+ <sys/types.h> after @NEXT_STDINT_H@. */
+# if @HAVE_SYS_TYPES_H@ && ! defined _AIX
+# include <sys/types.h>
+# endif
+
+# if @HAVE_INTTYPES_H@
+ /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines
+ int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
+ <inttypes.h> also defines intptr_t and uintptr_t. */
+# include <inttypes.h>
+# elif @HAVE_SYS_INTTYPES_H@
+ /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
+ the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX. */
+# include <sys/inttypes.h>
+# endif
+
+# if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__
+ /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines
+ int{8,16,32,64}_t and __BIT_TYPES_DEFINED__. In libc5 >= 5.2.2 it is
+ included by <sys/types.h>. */
+# include <sys/bitypes.h>
+# endif
+
+# undef _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
+
+/* Minimum and maximum values for an integer type under the usual assumption.
+ Return an unspecified value if BITS == 0, adding a check to pacify
+ picky compilers. */
+
+/* These are separate macros, because if you try to merge these macros into
+ a single one, HP-UX cc rejects the resulting expression in constant
+ expressions. */
+# define _STDINT_UNSIGNED_MIN(bits, zero) \
+ (zero)
+# define _STDINT_SIGNED_MIN(bits, zero) \
+ (~ _STDINT_MAX (1, bits, zero))
+
+# define _STDINT_MAX(signed, bits, zero) \
+ (((((zero) + 1) << ((bits) ? (bits) - 1 - (signed) : 0)) - 1) * 2 + 1)
+
+#if !GNULIB_defined_stdint_types
+
+/* 7.18.1.1. Exact-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. */
+
+# undef int8_t
+# undef uint8_t
+typedef signed char gl_int8_t;
+typedef unsigned char gl_uint8_t;
+# define int8_t gl_int8_t
+# define uint8_t gl_uint8_t
+
+# undef int16_t
+# undef uint16_t
+typedef short int gl_int16_t;
+typedef unsigned short int gl_uint16_t;
+# define int16_t gl_int16_t
+# define uint16_t gl_uint16_t
+
+# undef int32_t
+# undef uint32_t
+typedef int gl_int32_t;
+typedef unsigned int gl_uint32_t;
+# define int32_t gl_int32_t
+# define uint32_t gl_uint32_t
+
+/* If the system defines INT64_MAX, assume int64_t works. That way,
+ if the underlying platform defines int64_t to be a 64-bit long long
+ int, the code below won't mistakenly define it to be a 64-bit long
+ int, which would mess up C++ name mangling. We must use #ifdef
+ rather than #if, to avoid an error with HP-UX 10.20 cc. */
+
+# ifdef INT64_MAX
+# define GL_INT64_T
+# else
+/* Do not undefine int64_t if gnulib is not being used with 64-bit
+ types, since otherwise it breaks platforms like Tandem/NSK. */
+# if LONG_MAX >> 31 >> 31 == 1
+# undef int64_t
+typedef long int gl_int64_t;
+# define int64_t gl_int64_t
+# define GL_INT64_T
+# elif defined _MSC_VER
+# undef int64_t
+typedef __int64 gl_int64_t;
+# define int64_t gl_int64_t
+# define GL_INT64_T
+# else
+# undef int64_t
+typedef long long int gl_int64_t;
+# define int64_t gl_int64_t
+# define GL_INT64_T
+# endif
+# endif
+
+# ifdef UINT64_MAX
+# define GL_UINT64_T
+# else
+# if ULONG_MAX >> 31 >> 31 >> 1 == 1
+# undef uint64_t
+typedef unsigned long int gl_uint64_t;
+# define uint64_t gl_uint64_t
+# define GL_UINT64_T
+# elif defined _MSC_VER
+# undef uint64_t
+typedef unsigned __int64 gl_uint64_t;
+# define uint64_t gl_uint64_t
+# define GL_UINT64_T
+# else
+# undef uint64_t
+typedef unsigned long long int gl_uint64_t;
+# define uint64_t gl_uint64_t
+# define GL_UINT64_T
+# endif
+# endif
+
+/* Avoid collision with Solaris 2.5.1 <pthread.h> etc. */
+# define _UINT8_T
+# define _UINT32_T
+# define _UINT64_T
+
+
+/* 7.18.1.2. Minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
+ are the same as the corresponding N_t types. */
+
+# undef int_least8_t
+# undef uint_least8_t
+# undef int_least16_t
+# undef uint_least16_t
+# undef int_least32_t
+# undef uint_least32_t
+# undef int_least64_t
+# undef uint_least64_t
+# define int_least8_t int8_t
+# define uint_least8_t uint8_t
+# define int_least16_t int16_t
+# define uint_least16_t uint16_t
+# define int_least32_t int32_t
+# define uint_least32_t uint32_t
+# ifdef GL_INT64_T
+# define int_least64_t int64_t
+# endif
+# ifdef GL_UINT64_T
+# define uint_least64_t uint64_t
+# endif
+
+/* 7.18.1.3. Fastest minimum-width integer types */
+
+/* Note: Other <stdint.h> substitutes may define these types differently.
+ It is not recommended to use these types in public header files. */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
+ are taken from the same list of types. The following code normally
+ uses types consistent with glibc, as that lessens the chance of
+ incompatibility with older GNU hosts. */
+
+# undef int_fast8_t
+# undef uint_fast8_t
+# undef int_fast16_t
+# undef uint_fast16_t
+# undef int_fast32_t
+# undef uint_fast32_t
+# undef int_fast64_t
+# undef uint_fast64_t
+typedef signed char gl_int_fast8_t;
+typedef unsigned char gl_uint_fast8_t;
+
+# ifdef __sun
+/* Define types compatible with SunOS 5.10, so that code compiled under
+ earlier SunOS versions works with code compiled under SunOS 5.10. */
+typedef int gl_int_fast32_t;
+typedef unsigned int gl_uint_fast32_t;
+# else
+typedef long int gl_int_fast32_t;
+typedef unsigned long int gl_uint_fast32_t;
+# endif
+typedef gl_int_fast32_t gl_int_fast16_t;
+typedef gl_uint_fast32_t gl_uint_fast16_t;
+
+# define int_fast8_t gl_int_fast8_t
+# define uint_fast8_t gl_uint_fast8_t
+# define int_fast16_t gl_int_fast16_t
+# define uint_fast16_t gl_uint_fast16_t
+# define int_fast32_t gl_int_fast32_t
+# define uint_fast32_t gl_uint_fast32_t
+# ifdef GL_INT64_T
+# define int_fast64_t int64_t
+# endif
+# ifdef GL_UINT64_T
+# define uint_fast64_t uint64_t
+# endif
+
+/* 7.18.1.4. Integer types capable of holding object pointers */
+
+/* kLIBC's <stdint.h> defines _INTPTR_T_DECLARED and needs its own
+ definitions of intptr_t and uintptr_t (which use int and unsigned)
+ to avoid clashes with declarations of system functions like sbrk.
+ Similarly, mingw 5.22 <crtdefs.h> defines _INTPTR_T_DEFINED and
+ _UINTPTR_T_DEFINED and needs its own definitions of intptr_t and
+ uintptr_t to avoid conflicting declarations of system functions like
+ _findclose in <io.h>. */
+# if !((defined __KLIBC__ && defined _INTPTR_T_DECLARED) \
+ || (defined __MINGW32__ && defined _INTPTR_T_DEFINED && defined _UINTPTR_T_DEFINED))
+# undef intptr_t
+# undef uintptr_t
+# ifdef _WIN64
+typedef long long int gl_intptr_t;
+typedef unsigned long long int gl_uintptr_t;
+# else
+typedef long int gl_intptr_t;
+typedef unsigned long int gl_uintptr_t;
+# endif
+# define intptr_t gl_intptr_t
+# define uintptr_t gl_uintptr_t
+# endif
+
+/* 7.18.1.5. Greatest-width integer types */
+
+/* Note: These types are compiler dependent. It may be unwise to use them in
+ public header files. */
+
+/* If the system defines INTMAX_MAX, assume that intmax_t works, and
+ similarly for UINTMAX_MAX and uintmax_t. This avoids problems with
+ assuming one type where another is used by the system. */
+
+# ifndef INTMAX_MAX
+# undef INTMAX_C
+# undef intmax_t
+# if LONG_MAX >> 30 == 1
+typedef long long int gl_intmax_t;
+# define intmax_t gl_intmax_t
+# elif defined GL_INT64_T
+# define intmax_t int64_t
+# else
+typedef long int gl_intmax_t;
+# define intmax_t gl_intmax_t
+# endif
+# endif
+
+# ifndef UINTMAX_MAX
+# undef UINTMAX_C
+# undef uintmax_t
+# if ULONG_MAX >> 31 == 1
+typedef unsigned long long int gl_uintmax_t;
+# define uintmax_t gl_uintmax_t
+# elif defined GL_UINT64_T
+# define uintmax_t uint64_t
+# else
+typedef unsigned long int gl_uintmax_t;
+# define uintmax_t gl_uintmax_t
+# endif
+# endif
+
+/* Verify that intmax_t and uintmax_t have the same size. Too much code
+ breaks if this is not the case. If this check fails, the reason is likely
+ to be found in the autoconf macros. */
+typedef int _verify_intmax_size[sizeof (intmax_t) == sizeof (uintmax_t)
+ ? 1 : -1];
+
+# define GNULIB_defined_stdint_types 1
+# endif /* !GNULIB_defined_stdint_types */
+
+/* 7.18.2. Limits of specified-width integer types */
+
+/* 7.18.2.1. Limits of exact-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. */
+
+# undef INT8_MIN
+# undef INT8_MAX
+# undef UINT8_MAX
+# define INT8_MIN (~ INT8_MAX)
+# define INT8_MAX 127
+# define UINT8_MAX 255
+
+# undef INT16_MIN
+# undef INT16_MAX
+# undef UINT16_MAX
+# define INT16_MIN (~ INT16_MAX)
+# define INT16_MAX 32767
+# define UINT16_MAX 65535
+
+# undef INT32_MIN
+# undef INT32_MAX
+# undef UINT32_MAX
+# define INT32_MIN (~ INT32_MAX)
+# define INT32_MAX 2147483647
+# define UINT32_MAX 4294967295U
+
+# if defined GL_INT64_T && ! defined INT64_MAX
+/* Prefer (- INTMAX_C (1) << 63) over (~ INT64_MAX) because SunPRO C 5.0
+ evaluates the latter incorrectly in preprocessor expressions. */
+# define INT64_MIN (- INTMAX_C (1) << 63)
+# define INT64_MAX INTMAX_C (9223372036854775807)
+# endif
+
+# if defined GL_UINT64_T && ! defined UINT64_MAX
+# define UINT64_MAX UINTMAX_C (18446744073709551615)
+# endif
+
+/* 7.18.2.2. Limits of minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
+ are the same as the corresponding N_t types. */
+
+# undef INT_LEAST8_MIN
+# undef INT_LEAST8_MAX
+# undef UINT_LEAST8_MAX
+# define INT_LEAST8_MIN INT8_MIN
+# define INT_LEAST8_MAX INT8_MAX
+# define UINT_LEAST8_MAX UINT8_MAX
+
+# undef INT_LEAST16_MIN
+# undef INT_LEAST16_MAX
+# undef UINT_LEAST16_MAX
+# define INT_LEAST16_MIN INT16_MIN
+# define INT_LEAST16_MAX INT16_MAX
+# define UINT_LEAST16_MAX UINT16_MAX
+
+# undef INT_LEAST32_MIN
+# undef INT_LEAST32_MAX
+# undef UINT_LEAST32_MAX
+# define INT_LEAST32_MIN INT32_MIN
+# define INT_LEAST32_MAX INT32_MAX
+# define UINT_LEAST32_MAX UINT32_MAX
+
+# undef INT_LEAST64_MIN
+# undef INT_LEAST64_MAX
+# ifdef GL_INT64_T
+# define INT_LEAST64_MIN INT64_MIN
+# define INT_LEAST64_MAX INT64_MAX
+# endif
+
+# undef UINT_LEAST64_MAX
+# ifdef GL_UINT64_T
+# define UINT_LEAST64_MAX UINT64_MAX
+# endif
+
+/* 7.18.2.3. Limits of fastest minimum-width integer types */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
+ are taken from the same list of types. */
+
+# undef INT_FAST8_MIN
+# undef INT_FAST8_MAX
+# undef UINT_FAST8_MAX
+# define INT_FAST8_MIN SCHAR_MIN
+# define INT_FAST8_MAX SCHAR_MAX
+# define UINT_FAST8_MAX UCHAR_MAX
+
+# undef INT_FAST16_MIN
+# undef INT_FAST16_MAX
+# undef UINT_FAST16_MAX
+# define INT_FAST16_MIN INT_FAST32_MIN
+# define INT_FAST16_MAX INT_FAST32_MAX
+# define UINT_FAST16_MAX UINT_FAST32_MAX
+
+# undef INT_FAST32_MIN
+# undef INT_FAST32_MAX
+# undef UINT_FAST32_MAX
+# ifdef __sun
+# define INT_FAST32_MIN INT_MIN
+# define INT_FAST32_MAX INT_MAX
+# define UINT_FAST32_MAX UINT_MAX
+# else
+# define INT_FAST32_MIN LONG_MIN
+# define INT_FAST32_MAX LONG_MAX
+# define UINT_FAST32_MAX ULONG_MAX
+# endif
+
+# undef INT_FAST64_MIN
+# undef INT_FAST64_MAX
+# ifdef GL_INT64_T
+# define INT_FAST64_MIN INT64_MIN
+# define INT_FAST64_MAX INT64_MAX
+# endif
+
+# undef UINT_FAST64_MAX
+# ifdef GL_UINT64_T
+# define UINT_FAST64_MAX UINT64_MAX
+# endif
+
+/* 7.18.2.4. Limits of integer types capable of holding object pointers */
+
+# undef INTPTR_MIN
+# undef INTPTR_MAX
+# undef UINTPTR_MAX
+# ifdef _WIN64
+# define INTPTR_MIN LLONG_MIN
+# define INTPTR_MAX LLONG_MAX
+# define UINTPTR_MAX ULLONG_MAX
+# else
+# define INTPTR_MIN LONG_MIN
+# define INTPTR_MAX LONG_MAX
+# define UINTPTR_MAX ULONG_MAX
+# endif
+
+/* 7.18.2.5. Limits of greatest-width integer types */
+
+# ifndef INTMAX_MAX
+# undef INTMAX_MIN
+# ifdef INT64_MAX
+# define INTMAX_MIN INT64_MIN
+# define INTMAX_MAX INT64_MAX
+# else
+# define INTMAX_MIN INT32_MIN
+# define INTMAX_MAX INT32_MAX
+# endif
+# endif
+
+# ifndef UINTMAX_MAX
+# ifdef UINT64_MAX
+# define UINTMAX_MAX UINT64_MAX
+# else
+# define UINTMAX_MAX UINT32_MAX
+# endif
+# endif
+
+/* 7.18.3. Limits of other integer types */
+
+/* ptrdiff_t limits */
+# undef PTRDIFF_MIN
+# undef PTRDIFF_MAX
+# if @APPLE_UNIVERSAL_BUILD@
+# ifdef _LP64
+# define PTRDIFF_MIN _STDINT_SIGNED_MIN (64, 0l)
+# define PTRDIFF_MAX _STDINT_MAX (1, 64, 0l)
+# else
+# define PTRDIFF_MIN _STDINT_SIGNED_MIN (32, 0)
+# define PTRDIFF_MAX _STDINT_MAX (1, 32, 0)
+# endif
+# else
+# define PTRDIFF_MIN \
+ _STDINT_SIGNED_MIN (@BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
+# define PTRDIFF_MAX \
+ _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
+# endif
+
+/* sig_atomic_t limits */
+# undef SIG_ATOMIC_MIN
+# undef SIG_ATOMIC_MAX
+# if @HAVE_SIGNED_SIG_ATOMIC_T@
+# define SIG_ATOMIC_MIN \
+ _STDINT_SIGNED_MIN (@BITSIZEOF_SIG_ATOMIC_T@, 0@SIG_ATOMIC_T_SUFFIX@)
+# else
+# define SIG_ATOMIC_MIN \
+ _STDINT_UNSIGNED_MIN (@BITSIZEOF_SIG_ATOMIC_T@, 0@SIG_ATOMIC_T_SUFFIX@)
+# endif
+# define SIG_ATOMIC_MAX \
+ _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
+ 0@SIG_ATOMIC_T_SUFFIX@)
+
+
+/* size_t limit */
+# undef SIZE_MAX
+# if @APPLE_UNIVERSAL_BUILD@
+# ifdef _LP64
+# define SIZE_MAX _STDINT_MAX (0, 64, 0ul)
+# else
+# define SIZE_MAX _STDINT_MAX (0, 32, 0ul)
+# endif
+# else
+# define SIZE_MAX _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@)
+# endif
+
+/* wchar_t limits */
+/* Get WCHAR_MIN, WCHAR_MAX.
+ This include is not on the top, above, because on OSF/1 4.0 we have a
+ sequence of nested includes
+ <wchar.h> -> <stdio.h> -> <getopt.h> -> <stdlib.h>, and the latter includes
+ <stdint.h> and assumes its types are already defined. */
+# if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX)
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+# define _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
+# include <wchar.h>
+# undef _GL_JUST_INCLUDE_SYSTEM_WCHAR_H
+# endif
+# undef WCHAR_MIN
+# undef WCHAR_MAX
+# if @HAVE_SIGNED_WCHAR_T@
+# define WCHAR_MIN \
+ _STDINT_SIGNED_MIN (@BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
+# else
+# define WCHAR_MIN \
+ _STDINT_UNSIGNED_MIN (@BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
+# endif
+# define WCHAR_MAX \
+ _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
+
+/* wint_t limits */
+/* If gnulib's <wchar.h> or <wctype.h> overrides wint_t, @WINT_T_SUFFIX@ is not
+ accurate, therefore use the definitions from above. */
+# if !@GNULIB_OVERRIDES_WINT_T@
+# undef WINT_MIN
+# undef WINT_MAX
+# if @HAVE_SIGNED_WINT_T@
+# define WINT_MIN \
+ _STDINT_SIGNED_MIN (@BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+# else
+# define WINT_MIN \
+ _STDINT_UNSIGNED_MIN (@BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+# endif
+# define WINT_MAX \
+ _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
+# endif
+
+/* 7.18.4. Macros for integer constants */
+
+/* 7.18.4.1. Macros for minimum-width integer constants */
+/* According to ISO C 99 Technical Corrigendum 1 */
+
+/* Here we assume a standard architecture where the hardware integer
+ types have 8, 16, 32, optionally 64 bits, and int is 32 bits. */
+
+# undef INT8_C
+# undef UINT8_C
+# define INT8_C(x) x
+# define UINT8_C(x) x
+
+# undef INT16_C
+# undef UINT16_C
+# define INT16_C(x) x
+# define UINT16_C(x) x
+
+# undef INT32_C
+# undef UINT32_C
+# define INT32_C(x) x
+# define UINT32_C(x) x ## U
+
+# undef INT64_C
+# undef UINT64_C
+# if LONG_MAX >> 31 >> 31 == 1
+# define INT64_C(x) x##L
+# elif defined _MSC_VER
+# define INT64_C(x) x##i64
+# else
+# define INT64_C(x) x##LL
+# endif
+# if ULONG_MAX >> 31 >> 31 >> 1 == 1
+# define UINT64_C(x) x##UL
+# elif defined _MSC_VER
+# define UINT64_C(x) x##ui64
+# else
+# define UINT64_C(x) x##ULL
+# endif
+
+/* 7.18.4.2. Macros for greatest-width integer constants */
+
+# ifndef INTMAX_C
+# if LONG_MAX >> 30 == 1
+# define INTMAX_C(x) x##LL
+# elif defined GL_INT64_T
+# define INTMAX_C(x) INT64_C(x)
+# else
+# define INTMAX_C(x) x##L
+# endif
+# endif
+
+# ifndef UINTMAX_C
+# if ULONG_MAX >> 31 == 1
+# define UINTMAX_C(x) x##ULL
+# elif defined GL_UINT64_T
+# define UINTMAX_C(x) UINT64_C(x)
+# else
+# define UINTMAX_C(x) x##UL
+# endif
+# endif
+
+#endif /* !@HAVE_C99_STDINT_H@ */
+
+/* Macros specified by ISO/IEC TS 18661-1:2014. */
+
+#if (!defined UINTMAX_WIDTH \
+ && (defined _GNU_SOURCE || defined __STDC_WANT_IEC_60559_BFP_EXT__))
+# ifdef INT8_MAX
+# define INT8_WIDTH _GL_INTEGER_WIDTH (INT8_MIN, INT8_MAX)
+# endif
+# ifdef UINT8_MAX
+# define UINT8_WIDTH _GL_INTEGER_WIDTH (0, UINT8_MAX)
+# endif
+# ifdef INT16_MAX
+# define INT16_WIDTH _GL_INTEGER_WIDTH (INT16_MIN, INT16_MAX)
+# endif
+# ifdef UINT16_MAX
+# define UINT16_WIDTH _GL_INTEGER_WIDTH (0, UINT16_MAX)
+# endif
+# ifdef INT32_MAX
+# define INT32_WIDTH _GL_INTEGER_WIDTH (INT32_MIN, INT32_MAX)
+# endif
+# ifdef UINT32_MAX
+# define UINT32_WIDTH _GL_INTEGER_WIDTH (0, UINT32_MAX)
+# endif
+# ifdef INT64_MAX
+# define INT64_WIDTH _GL_INTEGER_WIDTH (INT64_MIN, INT64_MAX)
+# endif
+# ifdef UINT64_MAX
+# define UINT64_WIDTH _GL_INTEGER_WIDTH (0, UINT64_MAX)
+# endif
+# define INT_LEAST8_WIDTH _GL_INTEGER_WIDTH (INT_LEAST8_MIN, INT_LEAST8_MAX)
+# define UINT_LEAST8_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST8_MAX)
+# define INT_LEAST16_WIDTH _GL_INTEGER_WIDTH (INT_LEAST16_MIN, INT_LEAST16_MAX)
+# define UINT_LEAST16_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST16_MAX)
+# define INT_LEAST32_WIDTH _GL_INTEGER_WIDTH (INT_LEAST32_MIN, INT_LEAST32_MAX)
+# define UINT_LEAST32_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST32_MAX)
+# define INT_LEAST64_WIDTH _GL_INTEGER_WIDTH (INT_LEAST64_MIN, INT_LEAST64_MAX)
+# define UINT_LEAST64_WIDTH _GL_INTEGER_WIDTH (0, UINT_LEAST64_MAX)
+# define INT_FAST8_WIDTH _GL_INTEGER_WIDTH (INT_FAST8_MIN, INT_FAST8_MAX)
+# define UINT_FAST8_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST8_MAX)
+# define INT_FAST16_WIDTH _GL_INTEGER_WIDTH (INT_FAST16_MIN, INT_FAST16_MAX)
+# define UINT_FAST16_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST16_MAX)
+# define INT_FAST32_WIDTH _GL_INTEGER_WIDTH (INT_FAST32_MIN, INT_FAST32_MAX)
+# define UINT_FAST32_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST32_MAX)
+# define INT_FAST64_WIDTH _GL_INTEGER_WIDTH (INT_FAST64_MIN, INT_FAST64_MAX)
+# define UINT_FAST64_WIDTH _GL_INTEGER_WIDTH (0, UINT_FAST64_MAX)
+# define INTPTR_WIDTH _GL_INTEGER_WIDTH (INTPTR_MIN, INTPTR_MAX)
+# define UINTPTR_WIDTH _GL_INTEGER_WIDTH (0, UINTPTR_MAX)
+# define INTMAX_WIDTH _GL_INTEGER_WIDTH (INTMAX_MIN, INTMAX_MAX)
+# define UINTMAX_WIDTH _GL_INTEGER_WIDTH (0, UINTMAX_MAX)
+# define PTRDIFF_WIDTH _GL_INTEGER_WIDTH (PTRDIFF_MIN, PTRDIFF_MAX)
+# define SIZE_WIDTH _GL_INTEGER_WIDTH (0, SIZE_MAX)
+# define WCHAR_WIDTH _GL_INTEGER_WIDTH (WCHAR_MIN, WCHAR_MAX)
+# ifdef WINT_MAX
+# define WINT_WIDTH _GL_INTEGER_WIDTH (WINT_MIN, WINT_MAX)
+# endif
+# ifdef SIG_ATOMIC_MAX
+# define SIG_ATOMIC_WIDTH _GL_INTEGER_WIDTH (SIG_ATOMIC_MIN, SIG_ATOMIC_MAX)
+# endif
+#endif /* !WINT_WIDTH && (_GNU_SOURCE || __STDC_WANT_IEC_60559_BFP_EXT__) */
+
+#endif /* _@GUARD_PREFIX@_STDINT_H */
+#endif /* !(defined __ANDROID__ && ...) */
+#endif /* !defined _@GUARD_PREFIX@_STDINT_H && !defined _GL_JUST_INCLUDE_SYSTEM_STDINT_H */
diff --git a/lib/stdio.in.h b/lib/stdio.in.h
new file mode 100644
index 0000000..ebcbfaf
--- /dev/null
+++ b/lib/stdio.in.h
@@ -0,0 +1,1444 @@
+/* A GNU-like <stdio.h>.
+
+ Copyright (C) 2004, 2007-2020 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <https://www.gnu.org/licenses/>. */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if defined __need_FILE || defined __need___FILE || defined _GL_ALREADY_INCLUDING_STDIO_H
+/* Special invocation convention:
+ - Inside glibc header files.
+ - On OSF/1 5.1 we have a sequence of nested includes
+ <stdio.h> -> <getopt.h> -> <ctype.h> -> <sys/localedef.h> ->
+ <sys/lc_core.h> -> <nl_types.h> -> <mesg.h> -> <stdio.h>.
+ In this situation, the functions are not yet declared, therefore we cannot
+ provide the C++ aliases. */
+
+#@INCLUDE_NEXT@ @NEXT_STDIO_H@
+
+#else
+/* Normal invocation convention. */
+
+#ifndef _@GUARD_PREFIX@_STDIO_H
+
+#define _GL_ALREADY_INCLUDING_STDIO_H
+
+/* The include_next requires a split double-inclusion guard. */
+#@INCLUDE_NEXT@ @NEXT_STDIO_H@
+
+#undef _GL_ALREADY_INCLUDING_STDIO_H
+
+#ifndef _@GUARD_PREFIX@_STDIO_H
+#define _@GUARD_PREFIX@_STDIO_H
+
+/* Get va_list. Needed on many systems, including glibc 2.8. */
+#include <stdarg.h>
+
+#include <stddef.h>
+
+/* Get off_t and ssize_t. Needed on many systems, including glibc 2.8
+ and eglibc 2.11.2.
+ May also define off_t to a 64-bit type on native Windows. */
+#include <sys/types.h>
+
+/* The __attribute__ feature is available in gcc versions 2.5 and later.
+ The __-protected variants of the attributes 'format' and 'printf' are
+ accepted by gcc versions 2.6.4 (effectively 2.7) and later.
+ We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because
+ gnulib and libintl do '#define printf __printf__' when they override
+ the 'printf' function. */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
+#else
+# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
+#endif
+
+/* _GL_ATTRIBUTE_FORMAT_PRINTF
+ indicates to GCC that the function takes a format string and arguments,
+ where the format string directives are the ones standardized by ISO C99
+ and POSIX. */
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
+# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
+ _GL_ATTRIBUTE_FORMAT ((__gnu_printf__, formatstring_parameter, first_argument))
+#else
+# define _GL_ATTRIBUTE_FORMAT_PRINTF(formatstring_parameter, first_argument) \
+ _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
+#endif
+
+/* _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_PRINTF,
+ except that it indicates to GCC that the supported format string directives
+ are the ones of the system printf(), rather than the ones standardized by
+ ISO C99 and POSIX. */
+#if GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU
+# define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \
+ _GL_ATTRIBUTE_FORMAT_PRINTF (formatstring_parameter, first_argument)
+#else
+# define _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM(formatstring_parameter, first_argument) \
+ _GL_ATTRIBUTE_FORMAT ((__printf__, formatstring_parameter, first_argument))
+#endif
+
+/* _GL_ATTRIBUTE_FORMAT_SCANF
+ indicates to GCC that the function takes a format string and arguments,
+ where the format string directives are the ones standardized by ISO C99
+ and POSIX. */
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)
+# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \
+ _GL_ATTRIBUTE_FORMAT ((__gnu_scanf__, formatstring_parameter, first_argument))
+#else
+# define _GL_ATTRIBUTE_FORMAT_SCANF(formatstring_parameter, first_argument) \
+ _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument))
+#endif
+
+/* _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM is like _GL_ATTRIBUTE_FORMAT_SCANF,
+ except that it indicates to GCC that the supported format string directives
+ are the ones of the system scanf(), rather than the ones standardized by
+ ISO C99 and POSIX. */
+#define _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM(formatstring_parameter, first_argument) \
+ _GL_ATTRIBUTE_FORMAT ((__scanf__, formatstring_parameter, first_argument))
+
+/* Solaris 10 and NetBSD 7.0 declare renameat in <unistd.h>, not in <stdio.h>. */
+/* But in any case avoid namespace pollution on glibc systems. */
+#if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && (defined __sun || defined __NetBSD__) \
+ && ! defined __GLIBC__
+# include <unistd.h>
+#endif
+
+/* Android 4.3 declares renameat in <sys/stat.h>, not in <stdio.h>. */
+/* But in any case avoid namespace pollution on glibc systems. */
+#if (@GNULIB_RENAMEAT@ || defined GNULIB_POSIXCHECK) && defined __ANDROID__ \
+ && ! defined __GLIBC__
+# include <sys/stat.h>
+#endif
+
+/* MSVC declares 'perror' in <stdlib.h>, not in <stdio.h>. We must include
+ it before we #define perror rpl_perror. */
+/* But in any case avoid namespace pollution on glibc systems. */
+#if (@GNULIB_PERROR@ || defined GNULIB_POSIXCHECK) \
+ && (defined _WIN32 && ! defined __CYGWIN__) \
+ && ! defined __GLIBC__
+# include <stdlib.h>
+#endif
+
+/* MSVC declares 'remove' in <io.h>, not in <stdio.h>. We must include
+ it before we #define remove rpl_remove. */
+/* MSVC declares 'rename' in <io.h>, not in <stdio.h>. We must include
+ it before we #define rename rpl_rename. */
+/* But in any case avoid namespace pollution on glibc systems. */
+#if (@GNULIB_REMOVE@ || @GNULIB_RENAME@ || defined GNULIB_POSIXCHECK) \
+ && (defined _WIN32 && ! defined __CYGWIN__) \
+ && ! defined __GLIBC__
+# include <io.h>
+#endif
+
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
+
+/* The definition of _GL_ARG_NONNULL is copied here. */
+
+/* The definition of _GL_WARN_ON_USE is copied here. */
+
+/* Macros for stringification. */
+#define _GL_STDIO_STRINGIZE(token) #token
+#define _GL_STDIO_MACROEXPAND_AND_STRINGIZE(token) _GL_STDIO_STRINGIZE(token)
+
+/* When also using extern inline, suppress the use of static inline in
+ standard headers of problematic Apple configurations, as Libc at
+ least through Libc-825.26 (2013-04-09) mishandles it; see, e.g.,
+ <https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html>.
+ Perhaps Apple will fix this some day. */
+#if (defined _GL_EXTERN_INLINE_IN_USE && defined __APPLE__ \
+ && defined __GNUC__ && defined __STDC__)
+# undef putc_unlocked
+#endif
+
+#if @GNULIB_DPRINTF@
+# if @REPLACE_DPRINTF@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define dprintf rpl_dprintf
+# endif
+_GL_FUNCDECL_RPL (dprintf, int, (int fd, const char *format, ...)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (dprintf, int, (int fd, const char *format, ...));
+# else
+# if !@HAVE_DPRINTF@
+_GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *format, ...)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+ _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *format, ...));
+# endif
+_GL_CXXALIASWARN (dprintf);
+#elif defined GNULIB_POSIXCHECK
+# undef dprintf
+# if HAVE_RAW_DECL_DPRINTF
+_GL_WARN_ON_USE (dprintf, "dprintf is unportable - "
+ "use gnulib module dprintf for portability");
+# endif
+#endif
+
+#if @GNULIB_FCLOSE@
+/* Close STREAM and its underlying file descriptor. */
+# if @REPLACE_FCLOSE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define fclose rpl_fclose
+# endif
+_GL_FUNCDECL_RPL (fclose, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (fclose, int, (FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fclose, int, (FILE *stream));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (fclose);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef fclose
+/* Assume fclose is always declared. */
+_GL_WARN_ON_USE (fclose, "fclose is not always POSIX compliant - "
+ "use gnulib module fclose for portable POSIX compliance");
+#endif
+
+#if @GNULIB_FDOPEN@
+# if @REPLACE_FDOPEN@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fdopen
+# define fdopen rpl_fdopen
+# endif
+_GL_FUNCDECL_RPL (fdopen, FILE *, (int fd, const char *mode)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (fdopen, FILE *, (int fd, const char *mode));
+# else
+_GL_CXXALIAS_SYS (fdopen, FILE *, (int fd, const char *mode));
+# endif
+_GL_CXXALIASWARN (fdopen);
+#elif defined GNULIB_POSIXCHECK
+# undef fdopen
+/* Assume fdopen is always declared. */
+_GL_WARN_ON_USE (fdopen, "fdopen on native Windows platforms is not POSIX compliant - "
+ "use gnulib module fdopen for portability");
+#endif
+
+#if @GNULIB_FFLUSH@
+/* Flush all pending data on STREAM according to POSIX rules. Both
+ output and seekable input streams are supported.
+ Note! LOSS OF DATA can occur if fflush is applied on an input stream
+ that is _not_seekable_ or on an update stream that is _not_seekable_
+ and in which the most recent operation was input. Seekability can
+ be tested with lseek(fileno(fp),0,SEEK_CUR). */
+# if @REPLACE_FFLUSH@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define fflush rpl_fflush
+# endif
+_GL_FUNCDECL_RPL (fflush, int, (FILE *gl_stream));
+_GL_CXXALIAS_RPL (fflush, int, (FILE *gl_stream));
+# else
+_GL_CXXALIAS_SYS (fflush, int, (FILE *gl_stream));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (fflush);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef fflush
+/* Assume fflush is always declared. */
+_GL_WARN_ON_USE (fflush, "fflush is not always POSIX compliant - "
+ "use gnulib module fflush for portable POSIX compliance");
+#endif
+
+#if @GNULIB_FGETC@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fgetc
+# define fgetc rpl_fgetc
+# endif
+_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (fgetc, int, (FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fgetc, int, (FILE *stream));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (fgetc);
+# endif
+#endif
+
+#if @GNULIB_FGETS@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fgets
+# define fgets rpl_fgets
+# endif
+_GL_FUNCDECL_RPL (fgets, char *, (char *s, int n, FILE *stream)
+ _GL_ARG_NONNULL ((1, 3)));
+_GL_CXXALIAS_RPL (fgets, char *, (char *s, int n, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fgets, char *, (char *s, int n, FILE *stream));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (fgets);
+# endif
+#endif
+
+#if @GNULIB_FOPEN@
+# if @REPLACE_FOPEN@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fopen
+# define fopen rpl_fopen
+# endif
+_GL_FUNCDECL_RPL (fopen, FILE *, (const char *filename, const char *mode)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (fopen, FILE *, (const char *filename, const char *mode));
+# else
+_GL_CXXALIAS_SYS (fopen, FILE *, (const char *filename, const char *mode));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (fopen);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef fopen
+/* Assume fopen is always declared. */
+_GL_WARN_ON_USE (fopen, "fopen on native Windows platforms is not POSIX compliant - "
+ "use gnulib module fopen for portability");
+#endif
+
+#if @GNULIB_FPRINTF_POSIX@ || @GNULIB_FPRINTF@
+# if (@GNULIB_FPRINTF_POSIX@ && @REPLACE_FPRINTF@) \
+ || (@GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define fprintf rpl_fprintf
+# endif
+# define GNULIB_overrides_fprintf 1
+# if @GNULIB_FPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@
+_GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+ _GL_ARG_NONNULL ((1, 2)));
+# else
+_GL_FUNCDECL_RPL (fprintf, int, (FILE *fp, const char *format, ...)
+ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 3)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_RPL (fprintf, int, (FILE *fp, const char *format, ...));
+# else
+_GL_CXXALIAS_SYS (fprintf, int, (FILE *fp, const char *format, ...));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (fprintf);
+# endif
+#endif
+#if !@GNULIB_FPRINTF_POSIX@ && defined GNULIB_POSIXCHECK
+# if !GNULIB_overrides_fprintf
+# undef fprintf
+# endif
+/* Assume fprintf is always declared. */
+_GL_WARN_ON_USE (fprintf, "fprintf is not always POSIX compliant - "
+ "use gnulib module fprintf-posix for portable "
+ "POSIX compliance");
+#endif
+
+#if @GNULIB_FPURGE@
+/* Discard all pending buffered I/O data on STREAM.
+ STREAM must not be wide-character oriented.
+ When discarding pending output, the file position is set back to where it
+ was before the write calls. When discarding pending input, the file
+ position is advanced to match the end of the previously read input.
+ Return 0 if successful. Upon error, return -1 and set errno. */
+# if @REPLACE_FPURGE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define fpurge rpl_fpurge
+# endif
+_GL_FUNCDECL_RPL (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (fpurge, int, (FILE *gl_stream));
+# else
+# if !@HAVE_DECL_FPURGE@
+_GL_FUNCDECL_SYS (fpurge, int, (FILE *gl_stream) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (fpurge, int, (FILE *gl_stream));
+# endif
+_GL_CXXALIASWARN (fpurge);
+#elif defined GNULIB_POSIXCHECK
+# undef fpurge
+# if HAVE_RAW_DECL_FPURGE
+_GL_WARN_ON_USE (fpurge, "fpurge is not always present - "
+ "use gnulib module fpurge for portability");
+# endif
+#endif
+
+#if @GNULIB_FPUTC@
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fputc
+# define fputc rpl_fputc
+# endif
+_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (fputc, int, (int c, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fputc, int, (int c, FILE *stream));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (fputc);
+# endif
+#endif
+
+#if @GNULIB_FPUTS@
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fputs
+# define fputs rpl_fputs
+# endif
+_GL_FUNCDECL_RPL (fputs, int, (const char *string, FILE *stream)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (fputs, int, (const char *string, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fputs, int, (const char *string, FILE *stream));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (fputs);
+# endif
+#endif
+
+#if @GNULIB_FREAD@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fread
+# define fread rpl_fread
+# endif
+_GL_FUNCDECL_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream)
+ _GL_ARG_NONNULL ((4)));
+_GL_CXXALIAS_RPL (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fread, size_t, (void *ptr, size_t s, size_t n, FILE *stream));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (fread);
+# endif
+#endif
+
+#if @GNULIB_FREOPEN@
+# if @REPLACE_FREOPEN@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef freopen
+# define freopen rpl_freopen
+# endif
+_GL_FUNCDECL_RPL (freopen, FILE *,
+ (const char *filename, const char *mode, FILE *stream)
+ _GL_ARG_NONNULL ((2, 3)));
+_GL_CXXALIAS_RPL (freopen, FILE *,
+ (const char *filename, const char *mode, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (freopen, FILE *,
+ (const char *filename, const char *mode, FILE *stream));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (freopen);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef freopen
+/* Assume freopen is always declared. */
+_GL_WARN_ON_USE (freopen,
+ "freopen on native Windows platforms is not POSIX compliant - "
+ "use gnulib module freopen for portability");
+#endif
+
+#if @GNULIB_FSCANF@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fscanf
+# define fscanf rpl_fscanf
+# endif
+_GL_FUNCDECL_RPL (fscanf, int, (FILE *stream, const char *format, ...)
+ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 3)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (fscanf, int, (FILE *stream, const char *format, ...));
+# else
+_GL_CXXALIAS_SYS (fscanf, int, (FILE *stream, const char *format, ...));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (fscanf);
+# endif
+#endif
+
+
+/* Set up the following warnings, based on which modules are in use.
+ GNU Coding Standards discourage the use of fseek, since it imposes
+ an arbitrary limitation on some 32-bit hosts. Remember that the
+ fseek module depends on the fseeko module, so we only have three
+ cases to consider:
+
+ 1. The developer is not using either module. Issue a warning under
+ GNULIB_POSIXCHECK for both functions, to remind them that both
+ functions have bugs on some systems. _GL_NO_LARGE_FILES has no
+ impact on this warning.
+
+ 2. The developer is using both modules. They may be unaware of the
+ arbitrary limitations of fseek, so issue a warning under
+ GNULIB_POSIXCHECK. On the other hand, they may be using both
+ modules intentionally, so the developer can define
+ _GL_NO_LARGE_FILES in the compilation units where the use of fseek
+ is safe, to silence the warning.
+
+ 3. The developer is using the fseeko module, but not fseek. Gnulib
+ guarantees that fseek will still work around platform bugs in that
+ case, but we presume that the developer is aware of the pitfalls of
+ fseek and was trying to avoid it, so issue a warning even when
+ GNULIB_POSIXCHECK is undefined. Again, _GL_NO_LARGE_FILES can be
+ defined to silence the warning in particular compilation units.
+ In C++ compilations with GNULIB_NAMESPACE, in order to avoid that
+ fseek gets defined as a macro, it is recommended that the developer
+ uses the fseek module, even if he is not calling the fseek function.
+
+ Most gnulib clients that perform stream operations should fall into
+ category 3. */
+
+#if @GNULIB_FSEEK@
+# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES
+# define _GL_FSEEK_WARN /* Category 2, above. */
+# undef fseek
+# endif
+# if @REPLACE_FSEEK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fseek
+# define fseek rpl_fseek
+# endif
+_GL_FUNCDECL_RPL (fseek, int, (FILE *fp, long offset, int whence)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (fseek, int, (FILE *fp, long offset, int whence));
+# else
+_GL_CXXALIAS_SYS (fseek, int, (FILE *fp, long offset, int whence));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (fseek);
+# endif
+#endif
+
+#if @GNULIB_FSEEKO@
+# if !@GNULIB_FSEEK@ && !defined _GL_NO_LARGE_FILES
+# define _GL_FSEEK_WARN /* Category 3, above. */
+# undef fseek
+# endif
+# if @REPLACE_FSEEKO@
+/* Provide an fseeko function that is aware of a preceding fflush(), and which
+ detects pipes. */
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fseeko
+# define fseeko rpl_fseeko
+# endif
+_GL_FUNCDECL_RPL (fseeko, int, (FILE *fp, off_t offset, int whence)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (fseeko, int, (FILE *fp, off_t offset, int whence));
+# else
+# if ! @HAVE_DECL_FSEEKO@
+_GL_FUNCDECL_SYS (fseeko, int, (FILE *fp, off_t offset, int whence)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (fseeko, int, (FILE *fp, off_t offset, int whence));
+# endif
+_GL_CXXALIASWARN (fseeko);
+#elif defined GNULIB_POSIXCHECK
+# define _GL_FSEEK_WARN /* Category 1, above. */
+# undef fseek
+# undef fseeko
+# if HAVE_RAW_DECL_FSEEKO
+_GL_WARN_ON_USE (fseeko, "fseeko is unportable - "
+ "use gnulib module fseeko for portability");
+# endif
+#endif
+
+#ifdef _GL_FSEEK_WARN
+# undef _GL_FSEEK_WARN
+/* Here, either fseek is undefined (but C89 guarantees that it is
+ declared), or it is defined as rpl_fseek (declared above). */
+_GL_WARN_ON_USE (fseek, "fseek cannot handle files larger than 4 GB "
+ "on 32-bit platforms - "
+ "use fseeko function for handling of large files");
+#endif
+
+
+/* ftell, ftello. See the comments on fseek/fseeko. */
+
+#if @GNULIB_FTELL@
+# if defined GNULIB_POSIXCHECK && !defined _GL_NO_LARGE_FILES
+# define _GL_FTELL_WARN /* Category 2, above. */
+# undef ftell
+# endif
+# if @REPLACE_FTELL@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef ftell
+# define ftell rpl_ftell
+# endif
+_GL_FUNCDECL_RPL (ftell, long, (FILE *fp) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (ftell, long, (FILE *fp));
+# else
+_GL_CXXALIAS_SYS (ftell, long, (FILE *fp));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (ftell);
+# endif
+#endif
+
+#if @GNULIB_FTELLO@
+# if !@GNULIB_FTELL@ && !defined _GL_NO_LARGE_FILES
+# define _GL_FTELL_WARN /* Category 3, above. */
+# undef ftell
+# endif
+# if @REPLACE_FTELLO@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef ftello
+# define ftello rpl_ftello
+# endif
+_GL_FUNCDECL_RPL (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (ftello, off_t, (FILE *fp));
+# else
+# if ! @HAVE_DECL_FTELLO@
+_GL_FUNCDECL_SYS (ftello, off_t, (FILE *fp) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (ftello, off_t, (FILE *fp));
+# endif
+_GL_CXXALIASWARN (ftello);
+#elif defined GNULIB_POSIXCHECK
+# define _GL_FTELL_WARN /* Category 1, above. */
+# undef ftell
+# undef ftello
+# if HAVE_RAW_DECL_FTELLO
+_GL_WARN_ON_USE (ftello, "ftello is unportable - "
+ "use gnulib module ftello for portability");
+# endif
+#endif
+
+#ifdef _GL_FTELL_WARN
+# undef _GL_FTELL_WARN
+/* Here, either ftell is undefined (but C89 guarantees that it is
+ declared), or it is defined as rpl_ftell (declared above). */
+_GL_WARN_ON_USE (ftell, "ftell cannot handle files larger than 4 GB "
+ "on 32-bit platforms - "
+ "use ftello function for handling of large files");
+#endif
+
+
+#if @GNULIB_FWRITE@
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fwrite
+# define fwrite rpl_fwrite
+# endif
+_GL_FUNCDECL_RPL (fwrite, size_t,
+ (const void *ptr, size_t s, size_t n, FILE *stream)
+ _GL_ARG_NONNULL ((1, 4)));
+_GL_CXXALIAS_RPL (fwrite, size_t,
+ (const void *ptr, size_t s, size_t n, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (fwrite, size_t,
+ (const void *ptr, size_t s, size_t n, FILE *stream));
+
+/* Work around bug 11959 when fortifying glibc 2.4 through 2.15
+ <https://sourceware.org/bugzilla/show_bug.cgi?id=11959>,
+ which sometimes causes an unwanted diagnostic for fwrite calls.
+ This affects only function declaration attributes under certain
+ versions of gcc and clang, and is not needed for C++. */
+# if (0 < __USE_FORTIFY_LEVEL \
+ && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \
+ && 3 < __GNUC__ + (4 <= __GNUC_MINOR__) \
+ && !defined __cplusplus)
+# undef fwrite
+# undef fwrite_unlocked
+extern size_t __REDIRECT (rpl_fwrite,
+ (const void *__restrict, size_t, size_t,
+ FILE *__restrict),
+ fwrite);
+extern size_t __REDIRECT (rpl_fwrite_unlocked,
+ (const void *__restrict, size_t, size_t,
+ FILE *__restrict),
+ fwrite_unlocked);
+# define fwrite rpl_fwrite
+# define fwrite_unlocked rpl_fwrite_unlocked
+# endif
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (fwrite);
+# endif
+#endif
+
+#if @GNULIB_GETC@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef getc
+# define getc rpl_fgetc
+# endif
+_GL_FUNCDECL_RPL (fgetc, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL_1 (getc, rpl_fgetc, int, (FILE *stream));
+# else
+_GL_CXXALIAS_SYS (getc, int, (FILE *stream));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (getc);
+# endif
+#endif
+
+#if @GNULIB_GETCHAR@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef getchar
+# define getchar rpl_getchar
+# endif
+_GL_FUNCDECL_RPL (getchar, int, (void));
+_GL_CXXALIAS_RPL (getchar, int, (void));
+# else
+_GL_CXXALIAS_SYS (getchar, int, (void));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (getchar);
+# endif
+#endif
+
+#if @GNULIB_GETDELIM@
+/* Read input, up to (and including) the next occurrence of DELIMITER, from
+ STREAM, store it in *LINEPTR (and NUL-terminate it).
+ *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
+ bytes of space. It is realloc'd as necessary.
+ Return the number of bytes read and stored at *LINEPTR (not including the
+ NUL terminator), or -1 on error or EOF. */
+# if @REPLACE_GETDELIM@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef getdelim
+# define getdelim rpl_getdelim
+# endif
+_GL_FUNCDECL_RPL (getdelim, ssize_t,
+ (char **lineptr, size_t *linesize, int delimiter,
+ FILE *stream)
+ _GL_ARG_NONNULL ((1, 2, 4)));
+_GL_CXXALIAS_RPL (getdelim, ssize_t,
+ (char **lineptr, size_t *linesize, int delimiter,
+ FILE *stream));
+# else
+# if !@HAVE_DECL_GETDELIM@
+_GL_FUNCDECL_SYS (getdelim, ssize_t,
+ (char **lineptr, size_t *linesize, int delimiter,
+ FILE *stream)
+ _GL_ARG_NONNULL ((1, 2, 4)));
+# endif
+_GL_CXXALIAS_SYS (getdelim, ssize_t,
+ (char **lineptr, size_t *linesize, int delimiter,
+ FILE *stream));
+# endif
+_GL_CXXALIASWARN (getdelim);
+#elif defined GNULIB_POSIXCHECK
+# undef getdelim
+# if HAVE_RAW_DECL_GETDELIM
+_GL_WARN_ON_USE (getdelim, "getdelim is unportable - "
+ "use gnulib module getdelim for portability");
+# endif
+#endif
+
+#if @GNULIB_GETLINE@
+/* Read a line, up to (and including) the next newline, from STREAM, store it
+ in *LINEPTR (and NUL-terminate it).
+ *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE
+ bytes of space. It is realloc'd as necessary.
+ Return the number of bytes read and stored at *LINEPTR (not including the
+ NUL terminator), or -1 on error or EOF. */
+# if @REPLACE_GETLINE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef getline
+# define getline rpl_getline
+# endif
+_GL_FUNCDECL_RPL (getline, ssize_t,
+ (char **lineptr, size_t *linesize, FILE *stream)
+ _GL_ARG_NONNULL ((1, 2, 3)));
+_GL_CXXALIAS_RPL (getline, ssize_t,
+ (char **lineptr, size_t *linesize, FILE *stream));
+# else
+# if !@HAVE_DECL_GETLINE@
+_GL_FUNCDECL_SYS (getline, ssize_t,
+ (char **lineptr, size_t *linesize, FILE *stream)
+ _GL_ARG_NONNULL ((1, 2, 3)));
+# endif
+_GL_CXXALIAS_SYS (getline, ssize_t,
+ (char **lineptr, size_t *linesize, FILE *stream));
+# endif
+# if @HAVE_DECL_GETLINE@
+_GL_CXXALIASWARN (getline);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getline
+# if HAVE_RAW_DECL_GETLINE
+_GL_WARN_ON_USE (getline, "getline is unportable - "
+ "use gnulib module getline for portability");
+# endif
+#endif
+
+/* It is very rare that the developer ever has full control of stdin,
+ so any use of gets warrants an unconditional warning; besides, C11
+ removed it. */
+#undef gets
+#if HAVE_RAW_DECL_GETS && !defined __cplusplus
+_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+#endif
+
+#if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@
+struct obstack;
+/* Grow an obstack with formatted output. Return the number of
+ bytes added to OBS. No trailing nul byte is added, and the
+ object should be closed with obstack_finish before use. Upon
+ memory allocation error, call obstack_alloc_failed_handler. Upon
+ other error, return -1. */
+# if @REPLACE_OBSTACK_PRINTF@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define obstack_printf rpl_obstack_printf
+# endif
+_GL_FUNCDECL_RPL (obstack_printf, int,
+ (struct obstack *obs, const char *format, ...)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (obstack_printf, int,
+ (struct obstack *obs, const char *format, ...));
+# else
+# if !@HAVE_DECL_OBSTACK_PRINTF@
+_GL_FUNCDECL_SYS (obstack_printf, int,
+ (struct obstack *obs, const char *format, ...)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (obstack_printf, int,
+ (struct obstack *obs, const char *format, ...));
+# endif
+_GL_CXXALIASWARN (obstack_printf);
+# if @REPLACE_OBSTACK_PRINTF@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define obstack_vprintf rpl_obstack_vprintf
+# endif
+_GL_FUNCDECL_RPL (obstack_vprintf, int,
+ (struct obstack *obs, const char *format, va_list args)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (obstack_vprintf, int,
+ (struct obstack *obs, const char *format, va_list args));
+# else
+# if !@HAVE_DECL_OBSTACK_PRINTF@
+_GL_FUNCDECL_SYS (obstack_vprintf, int,
+ (struct obstack *obs, const char *format, va_list args)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (obstack_vprintf, int,
+ (struct obstack *obs, const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (obstack_vprintf);
+#endif
+
+#if @GNULIB_PCLOSE@
+# if !@HAVE_PCLOSE@
+_GL_FUNCDECL_SYS (pclose, int, (FILE *stream) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pclose, int, (FILE *stream));
+_GL_CXXALIASWARN (pclose);
+#elif defined GNULIB_POSIXCHECK
+# undef pclose
+# if HAVE_RAW_DECL_PCLOSE
+_GL_WARN_ON_USE (pclose, "pclose is unportable - "
+ "use gnulib module pclose for more portability");
+# endif
+#endif
+
+#if @GNULIB_PERROR@
+/* Print a message to standard error, describing the value of ERRNO,
+ (if STRING is not NULL and not empty) prefixed with STRING and ": ",
+ and terminated with a newline. */
+# if @REPLACE_PERROR@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define perror rpl_perror
+# endif
+_GL_FUNCDECL_RPL (perror, void, (const char *string));
+_GL_CXXALIAS_RPL (perror, void, (const char *string));
+# else
+_GL_CXXALIAS_SYS (perror, void, (const char *string));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (perror);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef perror
+/* Assume perror is always declared. */
+_GL_WARN_ON_USE (perror, "perror is not always POSIX compliant - "
+ "use gnulib module perror for portability");
+#endif
+
+#if @GNULIB_POPEN@
+# if @REPLACE_POPEN@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef popen
+# define popen rpl_popen
+# endif
+_GL_FUNCDECL_RPL (popen, FILE *, (const char *cmd, const char *mode)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (popen, FILE *, (const char *cmd, const char *mode));
+# else
+# if !@HAVE_POPEN@
+_GL_FUNCDECL_SYS (popen, FILE *, (const char *cmd, const char *mode)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (popen, FILE *, (const char *cmd, const char *mode));
+# endif
+_GL_CXXALIASWARN (popen);
+#elif defined GNULIB_POSIXCHECK
+# undef popen
+# if HAVE_RAW_DECL_POPEN
+_GL_WARN_ON_USE (popen, "popen is buggy on some platforms - "
+ "use gnulib module popen or pipe for more portability");
+# endif
+#endif
+
+#if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@
+# if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \
+ || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
+# if defined __GNUC__
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+/* Don't break __attribute__((format(printf,M,N))). */
+# define printf __printf__
+# endif
+# if @GNULIB_PRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@
+_GL_FUNCDECL_RPL_1 (__printf__, int,
+ (const char *format, ...)
+ __asm__ (@ASM_SYMBOL_PREFIX@
+ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf))
+ _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2)
+ _GL_ARG_NONNULL ((1)));
+# else
+_GL_FUNCDECL_RPL_1 (__printf__, int,
+ (const char *format, ...)
+ __asm__ (@ASM_SYMBOL_PREFIX@
+ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_printf))
+ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 2)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_RPL_1 (printf, __printf__, int, (const char *format, ...));
+# else
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define printf rpl_printf
+# endif
+_GL_FUNCDECL_RPL (printf, int,
+ (const char *format, ...)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (1, 2)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (printf, int, (const char *format, ...));
+# endif
+# define GNULIB_overrides_printf 1
+# else
+_GL_CXXALIAS_SYS (printf, int, (const char *format, ...));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (printf);
+# endif
+#endif
+#if !@GNULIB_PRINTF_POSIX@ && defined GNULIB_POSIXCHECK
+# if !GNULIB_overrides_printf
+# undef printf
+# endif
+/* Assume printf is always declared. */
+_GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - "
+ "use gnulib module printf-posix for portable "
+ "POSIX compliance");
+#endif
+
+#if @GNULIB_PUTC@
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef putc
+# define putc rpl_fputc
+# endif
+_GL_FUNCDECL_RPL (fputc, int, (int c, FILE *stream) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL_1 (putc, rpl_fputc, int, (int c, FILE *stream));
+# else
+_GL_CXXALIAS_SYS (putc, int, (int c, FILE *stream));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (putc);
+# endif
+#endif
+
+#if @GNULIB_PUTCHAR@
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef putchar
+# define putchar rpl_putchar
+# endif
+_GL_FUNCDECL_RPL (putchar, int, (int c));
+_GL_CXXALIAS_RPL (putchar, int, (int c));
+# else
+_GL_CXXALIAS_SYS (putchar, int, (int c));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (putchar);
+# endif
+#endif
+
+#if @GNULIB_PUTS@
+# if @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@)
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef puts
+# define puts rpl_puts
+# endif
+_GL_FUNCDECL_RPL (puts, int, (const char *string) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (puts, int, (const char *string));
+# else
+_GL_CXXALIAS_SYS (puts, int, (const char *string));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (puts);
+# endif
+#endif
+
+#if @GNULIB_REMOVE@
+# if @REPLACE_REMOVE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef remove
+# define remove rpl_remove
+# endif
+_GL_FUNCDECL_RPL (remove, int, (const char *name) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (remove, int, (const char *name));
+# else
+_GL_CXXALIAS_SYS (remove, int, (const char *name));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (remove);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef remove
+/* Assume remove is always declared. */
+_GL_WARN_ON_USE (remove, "remove cannot handle directories on some platforms - "
+ "use gnulib module remove for more portability");
+#endif
+
+#if @GNULIB_RENAME@
+# if @REPLACE_RENAME@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef rename
+# define rename rpl_rename
+# endif
+_GL_FUNCDECL_RPL (rename, int,
+ (const char *old_filename, const char *new_filename)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (rename, int,
+ (const char *old_filename, const char *new_filename));
+# else
+_GL_CXXALIAS_SYS (rename, int,
+ (const char *old_filename, const char *new_filename));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (rename);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef rename
+/* Assume rename is always declared. */
+_GL_WARN_ON_USE (rename, "rename is buggy on some platforms - "
+ "use gnulib module rename for more portability");
+#endif
+
+#if @GNULIB_RENAMEAT@
+# if @REPLACE_RENAMEAT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef renameat
+# define renameat rpl_renameat
+# endif
+_GL_FUNCDECL_RPL (renameat, int,
+ (int fd1, char const *file1, int fd2, char const *file2)
+ _GL_ARG_NONNULL ((2, 4)));
+_GL_CXXALIAS_RPL (renameat, int,
+ (int fd1, char const *file1, int fd2, char const *file2));
+# else
+# if !@HAVE_RENAMEAT@
+_GL_FUNCDECL_SYS (renameat, int,
+ (int fd1, char const *file1, int fd2, char const *file2)
+ _GL_ARG_NONNULL ((2, 4)));
+# endif
+_GL_CXXALIAS_SYS (renameat, int,
+ (int fd1, char const *file1, int fd2, char const *file2));
+# endif
+_GL_CXXALIASWARN (renameat);
+#elif defined GNULIB_POSIXCHECK
+# undef renameat
+# if HAVE_RAW_DECL_RENAMEAT
+_GL_WARN_ON_USE (renameat, "renameat is not portable - "
+ "use gnulib module renameat for portability");
+# endif
+#endif
+
+#if @GNULIB_SCANF@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+# if defined __GNUC__
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef scanf
+/* Don't break __attribute__((format(scanf,M,N))). */
+# define scanf __scanf__
+# endif
+_GL_FUNCDECL_RPL_1 (__scanf__, int,
+ (const char *format, ...)
+ __asm__ (@ASM_SYMBOL_PREFIX@
+ _GL_STDIO_MACROEXPAND_AND_STRINGIZE(rpl_scanf))
+ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL_1 (scanf, __scanf__, int, (const char *format, ...));
+# else
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef scanf
+# define scanf rpl_scanf
+# endif
+_GL_FUNCDECL_RPL (scanf, int, (const char *format, ...)
+ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 2)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (scanf, int, (const char *format, ...));
+# endif
+# else
+_GL_CXXALIAS_SYS (scanf, int, (const char *format, ...));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (scanf);
+# endif
+#endif
+
+#if @GNULIB_SNPRINTF@
+# if @REPLACE_SNPRINTF@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define snprintf rpl_snprintf
+# endif
+_GL_FUNCDECL_RPL (snprintf, int,
+ (char *str, size_t size, const char *format, ...)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4)
+ _GL_ARG_NONNULL ((3)));
+_GL_CXXALIAS_RPL (snprintf, int,
+ (char *str, size_t size, const char *format, ...));
+# else
+# if !@HAVE_DECL_SNPRINTF@
+_GL_FUNCDECL_SYS (snprintf, int,
+ (char *str, size_t size, const char *format, ...)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 4)
+ _GL_ARG_NONNULL ((3)));
+# endif
+_GL_CXXALIAS_SYS (snprintf, int,
+ (char *str, size_t size, const char *format, ...));
+# endif
+_GL_CXXALIASWARN (snprintf);
+#elif defined GNULIB_POSIXCHECK
+# undef snprintf
+# if HAVE_RAW_DECL_SNPRINTF
+_GL_WARN_ON_USE (snprintf, "snprintf is unportable - "
+ "use gnulib module snprintf for portability");
+# endif
+#endif
+
+/* Some people would argue that all sprintf uses should be warned about
+ (for example, OpenBSD issues a link warning for it),
+ since it can cause security holes due to buffer overruns.
+ However, we believe that sprintf can be used safely, and is more
+ efficient than snprintf in those safe cases; and as proof of our
+ belief, we use sprintf in several gnulib modules. So this header
+ intentionally avoids adding a warning to sprintf except when
+ GNULIB_POSIXCHECK is defined. */
+
+#if @GNULIB_SPRINTF_POSIX@
+# if @REPLACE_SPRINTF@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define sprintf rpl_sprintf
+# endif
+_GL_FUNCDECL_RPL (sprintf, int, (char *str, const char *format, ...)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (sprintf, int, (char *str, const char *format, ...));
+# else
+_GL_CXXALIAS_SYS (sprintf, int, (char *str, const char *format, ...));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (sprintf);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef sprintf
+/* Assume sprintf is always declared. */
+_GL_WARN_ON_USE (sprintf, "sprintf is not always POSIX compliant - "
+ "use gnulib module sprintf-posix for portable "
+ "POSIX compliance");
+#endif
+
+#if @GNULIB_TMPFILE@
+# if @REPLACE_TMPFILE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define tmpfile rpl_tmpfile
+# endif
+_GL_FUNCDECL_RPL (tmpfile, FILE *, (void));
+_GL_CXXALIAS_RPL (tmpfile, FILE *, (void));
+# else
+_GL_CXXALIAS_SYS (tmpfile, FILE *, (void));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (tmpfile);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef tmpfile
+# if HAVE_RAW_DECL_TMPFILE
+_GL_WARN_ON_USE (tmpfile, "tmpfile is not usable on mingw - "
+ "use gnulib module tmpfile for portability");
+# endif
+#endif
+
+#if @GNULIB_VASPRINTF@
+/* Write formatted output to a string dynamically allocated with malloc().
+ If the memory allocation succeeds, store the address of the string in
+ *RESULT and return the number of resulting bytes, excluding the trailing
+ NUL. Upon memory allocation error, or some other error, return -1. */
+# if @REPLACE_VASPRINTF@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define asprintf rpl_asprintf
+# endif
+_GL_FUNCDECL_RPL (asprintf, int,
+ (char **result, const char *format, ...)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (asprintf, int,
+ (char **result, const char *format, ...));
+# else
+# if !@HAVE_VASPRINTF@
+_GL_FUNCDECL_SYS (asprintf, int,
+ (char **result, const char *format, ...)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 3)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (asprintf, int,
+ (char **result, const char *format, ...));
+# endif
+_GL_CXXALIASWARN (asprintf);
+# if @REPLACE_VASPRINTF@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define vasprintf rpl_vasprintf
+# endif
+_GL_FUNCDECL_RPL (vasprintf, int,
+ (char **result, const char *format, va_list args)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (vasprintf, int,
+ (char **result, const char *format, va_list args));
+# else
+# if !@HAVE_VASPRINTF@
+_GL_FUNCDECL_SYS (vasprintf, int,
+ (char **result, const char *format, va_list args)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (vasprintf, int,
+ (char **result, const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vasprintf);
+#endif
+
+#if @GNULIB_VDPRINTF@
+# if @REPLACE_VDPRINTF@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define vdprintf rpl_vdprintf
+# endif
+_GL_FUNCDECL_RPL (vdprintf, int, (int fd, const char *format, va_list args)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (vdprintf, int, (int fd, const char *format, va_list args));
+# else
+# if !@HAVE_VDPRINTF@
+_GL_FUNCDECL_SYS (vdprintf, int, (int fd, const char *format, va_list args)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+ _GL_ARG_NONNULL ((2)));
+# endif
+/* Need to cast, because on Solaris, the third parameter will likely be
+ __va_list args. */
+_GL_CXXALIAS_SYS_CAST (vdprintf, int,
+ (int fd, const char *format, va_list args));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (vdprintf);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef vdprintf
+# if HAVE_RAW_DECL_VDPRINTF
+_GL_WARN_ON_USE (vdprintf, "vdprintf is unportable - "
+ "use gnulib module vdprintf for portability");
+# endif
+#endif
+
+#if @GNULIB_VFPRINTF_POSIX@ || @GNULIB_VFPRINTF@
+# if (@GNULIB_VFPRINTF_POSIX@ && @REPLACE_VFPRINTF@) \
+ || (@GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define vfprintf rpl_vfprintf
+# endif
+# define GNULIB_overrides_vfprintf 1
+# if @GNULIB_VFPRINTF_POSIX@
+_GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+ _GL_ARG_NONNULL ((1, 2)));
+# else
+_GL_FUNCDECL_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args)
+ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (2, 0)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_RPL (vfprintf, int, (FILE *fp, const char *format, va_list args));
+# else
+/* Need to cast, because on Solaris, the third parameter is
+ __va_list args
+ and GCC's fixincludes did not change this to __gnuc_va_list. */
+_GL_CXXALIAS_SYS_CAST (vfprintf, int,
+ (FILE *fp, const char *format, va_list args));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (vfprintf);
+# endif
+#endif
+#if !@GNULIB_VFPRINTF_POSIX@ && defined GNULIB_POSIXCHECK
+# if !GNULIB_overrides_vfprintf
+# undef vfprintf
+# endif
+/* Assume vfprintf is always declared. */
+_GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - "
+ "use gnulib module vfprintf-posix for portable "
+ "POSIX compliance");
+#endif
+
+#if @GNULIB_VFSCANF@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef vfscanf
+# define vfscanf rpl_vfscanf
+# endif
+_GL_FUNCDECL_RPL (vfscanf, int,
+ (FILE *stream, const char *format, va_list args)
+ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (2, 0)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (vfscanf, int,
+ (FILE *stream, const char *format, va_list args));
+# else
+_GL_CXXALIAS_SYS (vfscanf, int,
+ (FILE *stream, const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vfscanf);
+#endif
+
+#if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VPRINTF@
+# if (@GNULIB_VPRINTF_POSIX@ && @REPLACE_VPRINTF@) \
+ || (@GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && (@GNULIB_STDIO_H_NONBLOCKING@ || @GNULIB_STDIO_H_SIGPIPE@))
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define vprintf rpl_vprintf
+# endif
+# define GNULIB_overrides_vprintf 1
+# if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VFPRINTF_POSIX@
+_GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (1, 0)
+ _GL_ARG_NONNULL ((1)));
+# else
+_GL_FUNCDECL_RPL (vprintf, int, (const char *format, va_list args)
+ _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM (1, 0)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_RPL (vprintf, int, (const char *format, va_list args));
+# else
+/* Need to cast, because on Solaris, the second parameter is
+ __va_list args
+ and GCC's fixincludes did not change this to __gnuc_va_list. */
+_GL_CXXALIAS_SYS_CAST (vprintf, int, (const char *format, va_list args));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (vprintf);
+# endif
+#endif
+#if !@GNULIB_VPRINTF_POSIX@ && defined GNULIB_POSIXCHECK
+# if !GNULIB_overrides_vprintf
+# undef vprintf
+# endif
+/* Assume vprintf is always declared. */
+_GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - "
+ "use gnulib module vprintf-posix for portable "
+ "POSIX compliance");
+#endif
+
+#if @GNULIB_VSCANF@
+# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef vscanf
+# define vscanf rpl_vscanf
+# endif
+_GL_FUNCDECL_RPL (vscanf, int, (const char *format, va_list args)
+ _GL_ATTRIBUTE_FORMAT_SCANF_SYSTEM (1, 0)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (vscanf, int, (const char *format, va_list args));
+# else
+_GL_CXXALIAS_SYS (vscanf, int, (const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vscanf);
+#endif
+
+#if @GNULIB_VSNPRINTF@
+# if @REPLACE_VSNPRINTF@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define vsnprintf rpl_vsnprintf
+# endif
+_GL_FUNCDECL_RPL (vsnprintf, int,
+ (char *str, size_t size, const char *format, va_list args)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0)
+ _GL_ARG_NONNULL ((3)));
+_GL_CXXALIAS_RPL (vsnprintf, int,
+ (char *str, size_t size, const char *format, va_list args));
+# else
+# if !@HAVE_DECL_VSNPRINTF@
+_GL_FUNCDECL_SYS (vsnprintf, int,
+ (char *str, size_t size, const char *format, va_list args)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (3, 0)
+ _GL_ARG_NONNULL ((3)));
+# endif
+_GL_CXXALIAS_SYS (vsnprintf, int,
+ (char *str, size_t size, const char *format, va_list args));
+# endif
+_GL_CXXALIASWARN (vsnprintf);
+#elif defined GNULIB_POSIXCHECK
+# undef vsnprintf
+# if HAVE_RAW_DECL_VSNPRINTF
+_GL_WARN_ON_USE (vsnprintf, "vsnprintf is unportable - "
+ "use gnulib module vsnprintf for portability");
+# endif
+#endif
+
+#if @GNULIB_VSPRINTF_POSIX@
+# if @REPLACE_VSPRINTF@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define vsprintf rpl_vsprintf
+# endif
+_GL_FUNCDECL_RPL (vsprintf, int,
+ (char *str, const char *format, va_list args)
+ _GL_ATTRIBUTE_FORMAT_PRINTF (2, 0)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (vsprintf, int,
+ (char *str, const char *format, va_list args));
+# else
+/* Need to cast, because on Solaris, the third parameter is
+ __va_list args
+ and GCC's fixincludes did not change this to __gnuc_va_list. */
+_GL_CXXALIAS_SYS_CAST (vsprintf, int,
+ (char *str, const char *format, va_list args));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (vsprintf);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef vsprintf
+/* Assume vsprintf is always declared. */
+_GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - "
+ "use gnulib module vsprintf-posix for portable "
+ "POSIX compliance");
+#endif
+
+#endif /* _@GUARD_PREFIX@_STDIO_H */
+#endif /* _@GUARD_PREFIX@_STDIO_H */
+#endif
diff --git a/lib/stdlib.in.h b/lib/stdlib.in.h
new file mode 100644
index 0000000..e088959
--- /dev/null
+++ b/lib/stdlib.in.h
@@ -0,0 +1,1112 @@
+/* A GNU-like <stdlib.h>.
+
+ Copyright (C) 1995, 2001-2004, 2006-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if defined __need_system_stdlib_h || defined __need_malloc_and_calloc
+/* Special invocation conventions inside some gnulib header files,
+ and inside some glibc header files, respectively. */
+
+#@INCLUDE_NEXT@ @NEXT_STDLIB_H@
+
+#else
+/* Normal invocation convention. */
+
+#ifndef _@GUARD_PREFIX@_STDLIB_H
+
+/* The include_next requires a split double-inclusion guard. */
+#@INCLUDE_NEXT@ @NEXT_STDLIB_H@
+
+#ifndef _@GUARD_PREFIX@_STDLIB_H
+#define _@GUARD_PREFIX@_STDLIB_H
+
+/* NetBSD 5.0 mis-defines NULL. */
+#include <stddef.h>
+
+/* MirBSD 10 defines WEXITSTATUS in <sys/wait.h>, not in <stdlib.h>. */
+#if @GNULIB_SYSTEM_POSIX@ && !defined WEXITSTATUS
+# include <sys/wait.h>
+#endif
+
+/* Solaris declares getloadavg() in <sys/loadavg.h>. */
+#if (@GNULIB_GETLOADAVG@ || defined GNULIB_POSIXCHECK) && @HAVE_SYS_LOADAVG_H@
+/* OpenIndiana has a bug: <sys/time.h> must be included before
+ <sys/loadavg.h>. */
+# include <sys/time.h>
+# include <sys/loadavg.h>
+#endif
+
+/* Native Windows platforms declare mktemp() in <io.h>. */
+#if 0 && (defined _WIN32 && ! defined __CYGWIN__)
+# include <io.h>
+#endif
+
+#if @GNULIB_RANDOM_R@
+
+/* OSF/1 5.1 declares 'struct random_data' in <random.h>, which is included
+ from <stdlib.h> if _REENTRANT is defined. Include it whenever we need
+ 'struct random_data'. */
+# if @HAVE_RANDOM_H@
+# include <random.h>
+# endif
+
+# if !@HAVE_STRUCT_RANDOM_DATA@ || @REPLACE_RANDOM_R@ || !@HAVE_RANDOM_R@
+# include <stdint.h>
+# endif
+
+# if !@HAVE_STRUCT_RANDOM_DATA@
+/* Define 'struct random_data'.
+ But allow multiple gnulib generated <stdlib.h> replacements to coexist. */
+# if !GNULIB_defined_struct_random_data
+struct random_data
+{
+ int32_t *fptr; /* Front pointer. */
+ int32_t *rptr; /* Rear pointer. */
+ int32_t *state; /* Array of state values. */
+ int rand_type; /* Type of random number generator. */
+ int rand_deg; /* Degree of random number generator. */
+ int rand_sep; /* Distance between front and rear. */
+ int32_t *end_ptr; /* Pointer behind state table. */
+};
+# define GNULIB_defined_struct_random_data 1
+# endif
+# endif
+#endif
+
+#if (@GNULIB_MKSTEMP@ || @GNULIB_MKSTEMPS@ || @GNULIB_MKOSTEMP@ || @GNULIB_MKOSTEMPS@ || @GNULIB_GETSUBOPT@ || defined GNULIB_POSIXCHECK) && ! defined __GLIBC__ && !(defined _WIN32 && ! defined __CYGWIN__)
+/* On Mac OS X 10.3, only <unistd.h> declares mkstemp. */
+/* On Mac OS X 10.5, only <unistd.h> declares mkstemps. */
+/* On Mac OS X 10.13, only <unistd.h> declares mkostemp and mkostemps. */
+/* On Cygwin 1.7.1, only <unistd.h> declares getsubopt. */
+/* But avoid namespace pollution on glibc systems and native Windows. */
+# include <unistd.h>
+#endif
+
+/* The __attribute__ feature is available in gcc versions 2.5 and later.
+ The attribute __pure__ was added in gcc 2.96. */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#else
+# define _GL_ATTRIBUTE_PURE /* empty */
+#endif
+
+/* The definition of _Noreturn is copied here. */
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
+
+/* The definition of _GL_ARG_NONNULL is copied here. */
+
+/* The definition of _GL_WARN_ON_USE is copied here. */
+
+
+/* Some systems do not define EXIT_*, despite otherwise supporting C89. */
+#ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+#endif
+/* Tandem/NSK and other platforms that define EXIT_FAILURE as -1 interfere
+ with proper operation of xargs. */
+#ifndef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#elif EXIT_FAILURE != 1
+# undef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#endif
+
+
+#if @GNULIB__EXIT@
+/* Terminate the current process with the given return code, without running
+ the 'atexit' handlers. */
+# if !@HAVE__EXIT@
+_GL_FUNCDECL_SYS (_Exit, _Noreturn void, (int status));
+# endif
+_GL_CXXALIAS_SYS (_Exit, void, (int status));
+_GL_CXXALIASWARN (_Exit);
+#elif defined GNULIB_POSIXCHECK
+# undef _Exit
+# if HAVE_RAW_DECL__EXIT
+_GL_WARN_ON_USE (_Exit, "_Exit is unportable - "
+ "use gnulib module _Exit for portability");
+# endif
+#endif
+
+
+#if @GNULIB_ATOLL@
+/* Parse a signed decimal integer.
+ Returns the value of the integer. Errors are not detected. */
+# if !@HAVE_ATOLL@
+_GL_FUNCDECL_SYS (atoll, long long, (const char *string)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (atoll, long long, (const char *string));
+_GL_CXXALIASWARN (atoll);
+#elif defined GNULIB_POSIXCHECK
+# undef atoll
+# if HAVE_RAW_DECL_ATOLL
+_GL_WARN_ON_USE (atoll, "atoll is unportable - "
+ "use gnulib module atoll for portability");
+# endif
+#endif
+
+#if @GNULIB_CALLOC_POSIX@
+# if @REPLACE_CALLOC@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef calloc
+# define calloc rpl_calloc
+# endif
+_GL_FUNCDECL_RPL (calloc, void *, (size_t nmemb, size_t size));
+_GL_CXXALIAS_RPL (calloc, void *, (size_t nmemb, size_t size));
+# else
+_GL_CXXALIAS_SYS (calloc, void *, (size_t nmemb, size_t size));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (calloc);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef calloc
+/* Assume calloc is always declared. */
+_GL_WARN_ON_USE (calloc, "calloc is not POSIX compliant everywhere - "
+ "use gnulib module calloc-posix for portability");
+#endif
+
+#if @GNULIB_CANONICALIZE_FILE_NAME@
+# if @REPLACE_CANONICALIZE_FILE_NAME@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define canonicalize_file_name rpl_canonicalize_file_name
+# endif
+_GL_FUNCDECL_RPL (canonicalize_file_name, char *, (const char *name)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (canonicalize_file_name, char *, (const char *name));
+# else
+# if !@HAVE_CANONICALIZE_FILE_NAME@
+_GL_FUNCDECL_SYS (canonicalize_file_name, char *, (const char *name)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (canonicalize_file_name, char *, (const char *name));
+# endif
+_GL_CXXALIASWARN (canonicalize_file_name);
+#elif defined GNULIB_POSIXCHECK
+# undef canonicalize_file_name
+# if HAVE_RAW_DECL_CANONICALIZE_FILE_NAME
+_GL_WARN_ON_USE (canonicalize_file_name,
+ "canonicalize_file_name is unportable - "
+ "use gnulib module canonicalize-lgpl for portability");
+# endif
+#endif
+
+#if @GNULIB_GETLOADAVG@
+/* Store max(NELEM,3) load average numbers in LOADAVG[].
+ The three numbers are the load average of the last 1 minute, the last 5
+ minutes, and the last 15 minutes, respectively.
+ LOADAVG is an array of NELEM numbers. */
+# if !@HAVE_DECL_GETLOADAVG@
+_GL_FUNCDECL_SYS (getloadavg, int, (double loadavg[], int nelem)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (getloadavg, int, (double loadavg[], int nelem));
+_GL_CXXALIASWARN (getloadavg);
+#elif defined GNULIB_POSIXCHECK
+# undef getloadavg
+# if HAVE_RAW_DECL_GETLOADAVG
+_GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - "
+ "use gnulib module getloadavg for portability");
+# endif
+#endif
+
+#if @GNULIB_GETSUBOPT@
+/* Assuming *OPTIONP is a comma separated list of elements of the form
+ "token" or "token=value", getsubopt parses the first of these elements.
+ If the first element refers to a "token" that is member of the given
+ NULL-terminated array of tokens:
+ - It replaces the comma with a NUL byte, updates *OPTIONP to point past
+ the first option and the comma, sets *VALUEP to the value of the
+ element (or NULL if it doesn't contain an "=" sign),
+ - It returns the index of the "token" in the given array of tokens.
+ Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined.
+ For more details see the POSIX specification.
+ https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsubopt.html */
+# if !@HAVE_GETSUBOPT@
+_GL_FUNCDECL_SYS (getsubopt, int,
+ (char **optionp, char *const *tokens, char **valuep)
+ _GL_ARG_NONNULL ((1, 2, 3)));
+# endif
+_GL_CXXALIAS_SYS (getsubopt, int,
+ (char **optionp, char *const *tokens, char **valuep));
+_GL_CXXALIASWARN (getsubopt);
+#elif defined GNULIB_POSIXCHECK
+# undef getsubopt
+# if HAVE_RAW_DECL_GETSUBOPT
+_GL_WARN_ON_USE (getsubopt, "getsubopt is unportable - "
+ "use gnulib module getsubopt for portability");
+# endif
+#endif
+
+#if @GNULIB_GRANTPT@
+/* Change the ownership and access permission of the slave side of the
+ pseudo-terminal whose master side is specified by FD. */
+# if !@HAVE_GRANTPT@
+_GL_FUNCDECL_SYS (grantpt, int, (int fd));
+# endif
+_GL_CXXALIAS_SYS (grantpt, int, (int fd));
+_GL_CXXALIASWARN (grantpt);
+#elif defined GNULIB_POSIXCHECK
+# undef grantpt
+# if HAVE_RAW_DECL_GRANTPT
+_GL_WARN_ON_USE (grantpt, "grantpt is not portable - "
+ "use gnulib module grantpt for portability");
+# endif
+#endif
+
+/* If _GL_USE_STDLIB_ALLOC is nonzero, the including module does not
+ rely on GNU or POSIX semantics for malloc and realloc (for example,
+ by never specifying a zero size), so it does not need malloc or
+ realloc to be redefined. */
+#if @GNULIB_MALLOC_POSIX@
+# if @REPLACE_MALLOC@
+# if !((defined __cplusplus && defined GNULIB_NAMESPACE) \
+ || _GL_USE_STDLIB_ALLOC)
+# undef malloc
+# define malloc rpl_malloc
+# endif
+_GL_FUNCDECL_RPL (malloc, void *, (size_t size));
+_GL_CXXALIAS_RPL (malloc, void *, (size_t size));
+# else
+_GL_CXXALIAS_SYS (malloc, void *, (size_t size));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (malloc);
+# endif
+#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC
+# undef malloc
+/* Assume malloc is always declared. */
+_GL_WARN_ON_USE (malloc, "malloc is not POSIX compliant everywhere - "
+ "use gnulib module malloc-posix for portability");
+#endif
+
+/* Convert a multibyte character to a wide character. */
+#if @GNULIB_MBTOWC@
+# if @REPLACE_MBTOWC@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef mbtowc
+# define mbtowc rpl_mbtowc
+# endif
+_GL_FUNCDECL_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
+_GL_CXXALIAS_RPL (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
+# else
+# if !@HAVE_MBTOWC@
+_GL_FUNCDECL_SYS (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
+# endif
+_GL_CXXALIAS_SYS (mbtowc, int, (wchar_t *pwc, const char *s, size_t n));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (mbtowc);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mbtowc
+# if HAVE_RAW_DECL_MBTOWC
+_GL_WARN_ON_USE (mbtowc, "mbtowc is not portable - "
+ "use gnulib module mbtowc for portability");
+# endif
+#endif
+
+#if @GNULIB_MKDTEMP@
+/* Create a unique temporary directory from TEMPLATE.
+ The last six characters of TEMPLATE must be "XXXXXX";
+ they are replaced with a string that makes the directory name unique.
+ Returns TEMPLATE, or a null pointer if it cannot get a unique name.
+ The directory is created mode 700. */
+# if !@HAVE_MKDTEMP@
+_GL_FUNCDECL_SYS (mkdtemp, char *, (char * /*template*/) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (mkdtemp, char *, (char * /*template*/));
+_GL_CXXALIASWARN (mkdtemp);
+#elif defined GNULIB_POSIXCHECK
+# undef mkdtemp
+# if HAVE_RAW_DECL_MKDTEMP
+_GL_WARN_ON_USE (mkdtemp, "mkdtemp is unportable - "
+ "use gnulib module mkdtemp for portability");
+# endif
+#endif
+
+#if @GNULIB_MKOSTEMP@
+/* Create a unique temporary file from TEMPLATE.
+ The last six characters of TEMPLATE must be "XXXXXX";
+ they are replaced with a string that makes the file name unique.
+ The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
+ and O_TEXT, O_BINARY (defined in "binary-io.h").
+ The file is then created, with the specified flags, ensuring it didn't exist
+ before.
+ The file is created read-write (mask at least 0600 & ~umask), but it may be
+ world-readable and world-writable (mask 0666 & ~umask), depending on the
+ implementation.
+ Returns the open file descriptor if successful, otherwise -1 and errno
+ set. */
+# if !@HAVE_MKOSTEMP@
+_GL_FUNCDECL_SYS (mkostemp, int, (char * /*template*/, int /*flags*/)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (mkostemp, int, (char * /*template*/, int /*flags*/));
+_GL_CXXALIASWARN (mkostemp);
+#elif defined GNULIB_POSIXCHECK
+# undef mkostemp
+# if HAVE_RAW_DECL_MKOSTEMP
+_GL_WARN_ON_USE (mkostemp, "mkostemp is unportable - "
+ "use gnulib module mkostemp for portability");
+# endif
+#endif
+
+#if @GNULIB_MKOSTEMPS@
+/* Create a unique temporary file from TEMPLATE.
+ The last six characters of TEMPLATE before a suffix of length
+ SUFFIXLEN must be "XXXXXX";
+ they are replaced with a string that makes the file name unique.
+ The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
+ and O_TEXT, O_BINARY (defined in "binary-io.h").
+ The file is then created, with the specified flags, ensuring it didn't exist
+ before.
+ The file is created read-write (mask at least 0600 & ~umask), but it may be
+ world-readable and world-writable (mask 0666 & ~umask), depending on the
+ implementation.
+ Returns the open file descriptor if successful, otherwise -1 and errno
+ set. */
+# if !@HAVE_MKOSTEMPS@
+_GL_FUNCDECL_SYS (mkostemps, int,
+ (char * /*template*/, int /*suffixlen*/, int /*flags*/)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (mkostemps, int,
+ (char * /*template*/, int /*suffixlen*/, int /*flags*/));
+_GL_CXXALIASWARN (mkostemps);
+#elif defined GNULIB_POSIXCHECK
+# undef mkostemps
+# if HAVE_RAW_DECL_MKOSTEMPS
+_GL_WARN_ON_USE (mkostemps, "mkostemps is unportable - "
+ "use gnulib module mkostemps for portability");
+# endif
+#endif
+
+#if @GNULIB_MKSTEMP@
+/* Create a unique temporary file from TEMPLATE.
+ The last six characters of TEMPLATE must be "XXXXXX";
+ they are replaced with a string that makes the file name unique.
+ The file is then created, ensuring it didn't exist before.
+ The file is created read-write (mask at least 0600 & ~umask), but it may be
+ world-readable and world-writable (mask 0666 & ~umask), depending on the
+ implementation.
+ Returns the open file descriptor if successful, otherwise -1 and errno
+ set. */
+# if @REPLACE_MKSTEMP@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define mkstemp rpl_mkstemp
+# endif
+_GL_FUNCDECL_RPL (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (mkstemp, int, (char * /*template*/));
+# else
+# if ! @HAVE_MKSTEMP@
+_GL_FUNCDECL_SYS (mkstemp, int, (char * /*template*/) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (mkstemp, int, (char * /*template*/));
+# endif
+_GL_CXXALIASWARN (mkstemp);
+#elif defined GNULIB_POSIXCHECK
+# undef mkstemp
+# if HAVE_RAW_DECL_MKSTEMP
+_GL_WARN_ON_USE (mkstemp, "mkstemp is unportable - "
+ "use gnulib module mkstemp for portability");
+# endif
+#endif
+
+#if @GNULIB_MKSTEMPS@
+/* Create a unique temporary file from TEMPLATE.
+ The last six characters of TEMPLATE prior to a suffix of length
+ SUFFIXLEN must be "XXXXXX";
+ they are replaced with a string that makes the file name unique.
+ The file is then created, ensuring it didn't exist before.
+ The file is created read-write (mask at least 0600 & ~umask), but it may be
+ world-readable and world-writable (mask 0666 & ~umask), depending on the
+ implementation.
+ Returns the open file descriptor if successful, otherwise -1 and errno
+ set. */
+# if !@HAVE_MKSTEMPS@
+_GL_FUNCDECL_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (mkstemps, int, (char * /*template*/, int /*suffixlen*/));
+_GL_CXXALIASWARN (mkstemps);
+#elif defined GNULIB_POSIXCHECK
+# undef mkstemps
+# if HAVE_RAW_DECL_MKSTEMPS
+_GL_WARN_ON_USE (mkstemps, "mkstemps is unportable - "
+ "use gnulib module mkstemps for portability");
+# endif
+#endif
+
+#if @GNULIB_POSIX_OPENPT@
+/* Return an FD open to the master side of a pseudo-terminal. Flags should
+ include O_RDWR, and may also include O_NOCTTY. */
+# if !@HAVE_POSIX_OPENPT@
+_GL_FUNCDECL_SYS (posix_openpt, int, (int flags));
+# endif
+_GL_CXXALIAS_SYS (posix_openpt, int, (int flags));
+_GL_CXXALIASWARN (posix_openpt);
+#elif defined GNULIB_POSIXCHECK
+# undef posix_openpt
+# if HAVE_RAW_DECL_POSIX_OPENPT
+_GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - "
+ "use gnulib module posix_openpt for portability");
+# endif
+#endif
+
+#if @GNULIB_PTSNAME@
+/* Return the pathname of the pseudo-terminal slave associated with
+ the master FD is open on, or NULL on errors. */
+# if @REPLACE_PTSNAME@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef ptsname
+# define ptsname rpl_ptsname
+# endif
+_GL_FUNCDECL_RPL (ptsname, char *, (int fd));
+_GL_CXXALIAS_RPL (ptsname, char *, (int fd));
+# else
+# if !@HAVE_PTSNAME@
+_GL_FUNCDECL_SYS (ptsname, char *, (int fd));
+# endif
+_GL_CXXALIAS_SYS (ptsname, char *, (int fd));
+# endif
+_GL_CXXALIASWARN (ptsname);
+#elif defined GNULIB_POSIXCHECK
+# undef ptsname
+# if HAVE_RAW_DECL_PTSNAME
+_GL_WARN_ON_USE (ptsname, "ptsname is not portable - "
+ "use gnulib module ptsname for portability");
+# endif
+#endif
+
+#if @GNULIB_PTSNAME_R@
+/* Set the pathname of the pseudo-terminal slave associated with
+ the master FD is open on and return 0, or set errno and return
+ non-zero on errors. */
+# if @REPLACE_PTSNAME_R@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef ptsname_r
+# define ptsname_r rpl_ptsname_r
+# endif
+_GL_FUNCDECL_RPL (ptsname_r, int, (int fd, char *buf, size_t len));
+_GL_CXXALIAS_RPL (ptsname_r, int, (int fd, char *buf, size_t len));
+# else
+# if !@HAVE_PTSNAME_R@
+_GL_FUNCDECL_SYS (ptsname_r, int, (int fd, char *buf, size_t len));
+# endif
+_GL_CXXALIAS_SYS (ptsname_r, int, (int fd, char *buf, size_t len));
+# endif
+_GL_CXXALIASWARN (ptsname_r);
+#elif defined GNULIB_POSIXCHECK
+# undef ptsname_r
+# if HAVE_RAW_DECL_PTSNAME_R
+_GL_WARN_ON_USE (ptsname_r, "ptsname_r is not portable - "
+ "use gnulib module ptsname_r for portability");
+# endif
+#endif
+
+#if @GNULIB_PUTENV@
+# if @REPLACE_PUTENV@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef putenv
+# define putenv rpl_putenv
+# endif
+_GL_FUNCDECL_RPL (putenv, int, (char *string) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (putenv, int, (char *string));
+# else
+_GL_CXXALIAS_SYS (putenv, int, (char *string));
+# endif
+_GL_CXXALIASWARN (putenv);
+#endif
+
+#if @GNULIB_QSORT_R@
+/* Sort an array of NMEMB elements, starting at address BASE, each element
+ occupying SIZE bytes, in ascending order according to the comparison
+ function COMPARE. */
+# if @REPLACE_QSORT_R@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef qsort_r
+# define qsort_r rpl_qsort_r
+# endif
+_GL_FUNCDECL_RPL (qsort_r, void, (void *base, size_t nmemb, size_t size,
+ int (*compare) (void const *, void const *,
+ void *),
+ void *arg) _GL_ARG_NONNULL ((1, 4)));
+_GL_CXXALIAS_RPL (qsort_r, void, (void *base, size_t nmemb, size_t size,
+ int (*compare) (void const *, void const *,
+ void *),
+ void *arg));
+# else
+# if !@HAVE_QSORT_R@
+_GL_FUNCDECL_SYS (qsort_r, void, (void *base, size_t nmemb, size_t size,
+ int (*compare) (void const *, void const *,
+ void *),
+ void *arg) _GL_ARG_NONNULL ((1, 4)));
+# endif
+_GL_CXXALIAS_SYS (qsort_r, void, (void *base, size_t nmemb, size_t size,
+ int (*compare) (void const *, void const *,
+ void *),
+ void *arg));
+# endif
+_GL_CXXALIASWARN (qsort_r);
+#elif defined GNULIB_POSIXCHECK
+# undef qsort_r
+# if HAVE_RAW_DECL_QSORT_R
+_GL_WARN_ON_USE (qsort_r, "qsort_r is not portable - "
+ "use gnulib module qsort_r for portability");
+# endif
+#endif
+
+
+#if @GNULIB_RANDOM_R@
+# if !@HAVE_RANDOM_R@
+# ifndef RAND_MAX
+# define RAND_MAX 2147483647
+# endif
+# endif
+#endif
+
+
+#if @GNULIB_RANDOM@
+# if @REPLACE_RANDOM@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef random
+# define random rpl_random
+# endif
+_GL_FUNCDECL_RPL (random, long, (void));
+_GL_CXXALIAS_RPL (random, long, (void));
+# else
+# if !@HAVE_RANDOM@
+_GL_FUNCDECL_SYS (random, long, (void));
+# endif
+/* Need to cast, because on Haiku, the return type is
+ int. */
+_GL_CXXALIAS_SYS_CAST (random, long, (void));
+# endif
+_GL_CXXALIASWARN (random);
+#elif defined GNULIB_POSIXCHECK
+# undef random
+# if HAVE_RAW_DECL_RANDOM
+_GL_WARN_ON_USE (random, "random is unportable - "
+ "use gnulib module random for portability");
+# endif
+#endif
+
+#if @GNULIB_RANDOM@
+# if @REPLACE_RANDOM@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef srandom
+# define srandom rpl_srandom
+# endif
+_GL_FUNCDECL_RPL (srandom, void, (unsigned int seed));
+_GL_CXXALIAS_RPL (srandom, void, (unsigned int seed));
+# else
+# if !@HAVE_RANDOM@
+_GL_FUNCDECL_SYS (srandom, void, (unsigned int seed));
+# endif
+/* Need to cast, because on FreeBSD, the first parameter is
+ unsigned long seed. */
+_GL_CXXALIAS_SYS_CAST (srandom, void, (unsigned int seed));
+# endif
+_GL_CXXALIASWARN (srandom);
+#elif defined GNULIB_POSIXCHECK
+# undef srandom
+# if HAVE_RAW_DECL_SRANDOM
+_GL_WARN_ON_USE (srandom, "srandom is unportable - "
+ "use gnulib module random for portability");
+# endif
+#endif
+
+#if @GNULIB_RANDOM@
+# if @REPLACE_INITSTATE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef initstate
+# define initstate rpl_initstate
+# endif
+_GL_FUNCDECL_RPL (initstate, char *,
+ (unsigned int seed, char *buf, size_t buf_size)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (initstate, char *,
+ (unsigned int seed, char *buf, size_t buf_size));
+# else
+# if !@HAVE_INITSTATE@ || !@HAVE_DECL_INITSTATE@
+_GL_FUNCDECL_SYS (initstate, char *,
+ (unsigned int seed, char *buf, size_t buf_size)
+ _GL_ARG_NONNULL ((2)));
+# endif
+/* Need to cast, because on FreeBSD, the first parameter is
+ unsigned long seed. */
+_GL_CXXALIAS_SYS_CAST (initstate, char *,
+ (unsigned int seed, char *buf, size_t buf_size));
+# endif
+_GL_CXXALIASWARN (initstate);
+#elif defined GNULIB_POSIXCHECK
+# undef initstate
+# if HAVE_RAW_DECL_INITSTATE
+_GL_WARN_ON_USE (initstate, "initstate is unportable - "
+ "use gnulib module random for portability");
+# endif
+#endif
+
+#if @GNULIB_RANDOM@
+# if @REPLACE_SETSTATE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef setstate
+# define setstate rpl_setstate
+# endif
+_GL_FUNCDECL_RPL (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (setstate, char *, (char *arg_state));
+# else
+# if !@HAVE_SETSTATE@ || !@HAVE_DECL_SETSTATE@
+_GL_FUNCDECL_SYS (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1)));
+# endif
+/* Need to cast, because on Mac OS X 10.13, HP-UX, Solaris the first parameter
+ is const char *arg_state. */
+_GL_CXXALIAS_SYS_CAST (setstate, char *, (char *arg_state));
+# endif
+_GL_CXXALIASWARN (setstate);
+#elif defined GNULIB_POSIXCHECK
+# undef setstate
+# if HAVE_RAW_DECL_SETSTATE
+_GL_WARN_ON_USE (setstate, "setstate is unportable - "
+ "use gnulib module random for portability");
+# endif
+#endif
+
+
+#if @GNULIB_RANDOM_R@
+# if @REPLACE_RANDOM_R@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef random_r
+# define random_r rpl_random_r
+# endif
+_GL_FUNCDECL_RPL (random_r, int, (struct random_data *buf, int32_t *result)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (random_r, int, (struct random_data *buf, int32_t *result));
+# else
+# if !@HAVE_RANDOM_R@
+_GL_FUNCDECL_SYS (random_r, int, (struct random_data *buf, int32_t *result)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (random_r, int, (struct random_data *buf, int32_t *result));
+# endif
+_GL_CXXALIASWARN (random_r);
+#elif defined GNULIB_POSIXCHECK
+# undef random_r
+# if HAVE_RAW_DECL_RANDOM_R
+_GL_WARN_ON_USE (random_r, "random_r is unportable - "
+ "use gnulib module random_r for portability");
+# endif
+#endif
+
+#if @GNULIB_RANDOM_R@
+# if @REPLACE_RANDOM_R@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef srandom_r
+# define srandom_r rpl_srandom_r
+# endif
+_GL_FUNCDECL_RPL (srandom_r, int,
+ (unsigned int seed, struct random_data *rand_state)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (srandom_r, int,
+ (unsigned int seed, struct random_data *rand_state));
+# else
+# if !@HAVE_RANDOM_R@
+_GL_FUNCDECL_SYS (srandom_r, int,
+ (unsigned int seed, struct random_data *rand_state)
+ _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (srandom_r, int,
+ (unsigned int seed, struct random_data *rand_state));
+# endif
+_GL_CXXALIASWARN (srandom_r);
+#elif defined GNULIB_POSIXCHECK
+# undef srandom_r
+# if HAVE_RAW_DECL_SRANDOM_R
+_GL_WARN_ON_USE (srandom_r, "srandom_r is unportable - "
+ "use gnulib module random_r for portability");
+# endif
+#endif
+
+#if @GNULIB_RANDOM_R@
+# if @REPLACE_RANDOM_R@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef initstate_r
+# define initstate_r rpl_initstate_r
+# endif
+_GL_FUNCDECL_RPL (initstate_r, int,
+ (unsigned int seed, char *buf, size_t buf_size,
+ struct random_data *rand_state)
+ _GL_ARG_NONNULL ((2, 4)));
+_GL_CXXALIAS_RPL (initstate_r, int,
+ (unsigned int seed, char *buf, size_t buf_size,
+ struct random_data *rand_state));
+# else
+# if !@HAVE_RANDOM_R@
+_GL_FUNCDECL_SYS (initstate_r, int,
+ (unsigned int seed, char *buf, size_t buf_size,
+ struct random_data *rand_state)
+ _GL_ARG_NONNULL ((2, 4)));
+# endif
+/* Need to cast, because on Haiku, the third parameter is
+ unsigned long buf_size. */
+_GL_CXXALIAS_SYS_CAST (initstate_r, int,
+ (unsigned int seed, char *buf, size_t buf_size,
+ struct random_data *rand_state));
+# endif
+_GL_CXXALIASWARN (initstate_r);
+#elif defined GNULIB_POSIXCHECK
+# undef initstate_r
+# if HAVE_RAW_DECL_INITSTATE_R
+_GL_WARN_ON_USE (initstate_r, "initstate_r is unportable - "
+ "use gnulib module random_r for portability");
+# endif
+#endif
+
+#if @GNULIB_RANDOM_R@
+# if @REPLACE_RANDOM_R@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef setstate_r
+# define setstate_r rpl_setstate_r
+# endif
+_GL_FUNCDECL_RPL (setstate_r, int,
+ (char *arg_state, struct random_data *rand_state)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (setstate_r, int,
+ (char *arg_state, struct random_data *rand_state));
+# else
+# if !@HAVE_RANDOM_R@
+_GL_FUNCDECL_SYS (setstate_r, int,
+ (char *arg_state, struct random_data *rand_state)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+/* Need to cast, because on Haiku, the first parameter is
+ void *arg_state. */
+_GL_CXXALIAS_SYS_CAST (setstate_r, int,
+ (char *arg_state, struct random_data *rand_state));
+# endif
+_GL_CXXALIASWARN (setstate_r);
+#elif defined GNULIB_POSIXCHECK
+# undef setstate_r
+# if HAVE_RAW_DECL_SETSTATE_R
+_GL_WARN_ON_USE (setstate_r, "setstate_r is unportable - "
+ "use gnulib module random_r for portability");
+# endif
+#endif
+
+
+#if @GNULIB_REALLOC_POSIX@
+# if @REPLACE_REALLOC@
+# if !((defined __cplusplus && defined GNULIB_NAMESPACE) \
+ || _GL_USE_STDLIB_ALLOC)
+# undef realloc
+# define realloc rpl_realloc
+# endif
+_GL_FUNCDECL_RPL (realloc, void *, (void *ptr, size_t size));
+_GL_CXXALIAS_RPL (realloc, void *, (void *ptr, size_t size));
+# else
+_GL_CXXALIAS_SYS (realloc, void *, (void *ptr, size_t size));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (realloc);
+# endif
+#elif defined GNULIB_POSIXCHECK && !_GL_USE_STDLIB_ALLOC
+# undef realloc
+/* Assume realloc is always declared. */
+_GL_WARN_ON_USE (realloc, "realloc is not POSIX compliant everywhere - "
+ "use gnulib module realloc-posix for portability");
+#endif
+
+
+#if @GNULIB_REALLOCARRAY@
+# if ! @HAVE_REALLOCARRAY@
+_GL_FUNCDECL_SYS (reallocarray, void *,
+ (void *ptr, size_t nmemb, size_t size));
+# endif
+_GL_CXXALIAS_SYS (reallocarray, void *,
+ (void *ptr, size_t nmemb, size_t size));
+_GL_CXXALIASWARN (reallocarray);
+#elif defined GNULIB_POSIXCHECK
+# undef reallocarray
+# if HAVE_RAW_DECL_REALLOCARRAY
+_GL_WARN_ON_USE (reallocarray, "reallocarray is not portable - "
+ "use gnulib module reallocarray for portability");
+# endif
+#endif
+
+#if @GNULIB_REALPATH@
+# if @REPLACE_REALPATH@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define realpath rpl_realpath
+# endif
+_GL_FUNCDECL_RPL (realpath, char *, (const char *name, char *resolved)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (realpath, char *, (const char *name, char *resolved));
+# else
+# if !@HAVE_REALPATH@
+_GL_FUNCDECL_SYS (realpath, char *, (const char *name, char *resolved)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (realpath, char *, (const char *name, char *resolved));
+# endif
+_GL_CXXALIASWARN (realpath);
+#elif defined GNULIB_POSIXCHECK
+# undef realpath
+# if HAVE_RAW_DECL_REALPATH
+_GL_WARN_ON_USE (realpath, "realpath is unportable - use gnulib module "
+ "canonicalize or canonicalize-lgpl for portability");
+# endif
+#endif
+
+#if @GNULIB_RPMATCH@
+/* Test a user response to a question.
+ Return 1 if it is affirmative, 0 if it is negative, or -1 if not clear. */
+# if !@HAVE_RPMATCH@
+_GL_FUNCDECL_SYS (rpmatch, int, (const char *response) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (rpmatch, int, (const char *response));
+_GL_CXXALIASWARN (rpmatch);
+#elif defined GNULIB_POSIXCHECK
+# undef rpmatch
+# if HAVE_RAW_DECL_RPMATCH
+_GL_WARN_ON_USE (rpmatch, "rpmatch is unportable - "
+ "use gnulib module rpmatch for portability");
+# endif
+#endif
+
+#if @GNULIB_SECURE_GETENV@
+/* Look up NAME in the environment, returning 0 in insecure situations. */
+# if !@HAVE_SECURE_GETENV@
+_GL_FUNCDECL_SYS (secure_getenv, char *,
+ (char const *name) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (secure_getenv, char *, (char const *name));
+_GL_CXXALIASWARN (secure_getenv);
+#elif defined GNULIB_POSIXCHECK
+# undef secure_getenv
+# if HAVE_RAW_DECL_SECURE_GETENV
+_GL_WARN_ON_USE (secure_getenv, "secure_getenv is unportable - "
+ "use gnulib module secure_getenv for portability");
+# endif
+#endif
+
+#if @GNULIB_SETENV@
+/* Set NAME to VALUE in the environment.
+ If REPLACE is nonzero, overwrite an existing value. */
+# if @REPLACE_SETENV@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef setenv
+# define setenv rpl_setenv
+# endif
+_GL_FUNCDECL_RPL (setenv, int,
+ (const char *name, const char *value, int replace)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (setenv, int,
+ (const char *name, const char *value, int replace));
+# else
+# if !@HAVE_DECL_SETENV@
+_GL_FUNCDECL_SYS (setenv, int,
+ (const char *name, const char *value, int replace)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (setenv, int,
+ (const char *name, const char *value, int replace));
+# endif
+# if !(@REPLACE_SETENV@ && !@HAVE_DECL_SETENV@)
+_GL_CXXALIASWARN (setenv);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef setenv
+# if HAVE_RAW_DECL_SETENV
+_GL_WARN_ON_USE (setenv, "setenv is unportable - "
+ "use gnulib module setenv for portability");
+# endif
+#endif
+
+#if @GNULIB_STRTOD@
+ /* Parse a double from STRING, updating ENDP if appropriate. */
+# if @REPLACE_STRTOD@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define strtod rpl_strtod
+# endif
+# define GNULIB_defined_strtod_function 1
+_GL_FUNCDECL_RPL (strtod, double, (const char *str, char **endp)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strtod, double, (const char *str, char **endp));
+# else
+# if !@HAVE_STRTOD@
+_GL_FUNCDECL_SYS (strtod, double, (const char *str, char **endp)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (strtod, double, (const char *str, char **endp));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (strtod);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtod
+# if HAVE_RAW_DECL_STRTOD
+_GL_WARN_ON_USE (strtod, "strtod is unportable - "
+ "use gnulib module strtod for portability");
+# endif
+#endif
+
+#if @GNULIB_STRTOLD@
+ /* Parse a 'long double' from STRING, updating ENDP if appropriate. */
+# if @REPLACE_STRTOLD@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define strtold rpl_strtold
+# endif
+# define GNULIB_defined_strtold_function 1
+_GL_FUNCDECL_RPL (strtold, long double, (const char *str, char **endp)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strtold, long double, (const char *str, char **endp));
+# else
+# if !@HAVE_STRTOLD@
+_GL_FUNCDECL_SYS (strtold, long double, (const char *str, char **endp)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (strtold, long double, (const char *str, char **endp));
+# endif
+_GL_CXXALIASWARN (strtold);
+#elif defined GNULIB_POSIXCHECK
+# undef strtold
+# if HAVE_RAW_DECL_STRTOLD
+_GL_WARN_ON_USE (strtold, "strtold is unportable - "
+ "use gnulib module strtold for portability");
+# endif
+#endif
+
+#if @GNULIB_STRTOLL@
+/* Parse a signed integer whose textual representation starts at STRING.
+ The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
+ it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
+ "0x").
+ If ENDPTR is not NULL, the address of the first byte after the integer is
+ stored in *ENDPTR.
+ Upon overflow, the return value is LLONG_MAX or LLONG_MIN, and errno is set
+ to ERANGE. */
+# if !@HAVE_STRTOLL@
+_GL_FUNCDECL_SYS (strtoll, long long,
+ (const char *string, char **endptr, int base)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (strtoll, long long,
+ (const char *string, char **endptr, int base));
+_GL_CXXALIASWARN (strtoll);
+#elif defined GNULIB_POSIXCHECK
+# undef strtoll
+# if HAVE_RAW_DECL_STRTOLL
+_GL_WARN_ON_USE (strtoll, "strtoll is unportable - "
+ "use gnulib module strtoll for portability");
+# endif
+#endif
+
+#if @GNULIB_STRTOULL@
+/* Parse an unsigned integer whose textual representation starts at STRING.
+ The integer is expected to be in base BASE (2 <= BASE <= 36); if BASE == 0,
+ it may be decimal or octal (with prefix "0") or hexadecimal (with prefix
+ "0x").
+ If ENDPTR is not NULL, the address of the first byte after the integer is
+ stored in *ENDPTR.
+ Upon overflow, the return value is ULLONG_MAX, and errno is set to
+ ERANGE. */
+# if !@HAVE_STRTOULL@
+_GL_FUNCDECL_SYS (strtoull, unsigned long long,
+ (const char *string, char **endptr, int base)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (strtoull, unsigned long long,
+ (const char *string, char **endptr, int base));
+_GL_CXXALIASWARN (strtoull);
+#elif defined GNULIB_POSIXCHECK
+# undef strtoull
+# if HAVE_RAW_DECL_STRTOULL
+_GL_WARN_ON_USE (strtoull, "strtoull is unportable - "
+ "use gnulib module strtoull for portability");
+# endif
+#endif
+
+#if @GNULIB_UNLOCKPT@
+/* Unlock the slave side of the pseudo-terminal whose master side is specified
+ by FD, so that it can be opened. */
+# if !@HAVE_UNLOCKPT@
+_GL_FUNCDECL_SYS (unlockpt, int, (int fd));
+# endif
+_GL_CXXALIAS_SYS (unlockpt, int, (int fd));
+_GL_CXXALIASWARN (unlockpt);
+#elif defined GNULIB_POSIXCHECK
+# undef unlockpt
+# if HAVE_RAW_DECL_UNLOCKPT
+_GL_WARN_ON_USE (unlockpt, "unlockpt is not portable - "
+ "use gnulib module unlockpt for portability");
+# endif
+#endif
+
+#if @GNULIB_UNSETENV@
+/* Remove the variable NAME from the environment. */
+# if @REPLACE_UNSETENV@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef unsetenv
+# define unsetenv rpl_unsetenv
+# endif
+_GL_FUNCDECL_RPL (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (unsetenv, int, (const char *name));
+# else
+# if !@HAVE_DECL_UNSETENV@
+_GL_FUNCDECL_SYS (unsetenv, int, (const char *name) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (unsetenv, int, (const char *name));
+# endif
+# if !(@REPLACE_UNSETENV@ && !@HAVE_DECL_UNSETENV@)
+_GL_CXXALIASWARN (unsetenv);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef unsetenv
+# if HAVE_RAW_DECL_UNSETENV
+_GL_WARN_ON_USE (unsetenv, "unsetenv is unportable - "
+ "use gnulib module unsetenv for portability");
+# endif
+#endif
+
+/* Convert a wide character to a multibyte character. */
+#if @GNULIB_WCTOMB@
+# if @REPLACE_WCTOMB@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef wctomb
+# define wctomb rpl_wctomb
+# endif
+_GL_FUNCDECL_RPL (wctomb, int, (char *s, wchar_t wc));
+_GL_CXXALIAS_RPL (wctomb, int, (char *s, wchar_t wc));
+# else
+_GL_CXXALIAS_SYS (wctomb, int, (char *s, wchar_t wc));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (wctomb);
+# endif
+#endif
+
+
+#endif /* _@GUARD_PREFIX@_STDLIB_H */
+#endif /* _@GUARD_PREFIX@_STDLIB_H */
+#endif
diff --git a/lib/stpcpy.c b/lib/stpcpy.c
new file mode 100644
index 0000000..58265f0
--- /dev/null
+++ b/lib/stpcpy.c
@@ -0,0 +1,49 @@
+/* stpcpy.c -- copy a string and return pointer to end of new string
+ Copyright (C) 1992, 1995, 1997-1998, 2006, 2009-2020 Free Software
+ Foundation, Inc.
+
+ NOTE: The canonical source of this file is maintained with the GNU C Library.
+ Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 3 of the License, or any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <string.h>
+
+#undef __stpcpy
+#ifdef _LIBC
+# undef stpcpy
+#endif
+
+#ifndef weak_alias
+# define __stpcpy stpcpy
+#endif
+
+/* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */
+char *
+__stpcpy (char *dest, const char *src)
+{
+ register char *d = dest;
+ register const char *s = src;
+
+ do
+ *d++ = *s;
+ while (*s++ != '\0');
+
+ return d - 1;
+}
+#ifdef weak_alias
+weak_alias (__stpcpy, stpcpy)
+#endif
diff --git a/lib/strerror-override.c b/lib/strerror-override.c
new file mode 100644
index 0000000..61b7689
--- /dev/null
+++ b/lib/strerror-override.c
@@ -0,0 +1,302 @@
+/* strerror-override.c --- POSIX compatible system error routine
+
+ Copyright (C) 2010-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2010. */
+
+#include <config.h>
+
+#include "strerror-override.h"
+
+#include <errno.h>
+
+#if GNULIB_defined_EWINSOCK /* native Windows platforms */
+# if HAVE_WINSOCK2_H
+# include <winsock2.h>
+# endif
+#endif
+
+/* If ERRNUM maps to an errno value defined by gnulib, return a string
+ describing the error. Otherwise return NULL. */
+const char *
+strerror_override (int errnum)
+{
+ /* These error messages are taken from glibc/sysdeps/gnu/errlist.c. */
+ switch (errnum)
+ {
+#if REPLACE_STRERROR_0
+ case 0:
+ return "Success";
+#endif
+
+#if GNULIB_defined_ESOCK /* native Windows platforms with older <errno.h> */
+ case EINPROGRESS:
+ return "Operation now in progress";
+ case EALREADY:
+ return "Operation already in progress";
+ case ENOTSOCK:
+ return "Socket operation on non-socket";
+ case EDESTADDRREQ:
+ return "Destination address required";
+ case EMSGSIZE:
+ return "Message too long";
+ case EPROTOTYPE:
+ return "Protocol wrong type for socket";
+ case ENOPROTOOPT:
+ return "Protocol not available";
+ case EPROTONOSUPPORT:
+ return "Protocol not supported";
+ case EOPNOTSUPP:
+ return "Operation not supported";
+ case EAFNOSUPPORT:
+ return "Address family not supported by protocol";
+ case EADDRINUSE:
+ return "Address already in use";
+ case EADDRNOTAVAIL:
+ return "Cannot assign requested address";
+ case ENETDOWN:
+ return "Network is down";
+ case ENETUNREACH:
+ return "Network is unreachable";
+ case ECONNRESET:
+ return "Connection reset by peer";
+ case ENOBUFS:
+ return "No buffer space available";
+ case EISCONN:
+ return "Transport endpoint is already connected";
+ case ENOTCONN:
+ return "Transport endpoint is not connected";
+ case ETIMEDOUT:
+ return "Connection timed out";
+ case ECONNREFUSED:
+ return "Connection refused";
+ case ELOOP:
+ return "Too many levels of symbolic links";
+ case EHOSTUNREACH:
+ return "No route to host";
+ case EWOULDBLOCK:
+ return "Operation would block";
+#endif
+#if GNULIB_defined_ESTREAMS /* native Windows platforms with older <errno.h> */
+ case ETXTBSY:
+ return "Text file busy";
+ case ENODATA:
+ return "No data available";
+ case ENOSR:
+ return "Out of streams resources";
+ case ENOSTR:
+ return "Device not a stream";
+ case ETIME:
+ return "Timer expired";
+ case EOTHER:
+ return "Other error";
+#endif
+#if GNULIB_defined_EWINSOCK /* native Windows platforms */
+ case ESOCKTNOSUPPORT:
+ return "Socket type not supported";
+ case EPFNOSUPPORT:
+ return "Protocol family not supported";
+ case ESHUTDOWN:
+ return "Cannot send after transport endpoint shutdown";
+ case ETOOMANYREFS:
+ return "Too many references: cannot splice";
+ case EHOSTDOWN:
+ return "Host is down";
+ case EPROCLIM:
+ return "Too many processes";
+ case EUSERS:
+ return "Too many users";
+ case EDQUOT:
+ return "Disk quota exceeded";
+ case ESTALE:
+ return "Stale NFS file handle";
+ case EREMOTE:
+ return "Object is remote";
+# if HAVE_WINSOCK2_H
+ /* WSA_INVALID_HANDLE maps to EBADF */
+ /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */
+ /* WSA_INVALID_PARAMETER maps to EINVAL */
+ case WSA_OPERATION_ABORTED:
+ return "Overlapped operation aborted";
+ case WSA_IO_INCOMPLETE:
+ return "Overlapped I/O event object not in signaled state";
+ case WSA_IO_PENDING:
+ return "Overlapped operations will complete later";
+ /* WSAEINTR maps to EINTR */
+ /* WSAEBADF maps to EBADF */
+ /* WSAEACCES maps to EACCES */
+ /* WSAEFAULT maps to EFAULT */
+ /* WSAEINVAL maps to EINVAL */
+ /* WSAEMFILE maps to EMFILE */
+ /* WSAEWOULDBLOCK maps to EWOULDBLOCK */
+ /* WSAEINPROGRESS maps to EINPROGRESS */
+ /* WSAEALREADY maps to EALREADY */
+ /* WSAENOTSOCK maps to ENOTSOCK */
+ /* WSAEDESTADDRREQ maps to EDESTADDRREQ */
+ /* WSAEMSGSIZE maps to EMSGSIZE */
+ /* WSAEPROTOTYPE maps to EPROTOTYPE */
+ /* WSAENOPROTOOPT maps to ENOPROTOOPT */
+ /* WSAEPROTONOSUPPORT maps to EPROTONOSUPPORT */
+ /* WSAESOCKTNOSUPPORT is ESOCKTNOSUPPORT */
+ /* WSAEOPNOTSUPP maps to EOPNOTSUPP */
+ /* WSAEPFNOSUPPORT is EPFNOSUPPORT */
+ /* WSAEAFNOSUPPORT maps to EAFNOSUPPORT */
+ /* WSAEADDRINUSE maps to EADDRINUSE */
+ /* WSAEADDRNOTAVAIL maps to EADDRNOTAVAIL */
+ /* WSAENETDOWN maps to ENETDOWN */
+ /* WSAENETUNREACH maps to ENETUNREACH */
+ /* WSAENETRESET maps to ENETRESET */
+ /* WSAECONNABORTED maps to ECONNABORTED */
+ /* WSAECONNRESET maps to ECONNRESET */
+ /* WSAENOBUFS maps to ENOBUFS */
+ /* WSAEISCONN maps to EISCONN */
+ /* WSAENOTCONN maps to ENOTCONN */
+ /* WSAESHUTDOWN is ESHUTDOWN */
+ /* WSAETOOMANYREFS is ETOOMANYREFS */
+ /* WSAETIMEDOUT maps to ETIMEDOUT */
+ /* WSAECONNREFUSED maps to ECONNREFUSED */
+ /* WSAELOOP maps to ELOOP */
+ /* WSAENAMETOOLONG maps to ENAMETOOLONG */
+ /* WSAEHOSTDOWN is EHOSTDOWN */
+ /* WSAEHOSTUNREACH maps to EHOSTUNREACH */
+ /* WSAENOTEMPTY maps to ENOTEMPTY */
+ /* WSAEPROCLIM is EPROCLIM */
+ /* WSAEUSERS is EUSERS */
+ /* WSAEDQUOT is EDQUOT */
+ /* WSAESTALE is ESTALE */
+ /* WSAEREMOTE is EREMOTE */
+ case WSASYSNOTREADY:
+ return "Network subsystem is unavailable";
+ case WSAVERNOTSUPPORTED:
+ return "Winsock.dll version out of range";
+ case WSANOTINITIALISED:
+ return "Successful WSAStartup not yet performed";
+ case WSAEDISCON:
+ return "Graceful shutdown in progress";
+ case WSAENOMORE: case WSA_E_NO_MORE:
+ return "No more results";
+ case WSAECANCELLED: case WSA_E_CANCELLED:
+ return "Call was canceled";
+ case WSAEINVALIDPROCTABLE:
+ return "Procedure call table is invalid";
+ case WSAEINVALIDPROVIDER:
+ return "Service provider is invalid";
+ case WSAEPROVIDERFAILEDINIT:
+ return "Service provider failed to initialize";
+ case WSASYSCALLFAILURE:
+ return "System call failure";
+ case WSASERVICE_NOT_FOUND:
+ return "Service not found";
+ case WSATYPE_NOT_FOUND:
+ return "Class type not found";
+ case WSAEREFUSED:
+ return "Database query was refused";
+ case WSAHOST_NOT_FOUND:
+ return "Host not found";
+ case WSATRY_AGAIN:
+ return "Nonauthoritative host not found";
+ case WSANO_RECOVERY:
+ return "Nonrecoverable error";
+ case WSANO_DATA:
+ return "Valid name, no data record of requested type";
+ /* WSA_QOS_* omitted */
+# endif
+#endif
+
+#if GNULIB_defined_ENOMSG
+ case ENOMSG:
+ return "No message of desired type";
+#endif
+
+#if GNULIB_defined_EIDRM
+ case EIDRM:
+ return "Identifier removed";
+#endif
+
+#if GNULIB_defined_ENOLINK
+ case ENOLINK:
+ return "Link has been severed";
+#endif
+
+#if GNULIB_defined_EPROTO
+ case EPROTO:
+ return "Protocol error";
+#endif
+
+#if GNULIB_defined_EMULTIHOP
+ case EMULTIHOP:
+ return "Multihop attempted";
+#endif
+
+#if GNULIB_defined_EBADMSG
+ case EBADMSG:
+ return "Bad message";
+#endif
+
+#if GNULIB_defined_EOVERFLOW
+ case EOVERFLOW:
+ return "Value too large for defined data type";
+#endif
+
+#if GNULIB_defined_ENOTSUP
+ case ENOTSUP:
+ return "Not supported";
+#endif
+
+#if GNULIB_defined_ENETRESET
+ case ENETRESET:
+ return "Network dropped connection on reset";
+#endif
+
+#if GNULIB_defined_ECONNABORTED
+ case ECONNABORTED:
+ return "Software caused connection abort";
+#endif
+
+#if GNULIB_defined_ESTALE
+ case ESTALE:
+ return "Stale NFS file handle";
+#endif
+
+#if GNULIB_defined_EDQUOT
+ case EDQUOT:
+ return "Disk quota exceeded";
+#endif
+
+#if GNULIB_defined_ECANCELED
+ case ECANCELED:
+ return "Operation canceled";
+#endif
+
+#if GNULIB_defined_EOWNERDEAD
+ case EOWNERDEAD:
+ return "Owner died";
+#endif
+
+#if GNULIB_defined_ENOTRECOVERABLE
+ case ENOTRECOVERABLE:
+ return "State not recoverable";
+#endif
+
+#if GNULIB_defined_EILSEQ
+ case EILSEQ:
+ return "Invalid or incomplete multibyte or wide character";
+#endif
+
+ default:
+ return NULL;
+ }
+}
diff --git a/lib/strerror-override.h b/lib/strerror-override.h
new file mode 100644
index 0000000..062f51c
--- /dev/null
+++ b/lib/strerror-override.h
@@ -0,0 +1,56 @@
+/* strerror-override.h --- POSIX compatible system error routine
+
+ Copyright (C) 2010-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _GL_STRERROR_OVERRIDE_H
+# define _GL_STRERROR_OVERRIDE_H
+
+# include <errno.h>
+# include <stddef.h>
+
+/* Reasonable buffer size that should never trigger ERANGE; if this
+ proves too small, we intentionally abort(), to remind us to fix
+ this value. */
+# define STACKBUF_LEN 256
+
+/* If ERRNUM maps to an errno value defined by gnulib, return a string
+ describing the error. Otherwise return NULL. */
+# if REPLACE_STRERROR_0 \
+ || GNULIB_defined_ESOCK \
+ || GNULIB_defined_ESTREAMS \
+ || GNULIB_defined_EWINSOCK \
+ || GNULIB_defined_ENOMSG \
+ || GNULIB_defined_EIDRM \
+ || GNULIB_defined_ENOLINK \
+ || GNULIB_defined_EPROTO \
+ || GNULIB_defined_EMULTIHOP \
+ || GNULIB_defined_EBADMSG \
+ || GNULIB_defined_EOVERFLOW \
+ || GNULIB_defined_ENOTSUP \
+ || GNULIB_defined_ENETRESET \
+ || GNULIB_defined_ECONNABORTED \
+ || GNULIB_defined_ESTALE \
+ || GNULIB_defined_EDQUOT \
+ || GNULIB_defined_ECANCELED \
+ || GNULIB_defined_EOWNERDEAD \
+ || GNULIB_defined_ENOTRECOVERABLE \
+ || GNULIB_defined_EILSEQ
+extern const char *strerror_override (int errnum) _GL_ATTRIBUTE_CONST;
+# else
+# define strerror_override(ignored) NULL
+# endif
+
+#endif /* _GL_STRERROR_OVERRIDE_H */
diff --git a/lib/strerror.c b/lib/strerror.c
new file mode 100644
index 0000000..1a53a8b
--- /dev/null
+++ b/lib/strerror.c
@@ -0,0 +1,71 @@
+/* strerror.c --- POSIX compatible system error routine
+
+ Copyright (C) 2007-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* Specification. */
+#include <string.h>
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "intprops.h"
+#include "strerror-override.h"
+#include "verify.h"
+
+/* Use the system functions, not the gnulib overrides in this file. */
+#undef sprintf
+
+char *
+strerror (int n)
+#undef strerror
+{
+ static char buf[STACKBUF_LEN];
+ size_t len;
+
+ /* Cast away const, due to the historical signature of strerror;
+ callers should not be modifying the string. */
+ const char *msg = strerror_override (n);
+ if (msg)
+ return (char *) msg;
+
+ msg = strerror (n);
+
+ /* Our strerror_r implementation might use the system's strerror
+ buffer, so all other clients of strerror have to see the error
+ copied into a buffer that we manage. This is not thread-safe,
+ even if the system strerror is, but portable programs shouldn't
+ be using strerror if they care about thread-safety. */
+ if (!msg || !*msg)
+ {
+ static char const fmt[] = "Unknown error %d";
+ verify (sizeof buf >= sizeof (fmt) + INT_STRLEN_BOUND (n));
+ sprintf (buf, fmt, n);
+ errno = EINVAL;
+ return buf;
+ }
+
+ /* Fix STACKBUF_LEN if this ever aborts. */
+ len = strlen (msg);
+ if (sizeof buf <= len)
+ abort ();
+
+ memcpy (buf, msg, len + 1);
+ return buf;
+}
diff --git a/lib/string.in.h b/lib/string.in.h
new file mode 100644
index 0000000..2c04e5f
--- /dev/null
+++ b/lib/string.in.h
@@ -0,0 +1,1067 @@
+/* A GNU-like <string.h>.
+
+ Copyright (C) 1995-1996, 2001-2020 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <https://www.gnu.org/licenses/>. */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if defined _GL_ALREADY_INCLUDING_STRING_H
+/* Special invocation convention:
+ - On OS X/NetBSD we have a sequence of nested includes
+ <string.h> -> <strings.h> -> "string.h"
+ In this situation system _chk variants due to -D_FORTIFY_SOURCE
+ might be used after any replacements defined here. */
+
+#@INCLUDE_NEXT@ @NEXT_STRING_H@
+
+#else
+/* Normal invocation convention. */
+
+#ifndef _@GUARD_PREFIX@_STRING_H
+
+#define _GL_ALREADY_INCLUDING_STRING_H
+
+/* The include_next requires a split double-inclusion guard. */
+#@INCLUDE_NEXT@ @NEXT_STRING_H@
+
+#undef _GL_ALREADY_INCLUDING_STRING_H
+
+#ifndef _@GUARD_PREFIX@_STRING_H
+#define _@GUARD_PREFIX@_STRING_H
+
+/* NetBSD 5.0 mis-defines NULL. */
+#include <stddef.h>
+
+/* MirBSD defines mbslen as a macro. */
+#if @GNULIB_MBSLEN@ && defined __MirBSD__
+# include <wchar.h>
+#endif
+
+/* The __attribute__ feature is available in gcc versions 2.5 and later.
+ The attribute __pure__ was added in gcc 2.96. */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#else
+# define _GL_ATTRIBUTE_PURE /* empty */
+#endif
+
+/* NetBSD 5.0 declares strsignal in <unistd.h>, not in <string.h>. */
+/* But in any case avoid namespace pollution on glibc systems. */
+#if (@GNULIB_STRSIGNAL@ || defined GNULIB_POSIXCHECK) && defined __NetBSD__ \
+ && ! defined __GLIBC__
+# include <unistd.h>
+#endif
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
+
+/* The definition of _GL_ARG_NONNULL is copied here. */
+
+/* The definition of _GL_WARN_ON_USE is copied here. */
+
+
+/* Clear a block of memory. The compiler will not delete a call to
+ this function, even if the block is dead after the call. */
+#if @GNULIB_EXPLICIT_BZERO@
+# if ! @HAVE_EXPLICIT_BZERO@
+_GL_FUNCDECL_SYS (explicit_bzero, void,
+ (void *__dest, size_t __n) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (explicit_bzero, void, (void *__dest, size_t __n));
+_GL_CXXALIASWARN (explicit_bzero);
+#elif defined GNULIB_POSIXCHECK
+# undef explicit_bzero
+# if HAVE_RAW_DECL_EXPLICIT_BZERO
+_GL_WARN_ON_USE (explicit_bzero, "explicit_bzero is unportable - "
+ "use gnulib module explicit_bzero for portability");
+# endif
+#endif
+
+/* Find the index of the least-significant set bit. */
+#if @GNULIB_FFSL@
+# if !@HAVE_FFSL@
+_GL_FUNCDECL_SYS (ffsl, int, (long int i));
+# endif
+_GL_CXXALIAS_SYS (ffsl, int, (long int i));
+_GL_CXXALIASWARN (ffsl);
+#elif defined GNULIB_POSIXCHECK
+# undef ffsl
+# if HAVE_RAW_DECL_FFSL
+_GL_WARN_ON_USE (ffsl, "ffsl is not portable - use the ffsl module");
+# endif
+#endif
+
+
+/* Find the index of the least-significant set bit. */
+#if @GNULIB_FFSLL@
+# if !@HAVE_FFSLL@
+_GL_FUNCDECL_SYS (ffsll, int, (long long int i));
+# endif
+_GL_CXXALIAS_SYS (ffsll, int, (long long int i));
+_GL_CXXALIASWARN (ffsll);
+#elif defined GNULIB_POSIXCHECK
+# undef ffsll
+# if HAVE_RAW_DECL_FFSLL
+_GL_WARN_ON_USE (ffsll, "ffsll is not portable - use the ffsll module");
+# endif
+#endif
+
+
+/* Return the first instance of C within N bytes of S, or NULL. */
+#if @GNULIB_MEMCHR@
+# if @REPLACE_MEMCHR@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define memchr rpl_memchr
+# endif
+_GL_FUNCDECL_RPL (memchr, void *, (void const *__s, int __c, size_t __n)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (memchr, void *, (void const *__s, int __c, size_t __n));
+# else
+# if ! @HAVE_MEMCHR@
+_GL_FUNCDECL_SYS (memchr, void *, (void const *__s, int __c, size_t __n)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1)));
+# endif
+ /* On some systems, this function is defined as an overloaded function:
+ extern "C" { const void * std::memchr (const void *, int, size_t); }
+ extern "C++" { void * std::memchr (void *, int, size_t); } */
+_GL_CXXALIAS_SYS_CAST2 (memchr,
+ void *, (void const *__s, int __c, size_t __n),
+ void const *, (void const *__s, int __c, size_t __n));
+# endif
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (memchr, void *, (void *__s, int __c, size_t __n));
+_GL_CXXALIASWARN1 (memchr, void const *,
+ (void const *__s, int __c, size_t __n));
+# elif __GLIBC__ >= 2
+_GL_CXXALIASWARN (memchr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memchr
+/* Assume memchr is always declared. */
+_GL_WARN_ON_USE (memchr, "memchr has platform-specific bugs - "
+ "use gnulib module memchr for portability" );
+#endif
+
+/* Return the first occurrence of NEEDLE in HAYSTACK. */
+#if @GNULIB_MEMMEM@
+# if @REPLACE_MEMMEM@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define memmem rpl_memmem
+# endif
+_GL_FUNCDECL_RPL (memmem, void *,
+ (void const *__haystack, size_t __haystack_len,
+ void const *__needle, size_t __needle_len)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1, 3)));
+_GL_CXXALIAS_RPL (memmem, void *,
+ (void const *__haystack, size_t __haystack_len,
+ void const *__needle, size_t __needle_len));
+# else
+# if ! @HAVE_DECL_MEMMEM@
+_GL_FUNCDECL_SYS (memmem, void *,
+ (void const *__haystack, size_t __haystack_len,
+ void const *__needle, size_t __needle_len)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1, 3)));
+# endif
+_GL_CXXALIAS_SYS (memmem, void *,
+ (void const *__haystack, size_t __haystack_len,
+ void const *__needle, size_t __needle_len));
+# endif
+_GL_CXXALIASWARN (memmem);
+#elif defined GNULIB_POSIXCHECK
+# undef memmem
+# if HAVE_RAW_DECL_MEMMEM
+_GL_WARN_ON_USE (memmem, "memmem is unportable and often quadratic - "
+ "use gnulib module memmem-simple for portability, "
+ "and module memmem for speed" );
+# endif
+#endif
+
+/* Copy N bytes of SRC to DEST, return pointer to bytes after the
+ last written byte. */
+#if @GNULIB_MEMPCPY@
+# if ! @HAVE_MEMPCPY@
+_GL_FUNCDECL_SYS (mempcpy, void *,
+ (void *restrict __dest, void const *restrict __src,
+ size_t __n)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (mempcpy, void *,
+ (void *restrict __dest, void const *restrict __src,
+ size_t __n));
+_GL_CXXALIASWARN (mempcpy);
+#elif defined GNULIB_POSIXCHECK
+# undef mempcpy
+# if HAVE_RAW_DECL_MEMPCPY
+_GL_WARN_ON_USE (mempcpy, "mempcpy is unportable - "
+ "use gnulib module mempcpy for portability");
+# endif
+#endif
+
+/* Search backwards through a block for a byte (specified as an int). */
+#if @GNULIB_MEMRCHR@
+# if ! @HAVE_DECL_MEMRCHR@
+_GL_FUNCDECL_SYS (memrchr, void *, (void const *, int, size_t)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1)));
+# endif
+ /* On some systems, this function is defined as an overloaded function:
+ extern "C++" { const void * std::memrchr (const void *, int, size_t); }
+ extern "C++" { void * std::memrchr (void *, int, size_t); } */
+_GL_CXXALIAS_SYS_CAST2 (memrchr,
+ void *, (void const *, int, size_t),
+ void const *, (void const *, int, size_t));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t));
+_GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t));
+# else
+_GL_CXXALIASWARN (memrchr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memrchr
+# if HAVE_RAW_DECL_MEMRCHR
+_GL_WARN_ON_USE (memrchr, "memrchr is unportable - "
+ "use gnulib module memrchr for portability");
+# endif
+#endif
+
+/* Find the first occurrence of C in S. More efficient than
+ memchr(S,C,N), at the expense of undefined behavior if C does not
+ occur within N bytes. */
+#if @GNULIB_RAWMEMCHR@
+# if ! @HAVE_RAWMEMCHR@
+_GL_FUNCDECL_SYS (rawmemchr, void *, (void const *__s, int __c_in)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1)));
+# endif
+ /* On some systems, this function is defined as an overloaded function:
+ extern "C++" { const void * std::rawmemchr (const void *, int); }
+ extern "C++" { void * std::rawmemchr (void *, int); } */
+_GL_CXXALIAS_SYS_CAST2 (rawmemchr,
+ void *, (void const *__s, int __c_in),
+ void const *, (void const *__s, int __c_in));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (rawmemchr, void *, (void *__s, int __c_in));
+_GL_CXXALIASWARN1 (rawmemchr, void const *, (void const *__s, int __c_in));
+# else
+_GL_CXXALIASWARN (rawmemchr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef rawmemchr
+# if HAVE_RAW_DECL_RAWMEMCHR
+_GL_WARN_ON_USE (rawmemchr, "rawmemchr is unportable - "
+ "use gnulib module rawmemchr for portability");
+# endif
+#endif
+
+/* Copy SRC to DST, returning the address of the terminating '\0' in DST. */
+#if @GNULIB_STPCPY@
+# if ! @HAVE_STPCPY@
+_GL_FUNCDECL_SYS (stpcpy, char *,
+ (char *restrict __dst, char const *restrict __src)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (stpcpy, char *,
+ (char *restrict __dst, char const *restrict __src));
+_GL_CXXALIASWARN (stpcpy);
+#elif defined GNULIB_POSIXCHECK
+# undef stpcpy
+# if HAVE_RAW_DECL_STPCPY
+_GL_WARN_ON_USE (stpcpy, "stpcpy is unportable - "
+ "use gnulib module stpcpy for portability");
+# endif
+#endif
+
+/* Copy no more than N bytes of SRC to DST, returning a pointer past the
+ last non-NUL byte written into DST. */
+#if @GNULIB_STPNCPY@
+# if @REPLACE_STPNCPY@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef stpncpy
+# define stpncpy rpl_stpncpy
+# endif
+_GL_FUNCDECL_RPL (stpncpy, char *,
+ (char *restrict __dst, char const *restrict __src,
+ size_t __n)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (stpncpy, char *,
+ (char *restrict __dst, char const *restrict __src,
+ size_t __n));
+# else
+# if ! @HAVE_STPNCPY@
+_GL_FUNCDECL_SYS (stpncpy, char *,
+ (char *restrict __dst, char const *restrict __src,
+ size_t __n)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (stpncpy, char *,
+ (char *restrict __dst, char const *restrict __src,
+ size_t __n));
+# endif
+_GL_CXXALIASWARN (stpncpy);
+#elif defined GNULIB_POSIXCHECK
+# undef stpncpy
+# if HAVE_RAW_DECL_STPNCPY
+_GL_WARN_ON_USE (stpncpy, "stpncpy is unportable - "
+ "use gnulib module stpncpy for portability");
+# endif
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strchr() does not work with multibyte strings if the locale encoding is
+ GB18030 and the character to be searched is a digit. */
+# undef strchr
+/* Assume strchr is always declared. */
+_GL_WARN_ON_USE (strchr, "strchr cannot work correctly on character strings "
+ "in some multibyte locales - "
+ "use mbschr if you care about internationalization");
+#endif
+
+/* Find the first occurrence of C in S or the final NUL byte. */
+#if @GNULIB_STRCHRNUL@
+# if @REPLACE_STRCHRNUL@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define strchrnul rpl_strchrnul
+# endif
+_GL_FUNCDECL_RPL (strchrnul, char *, (const char *__s, int __c_in)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strchrnul, char *,
+ (const char *str, int ch));
+# else
+# if ! @HAVE_STRCHRNUL@
+_GL_FUNCDECL_SYS (strchrnul, char *, (char const *__s, int __c_in)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1)));
+# endif
+ /* On some systems, this function is defined as an overloaded function:
+ extern "C++" { const char * std::strchrnul (const char *, int); }
+ extern "C++" { char * std::strchrnul (char *, int); } */
+_GL_CXXALIAS_SYS_CAST2 (strchrnul,
+ char *, (char const *__s, int __c_in),
+ char const *, (char const *__s, int __c_in));
+# endif
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in));
+_GL_CXXALIASWARN1 (strchrnul, char const *, (char const *__s, int __c_in));
+# else
+_GL_CXXALIASWARN (strchrnul);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strchrnul
+# if HAVE_RAW_DECL_STRCHRNUL
+_GL_WARN_ON_USE (strchrnul, "strchrnul is unportable - "
+ "use gnulib module strchrnul for portability");
+# endif
+#endif
+
+/* Duplicate S, returning an identical malloc'd string. */
+#if @GNULIB_STRDUP@
+# if @REPLACE_STRDUP@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef strdup
+# define strdup rpl_strdup
+# endif
+_GL_FUNCDECL_RPL (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strdup, char *, (char const *__s));
+# else
+# if defined __cplusplus && defined GNULIB_NAMESPACE && defined strdup
+ /* strdup exists as a function and as a macro. Get rid of the macro. */
+# undef strdup
+# endif
+# if !(@HAVE_DECL_STRDUP@ || defined strdup)
+_GL_FUNCDECL_SYS (strdup, char *, (char const *__s) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (strdup, char *, (char const *__s));
+# endif
+_GL_CXXALIASWARN (strdup);
+#elif defined GNULIB_POSIXCHECK
+# undef strdup
+# if HAVE_RAW_DECL_STRDUP
+_GL_WARN_ON_USE (strdup, "strdup is unportable - "
+ "use gnulib module strdup for portability");
+# endif
+#endif
+
+/* Append no more than N characters from SRC onto DEST. */
+#if @GNULIB_STRNCAT@
+# if @REPLACE_STRNCAT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef strncat
+# define strncat rpl_strncat
+# endif
+_GL_FUNCDECL_RPL (strncat, char *, (char *dest, const char *src, size_t n)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (strncat, char *, (char *dest, const char *src, size_t n));
+# else
+_GL_CXXALIAS_SYS (strncat, char *, (char *dest, const char *src, size_t n));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (strncat);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strncat
+# if HAVE_RAW_DECL_STRNCAT
+_GL_WARN_ON_USE (strncat, "strncat is unportable - "
+ "use gnulib module strncat for portability");
+# endif
+#endif
+
+/* Return a newly allocated copy of at most N bytes of STRING. */
+#if @GNULIB_STRNDUP@
+# if @REPLACE_STRNDUP@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef strndup
+# define strndup rpl_strndup
+# endif
+_GL_FUNCDECL_RPL (strndup, char *, (char const *__s, size_t __n)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strndup, char *, (char const *__s, size_t __n));
+# else
+# if ! @HAVE_DECL_STRNDUP@
+_GL_FUNCDECL_SYS (strndup, char *, (char const *__s, size_t __n)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (strndup, char *, (char const *__s, size_t __n));
+# endif
+_GL_CXXALIASWARN (strndup);
+#elif defined GNULIB_POSIXCHECK
+# undef strndup
+# if HAVE_RAW_DECL_STRNDUP
+_GL_WARN_ON_USE (strndup, "strndup is unportable - "
+ "use gnulib module strndup for portability");
+# endif
+#endif
+
+/* Find the length (number of bytes) of STRING, but scan at most
+ MAXLEN bytes. If no '\0' terminator is found in that many bytes,
+ return MAXLEN. */
+#if @GNULIB_STRNLEN@
+# if @REPLACE_STRNLEN@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef strnlen
+# define strnlen rpl_strnlen
+# endif
+_GL_FUNCDECL_RPL (strnlen, size_t, (char const *__s, size_t __maxlen)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (strnlen, size_t, (char const *__s, size_t __maxlen));
+# else
+# if ! @HAVE_DECL_STRNLEN@
+_GL_FUNCDECL_SYS (strnlen, size_t, (char const *__s, size_t __maxlen)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (strnlen, size_t, (char const *__s, size_t __maxlen));
+# endif
+_GL_CXXALIASWARN (strnlen);
+#elif defined GNULIB_POSIXCHECK
+# undef strnlen
+# if HAVE_RAW_DECL_STRNLEN
+_GL_WARN_ON_USE (strnlen, "strnlen is unportable - "
+ "use gnulib module strnlen for portability");
+# endif
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strcspn() assumes the second argument is a list of single-byte characters.
+ Even in this simple case, it does not work with multibyte strings if the
+ locale encoding is GB18030 and one of the characters to be searched is a
+ digit. */
+# undef strcspn
+/* Assume strcspn is always declared. */
+_GL_WARN_ON_USE (strcspn, "strcspn cannot work correctly on character strings "
+ "in multibyte locales - "
+ "use mbscspn if you care about internationalization");
+#endif
+
+/* Find the first occurrence in S of any character in ACCEPT. */
+#if @GNULIB_STRPBRK@
+# if ! @HAVE_STRPBRK@
+_GL_FUNCDECL_SYS (strpbrk, char *, (char const *__s, char const *__accept)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+ /* On some systems, this function is defined as an overloaded function:
+ extern "C" { const char * strpbrk (const char *, const char *); }
+ extern "C++" { char * strpbrk (char *, const char *); } */
+_GL_CXXALIAS_SYS_CAST2 (strpbrk,
+ char *, (char const *__s, char const *__accept),
+ const char *, (char const *__s, char const *__accept));
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (strpbrk, char *, (char *__s, char const *__accept));
+_GL_CXXALIASWARN1 (strpbrk, char const *,
+ (char const *__s, char const *__accept));
+# elif __GLIBC__ >= 2
+_GL_CXXALIASWARN (strpbrk);
+# endif
+# if defined GNULIB_POSIXCHECK
+/* strpbrk() assumes the second argument is a list of single-byte characters.
+ Even in this simple case, it does not work with multibyte strings if the
+ locale encoding is GB18030 and one of the characters to be searched is a
+ digit. */
+# undef strpbrk
+_GL_WARN_ON_USE (strpbrk, "strpbrk cannot work correctly on character strings "
+ "in multibyte locales - "
+ "use mbspbrk if you care about internationalization");
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strpbrk
+# if HAVE_RAW_DECL_STRPBRK
+_GL_WARN_ON_USE (strpbrk, "strpbrk is unportable - "
+ "use gnulib module strpbrk for portability");
+# endif
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strspn() assumes the second argument is a list of single-byte characters.
+ Even in this simple case, it cannot work with multibyte strings. */
+# undef strspn
+/* Assume strspn is always declared. */
+_GL_WARN_ON_USE (strspn, "strspn cannot work correctly on character strings "
+ "in multibyte locales - "
+ "use mbsspn if you care about internationalization");
+#endif
+
+#if defined GNULIB_POSIXCHECK
+/* strrchr() does not work with multibyte strings if the locale encoding is
+ GB18030 and the character to be searched is a digit. */
+# undef strrchr
+/* Assume strrchr is always declared. */
+_GL_WARN_ON_USE (strrchr, "strrchr cannot work correctly on character strings "
+ "in some multibyte locales - "
+ "use mbsrchr if you care about internationalization");
+#endif
+
+/* Search the next delimiter (char listed in DELIM) starting at *STRINGP.
+ If one is found, overwrite it with a NUL, and advance *STRINGP
+ to point to the next char after it. Otherwise, set *STRINGP to NULL.
+ If *STRINGP was already NULL, nothing happens.
+ Return the old value of *STRINGP.
+
+ This is a variant of strtok() that is multithread-safe and supports
+ empty fields.
+
+ Caveat: It modifies the original string.
+ Caveat: These functions cannot be used on constant strings.
+ Caveat: The identity of the delimiting character is lost.
+ Caveat: It doesn't work with multibyte strings unless all of the delimiter
+ characters are ASCII characters < 0x30.
+
+ See also strtok_r(). */
+#if @GNULIB_STRSEP@
+# if ! @HAVE_STRSEP@
+_GL_FUNCDECL_SYS (strsep, char *,
+ (char **restrict __stringp, char const *restrict __delim)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (strsep, char *,
+ (char **restrict __stringp, char const *restrict __delim));
+_GL_CXXALIASWARN (strsep);
+# if defined GNULIB_POSIXCHECK
+# undef strsep
+_GL_WARN_ON_USE (strsep, "strsep cannot work correctly on character strings "
+ "in multibyte locales - "
+ "use mbssep if you care about internationalization");
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strsep
+# if HAVE_RAW_DECL_STRSEP
+_GL_WARN_ON_USE (strsep, "strsep is unportable - "
+ "use gnulib module strsep for portability");
+# endif
+#endif
+
+#if @GNULIB_STRSTR@
+# if @REPLACE_STRSTR@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define strstr rpl_strstr
+# endif
+_GL_FUNCDECL_RPL (strstr, char *, (const char *haystack, const char *needle)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (strstr, char *, (const char *haystack, const char *needle));
+# else
+ /* On some systems, this function is defined as an overloaded function:
+ extern "C++" { const char * strstr (const char *, const char *); }
+ extern "C++" { char * strstr (char *, const char *); } */
+_GL_CXXALIAS_SYS_CAST2 (strstr,
+ char *, (const char *haystack, const char *needle),
+ const char *, (const char *haystack, const char *needle));
+# endif
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (strstr, char *, (char *haystack, const char *needle));
+_GL_CXXALIASWARN1 (strstr, const char *,
+ (const char *haystack, const char *needle));
+# elif __GLIBC__ >= 2
+_GL_CXXALIASWARN (strstr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+/* strstr() does not work with multibyte strings if the locale encoding is
+ different from UTF-8:
+ POSIX says that it operates on "strings", and "string" in POSIX is defined
+ as a sequence of bytes, not of characters. */
+# undef strstr
+/* Assume strstr is always declared. */
+_GL_WARN_ON_USE (strstr, "strstr is quadratic on many systems, and cannot "
+ "work correctly on character strings in most "
+ "multibyte locales - "
+ "use mbsstr if you care about internationalization, "
+ "or use strstr if you care about speed");
+#endif
+
+/* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive
+ comparison. */
+#if @GNULIB_STRCASESTR@
+# if @REPLACE_STRCASESTR@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define strcasestr rpl_strcasestr
+# endif
+_GL_FUNCDECL_RPL (strcasestr, char *,
+ (const char *haystack, const char *needle)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (strcasestr, char *,
+ (const char *haystack, const char *needle));
+# else
+# if ! @HAVE_STRCASESTR@
+_GL_FUNCDECL_SYS (strcasestr, char *,
+ (const char *haystack, const char *needle)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+ /* On some systems, this function is defined as an overloaded function:
+ extern "C++" { const char * strcasestr (const char *, const char *); }
+ extern "C++" { char * strcasestr (char *, const char *); } */
+_GL_CXXALIAS_SYS_CAST2 (strcasestr,
+ char *, (const char *haystack, const char *needle),
+ const char *, (const char *haystack, const char *needle));
+# endif
+# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
+ && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+_GL_CXXALIASWARN1 (strcasestr, char *, (char *haystack, const char *needle));
+_GL_CXXALIASWARN1 (strcasestr, const char *,
+ (const char *haystack, const char *needle));
+# else
+_GL_CXXALIASWARN (strcasestr);
+# endif
+#elif defined GNULIB_POSIXCHECK
+/* strcasestr() does not work with multibyte strings:
+ It is a glibc extension, and glibc implements it only for unibyte
+ locales. */
+# undef strcasestr
+# if HAVE_RAW_DECL_STRCASESTR
+_GL_WARN_ON_USE (strcasestr, "strcasestr does work correctly on character "
+ "strings in multibyte locales - "
+ "use mbscasestr if you care about "
+ "internationalization, or use c-strcasestr if you want "
+ "a locale independent function");
+# endif
+#endif
+
+/* Parse S into tokens separated by characters in DELIM.
+ If S is NULL, the saved pointer in SAVE_PTR is used as
+ the next starting point. For example:
+ char s[] = "-abc-=-def";
+ char *sp;
+ x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def"
+ x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL
+ x = strtok_r(NULL, "=", &sp); // x = NULL
+ // s = "abc\0-def\0"
+
+ This is a variant of strtok() that is multithread-safe.
+
+ For the POSIX documentation for this function, see:
+ https://pubs.opengroup.org/onlinepubs/9699919799/functions/strtok.html
+
+ Caveat: It modifies the original string.
+ Caveat: These functions cannot be used on constant strings.
+ Caveat: The identity of the delimiting character is lost.
+ Caveat: It doesn't work with multibyte strings unless all of the delimiter
+ characters are ASCII characters < 0x30.
+
+ See also strsep(). */
+#if @GNULIB_STRTOK_R@
+# if @REPLACE_STRTOK_R@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef strtok_r
+# define strtok_r rpl_strtok_r
+# endif
+_GL_FUNCDECL_RPL (strtok_r, char *,
+ (char *restrict s, char const *restrict delim,
+ char **restrict save_ptr)
+ _GL_ARG_NONNULL ((2, 3)));
+_GL_CXXALIAS_RPL (strtok_r, char *,
+ (char *restrict s, char const *restrict delim,
+ char **restrict save_ptr));
+# else
+# if @UNDEFINE_STRTOK_R@ || defined GNULIB_POSIXCHECK
+# undef strtok_r
+# endif
+# if ! @HAVE_DECL_STRTOK_R@
+_GL_FUNCDECL_SYS (strtok_r, char *,
+ (char *restrict s, char const *restrict delim,
+ char **restrict save_ptr)
+ _GL_ARG_NONNULL ((2, 3)));
+# endif
+_GL_CXXALIAS_SYS (strtok_r, char *,
+ (char *restrict s, char const *restrict delim,
+ char **restrict save_ptr));
+# endif
+_GL_CXXALIASWARN (strtok_r);
+# if defined GNULIB_POSIXCHECK
+_GL_WARN_ON_USE (strtok_r, "strtok_r cannot work correctly on character "
+ "strings in multibyte locales - "
+ "use mbstok_r if you care about internationalization");
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtok_r
+# if HAVE_RAW_DECL_STRTOK_R
+_GL_WARN_ON_USE (strtok_r, "strtok_r is unportable - "
+ "use gnulib module strtok_r for portability");
+# endif
+#endif
+
+
+/* The following functions are not specified by POSIX. They are gnulib
+ extensions. */
+
+#if @GNULIB_MBSLEN@
+/* Return the number of multibyte characters in the character string STRING.
+ This considers multibyte characters, unlike strlen, which counts bytes. */
+# ifdef __MirBSD__ /* MirBSD defines mbslen as a macro. Override it. */
+# undef mbslen
+# endif
+# if @HAVE_MBSLEN@ /* AIX, OSF/1, MirBSD define mbslen already in libc. */
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define mbslen rpl_mbslen
+# endif
+_GL_FUNCDECL_RPL (mbslen, size_t, (const char *string)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (mbslen, size_t, (const char *string));
+# else
+_GL_FUNCDECL_SYS (mbslen, size_t, (const char *string)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_SYS (mbslen, size_t, (const char *string));
+# endif
+_GL_CXXALIASWARN (mbslen);
+#endif
+
+#if @GNULIB_MBSNLEN@
+/* Return the number of multibyte characters in the character string starting
+ at STRING and ending at STRING + LEN. */
+_GL_EXTERN_C size_t mbsnlen (const char *string, size_t len)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1));
+#endif
+
+#if @GNULIB_MBSCHR@
+/* Locate the first single-byte character C in the character string STRING,
+ and return a pointer to it. Return NULL if C is not found in STRING.
+ Unlike strchr(), this function works correctly in multibyte locales with
+ encodings such as GB18030. */
+# if defined __hpux
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define mbschr rpl_mbschr /* avoid collision with HP-UX function */
+# endif
+_GL_FUNCDECL_RPL (mbschr, char *, (const char *string, int c)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (mbschr, char *, (const char *string, int c));
+# else
+_GL_FUNCDECL_SYS (mbschr, char *, (const char *string, int c)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_SYS (mbschr, char *, (const char *string, int c));
+# endif
+_GL_CXXALIASWARN (mbschr);
+#endif
+
+#if @GNULIB_MBSRCHR@
+/* Locate the last single-byte character C in the character string STRING,
+ and return a pointer to it. Return NULL if C is not found in STRING.
+ Unlike strrchr(), this function works correctly in multibyte locales with
+ encodings such as GB18030. */
+# if defined __hpux || defined __INTERIX
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define mbsrchr rpl_mbsrchr /* avoid collision with system function */
+# endif
+_GL_FUNCDECL_RPL (mbsrchr, char *, (const char *string, int c)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (mbsrchr, char *, (const char *string, int c));
+# else
+_GL_FUNCDECL_SYS (mbsrchr, char *, (const char *string, int c)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_SYS (mbsrchr, char *, (const char *string, int c));
+# endif
+_GL_CXXALIASWARN (mbsrchr);
+#endif
+
+#if @GNULIB_MBSSTR@
+/* Find the first occurrence of the character string NEEDLE in the character
+ string HAYSTACK. Return NULL if NEEDLE is not found in HAYSTACK.
+ Unlike strstr(), this function works correctly in multibyte locales with
+ encodings different from UTF-8. */
+_GL_EXTERN_C char * mbsstr (const char *haystack, const char *needle)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSCASECMP@
+/* Compare the character strings S1 and S2, ignoring case, returning less than,
+ equal to or greater than zero if S1 is lexicographically less than, equal to
+ or greater than S2.
+ Note: This function may, in multibyte locales, return 0 for strings of
+ different lengths!
+ Unlike strcasecmp(), this function works correctly in multibyte locales. */
+_GL_EXTERN_C int mbscasecmp (const char *s1, const char *s2)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSNCASECMP@
+/* Compare the initial segment of the character string S1 consisting of at most
+ N characters with the initial segment of the character string S2 consisting
+ of at most N characters, ignoring case, returning less than, equal to or
+ greater than zero if the initial segment of S1 is lexicographically less
+ than, equal to or greater than the initial segment of S2.
+ Note: This function may, in multibyte locales, return 0 for initial segments
+ of different lengths!
+ Unlike strncasecmp(), this function works correctly in multibyte locales.
+ But beware that N is not a byte count but a character count! */
+_GL_EXTERN_C int mbsncasecmp (const char *s1, const char *s2, size_t n)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSPCASECMP@
+/* Compare the initial segment of the character string STRING consisting of
+ at most mbslen (PREFIX) characters with the character string PREFIX,
+ ignoring case. If the two match, return a pointer to the first byte
+ after this prefix in STRING. Otherwise, return NULL.
+ Note: This function may, in multibyte locales, return non-NULL if STRING
+ is of smaller length than PREFIX!
+ Unlike strncasecmp(), this function works correctly in multibyte
+ locales. */
+_GL_EXTERN_C char * mbspcasecmp (const char *string, const char *prefix)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSCASESTR@
+/* Find the first occurrence of the character string NEEDLE in the character
+ string HAYSTACK, using case-insensitive comparison.
+ Note: This function may, in multibyte locales, return success even if
+ strlen (haystack) < strlen (needle) !
+ Unlike strcasestr(), this function works correctly in multibyte locales. */
+_GL_EXTERN_C char * mbscasestr (const char *haystack, const char *needle)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSCSPN@
+/* Find the first occurrence in the character string STRING of any character
+ in the character string ACCEPT. Return the number of bytes from the
+ beginning of the string to this occurrence, or to the end of the string
+ if none exists.
+ Unlike strcspn(), this function works correctly in multibyte locales. */
+_GL_EXTERN_C size_t mbscspn (const char *string, const char *accept)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSPBRK@
+/* Find the first occurrence in the character string STRING of any character
+ in the character string ACCEPT. Return the pointer to it, or NULL if none
+ exists.
+ Unlike strpbrk(), this function works correctly in multibyte locales. */
+# if defined __hpux
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */
+# endif
+_GL_FUNCDECL_RPL (mbspbrk, char *, (const char *string, const char *accept)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (mbspbrk, char *, (const char *string, const char *accept));
+# else
+_GL_FUNCDECL_SYS (mbspbrk, char *, (const char *string, const char *accept)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_SYS (mbspbrk, char *, (const char *string, const char *accept));
+# endif
+_GL_CXXALIASWARN (mbspbrk);
+#endif
+
+#if @GNULIB_MBSSPN@
+/* Find the first occurrence in the character string STRING of any character
+ not in the character string REJECT. Return the number of bytes from the
+ beginning of the string to this occurrence, or to the end of the string
+ if none exists.
+ Unlike strspn(), this function works correctly in multibyte locales. */
+_GL_EXTERN_C size_t mbsspn (const char *string, const char *reject)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSSEP@
+/* Search the next delimiter (multibyte character listed in the character
+ string DELIM) starting at the character string *STRINGP.
+ If one is found, overwrite it with a NUL, and advance *STRINGP to point
+ to the next multibyte character after it. Otherwise, set *STRINGP to NULL.
+ If *STRINGP was already NULL, nothing happens.
+ Return the old value of *STRINGP.
+
+ This is a variant of mbstok_r() that supports empty fields.
+
+ Caveat: It modifies the original string.
+ Caveat: These functions cannot be used on constant strings.
+ Caveat: The identity of the delimiting character is lost.
+
+ See also mbstok_r(). */
+_GL_EXTERN_C char * mbssep (char **stringp, const char *delim)
+ _GL_ARG_NONNULL ((1, 2));
+#endif
+
+#if @GNULIB_MBSTOK_R@
+/* Parse the character string STRING into tokens separated by characters in
+ the character string DELIM.
+ If STRING is NULL, the saved pointer in SAVE_PTR is used as
+ the next starting point. For example:
+ char s[] = "-abc-=-def";
+ char *sp;
+ x = mbstok_r(s, "-", &sp); // x = "abc", sp = "=-def"
+ x = mbstok_r(NULL, "-=", &sp); // x = "def", sp = NULL
+ x = mbstok_r(NULL, "=", &sp); // x = NULL
+ // s = "abc\0-def\0"
+
+ Caveat: It modifies the original string.
+ Caveat: These functions cannot be used on constant strings.
+ Caveat: The identity of the delimiting character is lost.
+
+ See also mbssep(). */
+_GL_EXTERN_C char * mbstok_r (char *string, const char *delim, char **save_ptr)
+ _GL_ARG_NONNULL ((2, 3));
+#endif
+
+/* Map any int, typically from errno, into an error message. */
+#if @GNULIB_STRERROR@
+# if @REPLACE_STRERROR@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef strerror
+# define strerror rpl_strerror
+# endif
+_GL_FUNCDECL_RPL (strerror, char *, (int));
+_GL_CXXALIAS_RPL (strerror, char *, (int));
+# else
+_GL_CXXALIAS_SYS (strerror, char *, (int));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (strerror);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strerror
+/* Assume strerror is always declared. */
+_GL_WARN_ON_USE (strerror, "strerror is unportable - "
+ "use gnulib module strerror to guarantee non-NULL result");
+#endif
+
+/* Map any int, typically from errno, into an error message. Multithread-safe.
+ Uses the POSIX declaration, not the glibc declaration. */
+#if @GNULIB_STRERROR_R@
+# if @REPLACE_STRERROR_R@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef strerror_r
+# define strerror_r rpl_strerror_r
+# endif
+_GL_FUNCDECL_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (strerror_r, int, (int errnum, char *buf, size_t buflen));
+# else
+# if !@HAVE_DECL_STRERROR_R@
+_GL_FUNCDECL_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen)
+ _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen));
+# endif
+# if @HAVE_DECL_STRERROR_R@
+_GL_CXXALIASWARN (strerror_r);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strerror_r
+# if HAVE_RAW_DECL_STRERROR_R
+_GL_WARN_ON_USE (strerror_r, "strerror_r is unportable - "
+ "use gnulib module strerror_r-posix for portability");
+# endif
+#endif
+
+#if @GNULIB_STRSIGNAL@
+# if @REPLACE_STRSIGNAL@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define strsignal rpl_strsignal
+# endif
+_GL_FUNCDECL_RPL (strsignal, char *, (int __sig));
+_GL_CXXALIAS_RPL (strsignal, char *, (int __sig));
+# else
+# if ! @HAVE_DECL_STRSIGNAL@
+_GL_FUNCDECL_SYS (strsignal, char *, (int __sig));
+# endif
+/* Need to cast, because on Cygwin 1.5.x systems, the return type is
+ 'const char *'. */
+_GL_CXXALIAS_SYS_CAST (strsignal, char *, (int __sig));
+# endif
+_GL_CXXALIASWARN (strsignal);
+#elif defined GNULIB_POSIXCHECK
+# undef strsignal
+# if HAVE_RAW_DECL_STRSIGNAL
+_GL_WARN_ON_USE (strsignal, "strsignal is unportable - "
+ "use gnulib module strsignal for portability");
+# endif
+#endif
+
+#if @GNULIB_STRVERSCMP@
+# if !@HAVE_STRVERSCMP@
+_GL_FUNCDECL_SYS (strverscmp, int, (const char *, const char *)
+ _GL_ATTRIBUTE_PURE
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (strverscmp, int, (const char *, const char *));
+_GL_CXXALIASWARN (strverscmp);
+#elif defined GNULIB_POSIXCHECK
+# undef strverscmp
+# if HAVE_RAW_DECL_STRVERSCMP
+_GL_WARN_ON_USE (strverscmp, "strverscmp is unportable - "
+ "use gnulib module strverscmp for portability");
+# endif
+#endif
+
+
+#endif /* _@GUARD_PREFIX@_STRING_H */
+#endif /* _@GUARD_PREFIX@_STRING_H */
+#endif
diff --git a/lib/stripslash.c b/lib/stripslash.c
new file mode 100644
index 0000000..6818b30
--- /dev/null
+++ b/lib/stripslash.c
@@ -0,0 +1,45 @@
+/* stripslash.c -- remove redundant trailing slashes from a file name
+
+ Copyright (C) 1990, 2001, 2003-2006, 2009-2020 Free Software Foundation,
+ Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "dirname.h"
+
+/* Remove trailing slashes from FILE. Return true if a trailing slash
+ was removed. This is useful when using file name completion from a
+ shell that adds a "/" after directory names (such as tcsh and
+ bash), because on symlinks to directories, several system calls
+ have different semantics according to whether a trailing slash is
+ present. */
+
+bool
+strip_trailing_slashes (char *file)
+{
+ char *base = last_component (file);
+ char *base_lim;
+ bool had_slash;
+
+ /* last_component returns "" for file system roots, but we need to turn
+ "///" into "/". */
+ if (! *base)
+ base = file;
+ base_lim = base + base_len (base);
+ had_slash = (*base_lim != '\0');
+ *base_lim = '\0';
+ return had_slash;
+}
diff --git a/lib/sys_types.in.h b/lib/sys_types.in.h
new file mode 100644
index 0000000..e7e1a22
--- /dev/null
+++ b/lib/sys_types.in.h
@@ -0,0 +1,106 @@
+/* Provide a more complete sys/types.h.
+
+ Copyright (C) 2011-2020 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <https://www.gnu.org/licenses/>. */
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if defined _WIN32 && !defined __CYGWIN__ \
+ && (defined __need_off_t || defined __need___off64_t \
+ || defined __need_ssize_t || defined __need_time_t)
+
+/* Special invocation convention inside mingw header files. */
+
+#@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@
+
+#else
+/* Normal invocation convention. */
+
+#ifndef _@GUARD_PREFIX@_SYS_TYPES_H
+
+/* The include_next requires a split double-inclusion guard. */
+# define _GL_INCLUDING_SYS_TYPES_H
+#@INCLUDE_NEXT@ @NEXT_SYS_TYPES_H@
+# undef _GL_INCLUDING_SYS_TYPES_H
+
+#ifndef _@GUARD_PREFIX@_SYS_TYPES_H
+#define _@GUARD_PREFIX@_SYS_TYPES_H
+
+/* Override off_t if Large File Support is requested on native Windows. */
+#if @WINDOWS_64_BIT_OFF_T@
+/* Same as int64_t in <stdint.h>. */
+# if defined _MSC_VER
+# define off_t __int64
+# else
+# define off_t long long int
+# endif
+/* Indicator, for gnulib internal purposes. */
+# define _GL_WINDOWS_64_BIT_OFF_T 1
+#endif
+
+/* Override dev_t and ino_t if distinguishable inodes support is requested
+ on native Windows. */
+#if @WINDOWS_STAT_INODES@
+
+# if @WINDOWS_STAT_INODES@ == 2
+/* Experimental, not useful in Windows 10. */
+
+/* Define dev_t to a 64-bit type. */
+# if !defined GNULIB_defined_dev_t
+typedef unsigned long long int rpl_dev_t;
+# undef dev_t
+# define dev_t rpl_dev_t
+# define GNULIB_defined_dev_t 1
+# endif
+
+/* Define ino_t to a 128-bit type. */
+# if !defined GNULIB_defined_ino_t
+/* MSVC does not have a 128-bit integer type.
+ GCC has a 128-bit integer type __int128, but only on 64-bit targets. */
+typedef struct { unsigned long long int _gl_ino[2]; } rpl_ino_t;
+# undef ino_t
+# define ino_t rpl_ino_t
+# define GNULIB_defined_ino_t 1
+# endif
+
+# else /* @WINDOWS_STAT_INODES@ == 1 */
+
+/* Define ino_t to a 64-bit type. */
+# if !defined GNULIB_defined_ino_t
+typedef unsigned long long int rpl_ino_t;
+# undef ino_t
+# define ino_t rpl_ino_t
+# define GNULIB_defined_ino_t 1
+# endif
+
+# endif
+
+/* Indicator, for gnulib internal purposes. */
+# define _GL_WINDOWS_STAT_INODES @WINDOWS_STAT_INODES@
+
+#endif
+
+/* MSVC 9 defines size_t in <stddef.h>, not in <sys/types.h>. */
+/* But avoid namespace pollution on glibc systems. */
+#if (defined _WIN32 && ! defined __CYGWIN__) && ! defined __GLIBC__
+# include <stddef.h>
+#endif
+
+#endif /* _@GUARD_PREFIX@_SYS_TYPES_H */
+#endif /* _@GUARD_PREFIX@_SYS_TYPES_H */
+#endif /* __need_XXX */
diff --git a/lib/unistd.c b/lib/unistd.c
new file mode 100644
index 0000000..72bad1c
--- /dev/null
+++ b/lib/unistd.c
@@ -0,0 +1,4 @@
+#include <config.h>
+#define _GL_UNISTD_INLINE _GL_EXTERN_INLINE
+#include "unistd.h"
+typedef int dummy;
diff --git a/lib/unistd.in.h b/lib/unistd.in.h
new file mode 100644
index 0000000..7909416
--- /dev/null
+++ b/lib/unistd.in.h
@@ -0,0 +1,1719 @@
+/* Substitute for and wrapper around <unistd.h>.
+ Copyright (C) 2003-2020 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _@GUARD_PREFIX@_UNISTD_H
+
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
+#if @HAVE_UNISTD_H@ && defined _GL_INCLUDING_UNISTD_H
+/* Special invocation convention:
+ - On Mac OS X 10.3.9 we have a sequence of nested includes
+ <unistd.h> -> <signal.h> -> <pthread.h> -> <unistd.h>
+ In this situation, the functions are not yet declared, therefore we cannot
+ provide the C++ aliases. */
+
+#@INCLUDE_NEXT@ @NEXT_UNISTD_H@
+
+#else
+/* Normal invocation convention. */
+
+/* The include_next requires a split double-inclusion guard. */
+#if @HAVE_UNISTD_H@
+# define _GL_INCLUDING_UNISTD_H
+# @INCLUDE_NEXT@ @NEXT_UNISTD_H@
+# undef _GL_INCLUDING_UNISTD_H
+#endif
+
+/* Get all possible declarations of gethostname(). */
+#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \
+ && !defined _GL_INCLUDING_WINSOCK2_H
+# define _GL_INCLUDING_WINSOCK2_H
+# include <winsock2.h>
+# undef _GL_INCLUDING_WINSOCK2_H
+#endif
+
+#if !defined _@GUARD_PREFIX@_UNISTD_H && !defined _GL_INCLUDING_WINSOCK2_H
+#define _@GUARD_PREFIX@_UNISTD_H
+
+/* NetBSD 5.0 mis-defines NULL. Also get size_t. */
+/* But avoid namespace pollution on glibc systems. */
+#ifndef __GLIBC__
+# include <stddef.h>
+#endif
+
+/* mingw doesn't define the SEEK_* or *_FILENO macros in <unistd.h>. */
+/* MSVC declares 'unlink' in <stdio.h>, not in <unistd.h>. We must include
+ it before we #define unlink rpl_unlink. */
+/* Cygwin 1.7.1 declares symlinkat in <stdio.h>, not in <unistd.h>. */
+/* But avoid namespace pollution on glibc systems. */
+#if (!(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET) \
+ || ((@GNULIB_UNLINK@ || defined GNULIB_POSIXCHECK) \
+ && (defined _WIN32 && ! defined __CYGWIN__)) \
+ || ((@GNULIB_SYMLINKAT@ || defined GNULIB_POSIXCHECK) \
+ && defined __CYGWIN__)) \
+ && ! defined __GLIBC__
+# include <stdio.h>
+#endif
+
+/* Cygwin 1.7.1 and Android 4.3 declare unlinkat in <fcntl.h>, not in
+ <unistd.h>. */
+/* But avoid namespace pollution on glibc systems. */
+#if (@GNULIB_UNLINKAT@ || defined GNULIB_POSIXCHECK) \
+ && (defined __CYGWIN__ || defined __ANDROID__) \
+ && ! defined __GLIBC__
+# include <fcntl.h>
+#endif
+
+/* mingw fails to declare _exit in <unistd.h>. */
+/* mingw, MSVC, BeOS, Haiku declare environ in <stdlib.h>, not in
+ <unistd.h>. */
+/* Solaris declares getcwd not only in <unistd.h> but also in <stdlib.h>. */
+/* OSF Tru64 Unix cannot see gnulib rpl_strtod when system <stdlib.h> is
+ included here. */
+/* But avoid namespace pollution on glibc systems. */
+#if !defined __GLIBC__ && !defined __osf__
+# define __need_system_stdlib_h
+# include <stdlib.h>
+# undef __need_system_stdlib_h
+#endif
+
+/* Native Windows platforms declare chdir, getcwd, rmdir in
+ <io.h> and/or <direct.h>, not in <unistd.h>.
+ They also declare access(), chmod(), close(), dup(), dup2(), isatty(),
+ lseek(), read(), unlink(), write() in <io.h>. */
+#if ((@GNULIB_CHDIR@ || @GNULIB_GETCWD@ || @GNULIB_RMDIR@ \
+ || defined GNULIB_POSIXCHECK) \
+ && (defined _WIN32 && ! defined __CYGWIN__))
+# include <io.h> /* mingw32, mingw64 */
+# include <direct.h> /* mingw64, MSVC 9 */
+#elif (@GNULIB_CLOSE@ || @GNULIB_DUP@ || @GNULIB_DUP2@ || @GNULIB_ISATTY@ \
+ || @GNULIB_LSEEK@ || @GNULIB_READ@ || @GNULIB_UNLINK@ || @GNULIB_WRITE@ \
+ || defined GNULIB_POSIXCHECK) \
+ && (defined _WIN32 && ! defined __CYGWIN__)
+# include <io.h>
+#endif
+
+/* AIX and OSF/1 5.1 declare getdomainname in <netdb.h>, not in <unistd.h>.
+ NonStop Kernel declares gethostname in <netdb.h>, not in <unistd.h>. */
+/* But avoid namespace pollution on glibc systems. */
+#if ((@GNULIB_GETDOMAINNAME@ && (defined _AIX || defined __osf__)) \
+ || (@GNULIB_GETHOSTNAME@ && defined __TANDEM)) \
+ && !defined __GLIBC__
+# include <netdb.h>
+#endif
+
+/* Android 4.3 declares fchownat in <sys/stat.h>, not in <unistd.h>. */
+/* But avoid namespace pollution on glibc systems. */
+#if (@GNULIB_FCHOWNAT@ || defined GNULIB_POSIXCHECK) && defined __ANDROID__ \
+ && !defined __GLIBC__
+# include <sys/stat.h>
+#endif
+
+/* MSVC defines off_t in <sys/types.h>.
+ May also define off_t to a 64-bit type on native Windows. */
+/* But avoid namespace pollution on glibc systems. */
+#ifndef __GLIBC__
+/* Get off_t, ssize_t. */
+# include <sys/types.h>
+#endif
+
+/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
+
+/* The definition of _GL_ARG_NONNULL is copied here. */
+
+/* The definition of _GL_WARN_ON_USE is copied here. */
+
+
+/* Get getopt(), optarg, optind, opterr, optopt. */
+#if @GNULIB_UNISTD_H_GETOPT@ && !defined _GL_SYSTEM_GETOPT
+# include <getopt-cdefs.h>
+# include <getopt-pfx-core.h>
+#endif
+
+#ifndef _GL_INLINE_HEADER_BEGIN
+ #error "Please include config.h first."
+#endif
+_GL_INLINE_HEADER_BEGIN
+#ifndef _GL_UNISTD_INLINE
+# define _GL_UNISTD_INLINE _GL_INLINE
+#endif
+
+/* Hide some function declarations from <winsock2.h>. */
+
+#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@
+# if !defined _@GUARD_PREFIX@_SYS_SOCKET_H
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef socket
+# define socket socket_used_without_including_sys_socket_h
+# undef connect
+# define connect connect_used_without_including_sys_socket_h
+# undef accept
+# define accept accept_used_without_including_sys_socket_h
+# undef bind
+# define bind bind_used_without_including_sys_socket_h
+# undef getpeername
+# define getpeername getpeername_used_without_including_sys_socket_h
+# undef getsockname
+# define getsockname getsockname_used_without_including_sys_socket_h
+# undef getsockopt
+# define getsockopt getsockopt_used_without_including_sys_socket_h
+# undef listen
+# define listen listen_used_without_including_sys_socket_h
+# undef recv
+# define recv recv_used_without_including_sys_socket_h
+# undef send
+# define send send_used_without_including_sys_socket_h
+# undef recvfrom
+# define recvfrom recvfrom_used_without_including_sys_socket_h
+# undef sendto
+# define sendto sendto_used_without_including_sys_socket_h
+# undef setsockopt
+# define setsockopt setsockopt_used_without_including_sys_socket_h
+# undef shutdown
+# define shutdown shutdown_used_without_including_sys_socket_h
+# else
+ _GL_WARN_ON_USE (socket,
+ "socket() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (connect,
+ "connect() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (accept,
+ "accept() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (bind,
+ "bind() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (getpeername,
+ "getpeername() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (getsockname,
+ "getsockname() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (getsockopt,
+ "getsockopt() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (listen,
+ "listen() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (recv,
+ "recv() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (send,
+ "send() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (recvfrom,
+ "recvfrom() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (sendto,
+ "sendto() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (setsockopt,
+ "setsockopt() used without including <sys/socket.h>");
+ _GL_WARN_ON_USE (shutdown,
+ "shutdown() used without including <sys/socket.h>");
+# endif
+# endif
+# if !defined _@GUARD_PREFIX@_SYS_SELECT_H
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef select
+# define select select_used_without_including_sys_select_h
+# else
+ _GL_WARN_ON_USE (select,
+ "select() used without including <sys/select.h>");
+# endif
+# endif
+#endif
+
+
+/* OS/2 EMX lacks these macros. */
+#ifndef STDIN_FILENO
+# define STDIN_FILENO 0
+#endif
+#ifndef STDOUT_FILENO
+# define STDOUT_FILENO 1
+#endif
+#ifndef STDERR_FILENO
+# define STDERR_FILENO 2
+#endif
+
+/* Ensure *_OK macros exist. */
+#ifndef F_OK
+# define F_OK 0
+# define X_OK 1
+# define W_OK 2
+# define R_OK 4
+#endif
+
+
+/* Declare overridden functions. */
+
+
+#if @GNULIB_ACCESS@
+# if @REPLACE_ACCESS@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef access
+# define access rpl_access
+# endif
+_GL_FUNCDECL_RPL (access, int, (const char *file, int mode)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (access, int, (const char *file, int mode));
+# else
+_GL_CXXALIAS_SYS (access, int, (const char *file, int mode));
+# endif
+_GL_CXXALIASWARN (access);
+#elif defined GNULIB_POSIXCHECK
+# undef access
+# if HAVE_RAW_DECL_ACCESS
+/* The access() function is a security risk. */
+_GL_WARN_ON_USE (access, "access does not always support X_OK - "
+ "use gnulib module access for portability; "
+ "also, this function is a security risk - "
+ "use the gnulib module faccessat instead");
+# endif
+#endif
+
+
+#if @GNULIB_CHDIR@
+_GL_CXXALIAS_SYS (chdir, int, (const char *file) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIASWARN (chdir);
+#elif defined GNULIB_POSIXCHECK
+# undef chdir
+# if HAVE_RAW_DECL_CHDIR
+_GL_WARN_ON_USE (chown, "chdir is not always in <unistd.h> - "
+ "use gnulib module chdir for portability");
+# endif
+#endif
+
+
+#if @GNULIB_CHOWN@
+/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
+ to GID (if GID is not -1). Follow symbolic links.
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2008 specification
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/chown.html. */
+# if @REPLACE_CHOWN@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef chown
+# define chown rpl_chown
+# endif
+_GL_FUNCDECL_RPL (chown, int, (const char *file, uid_t uid, gid_t gid)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (chown, int, (const char *file, uid_t uid, gid_t gid));
+# else
+# if !@HAVE_CHOWN@
+_GL_FUNCDECL_SYS (chown, int, (const char *file, uid_t uid, gid_t gid)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (chown, int, (const char *file, uid_t uid, gid_t gid));
+# endif
+_GL_CXXALIASWARN (chown);
+#elif defined GNULIB_POSIXCHECK
+# undef chown
+# if HAVE_RAW_DECL_CHOWN
+_GL_WARN_ON_USE (chown, "chown fails to follow symlinks on some systems and "
+ "doesn't treat a uid or gid of -1 on some systems - "
+ "use gnulib module chown for portability");
+# endif
+#endif
+
+
+#if @GNULIB_CLOSE@
+# if @REPLACE_CLOSE@
+/* Automatically included by modules that need a replacement for close. */
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef close
+# define close rpl_close
+# endif
+_GL_FUNCDECL_RPL (close, int, (int fd));
+_GL_CXXALIAS_RPL (close, int, (int fd));
+# else
+_GL_CXXALIAS_SYS (close, int, (int fd));
+# endif
+_GL_CXXALIASWARN (close);
+#elif @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@
+# undef close
+# define close close_used_without_requesting_gnulib_module_close
+#elif defined GNULIB_POSIXCHECK
+# undef close
+/* Assume close is always declared. */
+_GL_WARN_ON_USE (close, "close does not portably work on sockets - "
+ "use gnulib module close for portability");
+#endif
+
+
+#if @GNULIB_COPY_FILE_RANGE@
+# if !@HAVE_COPY_FILE_RANGE@
+_GL_FUNCDECL_SYS (copy_file_range, ssize_t, (int ifd, off_t *ipos,
+ int ofd, off_t *opos,
+ size_t len, unsigned flags));
+_GL_CXXALIAS_SYS (copy_file_range, ssize_t, (int ifd, off_t *ipos,
+ int ofd, off_t *opos,
+ size_t len, unsigned flags));
+# endif
+_GL_CXXALIASWARN (copy_file_range);
+#elif defined GNULIB_POSIXCHECK
+/* Assume copy_file_range is always declared. */
+_GL_WARN_ON_USE (copy_file_range,
+ "copy_file_range is unportable - "
+ "use gnulib module copy_file_range for portability");
+#endif
+
+
+#if @GNULIB_DUP@
+# if @REPLACE_DUP@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define dup rpl_dup
+# endif
+_GL_FUNCDECL_RPL (dup, int, (int oldfd));
+_GL_CXXALIAS_RPL (dup, int, (int oldfd));
+# else
+_GL_CXXALIAS_SYS (dup, int, (int oldfd));
+# endif
+_GL_CXXALIASWARN (dup);
+#elif defined GNULIB_POSIXCHECK
+# undef dup
+# if HAVE_RAW_DECL_DUP
+_GL_WARN_ON_USE (dup, "dup is unportable - "
+ "use gnulib module dup for portability");
+# endif
+#endif
+
+
+#if @GNULIB_DUP2@
+/* Copy the file descriptor OLDFD into file descriptor NEWFD. Do nothing if
+ NEWFD = OLDFD, otherwise close NEWFD first if it is open.
+ Return newfd if successful, otherwise -1 and errno set.
+ See the POSIX:2008 specification
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/dup2.html>. */
+# if @REPLACE_DUP2@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define dup2 rpl_dup2
+# endif
+_GL_FUNCDECL_RPL (dup2, int, (int oldfd, int newfd));
+_GL_CXXALIAS_RPL (dup2, int, (int oldfd, int newfd));
+# else
+# if !@HAVE_DUP2@
+_GL_FUNCDECL_SYS (dup2, int, (int oldfd, int newfd));
+# endif
+_GL_CXXALIAS_SYS (dup2, int, (int oldfd, int newfd));
+# endif
+_GL_CXXALIASWARN (dup2);
+#elif defined GNULIB_POSIXCHECK
+# undef dup2
+# if HAVE_RAW_DECL_DUP2
+_GL_WARN_ON_USE (dup2, "dup2 is unportable - "
+ "use gnulib module dup2 for portability");
+# endif
+#endif
+
+
+#if @GNULIB_DUP3@
+/* Copy the file descriptor OLDFD into file descriptor NEWFD, with the
+ specified flags.
+ The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
+ and O_TEXT, O_BINARY (defined in "binary-io.h").
+ Close NEWFD first if it is open.
+ Return newfd if successful, otherwise -1 and errno set.
+ See the Linux man page at
+ <https://www.kernel.org/doc/man-pages/online/pages/man2/dup3.2.html>. */
+# if @HAVE_DUP3@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define dup3 rpl_dup3
+# endif
+_GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags));
+_GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags));
+# else
+_GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags));
+_GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags));
+# endif
+_GL_CXXALIASWARN (dup3);
+#elif defined GNULIB_POSIXCHECK
+# undef dup3
+# if HAVE_RAW_DECL_DUP3
+_GL_WARN_ON_USE (dup3, "dup3 is unportable - "
+ "use gnulib module dup3 for portability");
+# endif
+#endif
+
+
+#if @GNULIB_ENVIRON@
+# if defined __CYGWIN__ && !defined __i386__
+/* The 'environ' variable is defined in a DLL. Therefore its declaration needs
+ the '__declspec(dllimport)' attribute, but the system's <unistd.h> lacks it.
+ This leads to a link error on 64-bit Cygwin when the option
+ -Wl,--disable-auto-import is in use. */
+_GL_EXTERN_C __declspec(dllimport) char **environ;
+# endif
+# if !@HAVE_DECL_ENVIRON@
+/* Set of environment variables and values. An array of strings of the form
+ "VARIABLE=VALUE", terminated with a NULL. */
+# if defined __APPLE__ && defined __MACH__
+# include <TargetConditionals.h>
+# if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
+# define _GL_USE_CRT_EXTERNS
+# endif
+# endif
+# ifdef _GL_USE_CRT_EXTERNS
+# include <crt_externs.h>
+# define environ (*_NSGetEnviron ())
+# else
+# ifdef __cplusplus
+extern "C" {
+# endif
+extern char **environ;
+# ifdef __cplusplus
+}
+# endif
+# endif
+# endif
+#elif defined GNULIB_POSIXCHECK
+# if HAVE_RAW_DECL_ENVIRON
+_GL_UNISTD_INLINE char ***
+_GL_WARN_ON_USE_ATTRIBUTE ("environ is unportable - "
+ "use gnulib module environ for portability")
+rpl_environ (void)
+{
+ return &environ;
+}
+# undef environ
+# define environ (*rpl_environ ())
+# endif
+#endif
+
+
+#if @GNULIB_EUIDACCESS@
+/* Like access(), except that it uses the effective user id and group id of
+ the current process. */
+# if !@HAVE_EUIDACCESS@
+_GL_FUNCDECL_SYS (euidaccess, int, (const char *filename, int mode)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (euidaccess, int, (const char *filename, int mode));
+_GL_CXXALIASWARN (euidaccess);
+# if defined GNULIB_POSIXCHECK
+/* Like access(), this function is a security risk. */
+_GL_WARN_ON_USE (euidaccess, "the euidaccess function is a security risk - "
+ "use the gnulib module faccessat instead");
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef euidaccess
+# if HAVE_RAW_DECL_EUIDACCESS
+_GL_WARN_ON_USE (euidaccess, "euidaccess is unportable - "
+ "use gnulib module euidaccess for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FACCESSAT@
+# if @REPLACE_FACCESSAT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef faccessat
+# define faccessat rpl_faccessat
+# endif
+_GL_FUNCDECL_RPL (faccessat, int,
+ (int fd, char const *name, int mode, int flag)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (faccessat, int,
+ (int fd, char const *name, int mode, int flag));
+# else
+# if !@HAVE_FACCESSAT@
+_GL_FUNCDECL_SYS (faccessat, int,
+ (int fd, char const *file, int mode, int flag)
+ _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (faccessat, int,
+ (int fd, char const *file, int mode, int flag));
+# endif
+_GL_CXXALIASWARN (faccessat);
+#elif defined GNULIB_POSIXCHECK
+# undef faccessat
+# if HAVE_RAW_DECL_FACCESSAT
+_GL_WARN_ON_USE (faccessat, "faccessat is not portable - "
+ "use gnulib module faccessat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FCHDIR@
+/* Change the process' current working directory to the directory on which
+ the given file descriptor is open.
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2008 specification
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/fchdir.html>. */
+# if ! @HAVE_FCHDIR@
+_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
+
+/* Gnulib internal hooks needed to maintain the fchdir metadata. */
+_GL_EXTERN_C int _gl_register_fd (int fd, const char *filename)
+ _GL_ARG_NONNULL ((2));
+_GL_EXTERN_C void _gl_unregister_fd (int fd);
+_GL_EXTERN_C int _gl_register_dup (int oldfd, int newfd);
+_GL_EXTERN_C const char *_gl_directory_name (int fd);
+
+# else
+# if !@HAVE_DECL_FCHDIR@
+_GL_FUNCDECL_SYS (fchdir, int, (int /*fd*/));
+# endif
+# endif
+_GL_CXXALIAS_SYS (fchdir, int, (int /*fd*/));
+_GL_CXXALIASWARN (fchdir);
+#elif defined GNULIB_POSIXCHECK
+# undef fchdir
+# if HAVE_RAW_DECL_FCHDIR
+_GL_WARN_ON_USE (fchdir, "fchdir is unportable - "
+ "use gnulib module fchdir for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FCHOWNAT@
+# if @REPLACE_FCHOWNAT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fchownat
+# define fchownat rpl_fchownat
+# endif
+_GL_FUNCDECL_RPL (fchownat, int, (int fd, char const *file,
+ uid_t owner, gid_t group, int flag)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (fchownat, int, (int fd, char const *file,
+ uid_t owner, gid_t group, int flag));
+# else
+# if !@HAVE_FCHOWNAT@
+_GL_FUNCDECL_SYS (fchownat, int, (int fd, char const *file,
+ uid_t owner, gid_t group, int flag)
+ _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (fchownat, int, (int fd, char const *file,
+ uid_t owner, gid_t group, int flag));
+# endif
+_GL_CXXALIASWARN (fchownat);
+#elif defined GNULIB_POSIXCHECK
+# undef fchownat
+# if HAVE_RAW_DECL_FCHOWNAT
+_GL_WARN_ON_USE (fchownat, "fchownat is not portable - "
+ "use gnulib module openat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FDATASYNC@
+/* Synchronize changes to a file.
+ Return 0 if successful, otherwise -1 and errno set.
+ See POSIX:2008 specification
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html>. */
+# if !@HAVE_FDATASYNC@ || !@HAVE_DECL_FDATASYNC@
+_GL_FUNCDECL_SYS (fdatasync, int, (int fd));
+# endif
+_GL_CXXALIAS_SYS (fdatasync, int, (int fd));
+_GL_CXXALIASWARN (fdatasync);
+#elif defined GNULIB_POSIXCHECK
+# undef fdatasync
+# if HAVE_RAW_DECL_FDATASYNC
+_GL_WARN_ON_USE (fdatasync, "fdatasync is unportable - "
+ "use gnulib module fdatasync for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FSYNC@
+/* Synchronize changes, including metadata, to a file.
+ Return 0 if successful, otherwise -1 and errno set.
+ See POSIX:2008 specification
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html>. */
+# if !@HAVE_FSYNC@
+_GL_FUNCDECL_SYS (fsync, int, (int fd));
+# endif
+_GL_CXXALIAS_SYS (fsync, int, (int fd));
+_GL_CXXALIASWARN (fsync);
+#elif defined GNULIB_POSIXCHECK
+# undef fsync
+# if HAVE_RAW_DECL_FSYNC
+_GL_WARN_ON_USE (fsync, "fsync is unportable - "
+ "use gnulib module fsync for portability");
+# endif
+#endif
+
+
+#if @GNULIB_FTRUNCATE@
+/* Change the size of the file to which FD is opened to become equal to LENGTH.
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2008 specification
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html>. */
+# if @REPLACE_FTRUNCATE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef ftruncate
+# define ftruncate rpl_ftruncate
+# endif
+_GL_FUNCDECL_RPL (ftruncate, int, (int fd, off_t length));
+_GL_CXXALIAS_RPL (ftruncate, int, (int fd, off_t length));
+# else
+# if !@HAVE_FTRUNCATE@
+_GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length));
+# endif
+_GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length));
+# endif
+_GL_CXXALIASWARN (ftruncate);
+#elif defined GNULIB_POSIXCHECK
+# undef ftruncate
+# if HAVE_RAW_DECL_FTRUNCATE
+_GL_WARN_ON_USE (ftruncate, "ftruncate is unportable - "
+ "use gnulib module ftruncate for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETCWD@
+/* Get the name of the current working directory, and put it in SIZE bytes
+ of BUF.
+ Return BUF if successful, or NULL if the directory couldn't be determined
+ or SIZE was too small.
+ See the POSIX:2008 specification
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/getcwd.html>.
+ Additionally, the gnulib module 'getcwd' guarantees the following GNU
+ extension: If BUF is NULL, an array is allocated with 'malloc'; the array
+ is SIZE bytes long, unless SIZE == 0, in which case it is as big as
+ necessary. */
+# if @REPLACE_GETCWD@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define getcwd rpl_getcwd
+# endif
+_GL_FUNCDECL_RPL (getcwd, char *, (char *buf, size_t size));
+_GL_CXXALIAS_RPL (getcwd, char *, (char *buf, size_t size));
+# else
+/* Need to cast, because on mingw, the second parameter is
+ int size. */
+_GL_CXXALIAS_SYS_CAST (getcwd, char *, (char *buf, size_t size));
+# endif
+_GL_CXXALIASWARN (getcwd);
+#elif defined GNULIB_POSIXCHECK
+# undef getcwd
+# if HAVE_RAW_DECL_GETCWD
+_GL_WARN_ON_USE (getcwd, "getcwd is unportable - "
+ "use gnulib module getcwd for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETDOMAINNAME@
+/* Return the NIS domain name of the machine.
+ WARNING! The NIS domain name is unrelated to the fully qualified host name
+ of the machine. It is also unrelated to email addresses.
+ WARNING! The NIS domain name is usually the empty string or "(none)" when
+ not using NIS.
+
+ Put up to LEN bytes of the NIS domain name into NAME.
+ Null terminate it if the name is shorter than LEN.
+ If the NIS domain name is longer than LEN, set errno = EINVAL and return -1.
+ Return 0 if successful, otherwise set errno and return -1. */
+# if @REPLACE_GETDOMAINNAME@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef getdomainname
+# define getdomainname rpl_getdomainname
+# endif
+_GL_FUNCDECL_RPL (getdomainname, int, (char *name, size_t len)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (getdomainname, int, (char *name, size_t len));
+# else
+# if !@HAVE_DECL_GETDOMAINNAME@
+_GL_FUNCDECL_SYS (getdomainname, int, (char *name, size_t len)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (getdomainname, int, (char *name, size_t len));
+# endif
+_GL_CXXALIASWARN (getdomainname);
+#elif defined GNULIB_POSIXCHECK
+# undef getdomainname
+# if HAVE_RAW_DECL_GETDOMAINNAME
+_GL_WARN_ON_USE (getdomainname, "getdomainname is unportable - "
+ "use gnulib module getdomainname for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETDTABLESIZE@
+/* Return the maximum number of file descriptors in the current process.
+ In POSIX, this is same as sysconf (_SC_OPEN_MAX). */
+# if @REPLACE_GETDTABLESIZE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef getdtablesize
+# define getdtablesize rpl_getdtablesize
+# endif
+_GL_FUNCDECL_RPL (getdtablesize, int, (void));
+_GL_CXXALIAS_RPL (getdtablesize, int, (void));
+# else
+# if !@HAVE_GETDTABLESIZE@
+_GL_FUNCDECL_SYS (getdtablesize, int, (void));
+# endif
+/* Need to cast, because on AIX, the parameter list is
+ (...). */
+_GL_CXXALIAS_SYS_CAST (getdtablesize, int, (void));
+# endif
+_GL_CXXALIASWARN (getdtablesize);
+#elif defined GNULIB_POSIXCHECK
+# undef getdtablesize
+# if HAVE_RAW_DECL_GETDTABLESIZE
+_GL_WARN_ON_USE (getdtablesize, "getdtablesize is unportable - "
+ "use gnulib module getdtablesize for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETGROUPS@
+/* Return the supplemental groups that the current process belongs to.
+ It is unspecified whether the effective group id is in the list.
+ If N is 0, return the group count; otherwise, N describes how many
+ entries are available in GROUPS. Return -1 and set errno if N is
+ not 0 and not large enough. Fails with ENOSYS on some systems. */
+# if @REPLACE_GETGROUPS@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef getgroups
+# define getgroups rpl_getgroups
+# endif
+_GL_FUNCDECL_RPL (getgroups, int, (int n, gid_t *groups));
+_GL_CXXALIAS_RPL (getgroups, int, (int n, gid_t *groups));
+# else
+# if !@HAVE_GETGROUPS@
+_GL_FUNCDECL_SYS (getgroups, int, (int n, gid_t *groups));
+# endif
+_GL_CXXALIAS_SYS (getgroups, int, (int n, gid_t *groups));
+# endif
+_GL_CXXALIASWARN (getgroups);
+#elif defined GNULIB_POSIXCHECK
+# undef getgroups
+# if HAVE_RAW_DECL_GETGROUPS
+_GL_WARN_ON_USE (getgroups, "getgroups is unportable - "
+ "use gnulib module getgroups for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETHOSTNAME@
+/* Return the standard host name of the machine.
+ WARNING! The host name may or may not be fully qualified.
+
+ Put up to LEN bytes of the host name into NAME.
+ Null terminate it if the name is shorter than LEN.
+ If the host name is longer than LEN, set errno = EINVAL and return -1.
+ Return 0 if successful, otherwise set errno and return -1. */
+# if @UNISTD_H_HAVE_WINSOCK2_H@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef gethostname
+# define gethostname rpl_gethostname
+# endif
+_GL_FUNCDECL_RPL (gethostname, int, (char *name, size_t len)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (gethostname, int, (char *name, size_t len));
+# else
+# if !@HAVE_GETHOSTNAME@
+_GL_FUNCDECL_SYS (gethostname, int, (char *name, size_t len)
+ _GL_ARG_NONNULL ((1)));
+# endif
+/* Need to cast, because on Solaris 10 and OSF/1 5.1 systems, the second
+ parameter is
+ int len. */
+_GL_CXXALIAS_SYS_CAST (gethostname, int, (char *name, size_t len));
+# endif
+_GL_CXXALIASWARN (gethostname);
+#elif @UNISTD_H_HAVE_WINSOCK2_H@
+# undef gethostname
+# define gethostname gethostname_used_without_requesting_gnulib_module_gethostname
+#elif defined GNULIB_POSIXCHECK
+# undef gethostname
+# if HAVE_RAW_DECL_GETHOSTNAME
+_GL_WARN_ON_USE (gethostname, "gethostname is unportable - "
+ "use gnulib module gethostname for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETLOGIN@
+/* Returns the user's login name, or NULL if it cannot be found. Upon error,
+ returns NULL with errno set.
+
+ See <https://pubs.opengroup.org/onlinepubs/9699919799/functions/getlogin.html>.
+
+ Most programs don't need to use this function, because the information is
+ available through environment variables:
+ ${LOGNAME-$USER} on Unix platforms,
+ $USERNAME on native Windows platforms.
+ */
+# if !@HAVE_DECL_GETLOGIN@
+_GL_FUNCDECL_SYS (getlogin, char *, (void));
+# endif
+_GL_CXXALIAS_SYS (getlogin, char *, (void));
+_GL_CXXALIASWARN (getlogin);
+#elif defined GNULIB_POSIXCHECK
+# undef getlogin
+# if HAVE_RAW_DECL_GETLOGIN
+_GL_WARN_ON_USE (getlogin, "getlogin is unportable - "
+ "use gnulib module getlogin for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETLOGIN_R@
+/* Copies the user's login name to NAME.
+ The array pointed to by NAME has room for SIZE bytes.
+
+ Returns 0 if successful. Upon error, an error number is returned, or -1 in
+ the case that the login name cannot be found but no specific error is
+ provided (this case is hopefully rare but is left open by the POSIX spec).
+
+ See <https://pubs.opengroup.org/onlinepubs/9699919799/functions/getlogin.html>.
+
+ Most programs don't need to use this function, because the information is
+ available through environment variables:
+ ${LOGNAME-$USER} on Unix platforms,
+ $USERNAME on native Windows platforms.
+ */
+# if @REPLACE_GETLOGIN_R@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define getlogin_r rpl_getlogin_r
+# endif
+_GL_FUNCDECL_RPL (getlogin_r, int, (char *name, size_t size)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (getlogin_r, int, (char *name, size_t size));
+# else
+# if !@HAVE_DECL_GETLOGIN_R@
+_GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size)
+ _GL_ARG_NONNULL ((1)));
+# endif
+/* Need to cast, because on Solaris 10 systems, the second argument is
+ int size. */
+_GL_CXXALIAS_SYS_CAST (getlogin_r, int, (char *name, size_t size));
+# endif
+_GL_CXXALIASWARN (getlogin_r);
+#elif defined GNULIB_POSIXCHECK
+# undef getlogin_r
+# if HAVE_RAW_DECL_GETLOGIN_R
+_GL_WARN_ON_USE (getlogin_r, "getlogin_r is unportable - "
+ "use gnulib module getlogin_r for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETPAGESIZE@
+# if @REPLACE_GETPAGESIZE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define getpagesize rpl_getpagesize
+# endif
+_GL_FUNCDECL_RPL (getpagesize, int, (void));
+_GL_CXXALIAS_RPL (getpagesize, int, (void));
+# else
+/* On HP-UX, getpagesize exists, but it is not declared in <unistd.h> even if
+ the compiler options -D_HPUX_SOURCE -D_XOPEN_SOURCE=600 are used. */
+# if defined __hpux
+_GL_FUNCDECL_SYS (getpagesize, int, (void));
+# endif
+# if !@HAVE_GETPAGESIZE@
+# if !defined getpagesize
+/* This is for POSIX systems. */
+# if !defined _gl_getpagesize && defined _SC_PAGESIZE
+# if ! (defined __VMS && __VMS_VER < 70000000)
+# define _gl_getpagesize() sysconf (_SC_PAGESIZE)
+# endif
+# endif
+/* This is for older VMS. */
+# if !defined _gl_getpagesize && defined __VMS
+# ifdef __ALPHA
+# define _gl_getpagesize() 8192
+# else
+# define _gl_getpagesize() 512
+# endif
+# endif
+/* This is for BeOS. */
+# if !defined _gl_getpagesize && @HAVE_OS_H@
+# include <OS.h>
+# if defined B_PAGE_SIZE
+# define _gl_getpagesize() B_PAGE_SIZE
+# endif
+# endif
+/* This is for AmigaOS4.0. */
+# if !defined _gl_getpagesize && defined __amigaos4__
+# define _gl_getpagesize() 2048
+# endif
+/* This is for older Unix systems. */
+# if !defined _gl_getpagesize && @HAVE_SYS_PARAM_H@
+# include <sys/param.h>
+# ifdef EXEC_PAGESIZE
+# define _gl_getpagesize() EXEC_PAGESIZE
+# else
+# ifdef NBPG
+# ifndef CLSIZE
+# define CLSIZE 1
+# endif
+# define _gl_getpagesize() (NBPG * CLSIZE)
+# else
+# ifdef NBPC
+# define _gl_getpagesize() NBPC
+# endif
+# endif
+# endif
+# endif
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define getpagesize() _gl_getpagesize ()
+# else
+# if !GNULIB_defined_getpagesize_function
+_GL_UNISTD_INLINE int
+getpagesize ()
+{
+ return _gl_getpagesize ();
+}
+# define GNULIB_defined_getpagesize_function 1
+# endif
+# endif
+# endif
+# endif
+/* Need to cast, because on Cygwin 1.5.x systems, the return type is size_t. */
+_GL_CXXALIAS_SYS_CAST (getpagesize, int, (void));
+# endif
+# if @HAVE_DECL_GETPAGESIZE@
+_GL_CXXALIASWARN (getpagesize);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getpagesize
+# if HAVE_RAW_DECL_GETPAGESIZE
+_GL_WARN_ON_USE (getpagesize, "getpagesize is unportable - "
+ "use gnulib module getpagesize for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETPASS@
+/* Function getpass() from module 'getpass':
+ Read a password from /dev/tty or stdin.
+ Function getpass() from module 'getpass-gnu':
+ Read a password of arbitrary length from /dev/tty or stdin. */
+# if @REPLACE_GETPASS@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef getpass
+# define getpass rpl_getpass
+# endif
+_GL_FUNCDECL_RPL (getpass, char *, (const char *prompt)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (getpass, char *, (const char *prompt));
+# else
+# if !@HAVE_GETPASS@
+_GL_FUNCDECL_SYS (getpass, char *, (const char *prompt)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (getpass, char *, (const char *prompt));
+# endif
+_GL_CXXALIASWARN (getpass);
+#elif defined GNULIB_POSIXCHECK
+# undef getpass
+# if HAVE_RAW_DECL_GETPASS
+_GL_WARN_ON_USE (getpass, "getpass is unportable - "
+ "use gnulib module getpass or getpass-gnu for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GETUSERSHELL@
+/* Return the next valid login shell on the system, or NULL when the end of
+ the list has been reached. */
+# if !@HAVE_DECL_GETUSERSHELL@
+_GL_FUNCDECL_SYS (getusershell, char *, (void));
+# endif
+_GL_CXXALIAS_SYS (getusershell, char *, (void));
+_GL_CXXALIASWARN (getusershell);
+#elif defined GNULIB_POSIXCHECK
+# undef getusershell
+# if HAVE_RAW_DECL_GETUSERSHELL
+_GL_WARN_ON_USE (getusershell, "getusershell is unportable - "
+ "use gnulib module getusershell for portability");
+# endif
+#endif
+
+#if @GNULIB_GETUSERSHELL@
+/* Rewind to pointer that is advanced at each getusershell() call. */
+# if !@HAVE_DECL_GETUSERSHELL@
+_GL_FUNCDECL_SYS (setusershell, void, (void));
+# endif
+_GL_CXXALIAS_SYS (setusershell, void, (void));
+_GL_CXXALIASWARN (setusershell);
+#elif defined GNULIB_POSIXCHECK
+# undef setusershell
+# if HAVE_RAW_DECL_SETUSERSHELL
+_GL_WARN_ON_USE (setusershell, "setusershell is unportable - "
+ "use gnulib module getusershell for portability");
+# endif
+#endif
+
+#if @GNULIB_GETUSERSHELL@
+/* Free the pointer that is advanced at each getusershell() call and
+ associated resources. */
+# if !@HAVE_DECL_GETUSERSHELL@
+_GL_FUNCDECL_SYS (endusershell, void, (void));
+# endif
+_GL_CXXALIAS_SYS (endusershell, void, (void));
+_GL_CXXALIASWARN (endusershell);
+#elif defined GNULIB_POSIXCHECK
+# undef endusershell
+# if HAVE_RAW_DECL_ENDUSERSHELL
+_GL_WARN_ON_USE (endusershell, "endusershell is unportable - "
+ "use gnulib module getusershell for portability");
+# endif
+#endif
+
+
+#if @GNULIB_GROUP_MEMBER@
+/* Determine whether group id is in calling user's group list. */
+# if !@HAVE_GROUP_MEMBER@
+_GL_FUNCDECL_SYS (group_member, int, (gid_t gid));
+# endif
+_GL_CXXALIAS_SYS (group_member, int, (gid_t gid));
+_GL_CXXALIASWARN (group_member);
+#elif defined GNULIB_POSIXCHECK
+# undef group_member
+# if HAVE_RAW_DECL_GROUP_MEMBER
+_GL_WARN_ON_USE (group_member, "group_member is unportable - "
+ "use gnulib module group-member for portability");
+# endif
+#endif
+
+
+#if @GNULIB_ISATTY@
+# if @REPLACE_ISATTY@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef isatty
+# define isatty rpl_isatty
+# endif
+_GL_FUNCDECL_RPL (isatty, int, (int fd));
+_GL_CXXALIAS_RPL (isatty, int, (int fd));
+# else
+_GL_CXXALIAS_SYS (isatty, int, (int fd));
+# endif
+_GL_CXXALIASWARN (isatty);
+#elif defined GNULIB_POSIXCHECK
+# undef isatty
+# if HAVE_RAW_DECL_ISATTY
+_GL_WARN_ON_USE (isatty, "isatty has portability problems on native Windows - "
+ "use gnulib module isatty for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LCHOWN@
+/* Change the owner of FILE to UID (if UID is not -1) and the group of FILE
+ to GID (if GID is not -1). Do not follow symbolic links.
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2008 specification
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/lchown.html>. */
+# if @REPLACE_LCHOWN@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef lchown
+# define lchown rpl_lchown
+# endif
+_GL_FUNCDECL_RPL (lchown, int, (char const *file, uid_t owner, gid_t group)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (lchown, int, (char const *file, uid_t owner, gid_t group));
+# else
+# if !@HAVE_LCHOWN@
+_GL_FUNCDECL_SYS (lchown, int, (char const *file, uid_t owner, gid_t group)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (lchown, int, (char const *file, uid_t owner, gid_t group));
+# endif
+_GL_CXXALIASWARN (lchown);
+#elif defined GNULIB_POSIXCHECK
+# undef lchown
+# if HAVE_RAW_DECL_LCHOWN
+_GL_WARN_ON_USE (lchown, "lchown is unportable to pre-POSIX.1-2001 systems - "
+ "use gnulib module lchown for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LINK@
+/* Create a new hard link for an existing file.
+ Return 0 if successful, otherwise -1 and errno set.
+ See POSIX:2008 specification
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/link.html>. */
+# if @REPLACE_LINK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define link rpl_link
+# endif
+_GL_FUNCDECL_RPL (link, int, (const char *path1, const char *path2)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (link, int, (const char *path1, const char *path2));
+# else
+# if !@HAVE_LINK@
+_GL_FUNCDECL_SYS (link, int, (const char *path1, const char *path2)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (link, int, (const char *path1, const char *path2));
+# endif
+_GL_CXXALIASWARN (link);
+#elif defined GNULIB_POSIXCHECK
+# undef link
+# if HAVE_RAW_DECL_LINK
+_GL_WARN_ON_USE (link, "link is unportable - "
+ "use gnulib module link for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LINKAT@
+/* Create a new hard link for an existing file, relative to two
+ directories. FLAG controls whether symlinks are followed.
+ Return 0 if successful, otherwise -1 and errno set. */
+# if @REPLACE_LINKAT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef linkat
+# define linkat rpl_linkat
+# endif
+_GL_FUNCDECL_RPL (linkat, int,
+ (int fd1, const char *path1, int fd2, const char *path2,
+ int flag)
+ _GL_ARG_NONNULL ((2, 4)));
+_GL_CXXALIAS_RPL (linkat, int,
+ (int fd1, const char *path1, int fd2, const char *path2,
+ int flag));
+# else
+# if !@HAVE_LINKAT@
+_GL_FUNCDECL_SYS (linkat, int,
+ (int fd1, const char *path1, int fd2, const char *path2,
+ int flag)
+ _GL_ARG_NONNULL ((2, 4)));
+# endif
+_GL_CXXALIAS_SYS (linkat, int,
+ (int fd1, const char *path1, int fd2, const char *path2,
+ int flag));
+# endif
+_GL_CXXALIASWARN (linkat);
+#elif defined GNULIB_POSIXCHECK
+# undef linkat
+# if HAVE_RAW_DECL_LINKAT
+_GL_WARN_ON_USE (linkat, "linkat is unportable - "
+ "use gnulib module linkat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_LSEEK@
+/* Set the offset of FD relative to SEEK_SET, SEEK_CUR, or SEEK_END.
+ Return the new offset if successful, otherwise -1 and errno set.
+ See the POSIX:2008 specification
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/lseek.html>. */
+# if @REPLACE_LSEEK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define lseek rpl_lseek
+# endif
+_GL_FUNCDECL_RPL (lseek, off_t, (int fd, off_t offset, int whence));
+_GL_CXXALIAS_RPL (lseek, off_t, (int fd, off_t offset, int whence));
+# else
+_GL_CXXALIAS_SYS (lseek, off_t, (int fd, off_t offset, int whence));
+# endif
+_GL_CXXALIASWARN (lseek);
+#elif defined GNULIB_POSIXCHECK
+# undef lseek
+# if HAVE_RAW_DECL_LSEEK
+_GL_WARN_ON_USE (lseek, "lseek does not fail with ESPIPE on pipes on some "
+ "systems - use gnulib module lseek for portability");
+# endif
+#endif
+
+
+#if @GNULIB_PIPE@
+/* Create a pipe, defaulting to O_BINARY mode.
+ Store the read-end as fd[0] and the write-end as fd[1].
+ Return 0 upon success, or -1 with errno set upon failure. */
+# if !@HAVE_PIPE@
+_GL_FUNCDECL_SYS (pipe, int, (int fd[2]) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (pipe, int, (int fd[2]));
+_GL_CXXALIASWARN (pipe);
+#elif defined GNULIB_POSIXCHECK
+# undef pipe
+# if HAVE_RAW_DECL_PIPE
+_GL_WARN_ON_USE (pipe, "pipe is unportable - "
+ "use gnulib module pipe-posix for portability");
+# endif
+#endif
+
+
+#if @GNULIB_PIPE2@
+/* Create a pipe, applying the given flags when opening the read-end of the
+ pipe and the write-end of the pipe.
+ The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>)
+ and O_TEXT, O_BINARY (defined in "binary-io.h").
+ Store the read-end as fd[0] and the write-end as fd[1].
+ Return 0 upon success, or -1 with errno set upon failure.
+ See also the Linux man page at
+ <https://www.kernel.org/doc/man-pages/online/pages/man2/pipe2.2.html>. */
+# if @HAVE_PIPE2@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define pipe2 rpl_pipe2
+# endif
+_GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags));
+# else
+_GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags));
+# endif
+_GL_CXXALIASWARN (pipe2);
+#elif defined GNULIB_POSIXCHECK
+# undef pipe2
+# if HAVE_RAW_DECL_PIPE2
+_GL_WARN_ON_USE (pipe2, "pipe2 is unportable - "
+ "use gnulib module pipe2 for portability");
+# endif
+#endif
+
+
+#if @GNULIB_PREAD@
+/* Read at most BUFSIZE bytes from FD into BUF, starting at OFFSET.
+ Return the number of bytes placed into BUF if successful, otherwise
+ set errno and return -1. 0 indicates EOF.
+ See the POSIX:2008 specification
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/pread.html>. */
+# if @REPLACE_PREAD@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pread
+# define pread rpl_pread
+# endif
+_GL_FUNCDECL_RPL (pread, ssize_t,
+ (int fd, void *buf, size_t bufsize, off_t offset)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (pread, ssize_t,
+ (int fd, void *buf, size_t bufsize, off_t offset));
+# else
+# if !@HAVE_PREAD@
+_GL_FUNCDECL_SYS (pread, ssize_t,
+ (int fd, void *buf, size_t bufsize, off_t offset)
+ _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (pread, ssize_t,
+ (int fd, void *buf, size_t bufsize, off_t offset));
+# endif
+_GL_CXXALIASWARN (pread);
+#elif defined GNULIB_POSIXCHECK
+# undef pread
+# if HAVE_RAW_DECL_PREAD
+_GL_WARN_ON_USE (pread, "pread is unportable - "
+ "use gnulib module pread for portability");
+# endif
+#endif
+
+
+#if @GNULIB_PWRITE@
+/* Write at most BUFSIZE bytes from BUF into FD, starting at OFFSET.
+ Return the number of bytes written if successful, otherwise
+ set errno and return -1. 0 indicates nothing written. See the
+ POSIX:2008 specification
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/pwrite.html>. */
+# if @REPLACE_PWRITE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pwrite
+# define pwrite rpl_pwrite
+# endif
+_GL_FUNCDECL_RPL (pwrite, ssize_t,
+ (int fd, const void *buf, size_t bufsize, off_t offset)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (pwrite, ssize_t,
+ (int fd, const void *buf, size_t bufsize, off_t offset));
+# else
+# if !@HAVE_PWRITE@
+_GL_FUNCDECL_SYS (pwrite, ssize_t,
+ (int fd, const void *buf, size_t bufsize, off_t offset)
+ _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (pwrite, ssize_t,
+ (int fd, const void *buf, size_t bufsize, off_t offset));
+# endif
+_GL_CXXALIASWARN (pwrite);
+#elif defined GNULIB_POSIXCHECK
+# undef pwrite
+# if HAVE_RAW_DECL_PWRITE
+_GL_WARN_ON_USE (pwrite, "pwrite is unportable - "
+ "use gnulib module pwrite for portability");
+# endif
+#endif
+
+
+#if @GNULIB_READ@
+/* Read up to COUNT bytes from file descriptor FD into the buffer starting
+ at BUF. See the POSIX:2008 specification
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html>. */
+# if @REPLACE_READ@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef read
+# define read rpl_read
+# endif
+_GL_FUNCDECL_RPL (read, ssize_t, (int fd, void *buf, size_t count)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (read, ssize_t, (int fd, void *buf, size_t count));
+# else
+/* Need to cast, because on mingw, the third parameter is
+ unsigned int count
+ and the return type is 'int'. */
+_GL_CXXALIAS_SYS_CAST (read, ssize_t, (int fd, void *buf, size_t count));
+# endif
+_GL_CXXALIASWARN (read);
+#endif
+
+
+#if @GNULIB_READLINK@
+/* Read the contents of the symbolic link FILE and place the first BUFSIZE
+ bytes of it into BUF. Return the number of bytes placed into BUF if
+ successful, otherwise -1 and errno set.
+ See the POSIX:2008 specification
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/readlink.html>. */
+# if @REPLACE_READLINK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define readlink rpl_readlink
+# endif
+_GL_FUNCDECL_RPL (readlink, ssize_t,
+ (const char *file, char *buf, size_t bufsize)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (readlink, ssize_t,
+ (const char *file, char *buf, size_t bufsize));
+# else
+# if !@HAVE_READLINK@
+_GL_FUNCDECL_SYS (readlink, ssize_t,
+ (const char *file, char *buf, size_t bufsize)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (readlink, ssize_t,
+ (const char *file, char *buf, size_t bufsize));
+# endif
+_GL_CXXALIASWARN (readlink);
+#elif defined GNULIB_POSIXCHECK
+# undef readlink
+# if HAVE_RAW_DECL_READLINK
+_GL_WARN_ON_USE (readlink, "readlink is unportable - "
+ "use gnulib module readlink for portability");
+# endif
+#endif
+
+
+#if @GNULIB_READLINKAT@
+# if @REPLACE_READLINKAT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define readlinkat rpl_readlinkat
+# endif
+_GL_FUNCDECL_RPL (readlinkat, ssize_t,
+ (int fd, char const *file, char *buf, size_t len)
+ _GL_ARG_NONNULL ((2, 3)));
+_GL_CXXALIAS_RPL (readlinkat, ssize_t,
+ (int fd, char const *file, char *buf, size_t len));
+# else
+# if !@HAVE_READLINKAT@
+_GL_FUNCDECL_SYS (readlinkat, ssize_t,
+ (int fd, char const *file, char *buf, size_t len)
+ _GL_ARG_NONNULL ((2, 3)));
+# endif
+_GL_CXXALIAS_SYS (readlinkat, ssize_t,
+ (int fd, char const *file, char *buf, size_t len));
+# endif
+_GL_CXXALIASWARN (readlinkat);
+#elif defined GNULIB_POSIXCHECK
+# undef readlinkat
+# if HAVE_RAW_DECL_READLINKAT
+_GL_WARN_ON_USE (readlinkat, "readlinkat is not portable - "
+ "use gnulib module readlinkat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_RMDIR@
+/* Remove the directory DIR. */
+# if @REPLACE_RMDIR@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define rmdir rpl_rmdir
+# endif
+_GL_FUNCDECL_RPL (rmdir, int, (char const *name) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (rmdir, int, (char const *name));
+# else
+_GL_CXXALIAS_SYS (rmdir, int, (char const *name));
+# endif
+_GL_CXXALIASWARN (rmdir);
+#elif defined GNULIB_POSIXCHECK
+# undef rmdir
+# if HAVE_RAW_DECL_RMDIR
+_GL_WARN_ON_USE (rmdir, "rmdir is unportable - "
+ "use gnulib module rmdir for portability");
+# endif
+#endif
+
+
+#if @GNULIB_SETHOSTNAME@
+/* Set the host name of the machine.
+ The host name may or may not be fully qualified.
+
+ Put LEN bytes of NAME into the host name.
+ Return 0 if successful, otherwise, set errno and return -1.
+
+ Platforms with no ability to set the hostname return -1 and set
+ errno = ENOSYS. */
+# if !@HAVE_SETHOSTNAME@ || !@HAVE_DECL_SETHOSTNAME@
+_GL_FUNCDECL_SYS (sethostname, int, (const char *name, size_t len)
+ _GL_ARG_NONNULL ((1)));
+# endif
+/* Need to cast, because on Solaris 11 2011-10, Mac OS X 10.5, IRIX 6.5
+ and FreeBSD 6.4 the second parameter is int. On Solaris 11
+ 2011-10, the first parameter is not const. */
+_GL_CXXALIAS_SYS_CAST (sethostname, int, (const char *name, size_t len));
+_GL_CXXALIASWARN (sethostname);
+#elif defined GNULIB_POSIXCHECK
+# undef sethostname
+# if HAVE_RAW_DECL_SETHOSTNAME
+_GL_WARN_ON_USE (sethostname, "sethostname is unportable - "
+ "use gnulib module sethostname for portability");
+# endif
+#endif
+
+
+#if @GNULIB_SLEEP@
+/* Pause the execution of the current thread for N seconds.
+ Returns the number of seconds left to sleep.
+ See the POSIX:2008 specification
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/sleep.html>. */
+# if @REPLACE_SLEEP@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef sleep
+# define sleep rpl_sleep
+# endif
+_GL_FUNCDECL_RPL (sleep, unsigned int, (unsigned int n));
+_GL_CXXALIAS_RPL (sleep, unsigned int, (unsigned int n));
+# else
+# if !@HAVE_SLEEP@
+_GL_FUNCDECL_SYS (sleep, unsigned int, (unsigned int n));
+# endif
+_GL_CXXALIAS_SYS (sleep, unsigned int, (unsigned int n));
+# endif
+_GL_CXXALIASWARN (sleep);
+#elif defined GNULIB_POSIXCHECK
+# undef sleep
+# if HAVE_RAW_DECL_SLEEP
+_GL_WARN_ON_USE (sleep, "sleep is unportable - "
+ "use gnulib module sleep for portability");
+# endif
+#endif
+
+
+#if @GNULIB_SYMLINK@
+# if @REPLACE_SYMLINK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef symlink
+# define symlink rpl_symlink
+# endif
+_GL_FUNCDECL_RPL (symlink, int, (char const *contents, char const *file)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (symlink, int, (char const *contents, char const *file));
+# else
+# if !@HAVE_SYMLINK@
+_GL_FUNCDECL_SYS (symlink, int, (char const *contents, char const *file)
+ _GL_ARG_NONNULL ((1, 2)));
+# endif
+_GL_CXXALIAS_SYS (symlink, int, (char const *contents, char const *file));
+# endif
+_GL_CXXALIASWARN (symlink);
+#elif defined GNULIB_POSIXCHECK
+# undef symlink
+# if HAVE_RAW_DECL_SYMLINK
+_GL_WARN_ON_USE (symlink, "symlink is not portable - "
+ "use gnulib module symlink for portability");
+# endif
+#endif
+
+
+#if @GNULIB_SYMLINKAT@
+# if @REPLACE_SYMLINKAT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef symlinkat
+# define symlinkat rpl_symlinkat
+# endif
+_GL_FUNCDECL_RPL (symlinkat, int,
+ (char const *contents, int fd, char const *file)
+ _GL_ARG_NONNULL ((1, 3)));
+_GL_CXXALIAS_RPL (symlinkat, int,
+ (char const *contents, int fd, char const *file));
+# else
+# if !@HAVE_SYMLINKAT@
+_GL_FUNCDECL_SYS (symlinkat, int,
+ (char const *contents, int fd, char const *file)
+ _GL_ARG_NONNULL ((1, 3)));
+# endif
+_GL_CXXALIAS_SYS (symlinkat, int,
+ (char const *contents, int fd, char const *file));
+# endif
+_GL_CXXALIASWARN (symlinkat);
+#elif defined GNULIB_POSIXCHECK
+# undef symlinkat
+# if HAVE_RAW_DECL_SYMLINKAT
+_GL_WARN_ON_USE (symlinkat, "symlinkat is not portable - "
+ "use gnulib module symlinkat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_TRUNCATE@
+/* Change the size of the file designated by FILENAME to become equal to LENGTH.
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2008 specification
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/truncate.html>. */
+# if @REPLACE_TRUNCATE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef truncate
+# define truncate rpl_truncate
+# endif
+_GL_FUNCDECL_RPL (truncate, int, (const char *filename, off_t length)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (truncate, int, (const char *filename, off_t length));
+# else
+# if !@HAVE_DECL_TRUNCATE@
+_GL_FUNCDECL_SYS (truncate, int, (const char *filename, off_t length)
+ _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (truncate, int, (const char *filename, off_t length));
+# endif
+_GL_CXXALIASWARN (truncate);
+#elif defined GNULIB_POSIXCHECK
+# undef truncate
+# if HAVE_RAW_DECL_TRUNCATE
+_GL_WARN_ON_USE (truncate, "truncate is unportable - "
+ "use gnulib module truncate for portability");
+# endif
+#endif
+
+
+#if @GNULIB_TTYNAME_R@
+/* Store at most BUFLEN characters of the pathname of the terminal FD is
+ open on in BUF. Return 0 on success, otherwise an error number. */
+# if @REPLACE_TTYNAME_R@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef ttyname_r
+# define ttyname_r rpl_ttyname_r
+# endif
+_GL_FUNCDECL_RPL (ttyname_r, int,
+ (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (ttyname_r, int,
+ (int fd, char *buf, size_t buflen));
+# else
+# if !@HAVE_DECL_TTYNAME_R@
+_GL_FUNCDECL_SYS (ttyname_r, int,
+ (int fd, char *buf, size_t buflen) _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (ttyname_r, int,
+ (int fd, char *buf, size_t buflen));
+# endif
+_GL_CXXALIASWARN (ttyname_r);
+#elif defined GNULIB_POSIXCHECK
+# undef ttyname_r
+# if HAVE_RAW_DECL_TTYNAME_R
+_GL_WARN_ON_USE (ttyname_r, "ttyname_r is not portable - "
+ "use gnulib module ttyname_r for portability");
+# endif
+#endif
+
+
+#if @GNULIB_UNLINK@
+# if @REPLACE_UNLINK@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef unlink
+# define unlink rpl_unlink
+# endif
+_GL_FUNCDECL_RPL (unlink, int, (char const *file) _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (unlink, int, (char const *file));
+# else
+_GL_CXXALIAS_SYS (unlink, int, (char const *file));
+# endif
+_GL_CXXALIASWARN (unlink);
+#elif defined GNULIB_POSIXCHECK
+# undef unlink
+# if HAVE_RAW_DECL_UNLINK
+_GL_WARN_ON_USE (unlink, "unlink is not portable - "
+ "use gnulib module unlink for portability");
+# endif
+#endif
+
+
+#if @GNULIB_UNLINKAT@
+# if @REPLACE_UNLINKAT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef unlinkat
+# define unlinkat rpl_unlinkat
+# endif
+_GL_FUNCDECL_RPL (unlinkat, int, (int fd, char const *file, int flag)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (unlinkat, int, (int fd, char const *file, int flag));
+# else
+# if !@HAVE_UNLINKAT@
+_GL_FUNCDECL_SYS (unlinkat, int, (int fd, char const *file, int flag)
+ _GL_ARG_NONNULL ((2)));
+# endif
+_GL_CXXALIAS_SYS (unlinkat, int, (int fd, char const *file, int flag));
+# endif
+_GL_CXXALIASWARN (unlinkat);
+#elif defined GNULIB_POSIXCHECK
+# undef unlinkat
+# if HAVE_RAW_DECL_UNLINKAT
+_GL_WARN_ON_USE (unlinkat, "unlinkat is not portable - "
+ "use gnulib module openat for portability");
+# endif
+#endif
+
+
+#if @GNULIB_USLEEP@
+/* Pause the execution of the current thread for N microseconds.
+ Returns 0 on completion, or -1 on range error.
+ See the POSIX:2001 specification
+ <https://pubs.opengroup.org/onlinepubs/009695399/functions/usleep.html>. */
+# if @REPLACE_USLEEP@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef usleep
+# define usleep rpl_usleep
+# endif
+_GL_FUNCDECL_RPL (usleep, int, (useconds_t n));
+_GL_CXXALIAS_RPL (usleep, int, (useconds_t n));
+# else
+# if !@HAVE_USLEEP@
+_GL_FUNCDECL_SYS (usleep, int, (useconds_t n));
+# endif
+/* Need to cast, because on Haiku, the first parameter is
+ unsigned int n. */
+_GL_CXXALIAS_SYS_CAST (usleep, int, (useconds_t n));
+# endif
+_GL_CXXALIASWARN (usleep);
+#elif defined GNULIB_POSIXCHECK
+# undef usleep
+# if HAVE_RAW_DECL_USLEEP
+_GL_WARN_ON_USE (usleep, "usleep is unportable - "
+ "use gnulib module usleep for portability");
+# endif
+#endif
+
+
+#if @GNULIB_WRITE@
+/* Write up to COUNT bytes starting at BUF to file descriptor FD.
+ See the POSIX:2008 specification
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html>. */
+# if @REPLACE_WRITE@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef write
+# define write rpl_write
+# endif
+_GL_FUNCDECL_RPL (write, ssize_t, (int fd, const void *buf, size_t count)
+ _GL_ARG_NONNULL ((2)));
+_GL_CXXALIAS_RPL (write, ssize_t, (int fd, const void *buf, size_t count));
+# else
+/* Need to cast, because on mingw, the third parameter is
+ unsigned int count
+ and the return type is 'int'. */
+_GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count));
+# endif
+_GL_CXXALIASWARN (write);
+#endif
+
+_GL_INLINE_HEADER_END
+
+#endif /* _@GUARD_PREFIX@_UNISTD_H */
+#endif /* _GL_INCLUDING_UNISTD_H */
+#endif /* _@GUARD_PREFIX@_UNISTD_H */
diff --git a/lib/verify.h b/lib/verify.h
new file mode 100644
index 0000000..d9ab89a
--- /dev/null
+++ b/lib/verify.h
@@ -0,0 +1,301 @@
+/* Compile-time assert-like macros.
+
+ Copyright (C) 2005-2006, 2009-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* Written by Paul Eggert, Bruno Haible, and Jim Meyering. */
+
+#ifndef _GL_VERIFY_H
+#define _GL_VERIFY_H
+
+
+/* Define _GL_HAVE__STATIC_ASSERT to 1 if _Static_assert (R, DIAGNOSTIC)
+ works as per C11. This is supported by GCC 4.6.0 and later, in C
+ mode.
+
+ Define _GL_HAVE__STATIC_ASSERT1 to 1 if _Static_assert (R) works as
+ per C2X, and define _GL_HAVE_STATIC_ASSERT1 if static_assert (R)
+ works as per C++17. This is supported by GCC 9.1 and later.
+
+ Support compilers claiming conformance to the relevant standard,
+ and also support GCC when not pedantic. If we were willing to slow
+ 'configure' down we could also use it with other compilers, but
+ since this affects only the quality of diagnostics, why bother? */
+#ifndef __cplusplus
+# if (201112L <= __STDC_VERSION__ \
+ || (!defined __STRICT_ANSI__ && 4 < __GNUC__ + (6 <= __GNUC_MINOR__)))
+# define _GL_HAVE__STATIC_ASSERT 1
+# endif
+# if (202000L <= __STDC_VERSION__ \
+ || (!defined __STRICT_ANSI__ && 9 <= __GNUC__))
+# define _GL_HAVE__STATIC_ASSERT1 1
+# endif
+#else
+# if 201703L <= __cplusplus || 9 <= __GNUC__
+# define _GL_HAVE_STATIC_ASSERT1 1
+# endif
+#endif
+
+/* FreeBSD 9.1 <sys/cdefs.h>, included by <stddef.h> and lots of other
+ system headers, defines a conflicting _Static_assert that is no
+ better than ours; override it. */
+#ifndef _GL_HAVE__STATIC_ASSERT
+# include <stddef.h>
+# undef _Static_assert
+#endif
+
+/* Each of these macros verifies that its argument R is nonzero. To
+ be portable, R should be an integer constant expression. Unlike
+ assert (R), there is no run-time overhead.
+
+ If _Static_assert works, verify (R) uses it directly. Similarly,
+ _GL_VERIFY_TRUE works by packaging a _Static_assert inside a struct
+ that is an operand of sizeof.
+
+ The code below uses several ideas for C++ compilers, and for C
+ compilers that do not support _Static_assert:
+
+ * The first step is ((R) ? 1 : -1). Given an expression R, of
+ integral or boolean or floating-point type, this yields an
+ expression of integral type, whose value is later verified to be
+ constant and nonnegative.
+
+ * Next this expression W is wrapped in a type
+ struct _gl_verify_type {
+ unsigned int _gl_verify_error_if_negative: W;
+ }.
+ If W is negative, this yields a compile-time error. No compiler can
+ deal with a bit-field of negative size.
+
+ One might think that an array size check would have the same
+ effect, that is, that the type struct { unsigned int dummy[W]; }
+ would work as well. However, inside a function, some compilers
+ (such as C++ compilers and GNU C) allow local parameters and
+ variables inside array size expressions. With these compilers,
+ an array size check would not properly diagnose this misuse of
+ the verify macro:
+
+ void function (int n) { verify (n < 0); }
+
+ * For the verify macro, the struct _gl_verify_type will need to
+ somehow be embedded into a declaration. To be portable, this
+ declaration must declare an object, a constant, a function, or a
+ typedef name. If the declared entity uses the type directly,
+ such as in
+
+ struct dummy {...};
+ typedef struct {...} dummy;
+ extern struct {...} *dummy;
+ extern void dummy (struct {...} *);
+ extern struct {...} *dummy (void);
+
+ two uses of the verify macro would yield colliding declarations
+ if the entity names are not disambiguated. A workaround is to
+ attach the current line number to the entity name:
+
+ #define _GL_CONCAT0(x, y) x##y
+ #define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y)
+ extern struct {...} * _GL_CONCAT (dummy, __LINE__);
+
+ But this has the problem that two invocations of verify from
+ within the same macro would collide, since the __LINE__ value
+ would be the same for both invocations. (The GCC __COUNTER__
+ macro solves this problem, but is not portable.)
+
+ A solution is to use the sizeof operator. It yields a number,
+ getting rid of the identity of the type. Declarations like
+
+ extern int dummy [sizeof (struct {...})];
+ extern void dummy (int [sizeof (struct {...})]);
+ extern int (*dummy (void)) [sizeof (struct {...})];
+
+ can be repeated.
+
+ * Should the implementation use a named struct or an unnamed struct?
+ Which of the following alternatives can be used?
+
+ extern int dummy [sizeof (struct {...})];
+ extern int dummy [sizeof (struct _gl_verify_type {...})];
+ extern void dummy (int [sizeof (struct {...})]);
+ extern void dummy (int [sizeof (struct _gl_verify_type {...})]);
+ extern int (*dummy (void)) [sizeof (struct {...})];
+ extern int (*dummy (void)) [sizeof (struct _gl_verify_type {...})];
+
+ In the second and sixth case, the struct type is exported to the
+ outer scope; two such declarations therefore collide. GCC warns
+ about the first, third, and fourth cases. So the only remaining
+ possibility is the fifth case:
+
+ extern int (*dummy (void)) [sizeof (struct {...})];
+
+ * GCC warns about duplicate declarations of the dummy function if
+ -Wredundant-decls is used. GCC 4.3 and later have a builtin
+ __COUNTER__ macro that can let us generate unique identifiers for
+ each dummy function, to suppress this warning.
+
+ * This implementation exploits the fact that older versions of GCC,
+ which do not support _Static_assert, also do not warn about the
+ last declaration mentioned above.
+
+ * GCC warns if -Wnested-externs is enabled and 'verify' is used
+ within a function body; but inside a function, you can always
+ arrange to use verify_expr instead.
+
+ * In C++, any struct definition inside sizeof is invalid.
+ Use a template type to work around the problem. */
+
+/* Concatenate two preprocessor tokens. */
+#define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y)
+#define _GL_CONCAT0(x, y) x##y
+
+/* _GL_COUNTER is an integer, preferably one that changes each time we
+ use it. Use __COUNTER__ if it works, falling back on __LINE__
+ otherwise. __LINE__ isn't perfect, but it's better than a
+ constant. */
+#if defined __COUNTER__ && __COUNTER__ != __COUNTER__
+# define _GL_COUNTER __COUNTER__
+#else
+# define _GL_COUNTER __LINE__
+#endif
+
+/* Generate a symbol with the given prefix, making it unique if
+ possible. */
+#define _GL_GENSYM(prefix) _GL_CONCAT (prefix, _GL_COUNTER)
+
+/* Verify requirement R at compile-time, as an integer constant expression
+ that returns 1. If R is false, fail at compile-time, preferably
+ with a diagnostic that includes the string-literal DIAGNOSTIC. */
+
+#define _GL_VERIFY_TRUE(R, DIAGNOSTIC) \
+ (!!sizeof (_GL_VERIFY_TYPE (R, DIAGNOSTIC)))
+
+#ifdef __cplusplus
+# if !GNULIB_defined_struct__gl_verify_type
+template <int w>
+ struct _gl_verify_type {
+ unsigned int _gl_verify_error_if_negative: w;
+ };
+# define GNULIB_defined_struct__gl_verify_type 1
+# endif
+# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \
+ _gl_verify_type<(R) ? 1 : -1>
+#elif defined _GL_HAVE__STATIC_ASSERT
+# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \
+ struct { \
+ _Static_assert (R, DIAGNOSTIC); \
+ int _gl_dummy; \
+ }
+#else
+# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \
+ struct { unsigned int _gl_verify_error_if_negative: (R) ? 1 : -1; }
+#endif
+
+/* Verify requirement R at compile-time, as a declaration without a
+ trailing ';'. If R is false, fail at compile-time.
+
+ This macro requires three or more arguments but uses at most the first
+ two, so that the _Static_assert macro optionally defined below supports
+ both the C11 two-argument syntax and the C2X one-argument syntax.
+
+ Unfortunately, unlike C11, this implementation must appear as an
+ ordinary declaration, and cannot appear inside struct { ... }. */
+
+#if defined _GL_HAVE__STATIC_ASSERT
+# define _GL_VERIFY(R, DIAGNOSTIC, ...) _Static_assert (R, DIAGNOSTIC)
+#else
+# define _GL_VERIFY(R, DIAGNOSTIC, ...) \
+ extern int (*_GL_GENSYM (_gl_verify_function) (void)) \
+ [_GL_VERIFY_TRUE (R, DIAGNOSTIC)]
+#endif
+
+/* _GL_STATIC_ASSERT_H is defined if this code is copied into assert.h. */
+#ifdef _GL_STATIC_ASSERT_H
+# if !defined _GL_HAVE__STATIC_ASSERT1 && !defined _Static_assert
+# define _Static_assert(...) \
+ _GL_VERIFY (__VA_ARGS__, "static assertion failed", -)
+# endif
+# if !defined _GL_HAVE_STATIC_ASSERT1 && !defined static_assert
+# define static_assert _Static_assert /* C11 requires this #define. */
+# endif
+#endif
+
+/* @assert.h omit start@ */
+
+#if 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__))
+# define _GL_HAS_BUILTIN_TRAP 1
+#elif defined __has_builtin
+# define _GL_HAS_BUILTIN_TRAP __has_builtin (__builtin_trap)
+#else
+# define _GL_HAS_BUILTIN_TRAP 0
+#endif
+
+#if 4 < __GNUC__ + (5 <= __GNUC_MINOR__)
+# define _GL_HAS_BUILTIN_UNREACHABLE 1
+#elif defined __has_builtin
+# define _GL_HAS_BUILTIN_UNREACHABLE __has_builtin (__builtin_unreachable)
+#else
+# define _GL_HAS_BUILTIN_UNREACHABLE 0
+#endif
+
+/* Each of these macros verifies that its argument R is nonzero. To
+ be portable, R should be an integer constant expression. Unlike
+ assert (R), there is no run-time overhead.
+
+ There are two macros, since no single macro can be used in all
+ contexts in C. verify_expr (R, E) is for scalar contexts, including
+ integer constant expression contexts. verify (R) is for declaration
+ contexts, e.g., the top level. */
+
+/* Verify requirement R at compile-time. Return the value of the
+ expression E. */
+
+#define verify_expr(R, E) \
+ (_GL_VERIFY_TRUE (R, "verify_expr (" #R ", " #E ")") ? (E) : (E))
+
+/* Verify requirement R at compile-time, as a declaration without a
+ trailing ';'. verify (R) acts like static_assert (R) except that
+ it is portable to C11/C++14 and earlier, it can issue better
+ diagnostics, and its name is shorter and may be more convenient. */
+
+#ifdef __PGI
+/* PGI barfs if R is long. */
+# define verify(R) _GL_VERIFY (R, "verify (...)", -)
+#else
+# define verify(R) _GL_VERIFY (R, "verify (" #R ")", -)
+#endif
+
+/* Assume that R always holds. Behavior is undefined if R is false,
+ fails to evaluate, or has side effects. Although assuming R can
+ help a compiler generate better code or diagnostics, performance
+ can suffer if R uses hard-to-optimize features such as function
+ calls not inlined by the compiler. */
+
+#if _GL_HAS_BUILTIN_UNREACHABLE
+# define assume(R) ((R) ? (void) 0 : __builtin_unreachable ())
+#elif 1200 <= _MSC_VER
+# define assume(R) __assume (R)
+#elif (defined GCC_LINT || defined lint) && _GL_HAS_BUILTIN_TRAP
+ /* Doing it this way helps various packages when configured with
+ --enable-gcc-warnings, which compiles with -Dlint. It's nicer
+ when 'assume' silences warnings even with older GCCs. */
+# define assume(R) ((R) ? (void) 0 : __builtin_trap ())
+#else
+ /* Some tools grok NOTREACHED, e.g., Oracle Studio 12.6. */
+# define assume(R) ((R) ? (void) 0 : /*NOTREACHED*/ (void) 0)
+#endif
+
+/* @assert.h omit end@ */
+
+#endif
diff --git a/lib/warn-on-use.h b/lib/warn-on-use.h
new file mode 100644
index 0000000..1be2cbb
--- /dev/null
+++ b/lib/warn-on-use.h
@@ -0,0 +1,131 @@
+/* A C macro for emitting warnings if a function is used.
+ Copyright (C) 2010-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* _GL_WARN_ON_USE (function, "literal string") issues a declaration
+ for FUNCTION which will then trigger a compiler warning containing
+ the text of "literal string" anywhere that function is called, if
+ supported by the compiler. If the compiler does not support this
+ feature, the macro expands to an unused extern declaration.
+
+ _GL_WARN_ON_USE_ATTRIBUTE ("literal string") expands to the
+ attribute used in _GL_WARN_ON_USE. If the compiler does not support
+ this feature, it expands to empty.
+
+ These macros are useful for marking a function as a potential
+ portability trap, with the intent that "literal string" include
+ instructions on the replacement function that should be used
+ instead.
+ _GL_WARN_ON_USE is for functions with 'extern' linkage.
+ _GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline'
+ linkage.
+
+ However, one of the reasons that a function is a portability trap is
+ if it has the wrong signature. Declaring FUNCTION with a different
+ signature in C is a compilation error, so this macro must use the
+ same type as any existing declaration so that programs that avoid
+ the problematic FUNCTION do not fail to compile merely because they
+ included a header that poisoned the function. But this implies that
+ _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already
+ have a declaration. Use of this macro implies that there must not
+ be any other macro hiding the declaration of FUNCTION; but
+ undefining FUNCTION first is part of the poisoning process anyway
+ (although for symbols that are provided only via a macro, the result
+ is a compilation error rather than a warning containing
+ "literal string"). Also note that in C++, it is only safe to use if
+ FUNCTION has no overloads.
+
+ For an example, it is possible to poison 'getline' by:
+ - adding a call to gl_WARN_ON_USE_PREPARE([[#include <stdio.h>]],
+ [getline]) in configure.ac, which potentially defines
+ HAVE_RAW_DECL_GETLINE
+ - adding this code to a header that wraps the system <stdio.h>:
+ #undef getline
+ #if HAVE_RAW_DECL_GETLINE
+ _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but"
+ "not universally present; use the gnulib module getline");
+ #endif
+
+ It is not possible to directly poison global variables. But it is
+ possible to write a wrapper accessor function, and poison that
+ (less common usage, like &environ, will cause a compilation error
+ rather than issue the nice warning, but the end result of informing
+ the developer about their portability problem is still achieved):
+ #if HAVE_RAW_DECL_ENVIRON
+ static char ***
+ rpl_environ (void) { return &environ; }
+ _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared");
+ # undef environ
+ # define environ (*rpl_environ ())
+ #endif
+ or better (avoiding contradictory use of 'static' and 'extern'):
+ #if HAVE_RAW_DECL_ENVIRON
+ static char ***
+ _GL_WARN_ON_USE_ATTRIBUTE ("environ is not always properly declared")
+ rpl_environ (void) { return &environ; }
+ # undef environ
+ # define environ (*rpl_environ ())
+ #endif
+ */
+#ifndef _GL_WARN_ON_USE
+
+# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
+/* A compiler attribute is available in gcc versions 4.3.0 and later. */
+# define _GL_WARN_ON_USE(function, message) \
+extern __typeof__ (function) function __attribute__ ((__warning__ (message)))
+# define _GL_WARN_ON_USE_ATTRIBUTE(message) \
+ __attribute__ ((__warning__ (message)))
+# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+/* Verify the existence of the function. */
+# define _GL_WARN_ON_USE(function, message) \
+extern __typeof__ (function) function
+# define _GL_WARN_ON_USE_ATTRIBUTE(message)
+# else /* Unsupported. */
+# define _GL_WARN_ON_USE(function, message) \
+_GL_WARN_EXTERN_C int _gl_warn_on_use
+# define _GL_WARN_ON_USE_ATTRIBUTE(message)
+# endif
+#endif
+
+/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
+ is like _GL_WARN_ON_USE (function, "string"), except that the function is
+ declared with the given prototype, consisting of return type, parameters,
+ and attributes.
+ This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
+ not work in this case. */
+#ifndef _GL_WARN_ON_USE_CXX
+# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
+# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
+extern rettype function parameters_and_attributes \
+ __attribute__ ((__warning__ (msg)))
+# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
+/* Verify the existence of the function. */
+# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
+extern rettype function parameters_and_attributes
+# else /* Unsupported. */
+# define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
+_GL_WARN_EXTERN_C int _gl_warn_on_use
+# endif
+#endif
+
+/* _GL_WARN_EXTERN_C declaration;
+ performs the declaration with C linkage. */
+#ifndef _GL_WARN_EXTERN_C
+# if defined __cplusplus
+# define _GL_WARN_EXTERN_C extern "C"
+# else
+# define _GL_WARN_EXTERN_C extern
+# endif
+#endif
diff --git a/lib/xalloc-die.c b/lib/xalloc-die.c
new file mode 100644
index 0000000..68559de
--- /dev/null
+++ b/lib/xalloc-die.c
@@ -0,0 +1,41 @@
+/* Report a memory allocation failure and exit.
+
+ Copyright (C) 1997-2000, 2002-2004, 2006, 2009-2020 Free Software
+ Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include "xalloc.h"
+
+#include <stdlib.h>
+
+#include "error.h"
+#include "exitfail.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+void
+xalloc_die (void)
+{
+ error (exit_failure, 0, "%s", _("memory exhausted"));
+
+ /* _Noreturn cannot be given to error, since it may return if
+ its first argument is 0. To help compilers understand the
+ xalloc_die does not return, call abort. Also, the abort is a
+ safety feature if exit_failure is 0 (which shouldn't happen). */
+ abort ();
+}
diff --git a/lib/xalloc-oversized.h b/lib/xalloc-oversized.h
new file mode 100644
index 0000000..13ee230
--- /dev/null
+++ b/lib/xalloc-oversized.h
@@ -0,0 +1,60 @@
+/* xalloc-oversized.h -- memory allocation size checking
+
+ Copyright (C) 1990-2000, 2003-2004, 2006-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef XALLOC_OVERSIZED_H_
+#define XALLOC_OVERSIZED_H_
+
+#include <stddef.h>
+#include <stdint.h>
+
+/* True if N * S would overflow in a size_t calculation,
+ or would generate a value larger than PTRDIFF_MAX.
+ This expands to a constant expression if N and S are both constants.
+ By gnulib convention, SIZE_MAX represents overflow in size
+ calculations, so the conservative size_t-based dividend to use here
+ is SIZE_MAX - 1. */
+#define __xalloc_oversized(n, s) \
+ ((size_t) (PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : SIZE_MAX - 1) / (s) < (n))
+
+#if PTRDIFF_MAX < SIZE_MAX
+typedef ptrdiff_t __xalloc_count_type;
+#else
+typedef size_t __xalloc_count_type;
+#endif
+
+/* Return 1 if an array of N objects, each of size S, cannot exist
+ reliably due to size or ptrdiff_t arithmetic overflow. S must be
+ positive and N must be nonnegative. This is a macro, not a
+ function, so that it works correctly even when SIZE_MAX < N. */
+
+#if 7 <= __GNUC__
+# define xalloc_oversized(n, s) \
+ __builtin_mul_overflow_p (n, s, (__xalloc_count_type) 1)
+#elif 5 <= __GNUC__ && !defined __ICC && !__STRICT_ANSI__
+# define xalloc_oversized(n, s) \
+ (__builtin_constant_p (n) && __builtin_constant_p (s) \
+ ? __xalloc_oversized (n, s) \
+ : ({ __xalloc_count_type __xalloc_count; \
+ __builtin_mul_overflow (n, s, &__xalloc_count); }))
+
+/* Other compilers use integer division; this may be slower but is
+ more portable. */
+#else
+# define xalloc_oversized(n, s) __xalloc_oversized (n, s)
+#endif
+
+#endif /* !XALLOC_OVERSIZED_H_ */
diff --git a/lib/xalloc.h b/lib/xalloc.h
new file mode 100644
index 0000000..9563b0b
--- /dev/null
+++ b/lib/xalloc.h
@@ -0,0 +1,262 @@
+/* xalloc.h -- malloc with out-of-memory checking
+
+ Copyright (C) 1990-2000, 2003-2004, 2006-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef XALLOC_H_
+#define XALLOC_H_
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include "xalloc-oversized.h"
+
+#ifndef _GL_INLINE_HEADER_BEGIN
+ #error "Please include config.h first."
+#endif
+_GL_INLINE_HEADER_BEGIN
+#ifndef XALLOC_INLINE
+# define XALLOC_INLINE _GL_INLINE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#if ! defined __clang__ && \
+ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args))
+#else
+# define _GL_ATTRIBUTE_ALLOC_SIZE(args)
+#endif
+
+/* This function is always triggered when memory is exhausted.
+ It must be defined by the application, either explicitly
+ or by using gnulib's xalloc-die module. This is the
+ function to call when one wants the program to die because of a
+ memory allocation failure. */
+extern _Noreturn void xalloc_die (void);
+
+void *xmalloc (size_t s)
+ _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
+void *xzalloc (size_t s)
+ _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
+void *xcalloc (size_t n, size_t s)
+ _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2));
+void *xrealloc (void *p, size_t s)
+ _GL_ATTRIBUTE_ALLOC_SIZE ((2));
+void *x2realloc (void *p, size_t *pn);
+void *xmemdup (void const *p, size_t s)
+ _GL_ATTRIBUTE_ALLOC_SIZE ((2));
+char *xstrdup (char const *str)
+ _GL_ATTRIBUTE_MALLOC;
+
+/* In the following macros, T must be an elementary or structure/union or
+ typedef'ed type, or a pointer to such a type. To apply one of the
+ following macros to a function pointer or array type, you need to typedef
+ it first and use the typedef name. */
+
+/* Allocate an object of type T dynamically, with error checking. */
+/* extern t *XMALLOC (typename t); */
+#define XMALLOC(t) ((t *) xmalloc (sizeof (t)))
+
+/* Allocate memory for N elements of type T, with error checking. */
+/* extern t *XNMALLOC (size_t n, typename t); */
+#define XNMALLOC(n, t) \
+ ((t *) (sizeof (t) == 1 ? xmalloc (n) : xnmalloc (n, sizeof (t))))
+
+/* Allocate an object of type T dynamically, with error checking,
+ and zero it. */
+/* extern t *XZALLOC (typename t); */
+#define XZALLOC(t) ((t *) xzalloc (sizeof (t)))
+
+/* Allocate memory for N elements of type T, with error checking,
+ and zero it. */
+/* extern t *XCALLOC (size_t n, typename t); */
+#define XCALLOC(n, t) \
+ ((t *) (sizeof (t) == 1 ? xzalloc (n) : xcalloc (n, sizeof (t))))
+
+
+/* Allocate an array of N objects, each with S bytes of memory,
+ dynamically, with error checking. S must be nonzero. */
+
+XALLOC_INLINE void *xnmalloc (size_t n, size_t s)
+ _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2));
+XALLOC_INLINE void *
+xnmalloc (size_t n, size_t s)
+{
+ if (xalloc_oversized (n, s))
+ xalloc_die ();
+ return xmalloc (n * s);
+}
+
+/* Change the size of an allocated block of memory P to an array of N
+ objects each of S bytes, with error checking. S must be nonzero. */
+
+XALLOC_INLINE void *xnrealloc (void *p, size_t n, size_t s)
+ _GL_ATTRIBUTE_ALLOC_SIZE ((2, 3));
+XALLOC_INLINE void *
+xnrealloc (void *p, size_t n, size_t s)
+{
+ if (xalloc_oversized (n, s))
+ xalloc_die ();
+ return xrealloc (p, n * s);
+}
+
+/* If P is null, allocate a block of at least *PN such objects;
+ otherwise, reallocate P so that it contains more than *PN objects
+ each of S bytes. S must be nonzero. Set *PN to the new number of
+ objects, and return the pointer to the new block. *PN is never set
+ to zero, and the returned pointer is never null.
+
+ Repeated reallocations are guaranteed to make progress, either by
+ allocating an initial block with a nonzero size, or by allocating a
+ larger block.
+
+ In the following implementation, nonzero sizes are increased by a
+ factor of approximately 1.5 so that repeated reallocations have
+ O(N) overall cost rather than O(N**2) cost, but the
+ specification for this function does not guarantee that rate.
+
+ Here is an example of use:
+
+ int *p = NULL;
+ size_t used = 0;
+ size_t allocated = 0;
+
+ void
+ append_int (int value)
+ {
+ if (used == allocated)
+ p = x2nrealloc (p, &allocated, sizeof *p);
+ p[used++] = value;
+ }
+
+ This causes x2nrealloc to allocate a block of some nonzero size the
+ first time it is called.
+
+ To have finer-grained control over the initial size, set *PN to a
+ nonzero value before calling this function with P == NULL. For
+ example:
+
+ int *p = NULL;
+ size_t used = 0;
+ size_t allocated = 0;
+ size_t allocated1 = 1000;
+
+ void
+ append_int (int value)
+ {
+ if (used == allocated)
+ {
+ p = x2nrealloc (p, &allocated1, sizeof *p);
+ allocated = allocated1;
+ }
+ p[used++] = value;
+ }
+
+ */
+
+XALLOC_INLINE void *
+x2nrealloc (void *p, size_t *pn, size_t s)
+{
+ size_t n = *pn;
+
+ if (! p)
+ {
+ if (! n)
+ {
+ /* The approximate size to use for initial small allocation
+ requests, when the invoking code specifies an old size of
+ zero. This is the largest "small" request for the GNU C
+ library malloc. */
+ enum { DEFAULT_MXFAST = 64 * sizeof (size_t) / 4 };
+
+ n = DEFAULT_MXFAST / s;
+ n += !n;
+ }
+ if (xalloc_oversized (n, s))
+ xalloc_die ();
+ }
+ else
+ {
+ /* Set N = floor (1.5 * N) + 1 so that progress is made even if N == 0.
+ Check for overflow, so that N * S stays in both ptrdiff_t and
+ size_t range. The check may be slightly conservative, but an
+ exact check isn't worth the trouble. */
+ if ((PTRDIFF_MAX < SIZE_MAX ? PTRDIFF_MAX : SIZE_MAX) / 3 * 2 / s
+ <= n)
+ xalloc_die ();
+ n += n / 2 + 1;
+ }
+
+ *pn = n;
+ return xrealloc (p, n * s);
+}
+
+/* Return a pointer to a new buffer of N bytes. This is like xmalloc,
+ except it returns char *. */
+
+XALLOC_INLINE char *xcharalloc (size_t n)
+ _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
+XALLOC_INLINE char *
+xcharalloc (size_t n)
+{
+ return XNMALLOC (n, char);
+}
+
+#ifdef __cplusplus
+}
+
+/* C++ does not allow conversions from void * to other pointer types
+ without a cast. Use templates to work around the problem when
+ possible. */
+
+template <typename T> inline T *
+xrealloc (T *p, size_t s)
+{
+ return (T *) xrealloc ((void *) p, s);
+}
+
+template <typename T> inline T *
+xnrealloc (T *p, size_t n, size_t s)
+{
+ return (T *) xnrealloc ((void *) p, n, s);
+}
+
+template <typename T> inline T *
+x2realloc (T *p, size_t *pn)
+{
+ return (T *) x2realloc ((void *) p, pn);
+}
+
+template <typename T> inline T *
+x2nrealloc (T *p, size_t *pn, size_t s)
+{
+ return (T *) x2nrealloc ((void *) p, pn, s);
+}
+
+template <typename T> inline T *
+xmemdup (T const *p, size_t s)
+{
+ return (T *) xmemdup ((void const *) p, s);
+}
+
+#endif
+
+_GL_INLINE_HEADER_END
+
+#endif /* !XALLOC_H_ */
diff --git a/lib/xconcat-filename.c b/lib/xconcat-filename.c
new file mode 100644
index 0000000..e04d433
--- /dev/null
+++ b/lib/xconcat-filename.c
@@ -0,0 +1,41 @@
+/* Construct a full filename from a directory and a relative filename.
+ Copyright (C) 2001-2004, 2006-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by the
+ Free Software Foundation; either version 3 of the License, or any
+ later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <haible@clisp.cons.org>. */
+
+#include <config.h>
+
+/* Specification. */
+#include "concat-filename.h"
+
+#include "xalloc.h"
+
+/* Concatenate a directory filename, a relative filename and an optional
+ suffix. The directory may end with the directory separator. The second
+ argument may not start with the directory separator (it is relative).
+ Return a freshly allocated filename. */
+char *
+xconcatenated_filename (const char *directory, const char *filename,
+ const char *suffix)
+{
+ char *result;
+
+ result = concatenated_filename (directory, filename, suffix);
+ if (result == NULL)
+ xalloc_die ();
+
+ return result;
+}
diff --git a/lib/xmalloc.c b/lib/xmalloc.c
new file mode 100644
index 0000000..4868736
--- /dev/null
+++ b/lib/xmalloc.c
@@ -0,0 +1,122 @@
+/* xmalloc.c -- malloc with out of memory checking
+
+ Copyright (C) 1990-2000, 2002-2006, 2008-2020 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#define XALLOC_INLINE _GL_EXTERN_INLINE
+
+#include "xalloc.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+/* 1 if calloc is known to be compatible with GNU calloc. This
+ matters if we are not also using the calloc module, which defines
+ HAVE_CALLOC_GNU and supports the GNU API even on non-GNU platforms. */
+#if defined HAVE_CALLOC_GNU || (defined __GLIBC__ && !defined __UCLIBC__)
+enum { HAVE_GNU_CALLOC = 1 };
+#else
+enum { HAVE_GNU_CALLOC = 0 };
+#endif
+
+/* Allocate N bytes of memory dynamically, with error checking. */
+
+void *
+xmalloc (size_t n)
+{
+ void *p = malloc (n);
+ if (!p && n != 0)
+ xalloc_die ();
+ return p;
+}
+
+/* Change the size of an allocated block of memory P to N bytes,
+ with error checking. */
+
+void *
+xrealloc (void *p, size_t n)
+{
+ if (!n && p)
+ {
+ /* The GNU and C99 realloc behaviors disagree here. Act like
+ GNU, even if the underlying realloc is C99. */
+ free (p);
+ return NULL;
+ }
+
+ p = realloc (p, n);
+ if (!p && n)
+ xalloc_die ();
+ return p;
+}
+
+/* If P is null, allocate a block of at least *PN bytes; otherwise,
+ reallocate P so that it contains more than *PN bytes. *PN must be
+ nonzero unless P is null. Set *PN to the new block's size, and
+ return the pointer to the new block. *PN is never set to zero, and
+ the returned pointer is never null. */
+
+void *
+x2realloc (void *p, size_t *pn)
+{
+ return x2nrealloc (p, pn, 1);
+}
+
+/* Allocate N bytes of zeroed memory dynamically, with error checking.
+ There's no need for xnzalloc (N, S), since it would be equivalent
+ to xcalloc (N, S). */
+
+void *
+xzalloc (size_t n)
+{
+ return xcalloc (n, 1);
+}
+
+/* Allocate zeroed memory for N elements of S bytes, with error
+ checking. S must be nonzero. */
+
+void *
+xcalloc (size_t n, size_t s)
+{
+ void *p;
+ /* Test for overflow, since objects with size greater than
+ PTRDIFF_MAX cause pointer subtraction to go awry. Omit size-zero
+ tests if HAVE_GNU_CALLOC, since GNU calloc never returns NULL if
+ successful. */
+ if (xalloc_oversized (n, s)
+ || (! (p = calloc (n, s)) && (HAVE_GNU_CALLOC || n != 0)))
+ xalloc_die ();
+ return p;
+}
+
+/* Clone an object P of size S, with error checking. There's no need
+ for xnmemdup (P, N, S), since xmemdup (P, N * S) works without any
+ need for an arithmetic overflow check. */
+
+void *
+xmemdup (void const *p, size_t s)
+{
+ return memcpy (xmalloc (s), p, s);
+}
+
+/* Clone STRING. */
+
+char *
+xstrdup (char const *string)
+{
+ return xmemdup (string, strlen (string) + 1);
+}
diff --git a/m4/00gnulib.m4 b/m4/00gnulib.m4
new file mode 100644
index 0000000..1a1a1d7
--- /dev/null
+++ b/m4/00gnulib.m4
@@ -0,0 +1,46 @@
+# 00gnulib.m4 serial 3
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl This file must be named something that sorts before all other
+dnl gnulib-provided .m4 files. It is needed until such time as we can
+dnl assume Autoconf 2.64, with its improved AC_DEFUN_ONCE and
+dnl m4_divert semantics.
+
+# Until autoconf 2.63, handling of the diversion stack required m4_init
+# to be called first; but this does not happen with aclocal. Wrapping
+# the entire execution in another layer of the diversion stack fixes this.
+# Worse, prior to autoconf 2.62, m4_wrap depended on the underlying m4
+# for whether it was FIFO or LIFO; in order to properly balance with
+# m4_init, we need to undo our push just before anything wrapped within
+# the m4_init body. The way to ensure this is to wrap both sides of
+# m4_init with a one-shot macro that does the pop at the right time.
+m4_ifndef([_m4_divert_diversion],
+[m4_divert_push([KILL])
+m4_define([gl_divert_fixup], [m4_divert_pop()m4_define([$0])])
+m4_define([m4_init],
+ [gl_divert_fixup()]m4_defn([m4_init])[gl_divert_fixup()])])
+
+
+# AC_DEFUN_ONCE([NAME], VALUE)
+# ----------------------------
+# Define NAME to expand to VALUE on the first use (whether by direct
+# expansion, or by AC_REQUIRE), and to nothing on all subsequent uses.
+# Avoid bugs in AC_REQUIRE in Autoconf 2.63 and earlier. This
+# definition is slower than the version in Autoconf 2.64, because it
+# can only use interfaces that existed since 2.59; but it achieves the
+# same effect. Quoting is necessary to avoid confusing Automake.
+m4_version_prereq([2.63.263], [],
+[m4_define([AC][_DEFUN_ONCE],
+ [AC][_DEFUN([$1],
+ [AC_REQUIRE([_gl_DEFUN_ONCE([$1])],
+ [m4_indir([_gl_DEFUN_ONCE([$1])])])])]dnl
+[AC][_DEFUN([_gl_DEFUN_ONCE([$1])], [$2])])])
+
+# gl_00GNULIB
+# -----------
+# Witness macro that this file has been included. Needed to force
+# Automake to include this file prior to all other gnulib .m4 files.
+AC_DEFUN([gl_00GNULIB])
diff --git a/m4/absolute-header.m4 b/m4/absolute-header.m4
new file mode 100644
index 0000000..39726ba
--- /dev/null
+++ b/m4/absolute-header.m4
@@ -0,0 +1,102 @@
+# absolute-header.m4 serial 16
+dnl Copyright (C) 2006-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Derek Price.
+
+# gl_ABSOLUTE_HEADER(HEADER1 HEADER2 ...)
+# ---------------------------------------
+# Find the absolute name of a header file, testing first if the header exists.
+# If the header were sys/inttypes.h, this macro would define
+# ABSOLUTE_SYS_INTTYPES_H to the '""' quoted absolute name of sys/inttypes.h
+# in config.h
+# (e.g. '#define ABSOLUTE_SYS_INTTYPES_H "///usr/include/sys/inttypes.h"').
+# The three "///" are to pacify Sun C 5.8, which otherwise would say
+# "warning: #include of /usr/include/... may be non-portable".
+# Use '""', not '<>', so that the /// cannot be confused with a C99 comment.
+# Note: This macro assumes that the header file is not empty after
+# preprocessing, i.e. it does not only define preprocessor macros but also
+# provides some type/enum definitions or function/variable declarations.
+AC_DEFUN([gl_ABSOLUTE_HEADER],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_LANG_PREPROC_REQUIRE()dnl
+dnl FIXME: gl_absolute_header and ac_header_exists must be used unquoted
+dnl until we can assume autoconf 2.64 or newer.
+m4_foreach_w([gl_HEADER_NAME], [$1],
+ [AS_VAR_PUSHDEF([gl_absolute_header],
+ [gl_cv_absolute_]m4_defn([gl_HEADER_NAME]))dnl
+ AC_CACHE_CHECK([absolute name of <]m4_defn([gl_HEADER_NAME])[>],
+ m4_defn([gl_absolute_header]),
+ [AS_VAR_PUSHDEF([ac_header_exists],
+ [ac_cv_header_]m4_defn([gl_HEADER_NAME]))dnl
+ AC_CHECK_HEADERS_ONCE(m4_defn([gl_HEADER_NAME]))dnl
+ if test AS_VAR_GET(ac_header_exists) = yes; then
+ gl_ABSOLUTE_HEADER_ONE(m4_defn([gl_HEADER_NAME]))
+ fi
+ AS_VAR_POPDEF([ac_header_exists])dnl
+ ])dnl
+ AC_DEFINE_UNQUOTED(AS_TR_CPP([ABSOLUTE_]m4_defn([gl_HEADER_NAME])),
+ ["AS_VAR_GET(gl_absolute_header)"],
+ [Define this to an absolute name of <]m4_defn([gl_HEADER_NAME])[>.])
+ AS_VAR_POPDEF([gl_absolute_header])dnl
+])dnl
+])# gl_ABSOLUTE_HEADER
+
+# gl_ABSOLUTE_HEADER_ONE(HEADER)
+# ------------------------------
+# Like gl_ABSOLUTE_HEADER, except that:
+# - it assumes that the header exists,
+# - it uses the current CPPFLAGS,
+# - it does not cache the result,
+# - it is silent.
+AC_DEFUN([gl_ABSOLUTE_HEADER_ONE],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_LANG_CONFTEST([AC_LANG_SOURCE([[#include <]]m4_dquote([$1])[[>]])])
+ dnl AIX "xlc -E" and "cc -E" omit #line directives for header files
+ dnl that contain only a #include of other header files and no
+ dnl non-comment tokens of their own. This leads to a failure to
+ dnl detect the absolute name of <dirent.h>, <signal.h>, <poll.h>
+ dnl and others. The workaround is to force preservation of comments
+ dnl through option -C. This ensures all necessary #line directives
+ dnl are present. GCC supports option -C as well.
+ case "$host_os" in
+ aix*) gl_absname_cpp="$ac_cpp -C" ;;
+ *) gl_absname_cpp="$ac_cpp" ;;
+ esac
+changequote(,)
+ case "$host_os" in
+ mingw*)
+ dnl For the sake of native Windows compilers (excluding gcc),
+ dnl treat backslash as a directory separator, like /.
+ dnl Actually, these compilers use a double-backslash as
+ dnl directory separator, inside the
+ dnl # line "filename"
+ dnl directives.
+ gl_dirsep_regex='[/\\]'
+ ;;
+ *)
+ gl_dirsep_regex='\/'
+ ;;
+ esac
+ dnl A sed expression that turns a string into a basic regular
+ dnl expression, for use within "/.../".
+ gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+ gl_header_literal_regex=`echo '$1' \
+ | sed -e "$gl_make_literal_regex_sed"`
+ gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+ s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+ s|^/[^/]|//&|
+ p
+ q
+ }'
+changequote([,])
+ dnl eval is necessary to expand gl_absname_cpp.
+ dnl Ultrix and Pyramid sh refuse to redirect output of eval,
+ dnl so use subshell.
+ AS_VAR_SET([gl_cv_absolute_]AS_TR_SH([[$1]]),
+[`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
+ sed -n "$gl_absolute_header_sed"`])
+])
diff --git a/m4/access.m4 b/m4/access.m4
new file mode 100644
index 0000000..cfe799d
--- /dev/null
+++ b/m4/access.m4
@@ -0,0 +1,16 @@
+# access.m4 serial 1
+dnl Copyright (C) 2019-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ACCESS],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ dnl On native Windows, access (= _access) does not support the X_OK mode.
+ dnl It works by chance on some versions of mingw.
+ case "$host_os" in
+ mingw*) REPLACE_ACCESS=1 ;;
+ esac
+])
diff --git a/acinclude.m4 b/m4/acinclude.m4
index 0ac68aa..a812aa0 100644
--- a/acinclude.m4
+++ b/m4/acinclude.m4
@@ -1,7 +1,7 @@
dnl acinclude.m4 -- Extra macros needed for GNU make.
dnl
dnl Automake will incorporate this into its generated aclocal.m4.
-dnl Copyright (C) 1998-2016 Free Software Foundation, Inc.
+dnl Copyright (C) 1998-2020 Free Software Foundation, Inc.
dnl This file is part of GNU Make.
dnl
dnl GNU Make is free software; you can redistribute it and/or modify it under
diff --git a/m4/alloca.m4 b/m4/alloca.m4
new file mode 100644
index 0000000..5922524
--- /dev/null
+++ b/m4/alloca.m4
@@ -0,0 +1,128 @@
+# alloca.m4 serial 15
+dnl Copyright (C) 2002-2004, 2006-2007, 2009-2020 Free Software Foundation,
+dnl Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_ALLOCA],
+[
+ AC_REQUIRE([AC_FUNC_ALLOCA])
+ if test $ac_cv_func_alloca_works = no; then
+ gl_PREREQ_ALLOCA
+ fi
+
+ # Define an additional variable used in the Makefile substitution.
+ if test $ac_cv_working_alloca_h = yes; then
+ AC_CACHE_CHECK([for alloca as a compiler built-in], [gl_cv_rpl_alloca], [
+ AC_EGREP_CPP([Need own alloca], [
+#if defined __GNUC__ || defined _AIX || defined _MSC_VER
+ Need own alloca
+#endif
+ ], [gl_cv_rpl_alloca=yes], [gl_cv_rpl_alloca=no])
+ ])
+ if test $gl_cv_rpl_alloca = yes; then
+ dnl OK, alloca can be implemented through a compiler built-in.
+ AC_DEFINE([HAVE_ALLOCA], [1],
+ [Define to 1 if you have 'alloca' after including <alloca.h>,
+ a header that may be supplied by this distribution.])
+ ALLOCA_H=alloca.h
+ else
+ dnl alloca exists as a library function, i.e. it is slow and probably
+ dnl a memory leak. Don't define HAVE_ALLOCA in this case.
+ ALLOCA_H=
+ fi
+ else
+ ALLOCA_H=alloca.h
+ fi
+ AC_SUBST([ALLOCA_H])
+ AM_CONDITIONAL([GL_GENERATE_ALLOCA_H], [test -n "$ALLOCA_H"])
+
+ if test $ac_cv_working_alloca_h = yes; then
+ HAVE_ALLOCA_H=1
+ else
+ HAVE_ALLOCA_H=0
+ fi
+ AC_SUBST([HAVE_ALLOCA_H])
+])
+
+# Prerequisites of lib/alloca.c.
+# STACK_DIRECTION is already handled by AC_FUNC_ALLOCA.
+AC_DEFUN([gl_PREREQ_ALLOCA], [:])
+
+# This works around a bug in autoconf <= 2.68.
+# See <https://lists.gnu.org/r/bug-gnulib/2011-06/msg00277.html>.
+
+m4_version_prereq([2.69], [] ,[
+
+# This is taken from the following Autoconf patch:
+# https://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=6cd9f12520b0d6f76d3230d7565feba1ecf29497
+
+# _AC_LIBOBJ_ALLOCA
+# -----------------
+# Set up the LIBOBJ replacement of 'alloca'. Well, not exactly
+# AC_LIBOBJ since we actually set the output variable 'ALLOCA'.
+# Nevertheless, for Automake, AC_LIBSOURCES it.
+m4_define([_AC_LIBOBJ_ALLOCA],
+[# The SVR3 libPW and SVR4 libucb both contain incompatible functions
+# that cause trouble. Some versions do not even contain alloca or
+# contain a buggy version. If you still want to use their alloca,
+# use ar to extract alloca.o from them instead of compiling alloca.c.
+AC_LIBSOURCES(alloca.c)
+AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])dnl
+AC_DEFINE(C_ALLOCA, 1, [Define to 1 if using 'alloca.c'.])
+
+AC_CACHE_CHECK(whether 'alloca.c' needs Cray hooks, ac_cv_os_cray,
+[AC_EGREP_CPP(webecray,
+[#if defined CRAY && ! defined CRAY2
+webecray
+#else
+wenotbecray
+#endif
+], ac_cv_os_cray=yes, ac_cv_os_cray=no)])
+if test $ac_cv_os_cray = yes; then
+ for ac_func in _getb67 GETB67 getb67; do
+ AC_CHECK_FUNC($ac_func,
+ [AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func,
+ [Define to one of '_getb67', 'GETB67',
+ 'getb67' for Cray-2 and Cray-YMP
+ systems. This function is required for
+ 'alloca.c' support on those systems.])
+ break])
+ done
+fi
+
+AC_CACHE_CHECK([stack direction for C alloca],
+ [ac_cv_c_stack_direction],
+[AC_RUN_IFELSE([AC_LANG_SOURCE(
+[AC_INCLUDES_DEFAULT
+int
+find_stack_direction (int *addr, int depth)
+{
+ int dir, dummy = 0;
+ if (! addr)
+ addr = &dummy;
+ *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
+ dir = depth ? find_stack_direction (addr, depth - 1) : 0;
+ return dir + dummy;
+}
+
+int
+main (int argc, char **argv)
+{
+ return find_stack_direction (0, argc + !argv + 20) < 0;
+}])],
+ [ac_cv_c_stack_direction=1],
+ [ac_cv_c_stack_direction=-1],
+ [ac_cv_c_stack_direction=0])])
+AH_VERBATIM([STACK_DIRECTION],
+[/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at runtime.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+@%:@undef STACK_DIRECTION])dnl
+AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction)
+])# _AC_LIBOBJ_ALLOCA
+])
diff --git a/m4/asm-underscore.m4 b/m4/asm-underscore.m4
new file mode 100644
index 0000000..09be5ee
--- /dev/null
+++ b/m4/asm-underscore.m4
@@ -0,0 +1,72 @@
+# asm-underscore.m4 serial 4
+dnl Copyright (C) 2010-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible. Based on as-underscore.m4 in GNU clisp.
+
+# gl_ASM_SYMBOL_PREFIX
+# Tests for the prefix of C symbols at the assembly language level and the
+# linker level. This prefix is either an underscore or empty. Defines the
+# C macro USER_LABEL_PREFIX to this prefix, and sets ASM_SYMBOL_PREFIX to
+# a stringified variant of this prefix.
+
+AC_DEFUN([gl_ASM_SYMBOL_PREFIX],
+[
+ AC_REQUIRE([AC_PROG_EGREP])
+ dnl We don't use GCC's __USER_LABEL_PREFIX__ here, because
+ dnl 1. It works only for GCC.
+ dnl 2. It is incorrectly defined on some platforms, in some GCC versions.
+ AC_REQUIRE([gl_C_ASM])
+ AC_CACHE_CHECK(
+ [whether C symbols are prefixed with underscore at the linker level],
+ [gl_cv_prog_as_underscore],
+ [cat > conftest.c <<EOF
+#ifdef __cplusplus
+extern "C" int foo (void);
+#endif
+int foo(void) { return 0; }
+EOF
+ # Look for the assembly language name in the .s file.
+ AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1
+ if LC_ALL=C $EGREP '(^|[[^a-zA-Z0-9_]])_foo([[^a-zA-Z0-9_]]|$)' conftest.$gl_asmext >/dev/null; then
+ gl_cv_prog_as_underscore=yes
+ else
+ gl_cv_prog_as_underscore=no
+ fi
+ rm -f conftest*
+ ])
+ if test $gl_cv_prog_as_underscore = yes; then
+ USER_LABEL_PREFIX=_
+ else
+ USER_LABEL_PREFIX=
+ fi
+ AC_DEFINE_UNQUOTED([USER_LABEL_PREFIX], [$USER_LABEL_PREFIX],
+ [Define to the prefix of C symbols at the assembler and linker level,
+ either an underscore or empty.])
+ ASM_SYMBOL_PREFIX='"'${USER_LABEL_PREFIX}'"'
+ AC_SUBST([ASM_SYMBOL_PREFIX])
+])
+
+# gl_C_ASM
+# Determines how to produce an assembly language file from C source code.
+# Sets the variables:
+# gl_asmext - the extension of assembly language output,
+# gl_c_asm_opt - the C compiler option that produces assembly language output.
+
+AC_DEFUN([gl_C_ASM],
+[
+ AC_EGREP_CPP([MicrosoftCompiler],
+ [
+#ifdef _MSC_VER
+MicrosoftCompiler
+#endif
+ ],
+ [gl_asmext='asm'
+ gl_c_asm_opt='-c -Fa'
+ ],
+ [gl_asmext='s'
+ gl_c_asm_opt='-S'
+ ])
+])
diff --git a/m4/close.m4 b/m4/close.m4
new file mode 100644
index 0000000..378ec4c
--- /dev/null
+++ b/m4/close.m4
@@ -0,0 +1,35 @@
+# close.m4 serial 9
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_CLOSE],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ m4_ifdef([gl_MSVC_INVAL], [
+ AC_REQUIRE([gl_MSVC_INVAL])
+ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+ REPLACE_CLOSE=1
+ fi
+ ])
+ m4_ifdef([gl_PREREQ_SYS_H_WINSOCK2], [
+ gl_PREREQ_SYS_H_WINSOCK2
+ if test $UNISTD_H_HAVE_WINSOCK2_H = 1; then
+ dnl Even if the 'socket' module is not used here, another part of the
+ dnl application may use it and pass file descriptors that refer to
+ dnl sockets to the close() function. So enable the support for sockets.
+ REPLACE_CLOSE=1
+ fi
+ ])
+ dnl Replace close() for supporting the gnulib-defined fchdir() function,
+ dnl to keep fchdir's bookkeeping up-to-date.
+ m4_ifdef([gl_FUNC_FCHDIR], [
+ if test $REPLACE_CLOSE = 0; then
+ gl_TEST_FCHDIR
+ if test $HAVE_FCHDIR = 0; then
+ REPLACE_CLOSE=1
+ fi
+ fi
+ ])
+])
diff --git a/m4/dirname.m4 b/m4/dirname.m4
new file mode 100644
index 0000000..9995ff3
--- /dev/null
+++ b/m4/dirname.m4
@@ -0,0 +1,19 @@
+#serial 10 -*- autoconf -*-
+dnl Copyright (C) 2002-2006, 2009-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_DIRNAME],
+[
+ AC_REQUIRE([gl_DIRNAME_LGPL])
+])
+
+AC_DEFUN([gl_DIRNAME_LGPL],
+[
+ dnl Prerequisites of lib/dirname.h.
+ AC_REQUIRE([gl_DOUBLE_SLASH_ROOT])
+
+ dnl No prerequisites of lib/basename-lgpl.c, lib/dirname-lgpl.c,
+ dnl lib/stripslash.c.
+])
diff --git a/config/dospaths.m4 b/m4/dospaths.m4
index 9aa9814..4c77e33 100644
--- a/config/dospaths.m4
+++ b/m4/dospaths.m4
@@ -1,7 +1,7 @@
# Test if the system uses DOS-style pathnames (drive specs and backslashes)
# By Paul Smith <psmith@gnu.org>. Based on dos.m4 by Jim Meyering.
#
-# Copyright (C) 1993-2016 Free Software Foundation, Inc.
+# Copyright (C) 1993-2020 Free Software Foundation, Inc.
# This file is part of GNU Make.
#
# GNU Make is free software; you can redistribute it and/or modify it under
diff --git a/m4/double-slash-root.m4 b/m4/double-slash-root.m4
new file mode 100644
index 0000000..c463ac4
--- /dev/null
+++ b/m4/double-slash-root.m4
@@ -0,0 +1,38 @@
+# double-slash-root.m4 serial 4 -*- Autoconf -*-
+dnl Copyright (C) 2006, 2008-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_DOUBLE_SLASH_ROOT],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_CACHE_CHECK([whether // is distinct from /], [gl_cv_double_slash_root],
+ [ if test x"$cross_compiling" = xyes ; then
+ # When cross-compiling, there is no way to tell whether // is special
+ # short of a list of hosts. However, the only known hosts to date
+ # that have a distinct // are Apollo DomainOS (too old to port to),
+ # Cygwin, and z/OS. If anyone knows of another system for which // has
+ # special semantics and is distinct from /, please report it to
+ # <bug-gnulib@gnu.org>.
+ case $host in
+ *-cygwin | i370-ibm-openedition)
+ gl_cv_double_slash_root=yes ;;
+ *)
+ # Be optimistic and assume that / and // are the same when we
+ # don't know.
+ gl_cv_double_slash_root='unknown, assuming no' ;;
+ esac
+ else
+ set x `ls -di / // 2>/dev/null`
+ if test "$[2]" = "$[4]" && wc //dev/null >/dev/null 2>&1; then
+ gl_cv_double_slash_root=no
+ else
+ gl_cv_double_slash_root=yes
+ fi
+ fi])
+ if test "$gl_cv_double_slash_root" = yes; then
+ AC_DEFINE([DOUBLE_SLASH_IS_DISTINCT_ROOT], [1],
+ [Define to 1 if // is a file system root distinct from /.])
+ fi
+])
diff --git a/m4/dup2.m4 b/m4/dup2.m4
new file mode 100644
index 0000000..21b1ecc
--- /dev/null
+++ b/m4/dup2.m4
@@ -0,0 +1,117 @@
+#serial 25
+dnl Copyright (C) 2002, 2005, 2007, 2009-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_DUP2],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ m4_ifdef([gl_FUNC_DUP2_OBSOLETE], [
+ AC_CHECK_FUNCS_ONCE([dup2])
+ if test $ac_cv_func_dup2 = no; then
+ HAVE_DUP2=0
+ fi
+ ], [
+ AC_DEFINE([HAVE_DUP2], [1], [Define to 1 if you have the 'dup2' function.])
+ ])
+ if test $HAVE_DUP2 = 1; then
+ AC_CACHE_CHECK([whether dup2 works], [gl_cv_func_dup2_works],
+ [AC_RUN_IFELSE([
+ AC_LANG_PROGRAM(
+ [[#include <errno.h>
+ #include <fcntl.h>
+ #include <limits.h>
+ #include <sys/resource.h>
+ #include <unistd.h>
+ #ifndef RLIM_SAVED_CUR
+ # define RLIM_SAVED_CUR RLIM_INFINITY
+ #endif
+ #ifndef RLIM_SAVED_MAX
+ # define RLIM_SAVED_MAX RLIM_INFINITY
+ #endif
+ ]],
+ [[int result = 0;
+ int bad_fd = INT_MAX;
+ struct rlimit rlim;
+ if (getrlimit (RLIMIT_NOFILE, &rlim) == 0
+ && 0 <= rlim.rlim_cur && rlim.rlim_cur <= INT_MAX
+ && rlim.rlim_cur != RLIM_INFINITY
+ && rlim.rlim_cur != RLIM_SAVED_MAX
+ && rlim.rlim_cur != RLIM_SAVED_CUR)
+ bad_fd = rlim.rlim_cur;
+ #ifdef FD_CLOEXEC
+ if (fcntl (1, F_SETFD, FD_CLOEXEC) == -1)
+ result |= 1;
+ #endif
+ if (dup2 (1, 1) != 1)
+ result |= 2;
+ #ifdef FD_CLOEXEC
+ if (fcntl (1, F_GETFD) != FD_CLOEXEC)
+ result |= 4;
+ #endif
+ close (0);
+ if (dup2 (0, 0) != -1)
+ result |= 8;
+ /* Many gnulib modules require POSIX conformance of EBADF. */
+ if (dup2 (2, bad_fd) == -1 && errno != EBADF)
+ result |= 16;
+ /* Flush out some cygwin core dumps. */
+ if (dup2 (2, -1) != -1 || errno != EBADF)
+ result |= 32;
+ dup2 (2, 255);
+ dup2 (2, 256);
+ /* On OS/2 kLIBC, dup2() does not work on a directory fd. */
+ {
+ int fd = open (".", O_RDONLY);
+ if (fd == -1)
+ result |= 64;
+ else if (dup2 (fd, fd + 1) == -1)
+ result |= 128;
+
+ close (fd);
+ }
+ return result;]])
+ ],
+ [gl_cv_func_dup2_works=yes], [gl_cv_func_dup2_works=no],
+ [case "$host_os" in
+ mingw*) # on this platform, dup2 always returns 0 for success
+ gl_cv_func_dup2_works="guessing no" ;;
+ cygwin*) # on cygwin 1.5.x, dup2(1,1) returns 0
+ gl_cv_func_dup2_works="guessing no" ;;
+ aix* | freebsd*)
+ # on AIX 7.1 and FreeBSD 6.1, dup2 (1,toobig) gives EMFILE,
+ # not EBADF.
+ gl_cv_func_dup2_works="guessing no" ;;
+ haiku*) # on Haiku alpha 2, dup2(1, 1) resets FD_CLOEXEC.
+ gl_cv_func_dup2_works="guessing no" ;;
+ *-android*) # implemented using dup3(), which fails if oldfd == newfd
+ gl_cv_func_dup2_works="guessing no" ;;
+ os2*) # on OS/2 kLIBC, dup2() does not work on a directory fd.
+ gl_cv_func_dup2_works="guessing no" ;;
+ *) gl_cv_func_dup2_works="guessing yes" ;;
+ esac])
+ ])
+ case "$gl_cv_func_dup2_works" in
+ *yes) ;;
+ *)
+ REPLACE_DUP2=1
+ AC_CHECK_FUNCS([setdtablesize])
+ ;;
+ esac
+ fi
+ dnl Replace dup2() for supporting the gnulib-defined fchdir() function,
+ dnl to keep fchdir's bookkeeping up-to-date.
+ m4_ifdef([gl_FUNC_FCHDIR], [
+ gl_TEST_FCHDIR
+ if test $HAVE_FCHDIR = 0; then
+ if test $HAVE_DUP2 = 1; then
+ REPLACE_DUP2=1
+ fi
+ fi
+ ])
+])
+
+# Prerequisites of lib/dup2.c.
+AC_DEFUN([gl_PREREQ_DUP2], [])
diff --git a/m4/eaccess.m4 b/m4/eaccess.m4
new file mode 100644
index 0000000..7eea8e9
--- /dev/null
+++ b/m4/eaccess.m4
@@ -0,0 +1,12 @@
+# eaccess.m4 serial 2
+dnl Copyright (C) 2003, 2009-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_EACCESS],
+[
+ AC_CHECK_FUNC([eaccess], ,
+ [AC_DEFINE([eaccess], [access],
+ [Define as 'access' if you don't have the eaccess() function.])])
+])
diff --git a/m4/errno_h.m4 b/m4/errno_h.m4
new file mode 100644
index 0000000..dd4994f
--- /dev/null
+++ b/m4/errno_h.m4
@@ -0,0 +1,133 @@
+# errno_h.m4 serial 13
+dnl Copyright (C) 2004, 2006, 2008-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_PREREQ([2.61])
+
+AC_DEFUN_ONCE([gl_HEADER_ERRNO_H],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_CACHE_CHECK([for complete errno.h], [gl_cv_header_errno_h_complete], [
+ AC_EGREP_CPP([booboo],[
+#include <errno.h>
+#if !defined ETXTBSY
+booboo
+#endif
+#if !defined ENOMSG
+booboo
+#endif
+#if !defined EIDRM
+booboo
+#endif
+#if !defined ENOLINK
+booboo
+#endif
+#if !defined EPROTO
+booboo
+#endif
+#if !defined EMULTIHOP
+booboo
+#endif
+#if !defined EBADMSG
+booboo
+#endif
+#if !defined EOVERFLOW
+booboo
+#endif
+#if !defined ENOTSUP
+booboo
+#endif
+#if !defined ENETRESET
+booboo
+#endif
+#if !defined ECONNABORTED
+booboo
+#endif
+#if !defined ESTALE
+booboo
+#endif
+#if !defined EDQUOT
+booboo
+#endif
+#if !defined ECANCELED
+booboo
+#endif
+#if !defined EOWNERDEAD
+booboo
+#endif
+#if !defined ENOTRECOVERABLE
+booboo
+#endif
+#if !defined EILSEQ
+booboo
+#endif
+ ],
+ [gl_cv_header_errno_h_complete=no],
+ [gl_cv_header_errno_h_complete=yes])
+ ])
+ if test $gl_cv_header_errno_h_complete = yes; then
+ ERRNO_H=''
+ else
+ gl_NEXT_HEADERS([errno.h])
+ ERRNO_H='errno.h'
+ fi
+ AC_SUBST([ERRNO_H])
+ AM_CONDITIONAL([GL_GENERATE_ERRNO_H], [test -n "$ERRNO_H"])
+ gl_REPLACE_ERRNO_VALUE([EMULTIHOP])
+ gl_REPLACE_ERRNO_VALUE([ENOLINK])
+ gl_REPLACE_ERRNO_VALUE([EOVERFLOW])
+])
+
+# Assuming $1 = EOVERFLOW.
+# The EOVERFLOW errno value ought to be defined in <errno.h>, according to
+# POSIX. But some systems (like OpenBSD 4.0 or AIX 3) don't define it, and
+# some systems (like OSF/1) define it when _XOPEN_SOURCE_EXTENDED is defined.
+# Check for the value of EOVERFLOW.
+# Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE.
+AC_DEFUN([gl_REPLACE_ERRNO_VALUE],
+[
+ if test -n "$ERRNO_H"; then
+ AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [
+ AC_EGREP_CPP([yes],[
+#include <errno.h>
+#ifdef ]$1[
+yes
+#endif
+ ],
+ [gl_cv_header_errno_h_]$1[=yes],
+ [gl_cv_header_errno_h_]$1[=no])
+ if test $gl_cv_header_errno_h_]$1[ = no; then
+ AC_EGREP_CPP([yes],[
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+#ifdef ]$1[
+yes
+#endif
+ ], [gl_cv_header_errno_h_]$1[=hidden])
+ if test $gl_cv_header_errno_h_]$1[ = hidden; then
+ dnl The macro exists but is hidden.
+ dnl Define it to the same value.
+ AC_COMPUTE_INT([gl_cv_header_errno_h_]$1, $1, [
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <errno.h>
+/* The following two lines are a workaround against an autoconf-2.52 bug. */
+#include <stdio.h>
+#include <stdlib.h>
+])
+ fi
+ fi
+ ])
+ case $gl_cv_header_errno_h_]$1[ in
+ yes | no)
+ ]$1[_HIDDEN=0; ]$1[_VALUE=
+ ;;
+ *)
+ ]$1[_HIDDEN=1; ]$1[_VALUE="$gl_cv_header_errno_h_]$1["
+ ;;
+ esac
+ AC_SUBST($1[_HIDDEN])
+ AC_SUBST($1[_VALUE])
+ fi
+])
diff --git a/m4/error.m4 b/m4/error.m4
new file mode 100644
index 0000000..60c229d
--- /dev/null
+++ b/m4/error.m4
@@ -0,0 +1,27 @@
+#serial 14
+
+# Copyright (C) 1996-1998, 2001-2004, 2009-2020 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_ERROR],
+[
+ dnl We don't use AC_FUNC_ERROR_AT_LINE any more, because it is no longer
+ dnl maintained in Autoconf and because it invokes AC_LIBOBJ.
+ AC_CACHE_CHECK([for error_at_line], [ac_cv_lib_error_at_line],
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <error.h>]],
+ [[error_at_line (0, 0, "", 0, "an error occurred");]])],
+ [ac_cv_lib_error_at_line=yes],
+ [ac_cv_lib_error_at_line=no])])
+])
+
+# Prerequisites of lib/error.c.
+AC_DEFUN([gl_PREREQ_ERROR],
+[
+ AC_REQUIRE([AC_FUNC_STRERROR_R])
+ :
+])
diff --git a/m4/extensions.m4 b/m4/extensions.m4
new file mode 100644
index 0000000..d7c95ef
--- /dev/null
+++ b/m4/extensions.m4
@@ -0,0 +1,189 @@
+# serial 18 -*- Autoconf -*-
+# Enable extensions on systems that normally disable them.
+
+# Copyright (C) 2003, 2006-2020 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This definition of AC_USE_SYSTEM_EXTENSIONS is stolen from git
+# Autoconf. Perhaps we can remove this once we can assume Autoconf
+# 2.70 or later everywhere, but since Autoconf mutates rapidly
+# enough in this area it's likely we'll need to redefine
+# AC_USE_SYSTEM_EXTENSIONS for quite some time.
+
+# If autoconf reports a warning
+# warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
+# or warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
+# the fix is
+# 1) to ensure that AC_USE_SYSTEM_EXTENSIONS is never directly invoked
+# but always AC_REQUIREd,
+# 2) to ensure that for each occurrence of
+# AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+# or
+# AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+# the corresponding gnulib module description has 'extensions' among
+# its dependencies. This will ensure that the gl_USE_SYSTEM_EXTENSIONS
+# invocation occurs in gl_EARLY, not in gl_INIT.
+
+# AC_USE_SYSTEM_EXTENSIONS
+# ------------------------
+# Enable extensions on systems that normally disable them,
+# typically due to standards-conformance issues.
+#
+# Remember that #undef in AH_VERBATIM gets replaced with #define by
+# AC_DEFINE. The goal here is to define all known feature-enabling
+# macros, then, if reports of conflicts are made, disable macros that
+# cause problems on some platforms (such as __EXTENSIONS__).
+AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS],
+[AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl
+AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
+
+ AC_CHECK_HEADER([minix/config.h], [MINIX=yes], [MINIX=])
+ if test "$MINIX" = yes; then
+ AC_DEFINE([_POSIX_SOURCE], [1],
+ [Define to 1 if you need to in order for 'stat' and other
+ things to work.])
+ AC_DEFINE([_POSIX_1_SOURCE], [2],
+ [Define to 2 if the system does not provide POSIX.1 features
+ except with this defined.])
+ AC_DEFINE([_MINIX], [1],
+ [Define to 1 if on MINIX.])
+ AC_DEFINE([_NETBSD_SOURCE], [1],
+ [Define to 1 to make NetBSD features available. MINIX 3 needs this.])
+ fi
+
+dnl Use a different key than __EXTENSIONS__, as that name broke existing
+dnl configure.ac when using autoheader 2.62.
+ AH_VERBATIM([USE_SYSTEM_EXTENSIONS],
+[/* Enable extensions on AIX 3, Interix. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable general extensions on macOS. */
+#ifndef _DARWIN_C_SOURCE
+# undef _DARWIN_C_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable NetBSD extensions on NetBSD. */
+#ifndef _NETBSD_SOURCE
+# undef _NETBSD_SOURCE
+#endif
+/* Enable OpenBSD extensions on NetBSD. */
+#ifndef _OPENBSD_SOURCE
+# undef _OPENBSD_SOURCE
+#endif
+/* Enable threading extensions on Solaris. */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */
+#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
+# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */
+#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+# undef __STDC_WANT_IEC_60559_BFP_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */
+#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
+# undef __STDC_WANT_IEC_60559_DFP_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */
+#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
+# undef __STDC_WANT_IEC_60559_FUNCS_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */
+#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
+# undef __STDC_WANT_IEC_60559_TYPES_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */
+#ifndef __STDC_WANT_LIB_EXT2__
+# undef __STDC_WANT_LIB_EXT2__
+#endif
+/* Enable extensions specified by ISO/IEC 24747:2009. */
+#ifndef __STDC_WANT_MATH_SPEC_FUNCS__
+# undef __STDC_WANT_MATH_SPEC_FUNCS__
+#endif
+/* Enable extensions on HP NonStop. */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable X/Open extensions if necessary. HP-UX 11.11 defines
+ mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of
+ whether compiling with -Ae or -D_HPUX_SOURCE=1. */
+#ifndef _XOPEN_SOURCE
+# undef _XOPEN_SOURCE
+#endif
+/* Enable X/Open compliant socket functions that do not require linking
+ with -lxnet on HP-UX 11.11. */
+#ifndef _HPUX_ALT_XOPEN_SOCKET_API
+# undef _HPUX_ALT_XOPEN_SOCKET_API
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+])
+ AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__],
+ [ac_cv_safe_to_define___extensions__],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[
+# define __EXTENSIONS__ 1
+ ]AC_INCLUDES_DEFAULT])],
+ [ac_cv_safe_to_define___extensions__=yes],
+ [ac_cv_safe_to_define___extensions__=no])])
+ test $ac_cv_safe_to_define___extensions__ = yes &&
+ AC_DEFINE([__EXTENSIONS__])
+ AC_DEFINE([_ALL_SOURCE])
+ AC_DEFINE([_DARWIN_C_SOURCE])
+ AC_DEFINE([_GNU_SOURCE])
+ AC_DEFINE([_NETBSD_SOURCE])
+ AC_DEFINE([_OPENBSD_SOURCE])
+ AC_DEFINE([_POSIX_PTHREAD_SEMANTICS])
+ AC_DEFINE([__STDC_WANT_IEC_60559_ATTRIBS_EXT__])
+ AC_DEFINE([__STDC_WANT_IEC_60559_BFP_EXT__])
+ AC_DEFINE([__STDC_WANT_IEC_60559_DFP_EXT__])
+ AC_DEFINE([__STDC_WANT_IEC_60559_FUNCS_EXT__])
+ AC_DEFINE([__STDC_WANT_IEC_60559_TYPES_EXT__])
+ AC_DEFINE([__STDC_WANT_LIB_EXT2__])
+ AC_DEFINE([__STDC_WANT_MATH_SPEC_FUNCS__])
+ AC_DEFINE([_TANDEM_SOURCE])
+ AC_CACHE_CHECK([whether _XOPEN_SOURCE should be defined],
+ [ac_cv_should_define__xopen_source],
+ [ac_cv_should_define__xopen_source=no
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[
+ #include <wchar.h>
+ mbstate_t x;]])],
+ [],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[
+ #define _XOPEN_SOURCE 500
+ #include <wchar.h>
+ mbstate_t x;]])],
+ [ac_cv_should_define__xopen_source=yes])])])
+ test $ac_cv_should_define__xopen_source = yes &&
+ AC_DEFINE([_XOPEN_SOURCE], [500])
+ AC_DEFINE([_HPUX_ALT_XOPEN_SOCKET_API])
+])# AC_USE_SYSTEM_EXTENSIONS
+
+# gl_USE_SYSTEM_EXTENSIONS
+# ------------------------
+# Enable extensions on systems that normally disable them,
+# typically due to standards-conformance issues.
+AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS],
+[
+ dnl Require this macro before AC_USE_SYSTEM_EXTENSIONS.
+ dnl gnulib does not need it. But if it gets required by third-party macros
+ dnl after AC_USE_SYSTEM_EXTENSIONS is required, autoconf 2.62..2.63 emit a
+ dnl warning: "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS".
+ dnl Note: We can do this only for one of the macros AC_AIX, AC_GNU_SOURCE,
+ dnl AC_MINIX. If people still use AC_AIX or AC_MINIX, they are out of luck.
+ AC_REQUIRE([AC_GNU_SOURCE])
+
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+])
diff --git a/m4/extern-inline.m4 b/m4/extern-inline.m4
new file mode 100644
index 0000000..75c5008
--- /dev/null
+++ b/m4/extern-inline.m4
@@ -0,0 +1,114 @@
+dnl 'extern inline' a la ISO C99.
+
+dnl Copyright 2012-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_EXTERN_INLINE],
+[
+ AH_VERBATIM([extern_inline],
+[/* Please see the Gnulib manual for how to use these macros.
+
+ Suppress extern inline with HP-UX cc, as it appears to be broken; see
+ <https://lists.gnu.org/r/bug-texinfo/2013-02/msg00030.html>.
+
+ Suppress extern inline with Sun C in standards-conformance mode, as it
+ mishandles inline functions that call each other. E.g., for 'inline void f
+ (void) { } inline void g (void) { f (); }', c99 incorrectly complains
+ 'reference to static identifier "f" in extern inline function'.
+ This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16.
+
+ Suppress extern inline (with or without __attribute__ ((__gnu_inline__)))
+ on configurations that mistakenly use 'static inline' to implement
+ functions or macros in standard C headers like <ctype.h>. For example,
+ if isdigit is mistakenly implemented via a static inline function,
+ a program containing an extern inline function that calls isdigit
+ may not work since the C standard prohibits extern inline functions
+ from calling static functions (ISO C 99 section 6.7.4.(3).
+ This bug is known to occur on:
+
+ OS X 10.8 and earlier; see:
+ https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html
+
+ DragonFly; see
+ http://muscles.dragonflybsd.org/bulk/clang-master-potential/20141111_102002/logs/ah-tty-0.3.12.log
+
+ FreeBSD; see:
+ https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html
+
+ OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and
+ for clang but remains for g++; see <https://trac.macports.org/ticket/41033>.
+ Assume DragonFly and FreeBSD will be similar.
+
+ GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+ inline semantics, unless -fgnu89-inline is used. It defines a macro
+ __GNUC_STDC_INLINE__ to indicate this situation or a macro
+ __GNUC_GNU_INLINE__ to indicate the opposite situation.
+ GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline
+ semantics but warns, unless -fgnu89-inline is used:
+ warning: C99 inline functions are not supported; using GNU89
+ warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute
+ It defines a macro __GNUC_GNU_INLINE__ to indicate this situation.
+ */
+#if (((defined __APPLE__ && defined __MACH__) \
+ || defined __DragonFly__ || defined __FreeBSD__) \
+ && (defined __header_inline \
+ ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \
+ && ! defined __clang__) \
+ : ((! defined _DONT_USE_CTYPE_INLINE_ \
+ && (defined __GNUC__ || defined __cplusplus)) \
+ || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \
+ && defined __GNUC__ && ! defined __cplusplus))))
+# define _GL_EXTERN_INLINE_STDHEADER_BUG
+#endif
+#if ((__GNUC__ \
+ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
+ : (199901L <= __STDC_VERSION__ \
+ && !defined __HP_cc \
+ && !defined __PGI \
+ && !(defined __SUNPRO_C && __STDC__))) \
+ && !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
+# define _GL_INLINE inline
+# define _GL_EXTERN_INLINE extern inline
+# define _GL_EXTERN_INLINE_IN_USE
+#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \
+ && !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
+# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__
+ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */
+# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
+# else
+# define _GL_INLINE extern inline
+# endif
+# define _GL_EXTERN_INLINE extern
+# define _GL_EXTERN_INLINE_IN_USE
+#else
+# define _GL_INLINE static _GL_UNUSED
+# define _GL_EXTERN_INLINE static _GL_UNUSED
+#endif
+
+/* In GCC 4.6 (inclusive) to 5.1 (exclusive),
+ suppress bogus "no previous prototype for 'FOO'"
+ and "no previous declaration for 'FOO'" diagnostics,
+ when FOO is an inline function in the header; see
+ <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and
+ <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>. */
+#if __GNUC__ == 4 && 6 <= __GNUC_MINOR__
+# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
+# define _GL_INLINE_HEADER_CONST_PRAGMA
+# else
+# define _GL_INLINE_HEADER_CONST_PRAGMA \
+ _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
+# endif
+# define _GL_INLINE_HEADER_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
+ _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
+ _GL_INLINE_HEADER_CONST_PRAGMA
+# define _GL_INLINE_HEADER_END \
+ _Pragma ("GCC diagnostic pop")
+#else
+# define _GL_INLINE_HEADER_BEGIN
+# define _GL_INLINE_HEADER_END
+#endif])
+])
diff --git a/m4/fcntl-o.m4 b/m4/fcntl-o.m4
new file mode 100644
index 0000000..747b865
--- /dev/null
+++ b/m4/fcntl-o.m4
@@ -0,0 +1,139 @@
+# fcntl-o.m4 serial 6
+dnl Copyright (C) 2006, 2009-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Paul Eggert.
+
+AC_PREREQ([2.60])
+
+# Test whether the flags O_NOATIME and O_NOFOLLOW actually work.
+# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise.
+# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise.
+AC_DEFUN([gl_FCNTL_O_FLAGS],
+[
+ dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW.
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CHECK_HEADERS_ONCE([unistd.h])
+ AC_CHECK_FUNCS_ONCE([symlink])
+ AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <sys/types.h>
+ #include <sys/stat.h>
+ #if HAVE_UNISTD_H
+ # include <unistd.h>
+ #else /* on Windows with MSVC */
+ # include <io.h>
+ # include <stdlib.h>
+ # defined sleep(n) _sleep ((n) * 1000)
+ #endif
+ #include <fcntl.h>
+ #ifndef O_NOATIME
+ #define O_NOATIME 0
+ #endif
+ #ifndef O_NOFOLLOW
+ #define O_NOFOLLOW 0
+ #endif
+ static int const constants[] =
+ {
+ O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
+ O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
+ };
+ ]],
+ [[
+ int result = !constants;
+ #if HAVE_SYMLINK
+ {
+ static char const sym[] = "conftest.sym";
+ if (symlink ("/dev/null", sym) != 0)
+ result |= 2;
+ else
+ {
+ int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0);
+ if (fd >= 0)
+ {
+ close (fd);
+ result |= 4;
+ }
+ }
+ if (unlink (sym) != 0 || symlink (".", sym) != 0)
+ result |= 2;
+ else
+ {
+ int fd = open (sym, O_RDONLY | O_NOFOLLOW);
+ if (fd >= 0)
+ {
+ close (fd);
+ result |= 4;
+ }
+ }
+ unlink (sym);
+ }
+ #endif
+ {
+ static char const file[] = "confdefs.h";
+ int fd = open (file, O_RDONLY | O_NOATIME);
+ if (fd < 0)
+ result |= 8;
+ else
+ {
+ struct stat st0;
+ if (fstat (fd, &st0) != 0)
+ result |= 16;
+ else
+ {
+ char c;
+ sleep (1);
+ if (read (fd, &c, 1) != 1)
+ result |= 24;
+ else
+ {
+ if (close (fd) != 0)
+ result |= 32;
+ else
+ {
+ struct stat st1;
+ if (stat (file, &st1) != 0)
+ result |= 40;
+ else
+ if (st0.st_atime != st1.st_atime)
+ result |= 64;
+ }
+ }
+ }
+ }
+ }
+ return result;]])],
+ [gl_cv_header_working_fcntl_h=yes],
+ [case $? in #(
+ 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
+ 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
+ 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
+ *) gl_cv_header_working_fcntl_h='no';;
+ esac],
+ [case "$host_os" in
+ # Guess 'no' on native Windows.
+ mingw*) gl_cv_header_working_fcntl_h='no' ;;
+ *) gl_cv_header_working_fcntl_h=cross-compiling ;;
+ esac
+ ])
+ ])
+
+ case $gl_cv_header_working_fcntl_h in #(
+ *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
+ *) ac_val=1;;
+ esac
+ AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val],
+ [Define to 1 if O_NOATIME works.])
+
+ case $gl_cv_header_working_fcntl_h in #(
+ *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
+ *) ac_val=1;;
+ esac
+ AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val],
+ [Define to 1 if O_NOFOLLOW works.])
+])
diff --git a/m4/fcntl.m4 b/m4/fcntl.m4
new file mode 100644
index 0000000..562ae23
--- /dev/null
+++ b/m4/fcntl.m4
@@ -0,0 +1,126 @@
+# fcntl.m4 serial 9
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# For now, this module ensures that fcntl()
+# - supports F_DUPFD correctly
+# - supports or emulates F_DUPFD_CLOEXEC
+# - supports F_GETFD
+# Still to be ported to mingw:
+# - F_SETFD
+# - F_GETFL, F_SETFL
+# - F_GETOWN, F_SETOWN
+# - F_GETLK, F_SETLK, F_SETLKW
+AC_DEFUN([gl_FUNC_FCNTL],
+[
+ dnl Persuade glibc to expose F_DUPFD_CLOEXEC.
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_REQUIRE([gl_FCNTL_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_CHECK_FUNCS_ONCE([fcntl])
+ if test $ac_cv_func_fcntl = no; then
+ gl_REPLACE_FCNTL
+ else
+ dnl cygwin 1.5.x F_DUPFD has wrong errno, and allows negative target
+ dnl haiku alpha 2 F_DUPFD has wrong errno
+ AC_CACHE_CHECK([whether fcntl handles F_DUPFD correctly],
+ [gl_cv_func_fcntl_f_dupfd_works],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <errno.h>
+ #include <fcntl.h>
+ #include <limits.h>
+ #include <sys/resource.h>
+ #include <unistd.h>
+ #ifndef RLIM_SAVED_CUR
+ # define RLIM_SAVED_CUR RLIM_INFINITY
+ #endif
+ #ifndef RLIM_SAVED_MAX
+ # define RLIM_SAVED_MAX RLIM_INFINITY
+ #endif
+ ]],
+ [[int result = 0;
+ int bad_fd = INT_MAX;
+ struct rlimit rlim;
+ if (getrlimit (RLIMIT_NOFILE, &rlim) == 0
+ && 0 <= rlim.rlim_cur && rlim.rlim_cur <= INT_MAX
+ && rlim.rlim_cur != RLIM_INFINITY
+ && rlim.rlim_cur != RLIM_SAVED_MAX
+ && rlim.rlim_cur != RLIM_SAVED_CUR)
+ bad_fd = rlim.rlim_cur;
+ if (fcntl (0, F_DUPFD, -1) != -1) result |= 1;
+ if (errno != EINVAL) result |= 2;
+ if (fcntl (0, F_DUPFD, bad_fd) != -1) result |= 4;
+ if (errno != EINVAL) result |= 8;
+ /* On OS/2 kLIBC, F_DUPFD does not work on a directory fd */
+ {
+ int fd;
+ fd = open (".", O_RDONLY);
+ if (fd == -1)
+ result |= 16;
+ else if (fcntl (fd, F_DUPFD, STDERR_FILENO + 1) == -1)
+ result |= 32;
+
+ close (fd);
+ }
+ return result;]])],
+ [gl_cv_func_fcntl_f_dupfd_works=yes],
+ [gl_cv_func_fcntl_f_dupfd_works=no],
+ [case $host_os in
+ aix* | cygwin* | haiku*)
+ gl_cv_func_fcntl_f_dupfd_works="guessing no" ;;
+ *) gl_cv_func_fcntl_f_dupfd_works="guessing yes" ;;
+ esac])])
+ case $gl_cv_func_fcntl_f_dupfd_works in
+ *yes) ;;
+ *) gl_REPLACE_FCNTL
+ AC_DEFINE([FCNTL_DUPFD_BUGGY], [1], [Define this to 1 if F_DUPFD
+ behavior does not match POSIX]) ;;
+ esac
+
+ dnl Many systems lack F_DUPFD_CLOEXEC
+ AC_CACHE_CHECK([whether fcntl understands F_DUPFD_CLOEXEC],
+ [gl_cv_func_fcntl_f_dupfd_cloexec],
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <fcntl.h>
+#ifndef F_DUPFD_CLOEXEC
+choke me
+#endif
+ ]])],
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#ifdef __linux__
+/* The Linux kernel only added F_DUPFD_CLOEXEC in 2.6.24, so we always replace
+ it to support the semantics on older kernels that failed with EINVAL. */
+choke me
+#endif
+ ]])],
+ [gl_cv_func_fcntl_f_dupfd_cloexec=yes],
+ [gl_cv_func_fcntl_f_dupfd_cloexec="needs runtime check"])],
+ [gl_cv_func_fcntl_f_dupfd_cloexec=no])])
+ if test "$gl_cv_func_fcntl_f_dupfd_cloexec" != yes; then
+ gl_REPLACE_FCNTL
+ dnl No witness macro needed for this bug.
+ fi
+ fi
+ dnl Replace fcntl() for supporting the gnulib-defined fchdir() function,
+ dnl to keep fchdir's bookkeeping up-to-date.
+ m4_ifdef([gl_FUNC_FCHDIR], [
+ gl_TEST_FCHDIR
+ if test $HAVE_FCHDIR = 0; then
+ gl_REPLACE_FCNTL
+ fi
+ ])
+])
+
+AC_DEFUN([gl_REPLACE_FCNTL],
+[
+ AC_REQUIRE([gl_FCNTL_H_DEFAULTS])
+ AC_CHECK_FUNCS_ONCE([fcntl])
+ if test $ac_cv_func_fcntl = no; then
+ HAVE_FCNTL=0
+ else
+ REPLACE_FCNTL=1
+ fi
+])
diff --git a/m4/fcntl_h.m4 b/m4/fcntl_h.m4
new file mode 100644
index 0000000..6b25393
--- /dev/null
+++ b/m4/fcntl_h.m4
@@ -0,0 +1,52 @@
+# serial 16
+# Configure fcntl.h.
+dnl Copyright (C) 2006-2007, 2009-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Paul Eggert.
+
+AC_DEFUN([gl_FCNTL_H],
+[
+ AC_REQUIRE([gl_FCNTL_H_DEFAULTS])
+ AC_REQUIRE([gl_FCNTL_O_FLAGS])
+ gl_NEXT_HEADERS([fcntl.h])
+
+ dnl Ensure the type pid_t gets defined.
+ AC_REQUIRE([AC_TYPE_PID_T])
+
+ dnl Ensure the type mode_t gets defined.
+ AC_REQUIRE([AC_TYPE_MODE_T])
+
+ dnl Check for declarations of anything we want to poison if the
+ dnl corresponding gnulib module is not in use, if it is not common
+ dnl enough to be declared everywhere.
+ gl_WARN_ON_USE_PREPARE([[#include <fcntl.h>
+ ]], [fcntl openat])
+])
+
+AC_DEFUN([gl_FCNTL_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_FCNTL_H_DEFAULTS])
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_FCNTL_H_DEFAULTS],
+[
+ GNULIB_CREAT=0; AC_SUBST([GNULIB_CREAT])
+ GNULIB_FCNTL=0; AC_SUBST([GNULIB_FCNTL])
+ GNULIB_NONBLOCKING=0; AC_SUBST([GNULIB_NONBLOCKING])
+ GNULIB_OPEN=0; AC_SUBST([GNULIB_OPEN])
+ GNULIB_OPENAT=0; AC_SUBST([GNULIB_OPENAT])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_FCNTL=1; AC_SUBST([HAVE_FCNTL])
+ HAVE_OPENAT=1; AC_SUBST([HAVE_OPENAT])
+ REPLACE_CREAT=0; AC_SUBST([REPLACE_CREAT])
+ REPLACE_FCNTL=0; AC_SUBST([REPLACE_FCNTL])
+ REPLACE_OPEN=0; AC_SUBST([REPLACE_OPEN])
+ REPLACE_OPENAT=0; AC_SUBST([REPLACE_OPENAT])
+])
diff --git a/m4/findprog-in.m4 b/m4/findprog-in.m4
new file mode 100644
index 0000000..54ea10e
--- /dev/null
+++ b/m4/findprog-in.m4
@@ -0,0 +1,11 @@
+# findprog-in.m4 serial 1
+dnl Copyright (C) 2003, 2009-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FINDPROG_IN],
+[
+ dnl Prerequisites of lib/findprog-in.c.
+ AC_REQUIRE([gl_FUNC_EACCESS])
+])
diff --git a/m4/getdtablesize.m4 b/m4/getdtablesize.m4
new file mode 100644
index 0000000..ab2e3fe
--- /dev/null
+++ b/m4/getdtablesize.m4
@@ -0,0 +1,60 @@
+# getdtablesize.m4 serial 7
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_GETDTABLESIZE],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_CHECK_FUNCS_ONCE([getdtablesize])
+ AC_CHECK_DECLS_ONCE([getdtablesize])
+ if test $ac_cv_func_getdtablesize = yes &&
+ test $ac_cv_have_decl_getdtablesize = yes; then
+ AC_CACHE_CHECK([whether getdtablesize works],
+ [gl_cv_func_getdtablesize_works],
+ [dnl There are two concepts: the "maximum possible file descriptor value + 1"
+ dnl and the "maximum number of open file descriptors in a process".
+ dnl Per SUSv2 and POSIX, getdtablesize() should return the first one.
+ dnl On most platforms, the first and the second concept are the same.
+ dnl On OpenVMS, however, they are different and getdtablesize() returns
+ dnl the second one; thus the test below fails. But we don't care
+ dnl because there's no good way to write a replacement getdtablesize().
+ case "$host_os" in
+ vms*) gl_cv_func_getdtablesize_works="no (limitation)" ;;
+ *)
+ dnl Cygwin 1.7.25 automatically increases the RLIMIT_NOFILE soft
+ dnl limit up to an unchangeable hard limit; all other platforms
+ dnl correctly require setrlimit before getdtablesize() can report
+ dnl a larger value.
+ AC_RUN_IFELSE([
+ AC_LANG_PROGRAM([[#include <unistd.h>]],
+ [int size = getdtablesize();
+ if (dup2 (0, getdtablesize()) != -1)
+ return 1;
+ if (size != getdtablesize())
+ return 2;
+ ])],
+ [gl_cv_func_getdtablesize_works=yes],
+ [gl_cv_func_getdtablesize_works=no],
+ [case "$host_os" in
+ cygwin*) # on cygwin 1.5.25, getdtablesize() automatically grows
+ gl_cv_func_getdtablesize_works="guessing no" ;;
+ *) gl_cv_func_getdtablesize_works="guessing yes" ;;
+ esac
+ ])
+ ;;
+ esac
+ ])
+ case "$gl_cv_func_getdtablesize_works" in
+ *yes | "no (limitation)") ;;
+ *) REPLACE_GETDTABLESIZE=1 ;;
+ esac
+ else
+ HAVE_GETDTABLESIZE=0
+ fi
+])
+
+# Prerequisites of lib/getdtablesize.c.
+AC_DEFUN([gl_PREREQ_GETDTABLESIZE], [:])
diff --git a/m4/getloadavg.m4 b/m4/getloadavg.m4
new file mode 100644
index 0000000..3bd2a14
--- /dev/null
+++ b/m4/getloadavg.m4
@@ -0,0 +1,159 @@
+# Check for getloadavg.
+
+# Copyright (C) 1992-1996, 1999-2000, 2002-2003, 2006, 2008-2020 Free Software
+# Foundation, Inc.
+
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 8
+
+# Autoconf defines AC_FUNC_GETLOADAVG, but that is obsolescent.
+# New applications should use gl_GETLOADAVG instead.
+
+# gl_GETLOADAVG
+# -------------
+AC_DEFUN([gl_GETLOADAVG],
+[AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+
+# Persuade glibc <stdlib.h> to declare getloadavg().
+AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+gl_save_LIBS=$LIBS
+
+# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0,
+# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7.
+HAVE_GETLOADAVG=1
+AC_CHECK_FUNC([getloadavg], [],
+ [gl_func_getloadavg_done=no
+
+ # Some systems with -lutil have (and need) -lkvm as well, some do not.
+ # On Solaris, -lkvm requires nlist from -lelf, so check that first
+ # to get the right answer into the cache.
+ # For kstat on solaris, we need to test for libelf and libkvm to force the
+ # definition of SVR4 below.
+ if test $gl_func_getloadavg_done = no; then
+ AC_CHECK_LIB([elf], [elf_begin], [LIBS="-lelf $LIBS"])
+ AC_CHECK_LIB([kvm], [kvm_open], [LIBS="-lkvm $LIBS"])
+ # Check for the 4.4BSD definition of getloadavg.
+ AC_CHECK_LIB([util], [getloadavg],
+ [LIBS="-lutil $LIBS" gl_func_getloadavg_done=yes])
+ fi
+
+ if test $gl_func_getloadavg_done = no; then
+ # There is a commonly available library for RS/6000 AIX.
+ # Since it is not a standard part of AIX, it might be installed locally.
+ gl_getloadavg_LIBS=$LIBS
+ LIBS="-L/usr/local/lib $LIBS"
+ AC_CHECK_LIB([getloadavg], [getloadavg],
+ [LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes],
+ [LIBS=$gl_getloadavg_LIBS])
+ fi
+
+ # Set up the replacement function if necessary.
+ if test $gl_func_getloadavg_done = no; then
+ HAVE_GETLOADAVG=0
+
+ # Solaris has libkstat which does not require root.
+ AC_CHECK_LIB([kstat], [kstat_open])
+ test $ac_cv_lib_kstat_kstat_open = yes && gl_func_getloadavg_done=yes
+
+ # AIX has libperfstat which does not require root
+ if test $gl_func_getloadavg_done = no; then
+ AC_CHECK_LIB([perfstat], [perfstat_cpu_total])
+ test $ac_cv_lib_perfstat_perfstat_cpu_total = yes && gl_func_getloadavg_done=yes
+ fi
+
+ if test $gl_func_getloadavg_done = no; then
+ AC_CHECK_HEADER([sys/dg_sys_info.h],
+ [gl_func_getloadavg_done=yes
+ AC_DEFINE([DGUX], [1], [Define to 1 for DGUX with <sys/dg_sys_info.h>.])
+ AC_CHECK_LIB([dgc], [dg_sys_info])])
+ fi
+ fi])
+
+if test "x$gl_save_LIBS" = x; then
+ GETLOADAVG_LIBS=$LIBS
+else
+ GETLOADAVG_LIBS=`echo "$LIBS" | sed "s!$gl_save_LIBS!!"`
+fi
+LIBS=$gl_save_LIBS
+
+AC_SUBST([GETLOADAVG_LIBS])dnl
+
+# Test whether the system declares getloadavg. Solaris has the function
+# but declares it in <sys/loadavg.h>, not <stdlib.h>.
+AC_CHECK_HEADERS([sys/loadavg.h])
+if test $ac_cv_header_sys_loadavg_h = yes; then
+ HAVE_SYS_LOADAVG_H=1
+else
+ HAVE_SYS_LOADAVG_H=0
+fi
+AC_CHECK_DECL([getloadavg], [], [HAVE_DECL_GETLOADAVG=0],
+ [[#if HAVE_SYS_LOADAVG_H
+ /* OpenIndiana has a bug: <sys/time.h> must be included before
+ <sys/loadavg.h>. */
+ # include <sys/time.h>
+ # include <sys/loadavg.h>
+ #endif
+ #include <stdlib.h>]])
+])# gl_GETLOADAVG
+
+
+# gl_PREREQ_GETLOADAVG
+# --------------------
+# Set up the AC_LIBOBJ replacement of 'getloadavg'.
+AC_DEFUN([gl_PREREQ_GETLOADAVG],
+[
+# Figure out what our getloadavg.c needs.
+
+AC_CHECK_HEADERS_ONCE([sys/param.h unistd.h])
+
+# On HPUX9, an unprivileged user can get load averages this way.
+if test $gl_func_getloadavg_done = no; then
+ AC_CHECK_FUNCS([pstat_getdynamic], [gl_func_getloadavg_done=yes])
+fi
+
+# We cannot check for <dwarf.h>, because Solaris 2 does not use dwarf (it
+# uses stabs), but it is still SVR4. We cannot check for <elf.h> because
+# Irix 4.0.5F has the header but not the library.
+if test $gl_func_getloadavg_done = no && test "$ac_cv_lib_elf_elf_begin" = yes \
+ && test "$ac_cv_lib_kvm_kvm_open" = yes; then
+ gl_func_getloadavg_done=yes
+ AC_DEFINE([SVR4], [1], [Define to 1 on System V Release 4.])
+fi
+
+if test $gl_func_getloadavg_done = no; then
+ AC_CHECK_HEADER([inq_stats/cpustats.h],
+ [gl_func_getloadavg_done=yes
+ AC_DEFINE([UMAX], [1], [Define to 1 for Encore UMAX.])
+ AC_DEFINE([UMAX4_3], [1],
+ [Define to 1 for Encore UMAX 4.3 that has <inq_status/cpustats.h>
+ instead of <sys/cpustats.h>.])])
+fi
+
+if test $gl_func_getloadavg_done = no; then
+ AC_CHECK_HEADER([sys/cpustats.h],
+ [gl_func_getloadavg_done=yes; AC_DEFINE([UMAX])])
+fi
+
+if test $gl_func_getloadavg_done = no; then
+ AC_CHECK_HEADERS([mach/mach.h])
+fi
+
+AC_CHECK_HEADERS([nlist.h],
+[AC_CHECK_MEMBERS([struct nlist.n_un.n_name],
+ [], [],
+ [@%:@include <nlist.h>])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <nlist.h>]],
+ [[struct nlist x;
+ #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME
+ x.n_un.n_name = "";
+ #else
+ x.n_name = "";
+ #endif]])],
+ [AC_DEFINE([N_NAME_POINTER], [1],
+ [Define to 1 if the nlist n_name member is a pointer])])
+])dnl
+])# gl_PREREQ_GETLOADAVG
diff --git a/m4/getprogname.m4 b/m4/getprogname.m4
new file mode 100644
index 0000000..6baefc9
--- /dev/null
+++ b/m4/getprogname.m4
@@ -0,0 +1,43 @@
+# getprogname.m4 - check for getprogname or replacements for it
+
+# Copyright (C) 2016-2020 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+AC_DEFUN([gl_FUNC_GETPROGNAME],
+[
+ AC_CHECK_FUNCS_ONCE([getprogname getexecname])
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ ac_found=0
+ AC_CHECK_DECLS([program_invocation_name], [ac_found=1], [],
+ [#include <errno.h>])
+ AC_CHECK_DECLS([program_invocation_short_name], [ac_found=1], [],
+ [#include <errno.h>])
+ AC_CHECK_DECLS([__argv], [ac_found=1], [], [#include <stdlib.h>])
+
+ # Incur the cost of this test only if none of the above worked.
+ if test $ac_found = 0; then
+ # On OpenBSD 5.1, using the global __progname variable appears to be
+ # the only way to implement getprogname.
+ AC_CACHE_CHECK([whether __progname is defined in default libraries],
+ [gl_cv_var___progname],
+ [
+ gl_cv_var___progname=
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[extern char *__progname;]],
+ [[return *__progname;]]
+ )],
+ [gl_cv_var___progname=yes]
+ )
+ ]
+ )
+ if test "$gl_cv_var___progname" = yes; then
+ AC_DEFINE([HAVE_VAR___PROGNAME], 1,
+ [Define if you have a global __progname variable])
+ fi
+ fi
+])
diff --git a/config/gettext.m4 b/m4/gettext.m4
index be247bf..be247bf 100644
--- a/config/gettext.m4
+++ b/m4/gettext.m4
diff --git a/m4/gnulib-cache.m4 b/m4/gnulib-cache.m4
new file mode 100644
index 0000000..93c826b
--- /dev/null
+++ b/m4/gnulib-cache.m4
@@ -0,0 +1,69 @@
+# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This file is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this file. If not, see <https://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License,
+# this file may be distributed as part of a program that
+# contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+#
+# This file represents the specification of how gnulib-tool is used.
+# It acts as a cache: It is written and read by gnulib-tool.
+# In projects that use version control, this file is meant to be put under
+# version control, like the configure.ac and various Makefile.am files.
+
+
+# Specification in the form of a command-line invocation:
+# gnulib-tool --import --local-dir=gl \
+# --lib=libgnu \
+# --source-base=lib \
+# --m4-base=m4 \
+# --doc-base=doc \
+# --tests-base=tests \
+# --aux-dir=build-aux \
+# --no-conditional-dependencies \
+# --no-libtool \
+# --macro-prefix=gl \
+# alloca \
+# fdl \
+# findprog-in \
+# getloadavg \
+# host-cpu-c-abi \
+# make-glob \
+# strerror
+
+# Specification in the form of a few gnulib-tool.m4 macro invocations:
+gl_LOCAL_DIR([gl])
+gl_MODULES([
+ alloca
+ fdl
+ findprog-in
+ getloadavg
+ host-cpu-c-abi
+ make-glob
+ strerror
+])
+gl_AVOID([])
+gl_SOURCE_BASE([lib])
+gl_M4_BASE([m4])
+gl_PO_BASE([])
+gl_DOC_BASE([doc])
+gl_TESTS_BASE([tests])
+gl_LIB([libgnu])
+gl_MAKEFILE_NAME([])
+gl_MACRO_PREFIX([gl])
+gl_PO_DOMAIN([])
+gl_WITNESS_C_MACRO([])
diff --git a/m4/gnulib-common.m4 b/m4/gnulib-common.m4
new file mode 100644
index 0000000..6c4cad6
--- /dev/null
+++ b/m4/gnulib-common.m4
@@ -0,0 +1,459 @@
+# gnulib-common.m4 serial 46
+dnl Copyright (C) 2007-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_PREREQ([2.62])
+
+# gl_COMMON
+# is expanded unconditionally through gnulib-tool magic.
+AC_DEFUN([gl_COMMON], [
+ dnl Use AC_REQUIRE here, so that the code is expanded once only.
+ AC_REQUIRE([gl_00GNULIB])
+ AC_REQUIRE([gl_COMMON_BODY])
+])
+AC_DEFUN([gl_COMMON_BODY], [
+ AH_VERBATIM([_Noreturn],
+[/* The _Noreturn keyword of C11. */
+#ifndef _Noreturn
+# if (defined __cplusplus \
+ && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
+ || (defined _MSC_VER && 1900 <= _MSC_VER)) \
+ && 0)
+ /* [[noreturn]] is not practically usable, because with it the syntax
+ extern _Noreturn void func (...);
+ would not be valid; such a declaration would only be valid with 'extern'
+ and '_Noreturn' swapped, or without the 'extern' keyword. However, some
+ AIX system header files and several gnulib header files use precisely
+ this syntax with 'extern'. */
+# define _Noreturn [[noreturn]]
+# elif ((!defined __cplusplus || defined __clang__) \
+ && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
+ || 4 < __GNUC__ + (7 <= __GNUC_MINOR__)))
+ /* _Noreturn works as-is. */
+# elif 2 < __GNUC__ + (8 <= __GNUC_MINOR__) || 0x5110 <= __SUNPRO_C
+# define _Noreturn __attribute__ ((__noreturn__))
+# elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0)
+# define _Noreturn __declspec (noreturn)
+# else
+# define _Noreturn
+# endif
+#endif
+])
+ AH_VERBATIM([isoc99_inline],
+[/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
+ the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
+ earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
+ __APPLE__ && __MACH__ test for Mac OS X.
+ __APPLE_CC__ tests for the Apple compiler and its version.
+ __STDC_VERSION__ tests for the C99 mode. */
+#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
+# define __GNUC_STDC_INLINE__ 1
+#endif])
+ AH_VERBATIM([unused_parameter],
+[/* Define as a marker that can be attached to declarations that might not
+ be used. This helps to reduce warnings, such as from
+ GCC -Wunused-parameter. */
+#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _GL_UNUSED __attribute__ ((__unused__))
+#else
+# define _GL_UNUSED
+#endif
+/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name
+ is a misnomer outside of parameter lists. */
+#define _UNUSED_PARAMETER_ _GL_UNUSED
+
+/* gcc supports the "unused" attribute on possibly unused labels, and
+ g++ has since version 4.5. Note to support C++ as well as C,
+ _GL_UNUSED_LABEL should be used with a trailing ; */
+#if !defined __cplusplus || __GNUC__ > 4 \
+ || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
+# define _GL_UNUSED_LABEL _GL_UNUSED
+#else
+# define _GL_UNUSED_LABEL
+#endif
+
+/* The __pure__ attribute was added in gcc 2.96. */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#else
+# define _GL_ATTRIBUTE_PURE /* empty */
+#endif
+
+/* The __const__ attribute was added in gcc 2.95. */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
+# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
+#else
+# define _GL_ATTRIBUTE_CONST /* empty */
+#endif
+
+/* The __malloc__ attribute was added in gcc 3. */
+#if 3 <= __GNUC__
+# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
+#else
+# define _GL_ATTRIBUTE_MALLOC /* empty */
+#endif
+])
+ AH_VERBATIM([async_safe],
+[/* The _GL_ASYNC_SAFE marker should be attached to functions that are
+ signal handlers (for signals other than SIGABRT, SIGPIPE) or can be
+ invoked from such signal handlers. Such functions have some restrictions:
+ * All functions that it calls should be marked _GL_ASYNC_SAFE as well,
+ or should be listed as async-signal-safe in POSIX
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_04>
+ section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in
+ particular, are NOT async-signal-safe.
+ * All memory locations (variables and struct fields) that these functions
+ access must be marked 'volatile'. This holds for both read and write
+ accesses. Otherwise the compiler might optimize away stores to and
+ reads from such locations that occur in the program, depending on its
+ data flow analysis. For example, when the program contains a loop
+ that is intended to inspect a variable set from within a signal handler
+ while (!signal_occurred)
+ ;
+ the compiler is allowed to transform this into an endless loop if the
+ variable 'signal_occurred' is not declared 'volatile'.
+ Additionally, recall that:
+ * A signal handler should not modify errno (except if it is a handler
+ for a fatal signal and ends by raising the same signal again, thus
+ provoking the termination of the process). If it invokes a function
+ that may clobber errno, it needs to save and restore the value of
+ errno. */
+#define _GL_ASYNC_SAFE
+])
+ dnl Hint which direction to take regarding cross-compilation guesses:
+ dnl When a user installs a program on a platform they are not intimately
+ dnl familiar with, --enable-cross-guesses=conservative is the appropriate
+ dnl choice. It implements the "If we don't know, assume the worst" principle.
+ dnl However, when an operating system developer (on a platform which is not
+ dnl yet known to gnulib) builds packages for their platform, they want to
+ dnl expose, not hide, possible platform bugs; in this case,
+ dnl --enable-cross-guesses=risky is the appropriate choice.
+ dnl Sets the variables
+ dnl gl_cross_guess_normal (to be used when 'yes' is good and 'no' is bad),
+ dnl gl_cross_guess_inverted (to be used when 'no' is good and 'yes' is bad).
+ AC_ARG_ENABLE([cross-guesses],
+ [AS_HELP_STRING([--enable-cross-guesses={conservative|risky}],
+ [specify policy for cross-compilation guesses])],
+ [if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then
+ AC_MSG_WARN([invalid argument supplied to --enable-cross-guesses])
+ enableval=conservative
+ fi
+ gl_cross_guesses="$enableval"],
+ [gl_cross_guesses=conservative])
+ if test $gl_cross_guesses = risky; then
+ gl_cross_guess_normal="guessing yes"
+ gl_cross_guess_inverted="guessing no"
+ else
+ gl_cross_guess_normal="guessing no"
+ gl_cross_guess_inverted="guessing yes"
+ fi
+ dnl Preparation for running test programs:
+ dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not
+ dnl to /dev/tty, so they can be redirected to log files. Such diagnostics
+ dnl arise e.g., in the macros gl_PRINTF_DIRECTIVE_N, gl_SNPRINTF_DIRECTIVE_N.
+ LIBC_FATAL_STDERR_=1
+ export LIBC_FATAL_STDERR_
+])
+
+# gl_MODULE_INDICATOR_CONDITION
+# expands to a C preprocessor expression that evaluates to 1 or 0, depending
+# whether a gnulib module that has been requested shall be considered present
+# or not.
+m4_define([gl_MODULE_INDICATOR_CONDITION], [1])
+
+# gl_MODULE_INDICATOR_SET_VARIABLE([modulename])
+# sets the shell variable that indicates the presence of the given module to
+# a C preprocessor expression that will evaluate to 1.
+AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE],
+[
+ gl_MODULE_INDICATOR_SET_VARIABLE_AUX(
+ [GNULIB_[]m4_translit([[$1]],
+ [abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])],
+ [gl_MODULE_INDICATOR_CONDITION])
+])
+
+# gl_MODULE_INDICATOR_SET_VARIABLE_AUX([variable])
+# modifies the shell variable to include the gl_MODULE_INDICATOR_CONDITION.
+# The shell variable's value is a C preprocessor expression that evaluates
+# to 0 or 1.
+AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX],
+[
+ m4_if(m4_defn([gl_MODULE_INDICATOR_CONDITION]), [1],
+ [
+ dnl Simplify the expression VALUE || 1 to 1.
+ $1=1
+ ],
+ [gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([$1],
+ [gl_MODULE_INDICATOR_CONDITION])])
+])
+
+# gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([variable], [condition])
+# modifies the shell variable to include the given condition. The shell
+# variable's value is a C preprocessor expression that evaluates to 0 or 1.
+AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR],
+[
+ dnl Simplify the expression 1 || CONDITION to 1.
+ if test "$[]$1" != 1; then
+ dnl Simplify the expression 0 || CONDITION to CONDITION.
+ if test "$[]$1" = 0; then
+ $1=$2
+ else
+ $1="($[]$1 || $2)"
+ fi
+ fi
+])
+
+# gl_MODULE_INDICATOR([modulename])
+# defines a C macro indicating the presence of the given module
+# in a location where it can be used.
+# | Value | Value |
+# | in lib/ | in tests/ |
+# --------------------------------------------+---------+-----------+
+# Module present among main modules: | 1 | 1 |
+# --------------------------------------------+---------+-----------+
+# Module present among tests-related modules: | 0 | 1 |
+# --------------------------------------------+---------+-----------+
+# Module not present at all: | 0 | 0 |
+# --------------------------------------------+---------+-----------+
+AC_DEFUN([gl_MODULE_INDICATOR],
+[
+ AC_DEFINE_UNQUOTED([GNULIB_]m4_translit([[$1]],
+ [abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]),
+ [gl_MODULE_INDICATOR_CONDITION],
+ [Define to a C preprocessor expression that evaluates to 1 or 0,
+ depending whether the gnulib module $1 shall be considered present.])
+])
+
+# gl_MODULE_INDICATOR_FOR_TESTS([modulename])
+# defines a C macro indicating the presence of the given module
+# in lib or tests. This is useful to determine whether the module
+# should be tested.
+# | Value | Value |
+# | in lib/ | in tests/ |
+# --------------------------------------------+---------+-----------+
+# Module present among main modules: | 1 | 1 |
+# --------------------------------------------+---------+-----------+
+# Module present among tests-related modules: | 1 | 1 |
+# --------------------------------------------+---------+-----------+
+# Module not present at all: | 0 | 0 |
+# --------------------------------------------+---------+-----------+
+AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS],
+[
+ AC_DEFINE([GNULIB_TEST_]m4_translit([[$1]],
+ [abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1],
+ [Define to 1 when the gnulib module $1 should be tested.])
+])
+
+# gl_ASSERT_NO_GNULIB_POSIXCHECK
+# asserts that there will never be a need to #define GNULIB_POSIXCHECK.
+# and thereby enables an optimization of configure and config.h.
+# Used by Emacs.
+AC_DEFUN([gl_ASSERT_NO_GNULIB_POSIXCHECK],
+[
+ dnl Override gl_WARN_ON_USE_PREPARE.
+ dnl But hide this definition from 'aclocal'.
+ AC_DEFUN([gl_W][ARN_ON_USE_PREPARE], [])
+])
+
+# gl_ASSERT_NO_GNULIB_TESTS
+# asserts that there will be no gnulib tests in the scope of the configure.ac
+# and thereby enables an optimization of config.h.
+# Used by Emacs.
+AC_DEFUN([gl_ASSERT_NO_GNULIB_TESTS],
+[
+ dnl Override gl_MODULE_INDICATOR_FOR_TESTS.
+ AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], [])
+])
+
+# Test whether <features.h> exists.
+# Set HAVE_FEATURES_H.
+AC_DEFUN([gl_FEATURES_H],
+[
+ AC_CHECK_HEADERS_ONCE([features.h])
+ if test $ac_cv_header_features_h = yes; then
+ HAVE_FEATURES_H=1
+ else
+ HAVE_FEATURES_H=0
+ fi
+ AC_SUBST([HAVE_FEATURES_H])
+])
+
+# AS_VAR_IF(VAR, VALUE, [IF-MATCH], [IF-NOT-MATCH])
+# ----------------------------------------------------
+# Backport of autoconf-2.63b's macro.
+# Remove this macro when we can assume autoconf >= 2.64.
+m4_ifndef([AS_VAR_IF],
+[m4_define([AS_VAR_IF],
+[AS_IF([test x"AS_VAR_GET([$1])" = x""$2], [$3], [$4])])])
+
+# gl_PROG_CC_C99
+# Modifies the value of the shell variable CC in an attempt to make $CC
+# understand ISO C99 source code.
+# This is like AC_PROG_CC_C99, except that
+# - AC_PROG_CC_C99 does not mix well with AC_PROG_CC_STDC
+# <https://lists.gnu.org/r/bug-gnulib/2011-09/msg00367.html>,
+# but many more packages use AC_PROG_CC_STDC than AC_PROG_CC_C99
+# <https://lists.gnu.org/r/bug-gnulib/2011-09/msg00441.html>.
+# Remaining problems:
+# - When AC_PROG_CC_STDC is invoked twice, it adds the C99 enabling options
+# to CC twice
+# <https://lists.gnu.org/r/bug-gnulib/2011-09/msg00431.html>.
+# - AC_PROG_CC_STDC is likely to change now that C11 is an ISO standard.
+AC_DEFUN([gl_PROG_CC_C99],
+[
+ dnl Change that version number to the minimum Autoconf version that supports
+ dnl mixing AC_PROG_CC_C99 calls with AC_PROG_CC_STDC calls.
+ m4_version_prereq([9.0],
+ [AC_REQUIRE([AC_PROG_CC_C99])],
+ [AC_REQUIRE([AC_PROG_CC_STDC])])
+])
+
+# gl_PROG_AR_RANLIB
+# Determines the values for AR, ARFLAGS, RANLIB that fit with the compiler.
+# The user can set the variables AR, ARFLAGS, RANLIB if he wants to override
+# the values.
+AC_DEFUN([gl_PROG_AR_RANLIB],
+[
+ dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler
+ dnl as "cc", and GCC as "gcc". They have different object file formats and
+ dnl library formats. In particular, the GNU binutils programs ar and ranlib
+ dnl produce libraries that work only with gcc, not with cc.
+ AC_REQUIRE([AC_PROG_CC])
+ dnl The '][' hides this use from 'aclocal'.
+ AC_BEFORE([$0], [A][M_PROG_AR])
+ AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler],
+ [
+ AC_EGREP_CPP([Amsterdam],
+ [
+#ifdef __ACK__
+Amsterdam
+#endif
+ ],
+ [gl_cv_c_amsterdam_compiler=yes],
+ [gl_cv_c_amsterdam_compiler=no])
+ ])
+
+ dnl Don't compete with AM_PROG_AR's decision about AR/ARFLAGS if we are not
+ dnl building with __ACK__.
+ if test $gl_cv_c_amsterdam_compiler = yes; then
+ if test -z "$AR"; then
+ AR='cc -c.a'
+ fi
+ if test -z "$ARFLAGS"; then
+ ARFLAGS='-o'
+ fi
+ else
+ dnl AM_PROG_AR was added in automake v1.11.2. AM_PROG_AR does not AC_SUBST
+ dnl ARFLAGS variable (it is filed into Makefile.in directly by automake
+ dnl script on-demand, if not specified by ./configure of course).
+ dnl Don't AC_REQUIRE the AM_PROG_AR otherwise the code for __ACK__ above
+ dnl will be ignored. Also, pay attention to call AM_PROG_AR in else block
+ dnl because AM_PROG_AR is written so it could re-set AR variable even for
+ dnl __ACK__. It may seem like its easier to avoid calling the macro here,
+ dnl but we need to AC_SUBST both AR/ARFLAGS (thus those must have some good
+ dnl default value and automake should usually know them).
+ dnl
+ dnl The '][' hides this use from 'aclocal'.
+ m4_ifdef([A][M_PROG_AR], [A][M_PROG_AR], [:])
+ fi
+
+ dnl In case the code above has not helped with setting AR/ARFLAGS, use
+ dnl Automake-documented default values for AR and ARFLAGS, but prefer
+ dnl ${host}-ar over ar (useful for cross-compiling).
+ AC_CHECK_TOOL([AR], [ar], [ar])
+ if test -z "$ARFLAGS"; then
+ ARFLAGS='cr'
+ fi
+
+ AC_SUBST([AR])
+ AC_SUBST([ARFLAGS])
+ if test -z "$RANLIB"; then
+ if test $gl_cv_c_amsterdam_compiler = yes; then
+ RANLIB=':'
+ else
+ dnl Use the ranlib program if it is available.
+ AC_PROG_RANLIB
+ fi
+ fi
+ AC_SUBST([RANLIB])
+])
+
+# AC_C_RESTRICT
+# This definition is copied from post-2.69 Autoconf and overrides the
+# AC_C_RESTRICT macro from autoconf 2.60..2.69. It can be removed
+# once autoconf >= 2.70 can be assumed. It's painful to check version
+# numbers, and in practice this macro is more up-to-date than Autoconf
+# is, so override Autoconf unconditionally.
+AC_DEFUN([AC_C_RESTRICT],
+[AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict],
+ [ac_cv_c_restrict=no
+ # The order here caters to the fact that C++ does not require restrict.
+ for ac_kw in __restrict __restrict__ _Restrict restrict; do
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[typedef int *int_ptr;
+ int foo (int_ptr $ac_kw ip) { return ip[0]; }
+ int bar (int [$ac_kw]); /* Catch GCC bug 14050. */
+ int bar (int ip[$ac_kw]) { return ip[0]; }
+ ]],
+ [[int s[1];
+ int *$ac_kw t = s;
+ t[0] = 0;
+ return foo (t) + bar (t);
+ ]])],
+ [ac_cv_c_restrict=$ac_kw])
+ test "$ac_cv_c_restrict" != no && break
+ done
+ ])
+ AH_VERBATIM([restrict],
+[/* Define to the equivalent of the C99 'restrict' keyword, or to
+ nothing if this is not supported. Do not define if restrict is
+ supported directly. */
+#undef restrict
+/* Work around a bug in older versions of Sun C++, which did not
+ #define __restrict__ or support _Restrict or __restrict__
+ even though the corresponding Sun C compiler ended up with
+ "#define restrict _Restrict" or "#define restrict __restrict__"
+ in the previous line. This workaround can be removed once
+ we assume Oracle Developer Studio 12.5 (2016) or later. */
+#if defined __SUNPRO_CC && !defined __RESTRICT && !defined __restrict__
+# define _Restrict
+# define __restrict__
+#endif])
+ case $ac_cv_c_restrict in
+ restrict) ;;
+ no) AC_DEFINE([restrict], []) ;;
+ *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;;
+ esac
+])# AC_C_RESTRICT
+
+# gl_BIGENDIAN
+# is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd.
+# Note that AC_REQUIRE([AC_C_BIGENDIAN]) does not work reliably because some
+# macros invoke AC_C_BIGENDIAN with arguments.
+AC_DEFUN([gl_BIGENDIAN],
+[
+ AC_C_BIGENDIAN
+])
+
+# gl_CACHE_VAL_SILENT(cache-id, command-to-set-it)
+# is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not
+# output a spurious "(cached)" mark in the midst of other configure output.
+# This macro should be used instead of AC_CACHE_VAL when it is not surrounded
+# by an AC_MSG_CHECKING/AC_MSG_RESULT pair.
+AC_DEFUN([gl_CACHE_VAL_SILENT],
+[
+ saved_as_echo_n="$as_echo_n"
+ as_echo_n=':'
+ AC_CACHE_VAL([$1], [$2])
+ as_echo_n="$saved_as_echo_n"
+])
+
+# AS_VAR_COPY was added in autoconf 2.63b
+m4_define_default([AS_VAR_COPY],
+[AS_LITERAL_IF([$1[]$2], [$1=$$2], [eval $1=\$$2])])
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
new file mode 100644
index 0000000..44d182d
--- /dev/null
+++ b/m4/gnulib-comp.m4
@@ -0,0 +1,481 @@
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This file is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this file. If not, see <https://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License,
+# this file may be distributed as part of a program that
+# contains a configuration script generated by Autoconf, under
+# the same distribution terms as the rest of that program.
+#
+# Generated by gnulib-tool.
+#
+# This file represents the compiled summary of the specification in
+# gnulib-cache.m4. It lists the computed macro invocations that need
+# to be invoked from configure.ac.
+# In projects that use version control, this file can be treated like
+# other built files.
+
+
+# This macro should be invoked from ./configure.ac, in the section
+# "Checks for programs", right after AC_PROG_CC, and certainly before
+# any checks for libraries, header files, types and library functions.
+AC_DEFUN([gl_EARLY],
+[
+ m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace
+ m4_pattern_allow([^gl_ES$])dnl a valid locale name
+ m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
+ m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable
+
+ # Pre-early section.
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_REQUIRE([gl_PROG_AR_RANLIB])
+
+ # Code from module absolute-header:
+ # Code from module access:
+ # Code from module alloca:
+ # Code from module alloca-opt:
+ # Code from module close:
+ # Code from module concat-filename:
+ # Code from module dirname-lgpl:
+ # Code from module dosname:
+ # Code from module double-slash-root:
+ # Code from module dup2:
+ # Code from module errno:
+ # Code from module error:
+ # Code from module exitfail:
+ # Code from module extensions:
+ # Code from module extern-inline:
+ # Code from module fcntl:
+ # Code from module fcntl-h:
+ # Code from module fd-hook:
+ # Code from module fdl:
+ # Code from module filename:
+ # Code from module findprog-in:
+ # Code from module getdtablesize:
+ # Code from module getloadavg:
+ # Code from module getprogname:
+ # Code from module gettext-h:
+ # Code from module host-cpu-c-abi:
+ # Code from module include_next:
+ # Code from module intprops:
+ # Code from module limits-h:
+ # Code from module make-glob:
+ # Code from module malloc-posix:
+ # Code from module msvc-inval:
+ # Code from module msvc-nothrow:
+ # Code from module multiarch:
+ # Code from module snippet/_Noreturn:
+ # Code from module snippet/arg-nonnull:
+ # Code from module snippet/c++defs:
+ # Code from module snippet/warn-on-use:
+ # Code from module ssize_t:
+ # Code from module stdbool:
+ # Code from module stddef:
+ # Code from module stdint:
+ # Code from module stdio:
+ # Code from module stdlib:
+ # Code from module stpcpy:
+ # Code from module strerror:
+ # Code from module strerror-override:
+ # Code from module string:
+ # Code from module sys_types:
+ # Code from module unistd:
+ # Code from module verify:
+ # Code from module xalloc:
+ # Code from module xalloc-die:
+ # Code from module xalloc-oversized:
+ # Code from module xconcat-filename:
+])
+
+# This macro should be invoked from ./configure.ac, in the section
+# "Check for header files, types and library functions".
+AC_DEFUN([gl_INIT],
+[
+ AM_CONDITIONAL([GL_COND_LIBTOOL], [false])
+ gl_cond_libtool=false
+ gl_libdeps=
+ gl_ltlibdeps=
+ gl_m4_base='m4'
+ m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ]))
+ m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS]))
+ m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES]))
+ m4_pushdef([gl_LIBSOURCES_LIST], [])
+ m4_pushdef([gl_LIBSOURCES_DIR], [])
+ gl_COMMON
+ gl_source_base='lib'
+ gl_FUNC_ACCESS
+ if test $REPLACE_ACCESS = 1; then
+ AC_LIBOBJ([access])
+ fi
+ gl_UNISTD_MODULE_INDICATOR([access])
+ gl_FUNC_ALLOCA
+ gl_FUNC_CLOSE
+ if test $REPLACE_CLOSE = 1; then
+ AC_LIBOBJ([close])
+ fi
+ gl_UNISTD_MODULE_INDICATOR([close])
+ gl_DIRNAME_LGPL
+ gl_DOUBLE_SLASH_ROOT
+ gl_FUNC_DUP2
+ if test $HAVE_DUP2 = 0 || test $REPLACE_DUP2 = 1; then
+ AC_LIBOBJ([dup2])
+ gl_PREREQ_DUP2
+ fi
+ gl_UNISTD_MODULE_INDICATOR([dup2])
+ gl_HEADER_ERRNO_H
+ gl_ERROR
+ if test $ac_cv_lib_error_at_line = no; then
+ AC_LIBOBJ([error])
+ gl_PREREQ_ERROR
+ fi
+ m4_ifdef([AM_XGETTEXT_OPTION],
+ [AM_][XGETTEXT_OPTION([--flag=error:3:c-format])
+ AM_][XGETTEXT_OPTION([--flag=error_at_line:5:c-format])])
+ AC_REQUIRE([gl_EXTERN_INLINE])
+ gl_FUNC_FCNTL
+ if test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1; then
+ AC_LIBOBJ([fcntl])
+ fi
+ gl_FCNTL_MODULE_INDICATOR([fcntl])
+ gl_FCNTL_H
+ gl_FINDPROG_IN
+ gl_FUNC_GETDTABLESIZE
+ if test $HAVE_GETDTABLESIZE = 0 || test $REPLACE_GETDTABLESIZE = 1; then
+ AC_LIBOBJ([getdtablesize])
+ gl_PREREQ_GETDTABLESIZE
+ fi
+ gl_UNISTD_MODULE_INDICATOR([getdtablesize])
+ gl_GETLOADAVG
+ if test $HAVE_GETLOADAVG = 0; then
+ AC_LIBOBJ([getloadavg])
+ gl_PREREQ_GETLOADAVG
+ fi
+ gl_STDLIB_MODULE_INDICATOR([getloadavg])
+ gl_FUNC_GETPROGNAME
+ AC_SUBST([LIBINTL])
+ AC_SUBST([LTLIBINTL])
+ AC_REQUIRE([gl_HOST_CPU_C_ABI])
+ gl_LIMITS_H
+ # Check the system to see if it provides GNU glob. If not, use our
+ # local version.
+ AC_CACHE_CHECK([if system libc has GNU glob], [make_cv_sys_gnu_glob],
+ [ AC_EGREP_CPP([gnu glob],[
+ #include <features.h>
+ #include <glob.h>
+ #include <fnmatch.h>
+ #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1
+ # include <gnu-versions.h>
+ # if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2
+ gnu glob
+ # endif
+ #endif],
+ [make_cv_sys_gnu_glob=yes],
+ [make_cv_sys_gnu_glob=no])])
+ # Tell automake about this, so it can build the right .c files.
+ AM_CONDITIONAL([USE_SYSTEM_GLOB], [test "$make_cv_sys_gnu_glob" = yes])
+ # Tell build.sh which to use
+ USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob"
+ AC_SUBST([USE_SYSTEM_GLOB])
+ gl_FUNC_MALLOC_POSIX
+ if test $REPLACE_MALLOC = 1; then
+ AC_LIBOBJ([malloc])
+ fi
+ gl_STDLIB_MODULE_INDICATOR([malloc-posix])
+ AC_REQUIRE([gl_MSVC_INVAL])
+ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+ AC_LIBOBJ([msvc-inval])
+ fi
+ AC_REQUIRE([gl_MSVC_NOTHROW])
+ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+ AC_LIBOBJ([msvc-nothrow])
+ fi
+ gl_MODULE_INDICATOR([msvc-nothrow])
+ gl_MULTIARCH
+ gt_TYPE_SSIZE_T
+ AM_STDBOOL_H
+ gl_STDDEF_H
+ gl_STDINT_H
+ gl_STDIO_H
+ gl_STDLIB_H
+ gl_FUNC_STPCPY
+ if test $HAVE_STPCPY = 0; then
+ AC_LIBOBJ([stpcpy])
+ gl_PREREQ_STPCPY
+ fi
+ gl_STRING_MODULE_INDICATOR([stpcpy])
+ gl_FUNC_STRERROR
+ if test $REPLACE_STRERROR = 1; then
+ AC_LIBOBJ([strerror])
+ fi
+ gl_MODULE_INDICATOR([strerror])
+ gl_STRING_MODULE_INDICATOR([strerror])
+ AC_REQUIRE([gl_HEADER_ERRNO_H])
+ AC_REQUIRE([gl_FUNC_STRERROR_0])
+ if test -n "$ERRNO_H" || test $REPLACE_STRERROR_0 = 1; then
+ AC_LIBOBJ([strerror-override])
+ gl_PREREQ_SYS_H_WINSOCK2
+ fi
+ gl_HEADER_STRING_H
+ gl_SYS_TYPES_H
+ AC_PROG_MKDIR_P
+ gl_UNISTD_H
+ gl_XALLOC
+ # End of code from modules
+ m4_ifval(gl_LIBSOURCES_LIST, [
+ m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ ||
+ for gl_file in ]gl_LIBSOURCES_LIST[ ; do
+ if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then
+ echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2
+ exit 1
+ fi
+ done])dnl
+ m4_if(m4_sysval, [0], [],
+ [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
+ ])
+ m4_popdef([gl_LIBSOURCES_DIR])
+ m4_popdef([gl_LIBSOURCES_LIST])
+ m4_popdef([AC_LIBSOURCES])
+ m4_popdef([AC_REPLACE_FUNCS])
+ m4_popdef([AC_LIBOBJ])
+ AC_CONFIG_COMMANDS_PRE([
+ gl_libobjs=
+ gl_ltlibobjs=
+ if test -n "$gl_LIBOBJS"; then
+ # Remove the extension.
+ sed_drop_objext='s/\.o$//;s/\.obj$//'
+ for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do
+ gl_libobjs="$gl_libobjs $i.$ac_objext"
+ gl_ltlibobjs="$gl_ltlibobjs $i.lo"
+ done
+ fi
+ AC_SUBST([gl_LIBOBJS], [$gl_libobjs])
+ AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs])
+ ])
+ gltests_libdeps=
+ gltests_ltlibdeps=
+ m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ]))
+ m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS]))
+ m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES]))
+ m4_pushdef([gltests_LIBSOURCES_LIST], [])
+ m4_pushdef([gltests_LIBSOURCES_DIR], [])
+ gl_COMMON
+ gl_source_base='tests'
+changequote(,)dnl
+ gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS
+changequote([, ])dnl
+ AC_SUBST([gltests_WITNESS])
+ gl_module_indicator_condition=$gltests_WITNESS
+ m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition])
+ m4_popdef([gl_MODULE_INDICATOR_CONDITION])
+ m4_ifval(gltests_LIBSOURCES_LIST, [
+ m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ ||
+ for gl_file in ]gltests_LIBSOURCES_LIST[ ; do
+ if test ! -r ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file ; then
+ echo "missing file ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file" >&2
+ exit 1
+ fi
+ done])dnl
+ m4_if(m4_sysval, [0], [],
+ [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
+ ])
+ m4_popdef([gltests_LIBSOURCES_DIR])
+ m4_popdef([gltests_LIBSOURCES_LIST])
+ m4_popdef([AC_LIBSOURCES])
+ m4_popdef([AC_REPLACE_FUNCS])
+ m4_popdef([AC_LIBOBJ])
+ AC_CONFIG_COMMANDS_PRE([
+ gltests_libobjs=
+ gltests_ltlibobjs=
+ if test -n "$gltests_LIBOBJS"; then
+ # Remove the extension.
+ sed_drop_objext='s/\.o$//;s/\.obj$//'
+ for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do
+ gltests_libobjs="$gltests_libobjs $i.$ac_objext"
+ gltests_ltlibobjs="$gltests_ltlibobjs $i.lo"
+ done
+ fi
+ AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs])
+ AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs])
+ ])
+ LIBGNU_LIBDEPS="$gl_libdeps"
+ AC_SUBST([LIBGNU_LIBDEPS])
+ LIBGNU_LTLIBDEPS="$gl_ltlibdeps"
+ AC_SUBST([LIBGNU_LTLIBDEPS])
+])
+
+# Like AC_LIBOBJ, except that the module name goes
+# into gl_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gl_LIBOBJ], [
+ AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl
+ gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext"
+])
+
+# Like AC_REPLACE_FUNCS, except that the module name goes
+# into gl_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gl_REPLACE_FUNCS], [
+ m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
+ AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)])
+])
+
+# Like AC_LIBSOURCES, except the directory where the source file is
+# expected is derived from the gnulib-tool parameterization,
+# and alloca is special cased (for the alloca-opt module).
+# We could also entirely rely on EXTRA_lib..._SOURCES.
+AC_DEFUN([gl_LIBSOURCES], [
+ m4_foreach([_gl_NAME], [$1], [
+ m4_if(_gl_NAME, [alloca.c], [], [
+ m4_define([gl_LIBSOURCES_DIR], [lib])
+ m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ])
+ ])
+ ])
+])
+
+# Like AC_LIBOBJ, except that the module name goes
+# into gltests_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gltests_LIBOBJ], [
+ AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl
+ gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext"
+])
+
+# Like AC_REPLACE_FUNCS, except that the module name goes
+# into gltests_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gltests_REPLACE_FUNCS], [
+ m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
+ AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)])
+])
+
+# Like AC_LIBSOURCES, except the directory where the source file is
+# expected is derived from the gnulib-tool parameterization,
+# and alloca is special cased (for the alloca-opt module).
+# We could also entirely rely on EXTRA_lib..._SOURCES.
+AC_DEFUN([gltests_LIBSOURCES], [
+ m4_foreach([_gl_NAME], [$1], [
+ m4_if(_gl_NAME, [alloca.c], [], [
+ m4_define([gltests_LIBSOURCES_DIR], [tests])
+ m4_append([gltests_LIBSOURCES_LIST], _gl_NAME, [ ])
+ ])
+ ])
+])
+
+# This macro records the list of files which have been installed by
+# gnulib-tool and may be removed by future gnulib-tool invocations.
+AC_DEFUN([gl_FILE_LIST], [
+ doc/fdl.texi
+ lib/_Noreturn.h
+ lib/access.c
+ lib/alloca.c
+ lib/alloca.in.h
+ lib/arg-nonnull.h
+ lib/basename-lgpl.c
+ lib/c++defs.h
+ lib/close.c
+ lib/concat-filename.c
+ lib/concat-filename.h
+ lib/dirname-lgpl.c
+ lib/dirname.h
+ lib/dosname.h
+ lib/dup2.c
+ lib/errno.in.h
+ lib/error.c
+ lib/error.h
+ lib/exitfail.c
+ lib/exitfail.h
+ lib/fcntl.c
+ lib/fcntl.in.h
+ lib/fd-hook.c
+ lib/fd-hook.h
+ lib/filename.h
+ lib/findprog-in.c
+ lib/findprog.h
+ lib/getdtablesize.c
+ lib/getloadavg.c
+ lib/getprogname.c
+ lib/getprogname.h
+ lib/gettext.h
+ lib/intprops.h
+ lib/limits.in.h
+ lib/malloc.c
+ lib/msvc-inval.c
+ lib/msvc-inval.h
+ lib/msvc-nothrow.c
+ lib/msvc-nothrow.h
+ lib/stdbool.in.h
+ lib/stddef.in.h
+ lib/stdint.in.h
+ lib/stdio.in.h
+ lib/stdlib.in.h
+ lib/stpcpy.c
+ lib/strerror-override.c
+ lib/strerror-override.h
+ lib/strerror.c
+ lib/string.in.h
+ lib/stripslash.c
+ lib/sys_types.in.h
+ lib/unistd.c
+ lib/unistd.in.h
+ lib/verify.h
+ lib/warn-on-use.h
+ lib/xalloc-die.c
+ lib/xalloc-oversized.h
+ lib/xalloc.h
+ lib/xconcat-filename.c
+ lib/xmalloc.c
+ m4/00gnulib.m4
+ m4/absolute-header.m4
+ m4/access.m4
+ m4/alloca.m4
+ m4/asm-underscore.m4
+ m4/close.m4
+ m4/dirname.m4
+ m4/double-slash-root.m4
+ m4/dup2.m4
+ m4/eaccess.m4
+ m4/errno_h.m4
+ m4/error.m4
+ m4/extensions.m4
+ m4/extern-inline.m4
+ m4/fcntl-o.m4
+ m4/fcntl.m4
+ m4/fcntl_h.m4
+ m4/findprog-in.m4
+ m4/getdtablesize.m4
+ m4/getloadavg.m4
+ m4/getprogname.m4
+ m4/gnulib-common.m4
+ m4/host-cpu-c-abi.m4
+ m4/include_next.m4
+ m4/limits-h.m4
+ m4/malloc.m4
+ m4/msvc-inval.m4
+ m4/msvc-nothrow.m4
+ m4/multiarch.m4
+ m4/off_t.m4
+ m4/ssize_t.m4
+ m4/stdbool.m4
+ m4/stddef_h.m4
+ m4/stdint.m4
+ m4/stdio_h.m4
+ m4/stdlib_h.m4
+ m4/stpcpy.m4
+ m4/strerror.m4
+ m4/string_h.m4
+ m4/sys_socket_h.m4
+ m4/sys_types_h.m4
+ m4/unistd_h.m4
+ m4/warn-on-use.m4
+ m4/wchar_t.m4
+ m4/wint_t.m4
+ m4/xalloc.m4
+])
diff --git a/m4/host-cpu-c-abi.m4 b/m4/host-cpu-c-abi.m4
new file mode 100644
index 0000000..6db2aa2
--- /dev/null
+++ b/m4/host-cpu-c-abi.m4
@@ -0,0 +1,675 @@
+# host-cpu-c-abi.m4 serial 13
+dnl Copyright (C) 2002-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible and Sam Steingold.
+
+dnl Sets the HOST_CPU variable to the canonical name of the CPU.
+dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its
+dnl C language ABI (application binary interface).
+dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in
+dnl config.h.
+dnl
+dnl This canonical name can be used to select a particular assembly language
+dnl source file that will interoperate with C code on the given host.
+dnl
+dnl For example:
+dnl * 'i386' and 'sparc' are different canonical names, because code for i386
+dnl will not run on SPARC CPUs and vice versa. They have different
+dnl instruction sets.
+dnl * 'sparc' and 'sparc64' are different canonical names, because code for
+dnl 'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code
+dnl contains 32-bit instructions, whereas 'sparc64' code contains 64-bit
+dnl instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit
+dnl mode, but not both.
+dnl * 'mips' and 'mipsn32' are different canonical names, because they use
+dnl different argument passing and return conventions for C functions, and
+dnl although the instruction set of 'mips' is a large subset of the
+dnl instruction set of 'mipsn32'.
+dnl * 'mipsn32' and 'mips64' are different canonical names, because they use
+dnl different sizes for the C types like 'int' and 'void *', and although
+dnl the instruction sets of 'mipsn32' and 'mips64' are the same.
+dnl * The same canonical name is used for different endiannesses. You can
+dnl determine the endianness through preprocessor symbols:
+dnl - 'arm': test __ARMEL__.
+dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL.
+dnl - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN.
+dnl * The same name 'i386' is used for CPUs of type i386, i486, i586
+dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because
+dnl - Instructions that do not exist on all of these CPUs (cmpxchg,
+dnl MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your
+dnl assembly language source files use such instructions, you will
+dnl need to make the distinction.
+dnl - Speed of execution of the common instruction set is reasonable across
+dnl the entire family of CPUs. If you have assembly language source files
+dnl that are optimized for particular CPU types (like GNU gmp has), you
+dnl will need to make the distinction.
+dnl See <https://en.wikipedia.org/wiki/X86_instruction_listings>.
+AC_DEFUN([gl_HOST_CPU_C_ABI],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([gl_C_ASM])
+ AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi],
+ [case "$host_cpu" in
+
+changequote(,)dnl
+ i[34567]86 )
+changequote([,])dnl
+ gl_cv_host_cpu_c_abi=i386
+ ;;
+
+ x86_64 )
+ # On x86_64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
+ # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
+ # with native Windows (mingw, MSVC).
+ # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if (defined __x86_64__ || defined __amd64__ \
+ || defined _M_X64 || defined _M_AMD64)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __ILP32__ || defined _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=x86_64-x32],
+ [gl_cv_host_cpu_c_abi=x86_64])],
+ [gl_cv_host_cpu_c_abi=i386])
+ ;;
+
+changequote(,)dnl
+ alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] )
+changequote([,])dnl
+ gl_cv_host_cpu_c_abi=alpha
+ ;;
+
+ arm* | aarch64 )
+ # Assume arm with EABI.
+ # On arm64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
+ # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef __aarch64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __ILP32__ || defined _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=arm64-ilp32],
+ [gl_cv_host_cpu_c_abi=arm64])],
+ [# Don't distinguish little-endian and big-endian arm, since they
+ # don't require different machine code for simple operations and
+ # since the user can distinguish them through the preprocessor
+ # defines __ARMEL__ vs. __ARMEB__.
+ # But distinguish arm which passes floating-point arguments and
+ # return values in integer registers (r0, r1, ...) - this is
+ # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which
+ # passes them in float registers (s0, s1, ...) and double registers
+ # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer
+ # sets the preprocessor defines __ARM_PCS (for the first case) and
+ # __ARM_PCS_VFP (for the second case), but older GCC does not.
+ echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c
+ # Look for a reference to the register d0 in the .s file.
+ AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1
+ if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then
+ gl_cv_host_cpu_c_abi=armhf
+ else
+ gl_cv_host_cpu_c_abi=arm
+ fi
+ rm -f conftest*
+ ])
+ ;;
+
+ hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
+ # On hppa, the C compiler may be generating 32-bit code or 64-bit
+ # code. In the latter case, it defines _LP64 and __LP64__.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=hppa64],
+ [gl_cv_host_cpu_c_abi=hppa])
+ ;;
+
+ ia64* )
+ # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
+ # 32-bit code. In the latter case, it defines _ILP32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=ia64-ilp32],
+ [gl_cv_host_cpu_c_abi=ia64])
+ ;;
+
+ mips* )
+ # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
+ # at 32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=mips64],
+ [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but
+ # may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIN32.
+ # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but
+ # may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIO32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if (_MIPS_SIM == _ABIN32)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=mipsn32],
+ [gl_cv_host_cpu_c_abi=mips])])
+ ;;
+
+ powerpc* )
+ # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
+ # No need to distinguish them here; the caller may distinguish
+ # them based on the OS.
+ # On powerpc64 systems, the C compiler may still be generating
+ # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
+ # be generating 64-bit code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __powerpc64__ || defined _ARCH_PPC64
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [# On powerpc64, there are two ABIs on Linux: The AIX compatible
+ # one and the ELFv2 one. The latter defines _CALL_ELF=2.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined _CALL_ELF && _CALL_ELF == 2
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=powerpc64-elfv2],
+ [gl_cv_host_cpu_c_abi=powerpc64])
+ ],
+ [gl_cv_host_cpu_c_abi=powerpc])
+ ;;
+
+ rs6000 )
+ gl_cv_host_cpu_c_abi=powerpc
+ ;;
+
+ riscv32 | riscv64 )
+ # There are 2 architectures (with variants): rv32* and rv64*.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if __riscv_xlen == 64
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [cpu=riscv64],
+ [cpu=riscv32])
+ # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
+ # Size of 'long' and 'void *':
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [main_abi=lp64],
+ [main_abi=ilp32])
+ # Float ABIs:
+ # __riscv_float_abi_double:
+ # 'float' and 'double' are passed in floating-point registers.
+ # __riscv_float_abi_single:
+ # 'float' are passed in floating-point registers.
+ # __riscv_float_abi_soft:
+ # No values are passed in floating-point registers.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __riscv_float_abi_double
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [float_abi=d],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __riscv_float_abi_single
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [float_abi=f],
+ [float_abi=''])
+ ])
+ gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}"
+ ;;
+
+ s390* )
+ # On s390x, the C compiler may be generating 64-bit (= s390x) code
+ # or 31-bit (= s390) code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __LP64__ || defined __s390x__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=s390x],
+ [gl_cv_host_cpu_c_abi=s390])
+ ;;
+
+ sparc | sparc64 )
+ # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
+ # C compiler still generates 32-bit code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __sparcv9 || defined __arch64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=sparc64],
+ [gl_cv_host_cpu_c_abi=sparc])
+ ;;
+
+ *)
+ gl_cv_host_cpu_c_abi="$host_cpu"
+ ;;
+ esac
+ ])
+
+ dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same.
+ HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'`
+ HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi"
+ AC_SUBST([HOST_CPU])
+ AC_SUBST([HOST_CPU_C_ABI])
+
+ # This was
+ # AC_DEFINE_UNQUOTED([__${HOST_CPU}__])
+ # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__])
+ # earlier, but KAI C++ 3.2d doesn't like this.
+ sed -e 's/-/_/g' >> confdefs.h <<EOF
+#ifndef __${HOST_CPU}__
+#define __${HOST_CPU}__ 1
+#endif
+#ifndef __${HOST_CPU_C_ABI}__
+#define __${HOST_CPU_C_ABI}__ 1
+#endif
+EOF
+ AH_TOP([/* CPU and C ABI indicator */
+#ifndef __i386__
+#undef __i386__
+#endif
+#ifndef __x86_64_x32__
+#undef __x86_64_x32__
+#endif
+#ifndef __x86_64__
+#undef __x86_64__
+#endif
+#ifndef __alpha__
+#undef __alpha__
+#endif
+#ifndef __arm__
+#undef __arm__
+#endif
+#ifndef __armhf__
+#undef __armhf__
+#endif
+#ifndef __arm64_ilp32__
+#undef __arm64_ilp32__
+#endif
+#ifndef __arm64__
+#undef __arm64__
+#endif
+#ifndef __hppa__
+#undef __hppa__
+#endif
+#ifndef __hppa64__
+#undef __hppa64__
+#endif
+#ifndef __ia64_ilp32__
+#undef __ia64_ilp32__
+#endif
+#ifndef __ia64__
+#undef __ia64__
+#endif
+#ifndef __m68k__
+#undef __m68k__
+#endif
+#ifndef __mips__
+#undef __mips__
+#endif
+#ifndef __mipsn32__
+#undef __mipsn32__
+#endif
+#ifndef __mips64__
+#undef __mips64__
+#endif
+#ifndef __powerpc__
+#undef __powerpc__
+#endif
+#ifndef __powerpc64__
+#undef __powerpc64__
+#endif
+#ifndef __powerpc64_elfv2__
+#undef __powerpc64_elfv2__
+#endif
+#ifndef __riscv32__
+#undef __riscv32__
+#endif
+#ifndef __riscv64__
+#undef __riscv64__
+#endif
+#ifndef __riscv32_ilp32__
+#undef __riscv32_ilp32__
+#endif
+#ifndef __riscv32_ilp32f__
+#undef __riscv32_ilp32f__
+#endif
+#ifndef __riscv32_ilp32d__
+#undef __riscv32_ilp32d__
+#endif
+#ifndef __riscv64_ilp32__
+#undef __riscv64_ilp32__
+#endif
+#ifndef __riscv64_ilp32f__
+#undef __riscv64_ilp32f__
+#endif
+#ifndef __riscv64_ilp32d__
+#undef __riscv64_ilp32d__
+#endif
+#ifndef __riscv64_lp64__
+#undef __riscv64_lp64__
+#endif
+#ifndef __riscv64_lp64f__
+#undef __riscv64_lp64f__
+#endif
+#ifndef __riscv64_lp64d__
+#undef __riscv64_lp64d__
+#endif
+#ifndef __s390__
+#undef __s390__
+#endif
+#ifndef __s390x__
+#undef __s390x__
+#endif
+#ifndef __sh__
+#undef __sh__
+#endif
+#ifndef __sparc__
+#undef __sparc__
+#endif
+#ifndef __sparc64__
+#undef __sparc64__
+#endif
+])
+
+])
+
+
+dnl Sets the HOST_CPU_C_ABI_32BIT variable to 'yes' if the C language ABI
+dnl (application binary interface) is a 32-bit one, to 'no' if it is a 64-bit
+dnl one, or to 'unknown' if unknown.
+dnl This is a simplified variant of gl_HOST_CPU_C_ABI.
+AC_DEFUN([gl_HOST_CPU_C_ABI_32BIT],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_CACHE_CHECK([32-bit host C ABI], [gl_cv_host_cpu_c_abi_32bit],
+ [if test -n "$gl_cv_host_cpu_c_abi"; then
+ case "$gl_cv_host_cpu_c_abi" in
+ i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc)
+ gl_cv_host_cpu_c_abi_32bit=yes ;;
+ x86_64 | alpha | arm64 | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 )
+ gl_cv_host_cpu_c_abi_32bit=no ;;
+ *)
+ gl_cv_host_cpu_c_abi_32bit=unknown ;;
+ esac
+ else
+ case "$host_cpu" in
+
+ # CPUs that only support a 32-bit ABI.
+ arc \
+ | bfin \
+ | cris* \
+ | csky \
+ | epiphany \
+ | ft32 \
+ | h8300 \
+ | m68k \
+ | microblaze | microblazeel \
+ | nds32 | nds32le | nds32be \
+ | nios2 | nios2eb | nios2el \
+ | or1k* \
+ | or32 \
+ | sh | sh[1234] | sh[1234]e[lb] \
+ | tic6x \
+ | xtensa* )
+ gl_cv_host_cpu_c_abi_32bit=yes
+ ;;
+
+ # CPUs that only support a 64-bit ABI.
+changequote(,)dnl
+ alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \
+ | mmix )
+changequote([,])dnl
+ gl_cv_host_cpu_c_abi_32bit=no
+ ;;
+
+changequote(,)dnl
+ i[34567]86 )
+changequote([,])dnl
+ gl_cv_host_cpu_c_abi_32bit=yes
+ ;;
+
+ x86_64 )
+ # On x86_64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
+ # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
+ # with native Windows (mingw, MSVC).
+ # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if (defined __x86_64__ || defined __amd64__ \
+ || defined _M_X64 || defined _M_AMD64) \
+ && !(defined __ILP32__ || defined _ILP32)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ arm* | aarch64 )
+ # Assume arm with EABI.
+ # On arm64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
+ # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
+ # On hppa, the C compiler may be generating 32-bit code or 64-bit
+ # code. In the latter case, it defines _LP64 and __LP64__.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ ia64* )
+ # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
+ # 32-bit code. In the latter case, it defines _ILP32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=yes],
+ [gl_cv_host_cpu_c_abi_32bit=no])
+ ;;
+
+ mips* )
+ # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
+ # at 32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ powerpc* )
+ # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
+ # No need to distinguish them here; the caller may distinguish
+ # them based on the OS.
+ # On powerpc64 systems, the C compiler may still be generating
+ # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
+ # be generating 64-bit code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __powerpc64__ || defined _ARCH_PPC64
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ rs6000 )
+ gl_cv_host_cpu_c_abi_32bit=yes
+ ;;
+
+ riscv32 | riscv64 )
+ # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
+ # Size of 'long' and 'void *':
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ s390* )
+ # On s390x, the C compiler may be generating 64-bit (= s390x) code
+ # or 31-bit (= s390) code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __LP64__ || defined __s390x__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ sparc | sparc64 )
+ # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
+ # C compiler still generates 32-bit code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __sparcv9 || defined __arch64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ *)
+ gl_cv_host_cpu_c_abi_32bit=unknown
+ ;;
+ esac
+ fi
+ ])
+
+ HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit"
+])
diff --git a/config/iconv.m4 b/m4/iconv.m4
index 4e37363..4e37363 100644
--- a/config/iconv.m4
+++ b/m4/iconv.m4
diff --git a/m4/include_next.m4 b/m4/include_next.m4
new file mode 100644
index 0000000..9009e29
--- /dev/null
+++ b/m4/include_next.m4
@@ -0,0 +1,224 @@
+# include_next.m4 serial 24
+dnl Copyright (C) 2006-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert and Derek Price.
+
+dnl Sets INCLUDE_NEXT, INCLUDE_NEXT_AS_FIRST_DIRECTIVE, PRAGMA_SYSTEM_HEADER,
+dnl and PRAGMA_COLUMNS.
+dnl
+dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to
+dnl 'include' otherwise.
+dnl
+dnl INCLUDE_NEXT_AS_FIRST_DIRECTIVE expands to 'include_next' if the compiler
+dnl supports it in the special case that it is the first include directive in
+dnl the given file, or to 'include' otherwise.
+dnl
+dnl PRAGMA_SYSTEM_HEADER can be used in files that contain #include_next,
+dnl so as to avoid GCC warnings when the gcc option -pedantic is used.
+dnl '#pragma GCC system_header' has the same effect as if the file was found
+dnl through the include search path specified with '-isystem' options (as
+dnl opposed to the search path specified with '-I' options). Namely, gcc
+dnl does not warn about some things, and on some systems (Solaris and Interix)
+dnl __STDC__ evaluates to 0 instead of to 1. The latter is an undesired side
+dnl effect; we are therefore careful to use 'defined __STDC__' or '1' instead
+dnl of plain '__STDC__'.
+dnl
+dnl PRAGMA_COLUMNS can be used in files that override system header files, so
+dnl as to avoid compilation errors on HP NonStop systems when the gnulib file
+dnl is included by a system header file that does a "#pragma COLUMNS 80" (which
+dnl has the effect of truncating the lines of that file and all files that it
+dnl includes to 80 columns) and the gnulib file has lines longer than 80
+dnl columns.
+
+AC_DEFUN([gl_INCLUDE_NEXT],
+[
+ AC_LANG_PREPROC_REQUIRE()
+ AC_CACHE_CHECK([whether the preprocessor supports include_next],
+ [gl_cv_have_include_next],
+ [rm -rf conftestd1a conftestd1b conftestd2
+ mkdir conftestd1a conftestd1b conftestd2
+ dnl IBM C 9.0, 10.1 (original versions, prior to the 2009-01 updates) on
+ dnl AIX 6.1 support include_next when used as first preprocessor directive
+ dnl in a file, but not when preceded by another include directive. Check
+ dnl for this bug by including <stdio.h>.
+ dnl Additionally, with this same compiler, include_next is a no-op when
+ dnl used in a header file that was included by specifying its absolute
+ dnl file name. Despite these two bugs, include_next is used in the
+ dnl compiler's <math.h>. By virtue of the second bug, we need to use
+ dnl include_next as well in this case.
+ cat <<EOF > conftestd1a/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+ cat <<EOF > conftestd1b/conftest.h
+#define DEFINED_IN_CONFTESTD1
+#include <stdio.h>
+#include_next <conftest.h>
+#ifdef DEFINED_IN_CONFTESTD2
+int foo;
+#else
+#error "include_next doesn't work"
+#endif
+EOF
+ cat <<EOF > conftestd2/conftest.h
+#ifndef DEFINED_IN_CONFTESTD1
+#error "include_next test doesn't work"
+#endif
+#define DEFINED_IN_CONFTESTD2
+EOF
+ gl_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2"
+dnl We intentionally avoid using AC_LANG_SOURCE here.
+ AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include <conftest.h>]],
+ [gl_cv_have_include_next=yes],
+ [CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
+ AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include <conftest.h>]],
+ [gl_cv_have_include_next=buggy],
+ [gl_cv_have_include_next=no])
+ ])
+ CPPFLAGS="$gl_save_CPPFLAGS"
+ rm -rf conftestd1a conftestd1b conftestd2
+ ])
+ PRAGMA_SYSTEM_HEADER=
+ if test $gl_cv_have_include_next = yes; then
+ INCLUDE_NEXT=include_next
+ INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+ if test -n "$GCC"; then
+ PRAGMA_SYSTEM_HEADER='#pragma GCC system_header'
+ fi
+ else
+ if test $gl_cv_have_include_next = buggy; then
+ INCLUDE_NEXT=include
+ INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
+ else
+ INCLUDE_NEXT=include
+ INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include
+ fi
+ fi
+ AC_SUBST([INCLUDE_NEXT])
+ AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE])
+ AC_SUBST([PRAGMA_SYSTEM_HEADER])
+ AC_CACHE_CHECK([whether system header files limit the line length],
+ [gl_cv_pragma_columns],
+ [dnl HP NonStop systems, which define __TANDEM, have this misfeature.
+ AC_EGREP_CPP([choke me],
+ [
+#ifdef __TANDEM
+choke me
+#endif
+ ],
+ [gl_cv_pragma_columns=yes],
+ [gl_cv_pragma_columns=no])
+ ])
+ if test $gl_cv_pragma_columns = yes; then
+ PRAGMA_COLUMNS="#pragma COLUMNS 10000"
+ else
+ PRAGMA_COLUMNS=
+ fi
+ AC_SUBST([PRAGMA_COLUMNS])
+])
+
+# gl_CHECK_NEXT_HEADERS(HEADER1 HEADER2 ...)
+# ------------------------------------------
+# For each arg foo.h, if #include_next works, define NEXT_FOO_H to be
+# '<foo.h>'; otherwise define it to be
+# '"///usr/include/foo.h"', or whatever other absolute file name is suitable.
+# Also, if #include_next works as first preprocessing directive in a file,
+# define NEXT_AS_FIRST_DIRECTIVE_FOO_H to be '<foo.h>'; otherwise define it to
+# be
+# '"///usr/include/foo.h"', or whatever other absolute file name is suitable.
+# That way, a header file with the following line:
+# #@INCLUDE_NEXT@ @NEXT_FOO_H@
+# or
+# #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_FOO_H@
+# behaves (after sed substitution) as if it contained
+# #include_next <foo.h>
+# even if the compiler does not support include_next.
+# The three "///" are to pacify Sun C 5.8, which otherwise would say
+# "warning: #include of /usr/include/... may be non-portable".
+# Use '""', not '<>', so that the /// cannot be confused with a C99 comment.
+# Note: This macro assumes that the header file is not empty after
+# preprocessing, i.e. it does not only define preprocessor macros but also
+# provides some type/enum definitions or function/variable declarations.
+#
+# This macro also checks whether each header exists, by invoking
+# AC_CHECK_HEADERS_ONCE or AC_CHECK_HEADERS on each argument.
+AC_DEFUN([gl_CHECK_NEXT_HEADERS],
+[
+ gl_NEXT_HEADERS_INTERNAL([$1], [check])
+])
+
+# gl_NEXT_HEADERS(HEADER1 HEADER2 ...)
+# ------------------------------------
+# Like gl_CHECK_NEXT_HEADERS, except do not check whether the headers exist.
+# This is suitable for headers like <stddef.h> that are standardized by C89
+# and therefore can be assumed to exist.
+AC_DEFUN([gl_NEXT_HEADERS],
+[
+ gl_NEXT_HEADERS_INTERNAL([$1], [assume])
+])
+
+# The guts of gl_CHECK_NEXT_HEADERS and gl_NEXT_HEADERS.
+AC_DEFUN([gl_NEXT_HEADERS_INTERNAL],
+[
+ AC_REQUIRE([gl_INCLUDE_NEXT])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ m4_if([$2], [check],
+ [AC_CHECK_HEADERS_ONCE([$1])
+ ])
+
+dnl FIXME: gl_next_header and gl_header_exists must be used unquoted
+dnl until we can assume autoconf 2.64 or newer.
+ m4_foreach_w([gl_HEADER_NAME], [$1],
+ [AS_VAR_PUSHDEF([gl_next_header],
+ [gl_cv_next_]m4_defn([gl_HEADER_NAME]))
+ if test $gl_cv_have_include_next = yes; then
+ AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>'])
+ else
+ AC_CACHE_CHECK(
+ [absolute name of <]m4_defn([gl_HEADER_NAME])[>],
+ m4_defn([gl_next_header]),
+ [m4_if([$2], [check],
+ [AS_VAR_PUSHDEF([gl_header_exists],
+ [ac_cv_header_]m4_defn([gl_HEADER_NAME]))
+ if test AS_VAR_GET(gl_header_exists) = yes; then
+ AS_VAR_POPDEF([gl_header_exists])
+ ])
+ gl_ABSOLUTE_HEADER_ONE(gl_HEADER_NAME)
+ AS_VAR_COPY([gl_header], [gl_cv_absolute_]AS_TR_SH(gl_HEADER_NAME))
+ AS_VAR_SET(gl_next_header, ['"'$gl_header'"'])
+ m4_if([$2], [check],
+ [else
+ AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>'])
+ fi
+ ])
+ ])
+ fi
+ AC_SUBST(
+ AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])),
+ [AS_VAR_GET(gl_next_header)])
+ if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+ gl_next_as_first_directive='<'gl_HEADER_NAME'>'
+ else
+ # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+ gl_next_as_first_directive=AS_VAR_GET(gl_next_header)
+ fi
+ AC_SUBST(
+ AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])),
+ [$gl_next_as_first_directive])
+ AS_VAR_POPDEF([gl_next_header])])
+])
+
+# Autoconf 2.68 added warnings for our use of AC_COMPILE_IFELSE;
+# this fallback is safe for all earlier autoconf versions.
+m4_define_default([AC_LANG_DEFINES_PROVIDED])
diff --git a/config/intlmacosx.m4 b/m4/intlmacosx.m4
index 8a045f6..8a045f6 100644
--- a/config/intlmacosx.m4
+++ b/m4/intlmacosx.m4
diff --git a/config/lib-ld.m4 b/m4/lib-ld.m4
index ddc569f..ddc569f 100644
--- a/config/lib-ld.m4
+++ b/m4/lib-ld.m4
diff --git a/config/lib-link.m4 b/m4/lib-link.m4
index 3522d99..3522d99 100644
--- a/config/lib-link.m4
+++ b/m4/lib-link.m4
diff --git a/config/lib-prefix.m4 b/m4/lib-prefix.m4
index 31f49e4..31f49e4 100644
--- a/config/lib-prefix.m4
+++ b/m4/lib-prefix.m4
diff --git a/m4/limits-h.m4 b/m4/limits-h.m4
new file mode 100644
index 0000000..0b4f092
--- /dev/null
+++ b/m4/limits-h.m4
@@ -0,0 +1,43 @@
+dnl Check whether limits.h has needed features.
+
+dnl Copyright 2016-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+AC_DEFUN_ONCE([gl_LIMITS_H],
+[
+ gl_CHECK_NEXT_HEADERS([limits.h])
+
+ AC_CACHE_CHECK([whether limits.h has LLONG_MAX, WORD_BIT, ULLONG_WIDTH etc.],
+ [gl_cv_header_limits_width],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+ #define __STDC_WANT_IEC_60559_BFP_EXT__ 1
+ #endif
+ #include <limits.h>
+ long long llm = LLONG_MAX;
+ int wb = WORD_BIT;
+ int ullw = ULLONG_WIDTH;
+ ]])],
+ [gl_cv_header_limits_width=yes],
+ [gl_cv_header_limits_width=no])])
+ if test "$gl_cv_header_limits_width" = yes; then
+ LIMITS_H=
+ else
+ LIMITS_H=limits.h
+ fi
+ AC_SUBST([LIMITS_H])
+ AM_CONDITIONAL([GL_GENERATE_LIMITS_H], [test -n "$LIMITS_H"])
+])
+
+dnl Unconditionally enables the replacement of <limits.h>.
+AC_DEFUN([gl_REPLACE_LIMITS_H],
+[
+ AC_REQUIRE([gl_LIMITS_H])
+ LIMITS_H='limits.h'
+ AM_CONDITIONAL([GL_GENERATE_LIMITS_H], [test -n "$LIMITS_H"])
+])
diff --git a/config/longlong.m4 b/m4/longlong.m4
index eefb37c..eefb37c 100644
--- a/config/longlong.m4
+++ b/m4/longlong.m4
diff --git a/m4/malloc.m4 b/m4/malloc.m4
new file mode 100644
index 0000000..c1f8ea3
--- /dev/null
+++ b/m4/malloc.m4
@@ -0,0 +1,104 @@
+# malloc.m4 serial 20
+dnl Copyright (C) 2007, 2009-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# This is adapted with modifications from upstream Autoconf here:
+# https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=04be2b7a29d65d9a08e64e8e56e594c91749598c
+AC_DEFUN([_AC_FUNC_MALLOC_IF],
+[
+ AC_REQUIRE([AC_HEADER_STDC])dnl
+ AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
+ AC_CHECK_HEADERS([stdlib.h])
+ AC_CACHE_CHECK([for GNU libc compatible malloc],
+ [ac_cv_func_malloc_0_nonnull],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#if defined STDC_HEADERS || defined HAVE_STDLIB_H
+ # include <stdlib.h>
+ #else
+ char *malloc ();
+ #endif
+ ]],
+ [[char *p = malloc (0);
+ int result = !p;
+ free (p);
+ return result;]])
+ ],
+ [ac_cv_func_malloc_0_nonnull=yes],
+ [ac_cv_func_malloc_0_nonnull=no],
+ [case "$host_os" in
+ # Guess yes on platforms where we know the result.
+ *-gnu* | gnu* | *-musl* | freebsd* | netbsd* | openbsd* \
+ | hpux* | solaris* | cygwin* | mingw*)
+ ac_cv_func_malloc_0_nonnull="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) ac_cv_func_malloc_0_nonnull="$gl_cross_guess_normal" ;;
+ esac
+ ])
+ ])
+ case "$ac_cv_func_malloc_0_nonnull" in
+ *yes)
+ $1
+ ;;
+ *)
+ $2
+ ;;
+ esac
+])# _AC_FUNC_MALLOC_IF
+
+# gl_FUNC_MALLOC_GNU
+# ------------------
+# Test whether 'malloc (0)' is handled like in GNU libc, and replace malloc if
+# it is not.
+AC_DEFUN([gl_FUNC_MALLOC_GNU],
+[
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+ dnl _AC_FUNC_MALLOC_IF is defined in Autoconf.
+ _AC_FUNC_MALLOC_IF(
+ [AC_DEFINE([HAVE_MALLOC_GNU], [1],
+ [Define to 1 if your system has a GNU libc compatible 'malloc'
+ function, and to 0 otherwise.])],
+ [AC_DEFINE([HAVE_MALLOC_GNU], [0])
+ REPLACE_MALLOC=1
+ ])
+])
+
+# gl_FUNC_MALLOC_POSIX
+# --------------------
+# Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it
+# fails), and replace malloc if it is not.
+AC_DEFUN([gl_FUNC_MALLOC_POSIX],
+[
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+ AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
+ if test $gl_cv_func_malloc_posix = yes; then
+ AC_DEFINE([HAVE_MALLOC_POSIX], [1],
+ [Define if the 'malloc' function is POSIX compliant.])
+ else
+ REPLACE_MALLOC=1
+ fi
+])
+
+# Test whether malloc, realloc, calloc are POSIX compliant,
+# Set gl_cv_func_malloc_posix to yes or no accordingly.
+AC_DEFUN([gl_CHECK_MALLOC_POSIX],
+[
+ AC_CACHE_CHECK([whether malloc, realloc, calloc are POSIX compliant],
+ [gl_cv_func_malloc_posix],
+ [
+ dnl It is too dangerous to try to allocate a large amount of memory:
+ dnl some systems go to their knees when you do that. So assume that
+ dnl all Unix implementations of the function are POSIX compliant.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[]],
+ [[#if defined _WIN32 && ! defined __CYGWIN__
+ choke me
+ #endif
+ ]])],
+ [gl_cv_func_malloc_posix=yes],
+ [gl_cv_func_malloc_posix=no])
+ ])
+])
diff --git a/m4/msvc-inval.m4 b/m4/msvc-inval.m4
new file mode 100644
index 0000000..dcf398d
--- /dev/null
+++ b/m4/msvc-inval.m4
@@ -0,0 +1,19 @@
+# msvc-inval.m4 serial 1
+dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_MSVC_INVAL],
+[
+ AC_CHECK_FUNCS_ONCE([_set_invalid_parameter_handler])
+ if test $ac_cv_func__set_invalid_parameter_handler = yes; then
+ HAVE_MSVC_INVALID_PARAMETER_HANDLER=1
+ AC_DEFINE([HAVE_MSVC_INVALID_PARAMETER_HANDLER], [1],
+ [Define to 1 on MSVC platforms that have the "invalid parameter handler"
+ concept.])
+ else
+ HAVE_MSVC_INVALID_PARAMETER_HANDLER=0
+ fi
+ AC_SUBST([HAVE_MSVC_INVALID_PARAMETER_HANDLER])
+])
diff --git a/m4/msvc-nothrow.m4 b/m4/msvc-nothrow.m4
new file mode 100644
index 0000000..13198d8
--- /dev/null
+++ b/m4/msvc-nothrow.m4
@@ -0,0 +1,10 @@
+# msvc-nothrow.m4 serial 1
+dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_MSVC_NOTHROW],
+[
+ AC_REQUIRE([gl_MSVC_INVAL])
+])
diff --git a/m4/multiarch.m4 b/m4/multiarch.m4
new file mode 100644
index 0000000..3c2034c
--- /dev/null
+++ b/m4/multiarch.m4
@@ -0,0 +1,62 @@
+# multiarch.m4 serial 7
+dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Determine whether the compiler is or may be producing universal binaries.
+#
+# On Mac OS X 10.5 and later systems, the user can create libraries and
+# executables that work on multiple system types--known as "fat" or
+# "universal" binaries--by specifying multiple '-arch' options to the
+# compiler but only a single '-arch' option to the preprocessor. Like
+# this:
+#
+# ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+# CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+# CPP="gcc -E" CXXCPP="g++ -E"
+#
+# Detect this situation and set APPLE_UNIVERSAL_BUILD accordingly.
+
+AC_DEFUN_ONCE([gl_MULTIARCH],
+[
+ dnl Code similar to autoconf-2.63 AC_C_BIGENDIAN.
+ gl_cv_c_multiarch=no
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifndef __APPLE_CC__
+ not a universal capable compiler
+ #endif
+ typedef int dummy;
+ ]])],
+ [
+ dnl Check for potential -arch flags. It is not universal unless
+ dnl there are at least two -arch flags with different values.
+ arch=
+ prev=
+ for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
+ if test -n "$prev"; then
+ case $word in
+ i?86 | x86_64 | ppc | ppc64)
+ if test -z "$arch" || test "$arch" = "$word"; then
+ arch="$word"
+ else
+ gl_cv_c_multiarch=yes
+ fi
+ ;;
+ esac
+ prev=
+ else
+ if test "x$word" = "x-arch"; then
+ prev=arch
+ fi
+ fi
+ done
+ ])
+ if test $gl_cv_c_multiarch = yes; then
+ APPLE_UNIVERSAL_BUILD=1
+ else
+ APPLE_UNIVERSAL_BUILD=0
+ fi
+ AC_SUBST([APPLE_UNIVERSAL_BUILD])
+])
diff --git a/config/nls.m4 b/m4/nls.m4
index 53cdc8b..53cdc8b 100644
--- a/config/nls.m4
+++ b/m4/nls.m4
diff --git a/m4/off_t.m4 b/m4/off_t.m4
new file mode 100644
index 0000000..6e19af8
--- /dev/null
+++ b/m4/off_t.m4
@@ -0,0 +1,18 @@
+# off_t.m4 serial 1
+dnl Copyright (C) 2012-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Check whether to override the 'off_t' type.
+dnl Set WINDOWS_64_BIT_OFF_T.
+
+AC_DEFUN([gl_TYPE_OFF_T],
+[
+ m4_ifdef([gl_LARGEFILE], [
+ AC_REQUIRE([gl_LARGEFILE])
+ ], [
+ WINDOWS_64_BIT_OFF_T=0
+ ])
+ AC_SUBST([WINDOWS_64_BIT_OFF_T])
+])
diff --git a/config/po.m4 b/m4/po.m4
index 43012dc..43012dc 100644
--- a/config/po.m4
+++ b/m4/po.m4
diff --git a/config/progtest.m4 b/m4/progtest.m4
index b499f79..b499f79 100644
--- a/config/progtest.m4
+++ b/m4/progtest.m4
diff --git a/m4/ssize_t.m4 b/m4/ssize_t.m4
new file mode 100644
index 0000000..6c0a588
--- /dev/null
+++ b/m4/ssize_t.m4
@@ -0,0 +1,23 @@
+# ssize_t.m4 serial 5 (gettext-0.18.2)
+dnl Copyright (C) 2001-2003, 2006, 2010-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether ssize_t is defined.
+
+AC_DEFUN([gt_TYPE_SSIZE_T],
+[
+ AC_CACHE_CHECK([for ssize_t], [gt_cv_ssize_t],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <sys/types.h>]],
+ [[int x = sizeof (ssize_t *) + sizeof (ssize_t);
+ return !x;]])],
+ [gt_cv_ssize_t=yes], [gt_cv_ssize_t=no])])
+ if test $gt_cv_ssize_t = no; then
+ AC_DEFINE([ssize_t], [int],
+ [Define as a signed type of the same size as size_t.])
+ fi
+])
diff --git a/m4/stdbool.m4 b/m4/stdbool.m4
new file mode 100644
index 0000000..6bb087e
--- /dev/null
+++ b/m4/stdbool.m4
@@ -0,0 +1,122 @@
+# Check for stdbool.h that conforms to C99.
+
+dnl Copyright (C) 2002-2006, 2009-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+#serial 8
+
+# Prepare for substituting <stdbool.h> if it is not supported.
+
+AC_DEFUN([AM_STDBOOL_H],
+[
+ AC_REQUIRE([AC_CHECK_HEADER_STDBOOL])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ dnl On some platforms, <stdbool.h> does not exist or does not conform to C99.
+ dnl On Solaris 10 with CC=cc CXX=CC, <stdbool.h> exists but is not usable
+ dnl in C++ mode (and no <cstdbool> exists). In this case, we use our
+ dnl replacement, also in C mode (for binary compatibility between C and C++).
+ if test "$ac_cv_header_stdbool_h" = yes; then
+ case "$host_os" in
+ solaris*)
+ if test -z "$GCC"; then
+ STDBOOL_H='stdbool.h'
+ else
+ STDBOOL_H=''
+ fi
+ ;;
+ *)
+ STDBOOL_H=''
+ ;;
+ esac
+ else
+ STDBOOL_H='stdbool.h'
+ fi
+ AC_SUBST([STDBOOL_H])
+ AM_CONDITIONAL([GL_GENERATE_STDBOOL_H], [test -n "$STDBOOL_H"])
+
+ if test "$ac_cv_type__Bool" = yes; then
+ HAVE__BOOL=1
+ else
+ HAVE__BOOL=0
+ fi
+ AC_SUBST([HAVE__BOOL])
+])
+
+# AM_STDBOOL_H will be renamed to gl_STDBOOL_H in the future.
+AC_DEFUN([gl_STDBOOL_H], [AM_STDBOOL_H])
+
+# This version of the macro is needed in autoconf <= 2.68.
+
+AC_DEFUN([AC_CHECK_HEADER_STDBOOL],
+ [AC_CACHE_CHECK([for stdbool.h that conforms to C99],
+ [ac_cv_header_stdbool_h],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+ #include <stdbool.h>
+
+ #ifdef __cplusplus
+ typedef bool Bool;
+ #else
+ typedef _Bool Bool;
+ #ifndef bool
+ "error: bool is not defined"
+ #endif
+ #ifndef false
+ "error: false is not defined"
+ #endif
+ #if false
+ "error: false is not 0"
+ #endif
+ #ifndef true
+ "error: true is not defined"
+ #endif
+ #if true != 1
+ "error: true is not 1"
+ #endif
+ #endif
+
+ #ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+ #endif
+
+ struct s { Bool s: 1; Bool t; bool u: 1; bool v; } s;
+
+ char a[true == 1 ? 1 : -1];
+ char b[false == 0 ? 1 : -1];
+ char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+ char d[(bool) 0.5 == true ? 1 : -1];
+ /* See body of main program for 'e'. */
+ char f[(Bool) 0.0 == false ? 1 : -1];
+ char g[true];
+ char h[sizeof (Bool)];
+ char i[sizeof s.t];
+ enum { j = false, k = true, l = false * true, m = true * 256 };
+ /* The following fails for
+ HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+ Bool n[m];
+ char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+ char p[-1 - (Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+ /* Catch a bug in an HP-UX C compiler. See
+ https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ https://lists.gnu.org/r/bug-coreutils/2005-11/msg00161.html
+ */
+ Bool q = true;
+ Bool *pq = &q;
+ bool *qq = &q;
+ ]],
+ [[
+ bool e = &s;
+ *pq |= q; *pq |= ! q;
+ *qq |= q; *qq |= ! q;
+ /* Refer to every declared value, to avoid compiler optimizations. */
+ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+ + !m + !n + !o + !p + !q + !pq + !qq);
+ ]])],
+ [ac_cv_header_stdbool_h=yes],
+ [ac_cv_header_stdbool_h=no])])
+ AC_CHECK_TYPES([_Bool])
+])
diff --git a/m4/stddef_h.m4 b/m4/stddef_h.m4
new file mode 100644
index 0000000..6bcfadb
--- /dev/null
+++ b/m4/stddef_h.m4
@@ -0,0 +1,72 @@
+dnl A placeholder for <stddef.h>, for platforms that have issues.
+# stddef_h.m4 serial 6
+dnl Copyright (C) 2009-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_STDDEF_H],
+[
+ AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
+ AC_REQUIRE([gt_TYPE_WCHAR_T])
+ STDDEF_H=
+
+ dnl Test whether the type max_align_t exists and whether its alignment
+ dnl "is as great as is supported by the implementation in all contexts".
+ AC_CACHE_CHECK([for good max_align_t],
+ [gl_cv_type_max_align_t],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <stddef.h>
+ unsigned int s = sizeof (max_align_t);
+ #if defined __GNUC__ || defined __IBM__ALIGNOF__
+ int check1[2 * (__alignof__ (double) <= __alignof__ (max_align_t)) - 1];
+ int check2[2 * (__alignof__ (long double) <= __alignof__ (max_align_t)) - 1];
+ #endif
+ ]])],
+ [gl_cv_type_max_align_t=yes],
+ [gl_cv_type_max_align_t=no])
+ ])
+ if test $gl_cv_type_max_align_t = no; then
+ HAVE_MAX_ALIGN_T=0
+ STDDEF_H=stddef.h
+ fi
+
+ if test $gt_cv_c_wchar_t = no; then
+ HAVE_WCHAR_T=0
+ STDDEF_H=stddef.h
+ fi
+
+ AC_CACHE_CHECK([whether NULL can be used in arbitrary expressions],
+ [gl_cv_decl_null_works],
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stddef.h>
+ int test[2 * (sizeof NULL == sizeof (void *)) -1];
+]])],
+ [gl_cv_decl_null_works=yes],
+ [gl_cv_decl_null_works=no])])
+ if test $gl_cv_decl_null_works = no; then
+ REPLACE_NULL=1
+ STDDEF_H=stddef.h
+ fi
+
+ AC_SUBST([STDDEF_H])
+ AM_CONDITIONAL([GL_GENERATE_STDDEF_H], [test -n "$STDDEF_H"])
+ if test -n "$STDDEF_H"; then
+ gl_NEXT_HEADERS([stddef.h])
+ fi
+])
+
+AC_DEFUN([gl_STDDEF_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+])
+
+AC_DEFUN([gl_STDDEF_H_DEFAULTS],
+[
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ REPLACE_NULL=0; AC_SUBST([REPLACE_NULL])
+ HAVE_MAX_ALIGN_T=1; AC_SUBST([HAVE_MAX_ALIGN_T])
+ HAVE_WCHAR_T=1; AC_SUBST([HAVE_WCHAR_T])
+])
diff --git a/m4/stdint.m4 b/m4/stdint.m4
new file mode 100644
index 0000000..29ad826
--- /dev/null
+++ b/m4/stdint.m4
@@ -0,0 +1,535 @@
+# stdint.m4 serial 54
+dnl Copyright (C) 2001-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert and Bruno Haible.
+dnl Test whether <stdint.h> is supported or must be substituted.
+
+AC_PREREQ([2.61])
+
+AC_DEFUN_ONCE([gl_STDINT_H],
+[
+ AC_PREREQ([2.59])dnl
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+ AC_REQUIRE([gl_LIMITS_H])
+ AC_REQUIRE([gt_TYPE_WINT_T])
+
+ dnl For backward compatibility. Some packages may still be testing these
+ dnl macros.
+ AC_DEFINE([HAVE_LONG_LONG_INT], [1],
+ [Define to 1 if the system has the type 'long long int'.])
+ AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
+ [Define to 1 if the system has the type 'unsigned long long int'.])
+
+ dnl Check for <wchar.h>, in the same way as gl_WCHAR_H does.
+ AC_CHECK_HEADERS_ONCE([wchar.h])
+ if test $ac_cv_header_wchar_h = yes; then
+ HAVE_WCHAR_H=1
+ else
+ HAVE_WCHAR_H=0
+ fi
+ AC_SUBST([HAVE_WCHAR_H])
+
+ dnl Check for <inttypes.h>.
+ dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h.
+ if test $ac_cv_header_inttypes_h = yes; then
+ HAVE_INTTYPES_H=1
+ else
+ HAVE_INTTYPES_H=0
+ fi
+ AC_SUBST([HAVE_INTTYPES_H])
+
+ dnl Check for <sys/types.h>.
+ dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_sys_types_h.
+ if test $ac_cv_header_sys_types_h = yes; then
+ HAVE_SYS_TYPES_H=1
+ else
+ HAVE_SYS_TYPES_H=0
+ fi
+ AC_SUBST([HAVE_SYS_TYPES_H])
+
+ gl_CHECK_NEXT_HEADERS([stdint.h])
+ if test $ac_cv_header_stdint_h = yes; then
+ HAVE_STDINT_H=1
+ else
+ HAVE_STDINT_H=0
+ fi
+ AC_SUBST([HAVE_STDINT_H])
+
+ dnl Now see whether we need a substitute <stdint.h>.
+ if test $ac_cv_header_stdint_h = yes; then
+ AC_CACHE_CHECK([whether stdint.h conforms to C99],
+ [gl_cv_header_working_stdint_h],
+ [gl_cv_header_working_stdint_h=no
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#define __STDC_CONSTANT_MACROS 1
+#define __STDC_LIMIT_MACROS 1
+#include <stdint.h>
+/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */
+#if !(defined WCHAR_MIN && defined WCHAR_MAX)
+#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
+#endif
+]
+gl_STDINT_INCLUDES
+[
+#ifdef INT8_MAX
+int8_t a1 = INT8_MAX;
+int8_t a1min = INT8_MIN;
+#endif
+#ifdef INT16_MAX
+int16_t a2 = INT16_MAX;
+int16_t a2min = INT16_MIN;
+#endif
+#ifdef INT32_MAX
+int32_t a3 = INT32_MAX;
+int32_t a3min = INT32_MIN;
+#endif
+#ifdef INT64_MAX
+int64_t a4 = INT64_MAX;
+int64_t a4min = INT64_MIN;
+#endif
+#ifdef UINT8_MAX
+uint8_t b1 = UINT8_MAX;
+#else
+typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
+#endif
+#ifdef UINT16_MAX
+uint16_t b2 = UINT16_MAX;
+#endif
+#ifdef UINT32_MAX
+uint32_t b3 = UINT32_MAX;
+#endif
+#ifdef UINT64_MAX
+uint64_t b4 = UINT64_MAX;
+#endif
+int_least8_t c1 = INT8_C (0x7f);
+int_least8_t c1max = INT_LEAST8_MAX;
+int_least8_t c1min = INT_LEAST8_MIN;
+int_least16_t c2 = INT16_C (0x7fff);
+int_least16_t c2max = INT_LEAST16_MAX;
+int_least16_t c2min = INT_LEAST16_MIN;
+int_least32_t c3 = INT32_C (0x7fffffff);
+int_least32_t c3max = INT_LEAST32_MAX;
+int_least32_t c3min = INT_LEAST32_MIN;
+int_least64_t c4 = INT64_C (0x7fffffffffffffff);
+int_least64_t c4max = INT_LEAST64_MAX;
+int_least64_t c4min = INT_LEAST64_MIN;
+uint_least8_t d1 = UINT8_C (0xff);
+uint_least8_t d1max = UINT_LEAST8_MAX;
+uint_least16_t d2 = UINT16_C (0xffff);
+uint_least16_t d2max = UINT_LEAST16_MAX;
+uint_least32_t d3 = UINT32_C (0xffffffff);
+uint_least32_t d3max = UINT_LEAST32_MAX;
+uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
+uint_least64_t d4max = UINT_LEAST64_MAX;
+int_fast8_t e1 = INT_FAST8_MAX;
+int_fast8_t e1min = INT_FAST8_MIN;
+int_fast16_t e2 = INT_FAST16_MAX;
+int_fast16_t e2min = INT_FAST16_MIN;
+int_fast32_t e3 = INT_FAST32_MAX;
+int_fast32_t e3min = INT_FAST32_MIN;
+int_fast64_t e4 = INT_FAST64_MAX;
+int_fast64_t e4min = INT_FAST64_MIN;
+uint_fast8_t f1 = UINT_FAST8_MAX;
+uint_fast16_t f2 = UINT_FAST16_MAX;
+uint_fast32_t f3 = UINT_FAST32_MAX;
+uint_fast64_t f4 = UINT_FAST64_MAX;
+#ifdef INTPTR_MAX
+intptr_t g = INTPTR_MAX;
+intptr_t gmin = INTPTR_MIN;
+#endif
+#ifdef UINTPTR_MAX
+uintptr_t h = UINTPTR_MAX;
+#endif
+intmax_t i = INTMAX_MAX;
+uintmax_t j = UINTMAX_MAX;
+
+/* Check that SIZE_MAX has the correct type, if possible. */
+#if 201112 <= __STDC_VERSION__
+int k = _Generic (SIZE_MAX, size_t: 0);
+#elif (2 <= __GNUC__ || defined __IBM__TYPEOF__ \
+ || (0x5110 <= __SUNPRO_C && !__STDC__))
+extern size_t k;
+extern __typeof__ (SIZE_MAX) k;
+#endif
+
+#include <limits.h> /* for CHAR_BIT */
+#define TYPE_MINIMUM(t) \
+ ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t)))
+#define TYPE_MAXIMUM(t) \
+ ((t) ((t) 0 < (t) -1 \
+ ? (t) -1 \
+ : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
+struct s {
+ int check_PTRDIFF:
+ PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
+ && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
+ ? 1 : -1;
+ /* Detect bug in FreeBSD 6.0 / ia64. */
+ int check_SIG_ATOMIC:
+ SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
+ && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
+ ? 1 : -1;
+ int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
+ int check_WCHAR:
+ WCHAR_MIN == TYPE_MINIMUM (wchar_t)
+ && WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
+ ? 1 : -1;
+ /* Detect bug in mingw. */
+ int check_WINT:
+ WINT_MIN == TYPE_MINIMUM (wint_t)
+ && WINT_MAX == TYPE_MAXIMUM (wint_t)
+ ? 1 : -1;
+
+ /* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */
+ int check_UINT8_C:
+ (-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
+ int check_UINT16_C:
+ (-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
+
+ /* Detect bugs in OpenBSD 3.9 stdint.h. */
+#ifdef UINT8_MAX
+ int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
+#endif
+#ifdef UINT16_MAX
+ int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
+#endif
+#ifdef UINT32_MAX
+ int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
+#endif
+#ifdef UINT64_MAX
+ int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
+#endif
+ int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
+ int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
+ int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
+ int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
+ int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
+ int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
+ int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
+ int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
+ int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
+ int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
+ int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
+};
+ ]])],
+ [dnl Determine whether the various *_MIN, *_MAX macros are usable
+ dnl in preprocessor expression. We could do it by compiling a test
+ dnl program for each of these macros. It is faster to run a program
+ dnl that inspects the macro expansion.
+ dnl This detects a bug on HP-UX 11.23/ia64.
+ AC_RUN_IFELSE([
+ AC_LANG_PROGRAM([[
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#define __STDC_CONSTANT_MACROS 1
+#define __STDC_LIMIT_MACROS 1
+#include <stdint.h>
+]
+gl_STDINT_INCLUDES
+[
+#include <stdio.h>
+#include <string.h>
+#define MVAL(macro) MVAL1(macro)
+#define MVAL1(expression) #expression
+static const char *macro_values[] =
+ {
+#ifdef INT8_MAX
+ MVAL (INT8_MAX),
+#endif
+#ifdef INT16_MAX
+ MVAL (INT16_MAX),
+#endif
+#ifdef INT32_MAX
+ MVAL (INT32_MAX),
+#endif
+#ifdef INT64_MAX
+ MVAL (INT64_MAX),
+#endif
+#ifdef UINT8_MAX
+ MVAL (UINT8_MAX),
+#endif
+#ifdef UINT16_MAX
+ MVAL (UINT16_MAX),
+#endif
+#ifdef UINT32_MAX
+ MVAL (UINT32_MAX),
+#endif
+#ifdef UINT64_MAX
+ MVAL (UINT64_MAX),
+#endif
+ NULL
+ };
+]], [[
+ const char **mv;
+ for (mv = macro_values; *mv != NULL; mv++)
+ {
+ const char *value = *mv;
+ /* Test whether it looks like a cast expression. */
+ if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
+ || strncmp (value, "((unsigned short)"/*)*/, 17) == 0
+ || strncmp (value, "((unsigned char)"/*)*/, 16) == 0
+ || strncmp (value, "((int)"/*)*/, 6) == 0
+ || strncmp (value, "((signed short)"/*)*/, 15) == 0
+ || strncmp (value, "((signed char)"/*)*/, 14) == 0)
+ return mv - macro_values + 1;
+ }
+ return 0;
+]])],
+ [gl_cv_header_working_stdint_h=yes],
+ [],
+ [case "$host_os" in
+ # Guess yes on native Windows.
+ mingw*) gl_cv_header_working_stdint_h="guessing yes" ;;
+ # In general, assume it works.
+ *) gl_cv_header_working_stdint_h="guessing yes" ;;
+ esac
+ ])
+ ])
+ ])
+ fi
+
+ HAVE_C99_STDINT_H=0
+ HAVE_SYS_BITYPES_H=0
+ HAVE_SYS_INTTYPES_H=0
+ STDINT_H=stdint.h
+ case "$gl_cv_header_working_stdint_h" in
+ *yes)
+ HAVE_C99_STDINT_H=1
+ dnl Now see whether the system <stdint.h> works without
+ dnl __STDC_CONSTANT_MACROS/__STDC_LIMIT_MACROS defined.
+ AC_CACHE_CHECK([whether stdint.h predates C++11],
+ [gl_cv_header_stdint_predates_cxx11_h],
+ [gl_cv_header_stdint_predates_cxx11_h=yes
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
+#include <stdint.h>
+]
+gl_STDINT_INCLUDES
+[
+intmax_t im = INTMAX_MAX;
+int32_t i32 = INT32_C (0x7fffffff);
+ ]])],
+ [gl_cv_header_stdint_predates_cxx11_h=no])])
+
+ if test "$gl_cv_header_stdint_predates_cxx11_h" = yes; then
+ AC_DEFINE([__STDC_CONSTANT_MACROS], [1],
+ [Define to 1 if the system <stdint.h> predates C++11.])
+ AC_DEFINE([__STDC_LIMIT_MACROS], [1],
+ [Define to 1 if the system <stdint.h> predates C++11.])
+ fi
+ AC_CACHE_CHECK([whether stdint.h has UINTMAX_WIDTH etc.],
+ [gl_cv_header_stdint_width],
+ [gl_cv_header_stdint_width=no
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[
+ /* Work if build is not clean. */
+ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1
+ #ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+ #define __STDC_WANT_IEC_60559_BFP_EXT__ 1
+ #endif
+ #include <stdint.h>
+ ]gl_STDINT_INCLUDES[
+ int iw = UINTMAX_WIDTH;
+ ]])],
+ [gl_cv_header_stdint_width=yes])])
+ if test "$gl_cv_header_stdint_width" = yes; then
+ STDINT_H=
+ fi
+ ;;
+ *)
+ dnl Check for <sys/inttypes.h>, and for
+ dnl <sys/bitypes.h> (used in Linux libc4 >= 4.6.7 and libc5).
+ AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h])
+ if test $ac_cv_header_sys_inttypes_h = yes; then
+ HAVE_SYS_INTTYPES_H=1
+ fi
+ if test $ac_cv_header_sys_bitypes_h = yes; then
+ HAVE_SYS_BITYPES_H=1
+ fi
+ gl_STDINT_TYPE_PROPERTIES
+ ;;
+ esac
+
+ dnl The substitute stdint.h needs the substitute limit.h's _GL_INTEGER_WIDTH.
+ gl_REPLACE_LIMITS_H
+
+ AC_SUBST([HAVE_C99_STDINT_H])
+ AC_SUBST([HAVE_SYS_BITYPES_H])
+ AC_SUBST([HAVE_SYS_INTTYPES_H])
+ AC_SUBST([STDINT_H])
+ AM_CONDITIONAL([GL_GENERATE_STDINT_H], [test -n "$STDINT_H"])
+])
+
+dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES)
+dnl Determine the size of each of the given types in bits.
+AC_DEFUN([gl_STDINT_BITSIZEOF],
+[
+ dnl Use a shell loop, to avoid bloating configure, and
+ dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
+ dnl config.h.in,
+ dnl - extra AC_SUBST calls, so that the right substitutions are made.
+ m4_foreach_w([gltype], [$1],
+ [AH_TEMPLATE([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
+ [Define to the number of bits in type ']gltype['.])])
+ for gltype in $1 ; do
+ AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}],
+ [AC_COMPUTE_INT([result], [sizeof ($gltype) * CHAR_BIT],
+ [$2
+#include <limits.h>], [result=unknown])
+ eval gl_cv_bitsizeof_${gltype}=\$result
+ ])
+ eval result=\$gl_cv_bitsizeof_${gltype}
+ if test $result = unknown; then
+ dnl Use a nonempty default, because some compilers, such as IRIX 5 cc,
+ dnl do a syntax check even on unused #if conditions and give an error
+ dnl on valid C code like this:
+ dnl #if 0
+ dnl # if > 32
+ dnl # endif
+ dnl #endif
+ result=0
+ fi
+ GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ AC_DEFINE_UNQUOTED([BITSIZEOF_${GLTYPE}], [$result])
+ eval BITSIZEOF_${GLTYPE}=\$result
+ done
+ m4_foreach_w([gltype], [$1],
+ [AC_SUBST([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
+])
+
+dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES)
+dnl Determine the signedness of each of the given types.
+dnl Define HAVE_SIGNED_TYPE if type is signed.
+AC_DEFUN([gl_CHECK_TYPES_SIGNED],
+[
+ dnl Use a shell loop, to avoid bloating configure, and
+ dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
+ dnl config.h.in,
+ dnl - extra AC_SUBST calls, so that the right substitutions are made.
+ m4_foreach_w([gltype], [$1],
+ [AH_TEMPLATE([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
+ [Define to 1 if ']gltype[' is a signed integer type.])])
+ for gltype in $1 ; do
+ AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([$2[
+ int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];]])],
+ result=yes, result=no)
+ eval gl_cv_type_${gltype}_signed=\$result
+ ])
+ eval result=\$gl_cv_type_${gltype}_signed
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ if test "$result" = yes; then
+ AC_DEFINE_UNQUOTED([HAVE_SIGNED_${GLTYPE}], [1])
+ eval HAVE_SIGNED_${GLTYPE}=1
+ else
+ eval HAVE_SIGNED_${GLTYPE}=0
+ fi
+ done
+ m4_foreach_w([gltype], [$1],
+ [AC_SUBST([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
+])
+
+dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES)
+dnl Determine the suffix to use for integer constants of the given types.
+dnl Define t_SUFFIX for each such type.
+AC_DEFUN([gl_INTEGER_TYPE_SUFFIX],
+[
+ dnl Use a shell loop, to avoid bloating configure, and
+ dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
+ dnl config.h.in,
+ dnl - extra AC_SUBST calls, so that the right substitutions are made.
+ m4_foreach_w([gltype], [$1],
+ [AH_TEMPLATE(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX],
+ [Define to l, ll, u, ul, ull, etc., as suitable for
+ constants of type ']gltype['.])])
+ for gltype in $1 ; do
+ AC_CACHE_CHECK([for $gltype integer literal suffix],
+ [gl_cv_type_${gltype}_suffix],
+ [eval gl_cv_type_${gltype}_suffix=no
+ eval result=\$gl_cv_type_${gltype}_signed
+ if test "$result" = yes; then
+ glsufu=
+ else
+ glsufu=u
+ fi
+ for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
+ case $glsuf in
+ '') gltype1='int';;
+ l) gltype1='long int';;
+ ll) gltype1='long long int';;
+ i64) gltype1='__int64';;
+ u) gltype1='unsigned int';;
+ ul) gltype1='unsigned long int';;
+ ull) gltype1='unsigned long long int';;
+ ui64)gltype1='unsigned __int64';;
+ esac
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([$2[
+ extern $gltype foo;
+ extern $gltype1 foo;]])],
+ [eval gl_cv_type_${gltype}_suffix=\$glsuf])
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" != no && break
+ done])
+ GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
+ eval result=\$gl_cv_type_${gltype}_suffix
+ test "$result" = no && result=
+ eval ${GLTYPE}_SUFFIX=\$result
+ AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], [$result])
+ done
+ m4_foreach_w([gltype], [$1],
+ [AC_SUBST(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])])
+])
+
+dnl gl_STDINT_INCLUDES
+AC_DEFUN([gl_STDINT_INCLUDES],
+[[
+ /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+ #include <stddef.h>
+ #include <signal.h>
+ #if HAVE_WCHAR_H
+ # include <stdio.h>
+ # include <time.h>
+ # include <wchar.h>
+ #endif
+]])
+
+dnl gl_STDINT_TYPE_PROPERTIES
+dnl Compute HAVE_SIGNED_t, BITSIZEOF_t and t_SUFFIX, for all the types t
+dnl of interest to stdint.in.h.
+AC_DEFUN([gl_STDINT_TYPE_PROPERTIES],
+[
+ AC_REQUIRE([gl_MULTIARCH])
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+ gl_STDINT_BITSIZEOF([ptrdiff_t size_t],
+ [gl_STDINT_INCLUDES])
+ fi
+ gl_STDINT_BITSIZEOF([sig_atomic_t wchar_t wint_t],
+ [gl_STDINT_INCLUDES])
+ gl_CHECK_TYPES_SIGNED([sig_atomic_t wchar_t wint_t],
+ [gl_STDINT_INCLUDES])
+ gl_cv_type_ptrdiff_t_signed=yes
+ gl_cv_type_size_t_signed=no
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+ gl_INTEGER_TYPE_SUFFIX([ptrdiff_t size_t],
+ [gl_STDINT_INCLUDES])
+ fi
+ gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t],
+ [gl_STDINT_INCLUDES])
+
+ dnl If wint_t is smaller than 'int', it cannot satisfy the ISO C 99
+ dnl requirement that wint_t is "unchanged by default argument promotions".
+ dnl In this case gnulib's <wchar.h> and <wctype.h> override wint_t.
+ dnl Set the variable BITSIZEOF_WINT_T accordingly.
+ if test $GNULIB_OVERRIDES_WINT_T = 1; then
+ BITSIZEOF_WINT_T=32
+ fi
+])
diff --git a/m4/stdio_h.m4 b/m4/stdio_h.m4
new file mode 100644
index 0000000..c603b51
--- /dev/null
+++ b/m4/stdio_h.m4
@@ -0,0 +1,225 @@
+# stdio_h.m4 serial 49
+dnl Copyright (C) 2007-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_STDIO_H],
+[
+ AH_VERBATIM([MINGW_ANSI_STDIO],
+[/* Use GNU style printf and scanf. */
+#ifndef __USE_MINGW_ANSI_STDIO
+# undef __USE_MINGW_ANSI_STDIO
+#endif
+])
+ AC_DEFINE([__USE_MINGW_ANSI_STDIO])
+ AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+ gl_NEXT_HEADERS([stdio.h])
+
+ dnl Determine whether __USE_MINGW_ANSI_STDIO makes printf and
+ dnl inttypes.h behave like gnu instead of system; we must give our
+ dnl printf wrapper the right attribute to match.
+ AC_CACHE_CHECK([which flavor of printf attribute matches inttypes macros],
+ [gl_cv_func_printf_attribute_flavor],
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #define __STDC_FORMAT_MACROS 1
+ #include <stdio.h>
+ #include <inttypes.h>
+ /* For non-mingw systems, compilation will trivially succeed.
+ For mingw, compilation will succeed for older mingw (system
+ printf, "I64d") and fail for newer mingw (gnu printf, "lld"). */
+ #if (defined _WIN32 && ! defined __CYGWIN__) && \
+ (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
+ extern char PRIdMAX_probe[sizeof PRIdMAX == sizeof "I64d" ? 1 : -1];
+ #endif
+ ]])], [gl_cv_func_printf_attribute_flavor=system],
+ [gl_cv_func_printf_attribute_flavor=gnu])])
+ if test "$gl_cv_func_printf_attribute_flavor" = gnu; then
+ AC_DEFINE([GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU], [1],
+ [Define to 1 if printf and friends should be labeled with
+ attribute "__gnu_printf__" instead of "__printf__"])
+ fi
+
+ dnl No need to create extra modules for these functions. Everyone who uses
+ dnl <stdio.h> likely needs them.
+ GNULIB_FSCANF=1
+ gl_MODULE_INDICATOR([fscanf])
+ GNULIB_SCANF=1
+ gl_MODULE_INDICATOR([scanf])
+ GNULIB_FGETC=1
+ GNULIB_GETC=1
+ GNULIB_GETCHAR=1
+ GNULIB_FGETS=1
+ GNULIB_FREAD=1
+ dnl This ifdef is necessary to avoid an error "missing file lib/stdio-read.c"
+ dnl "expected source file, required through AC_LIBSOURCES, not found". It is
+ dnl also an optimization, to avoid performing a configure check whose result
+ dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING
+ dnl or GNULIB_NONBLOCKING redundant.
+ m4_ifdef([gl_NONBLOCKING_IO], [
+ gl_NONBLOCKING_IO
+ if test $gl_cv_have_nonblocking != yes; then
+ REPLACE_STDIO_READ_FUNCS=1
+ AC_LIBOBJ([stdio-read])
+ fi
+ ])
+
+ dnl No need to create extra modules for these functions. Everyone who uses
+ dnl <stdio.h> likely needs them.
+ GNULIB_FPRINTF=1
+ GNULIB_PRINTF=1
+ GNULIB_VFPRINTF=1
+ GNULIB_VPRINTF=1
+ GNULIB_FPUTC=1
+ GNULIB_PUTC=1
+ GNULIB_PUTCHAR=1
+ GNULIB_FPUTS=1
+ GNULIB_PUTS=1
+ GNULIB_FWRITE=1
+ dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
+ dnl "expected source file, required through AC_LIBSOURCES, not found". It is
+ dnl also an optimization, to avoid performing a configure check whose result
+ dnl is not used. But it does not make the test of GNULIB_STDIO_H_SIGPIPE or
+ dnl GNULIB_SIGPIPE redundant.
+ m4_ifdef([gl_SIGNAL_SIGPIPE], [
+ gl_SIGNAL_SIGPIPE
+ if test $gl_cv_header_signal_h_SIGPIPE != yes; then
+ REPLACE_STDIO_WRITE_FUNCS=1
+ AC_LIBOBJ([stdio-write])
+ fi
+ ])
+ dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
+ dnl "expected source file, required through AC_LIBSOURCES, not found". It is
+ dnl also an optimization, to avoid performing a configure check whose result
+ dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING
+ dnl or GNULIB_NONBLOCKING redundant.
+ m4_ifdef([gl_NONBLOCKING_IO], [
+ gl_NONBLOCKING_IO
+ if test $gl_cv_have_nonblocking != yes; then
+ REPLACE_STDIO_WRITE_FUNCS=1
+ AC_LIBOBJ([stdio-write])
+ fi
+ ])
+
+ dnl Check for declarations of anything we want to poison if the
+ dnl corresponding gnulib module is not in use, and which is not
+ dnl guaranteed by both C89 and C11.
+ gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
+ ]], [dprintf fpurge fseeko ftello getdelim getline gets pclose popen
+ renameat snprintf tmpfile vdprintf vsnprintf])
+])
+
+AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_STDIO_H_DEFAULTS],
+[
+ GNULIB_DPRINTF=0; AC_SUBST([GNULIB_DPRINTF])
+ GNULIB_FCLOSE=0; AC_SUBST([GNULIB_FCLOSE])
+ GNULIB_FDOPEN=0; AC_SUBST([GNULIB_FDOPEN])
+ GNULIB_FFLUSH=0; AC_SUBST([GNULIB_FFLUSH])
+ GNULIB_FGETC=0; AC_SUBST([GNULIB_FGETC])
+ GNULIB_FGETS=0; AC_SUBST([GNULIB_FGETS])
+ GNULIB_FOPEN=0; AC_SUBST([GNULIB_FOPEN])
+ GNULIB_FPRINTF=0; AC_SUBST([GNULIB_FPRINTF])
+ GNULIB_FPRINTF_POSIX=0; AC_SUBST([GNULIB_FPRINTF_POSIX])
+ GNULIB_FPURGE=0; AC_SUBST([GNULIB_FPURGE])
+ GNULIB_FPUTC=0; AC_SUBST([GNULIB_FPUTC])
+ GNULIB_FPUTS=0; AC_SUBST([GNULIB_FPUTS])
+ GNULIB_FREAD=0; AC_SUBST([GNULIB_FREAD])
+ GNULIB_FREOPEN=0; AC_SUBST([GNULIB_FREOPEN])
+ GNULIB_FSCANF=0; AC_SUBST([GNULIB_FSCANF])
+ GNULIB_FSEEK=0; AC_SUBST([GNULIB_FSEEK])
+ GNULIB_FSEEKO=0; AC_SUBST([GNULIB_FSEEKO])
+ GNULIB_FTELL=0; AC_SUBST([GNULIB_FTELL])
+ GNULIB_FTELLO=0; AC_SUBST([GNULIB_FTELLO])
+ GNULIB_FWRITE=0; AC_SUBST([GNULIB_FWRITE])
+ GNULIB_GETC=0; AC_SUBST([GNULIB_GETC])
+ GNULIB_GETCHAR=0; AC_SUBST([GNULIB_GETCHAR])
+ GNULIB_GETDELIM=0; AC_SUBST([GNULIB_GETDELIM])
+ GNULIB_GETLINE=0; AC_SUBST([GNULIB_GETLINE])
+ GNULIB_OBSTACK_PRINTF=0; AC_SUBST([GNULIB_OBSTACK_PRINTF])
+ GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
+ GNULIB_PCLOSE=0; AC_SUBST([GNULIB_PCLOSE])
+ GNULIB_PERROR=0; AC_SUBST([GNULIB_PERROR])
+ GNULIB_POPEN=0; AC_SUBST([GNULIB_POPEN])
+ GNULIB_PRINTF=0; AC_SUBST([GNULIB_PRINTF])
+ GNULIB_PRINTF_POSIX=0; AC_SUBST([GNULIB_PRINTF_POSIX])
+ GNULIB_PUTC=0; AC_SUBST([GNULIB_PUTC])
+ GNULIB_PUTCHAR=0; AC_SUBST([GNULIB_PUTCHAR])
+ GNULIB_PUTS=0; AC_SUBST([GNULIB_PUTS])
+ GNULIB_REMOVE=0; AC_SUBST([GNULIB_REMOVE])
+ GNULIB_RENAME=0; AC_SUBST([GNULIB_RENAME])
+ GNULIB_RENAMEAT=0; AC_SUBST([GNULIB_RENAMEAT])
+ GNULIB_SCANF=0; AC_SUBST([GNULIB_SCANF])
+ GNULIB_SNPRINTF=0; AC_SUBST([GNULIB_SNPRINTF])
+ GNULIB_SPRINTF_POSIX=0; AC_SUBST([GNULIB_SPRINTF_POSIX])
+ GNULIB_STDIO_H_NONBLOCKING=0; AC_SUBST([GNULIB_STDIO_H_NONBLOCKING])
+ GNULIB_STDIO_H_SIGPIPE=0; AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
+ GNULIB_TMPFILE=0; AC_SUBST([GNULIB_TMPFILE])
+ GNULIB_VASPRINTF=0; AC_SUBST([GNULIB_VASPRINTF])
+ GNULIB_VFSCANF=0; AC_SUBST([GNULIB_VFSCANF])
+ GNULIB_VSCANF=0; AC_SUBST([GNULIB_VSCANF])
+ GNULIB_VDPRINTF=0; AC_SUBST([GNULIB_VDPRINTF])
+ GNULIB_VFPRINTF=0; AC_SUBST([GNULIB_VFPRINTF])
+ GNULIB_VFPRINTF_POSIX=0; AC_SUBST([GNULIB_VFPRINTF_POSIX])
+ GNULIB_VPRINTF=0; AC_SUBST([GNULIB_VPRINTF])
+ GNULIB_VPRINTF_POSIX=0; AC_SUBST([GNULIB_VPRINTF_POSIX])
+ GNULIB_VSNPRINTF=0; AC_SUBST([GNULIB_VSNPRINTF])
+ GNULIB_VSPRINTF_POSIX=0; AC_SUBST([GNULIB_VSPRINTF_POSIX])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_DECL_FPURGE=1; AC_SUBST([HAVE_DECL_FPURGE])
+ HAVE_DECL_FSEEKO=1; AC_SUBST([HAVE_DECL_FSEEKO])
+ HAVE_DECL_FTELLO=1; AC_SUBST([HAVE_DECL_FTELLO])
+ HAVE_DECL_GETDELIM=1; AC_SUBST([HAVE_DECL_GETDELIM])
+ HAVE_DECL_GETLINE=1; AC_SUBST([HAVE_DECL_GETLINE])
+ HAVE_DECL_OBSTACK_PRINTF=1; AC_SUBST([HAVE_DECL_OBSTACK_PRINTF])
+ HAVE_DECL_SNPRINTF=1; AC_SUBST([HAVE_DECL_SNPRINTF])
+ HAVE_DECL_VSNPRINTF=1; AC_SUBST([HAVE_DECL_VSNPRINTF])
+ HAVE_DPRINTF=1; AC_SUBST([HAVE_DPRINTF])
+ HAVE_FSEEKO=1; AC_SUBST([HAVE_FSEEKO])
+ HAVE_FTELLO=1; AC_SUBST([HAVE_FTELLO])
+ HAVE_PCLOSE=1; AC_SUBST([HAVE_PCLOSE])
+ HAVE_POPEN=1; AC_SUBST([HAVE_POPEN])
+ HAVE_RENAMEAT=1; AC_SUBST([HAVE_RENAMEAT])
+ HAVE_VASPRINTF=1; AC_SUBST([HAVE_VASPRINTF])
+ HAVE_VDPRINTF=1; AC_SUBST([HAVE_VDPRINTF])
+ REPLACE_DPRINTF=0; AC_SUBST([REPLACE_DPRINTF])
+ REPLACE_FCLOSE=0; AC_SUBST([REPLACE_FCLOSE])
+ REPLACE_FDOPEN=0; AC_SUBST([REPLACE_FDOPEN])
+ REPLACE_FFLUSH=0; AC_SUBST([REPLACE_FFLUSH])
+ REPLACE_FOPEN=0; AC_SUBST([REPLACE_FOPEN])
+ REPLACE_FPRINTF=0; AC_SUBST([REPLACE_FPRINTF])
+ REPLACE_FPURGE=0; AC_SUBST([REPLACE_FPURGE])
+ REPLACE_FREOPEN=0; AC_SUBST([REPLACE_FREOPEN])
+ REPLACE_FSEEK=0; AC_SUBST([REPLACE_FSEEK])
+ REPLACE_FSEEKO=0; AC_SUBST([REPLACE_FSEEKO])
+ REPLACE_FTELL=0; AC_SUBST([REPLACE_FTELL])
+ REPLACE_FTELLO=0; AC_SUBST([REPLACE_FTELLO])
+ REPLACE_GETDELIM=0; AC_SUBST([REPLACE_GETDELIM])
+ REPLACE_GETLINE=0; AC_SUBST([REPLACE_GETLINE])
+ REPLACE_OBSTACK_PRINTF=0; AC_SUBST([REPLACE_OBSTACK_PRINTF])
+ REPLACE_PERROR=0; AC_SUBST([REPLACE_PERROR])
+ REPLACE_POPEN=0; AC_SUBST([REPLACE_POPEN])
+ REPLACE_PRINTF=0; AC_SUBST([REPLACE_PRINTF])
+ REPLACE_REMOVE=0; AC_SUBST([REPLACE_REMOVE])
+ REPLACE_RENAME=0; AC_SUBST([REPLACE_RENAME])
+ REPLACE_RENAMEAT=0; AC_SUBST([REPLACE_RENAMEAT])
+ REPLACE_SNPRINTF=0; AC_SUBST([REPLACE_SNPRINTF])
+ REPLACE_SPRINTF=0; AC_SUBST([REPLACE_SPRINTF])
+ REPLACE_STDIO_READ_FUNCS=0; AC_SUBST([REPLACE_STDIO_READ_FUNCS])
+ REPLACE_STDIO_WRITE_FUNCS=0; AC_SUBST([REPLACE_STDIO_WRITE_FUNCS])
+ REPLACE_TMPFILE=0; AC_SUBST([REPLACE_TMPFILE])
+ REPLACE_VASPRINTF=0; AC_SUBST([REPLACE_VASPRINTF])
+ REPLACE_VDPRINTF=0; AC_SUBST([REPLACE_VDPRINTF])
+ REPLACE_VFPRINTF=0; AC_SUBST([REPLACE_VFPRINTF])
+ REPLACE_VPRINTF=0; AC_SUBST([REPLACE_VPRINTF])
+ REPLACE_VSNPRINTF=0; AC_SUBST([REPLACE_VSNPRINTF])
+ REPLACE_VSPRINTF=0; AC_SUBST([REPLACE_VSPRINTF])
+])
diff --git a/m4/stdlib_h.m4 b/m4/stdlib_h.m4
new file mode 100644
index 0000000..61a3e31
--- /dev/null
+++ b/m4/stdlib_h.m4
@@ -0,0 +1,136 @@
+# stdlib_h.m4 serial 48
+dnl Copyright (C) 2007-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_STDLIB_H],
+[
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+ gl_NEXT_HEADERS([stdlib.h])
+
+ dnl Check for declarations of anything we want to poison if the
+ dnl corresponding gnulib module is not in use, and which is not
+ dnl guaranteed by C89.
+ gl_WARN_ON_USE_PREPARE([[#include <stdlib.h>
+#if HAVE_SYS_LOADAVG_H
+/* OpenIndiana has a bug: <sys/time.h> must be included before
+ <sys/loadavg.h>. */
+# include <sys/time.h>
+# include <sys/loadavg.h>
+#endif
+#if HAVE_RANDOM_H
+# include <random.h>
+#endif
+ ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt
+ initstate initstate_r mbtowc mkdtemp mkostemp mkostemps mkstemp mkstemps
+ posix_openpt ptsname ptsname_r qsort_r random random_r reallocarray
+ realpath rpmatch secure_getenv setenv setstate setstate_r srandom
+ srandom_r strtod strtold strtoll strtoull unlockpt unsetenv])
+])
+
+AC_DEFUN([gl_STDLIB_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_STDLIB_H_DEFAULTS],
+[
+ GNULIB__EXIT=0; AC_SUBST([GNULIB__EXIT])
+ GNULIB_ATOLL=0; AC_SUBST([GNULIB_ATOLL])
+ GNULIB_CALLOC_POSIX=0; AC_SUBST([GNULIB_CALLOC_POSIX])
+ GNULIB_CANONICALIZE_FILE_NAME=0; AC_SUBST([GNULIB_CANONICALIZE_FILE_NAME])
+ GNULIB_GETLOADAVG=0; AC_SUBST([GNULIB_GETLOADAVG])
+ GNULIB_GETSUBOPT=0; AC_SUBST([GNULIB_GETSUBOPT])
+ GNULIB_GRANTPT=0; AC_SUBST([GNULIB_GRANTPT])
+ GNULIB_MALLOC_POSIX=0; AC_SUBST([GNULIB_MALLOC_POSIX])
+ GNULIB_MBTOWC=0; AC_SUBST([GNULIB_MBTOWC])
+ GNULIB_MKDTEMP=0; AC_SUBST([GNULIB_MKDTEMP])
+ GNULIB_MKOSTEMP=0; AC_SUBST([GNULIB_MKOSTEMP])
+ GNULIB_MKOSTEMPS=0; AC_SUBST([GNULIB_MKOSTEMPS])
+ GNULIB_MKSTEMP=0; AC_SUBST([GNULIB_MKSTEMP])
+ GNULIB_MKSTEMPS=0; AC_SUBST([GNULIB_MKSTEMPS])
+ GNULIB_POSIX_OPENPT=0; AC_SUBST([GNULIB_POSIX_OPENPT])
+ GNULIB_PTSNAME=0; AC_SUBST([GNULIB_PTSNAME])
+ GNULIB_PTSNAME_R=0; AC_SUBST([GNULIB_PTSNAME_R])
+ GNULIB_PUTENV=0; AC_SUBST([GNULIB_PUTENV])
+ GNULIB_QSORT_R=0; AC_SUBST([GNULIB_QSORT_R])
+ GNULIB_RANDOM=0; AC_SUBST([GNULIB_RANDOM])
+ GNULIB_RANDOM_R=0; AC_SUBST([GNULIB_RANDOM_R])
+ GNULIB_REALLOCARRAY=0; AC_SUBST([GNULIB_REALLOCARRAY])
+ GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX])
+ GNULIB_REALPATH=0; AC_SUBST([GNULIB_REALPATH])
+ GNULIB_RPMATCH=0; AC_SUBST([GNULIB_RPMATCH])
+ GNULIB_SECURE_GETENV=0; AC_SUBST([GNULIB_SECURE_GETENV])
+ GNULIB_SETENV=0; AC_SUBST([GNULIB_SETENV])
+ GNULIB_STRTOD=0; AC_SUBST([GNULIB_STRTOD])
+ GNULIB_STRTOLD=0; AC_SUBST([GNULIB_STRTOLD])
+ GNULIB_STRTOLL=0; AC_SUBST([GNULIB_STRTOLL])
+ GNULIB_STRTOULL=0; AC_SUBST([GNULIB_STRTOULL])
+ GNULIB_SYSTEM_POSIX=0; AC_SUBST([GNULIB_SYSTEM_POSIX])
+ GNULIB_UNLOCKPT=0; AC_SUBST([GNULIB_UNLOCKPT])
+ GNULIB_UNSETENV=0; AC_SUBST([GNULIB_UNSETENV])
+ GNULIB_WCTOMB=0; AC_SUBST([GNULIB_WCTOMB])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE__EXIT=1; AC_SUBST([HAVE__EXIT])
+ HAVE_ATOLL=1; AC_SUBST([HAVE_ATOLL])
+ HAVE_CANONICALIZE_FILE_NAME=1; AC_SUBST([HAVE_CANONICALIZE_FILE_NAME])
+ HAVE_DECL_GETLOADAVG=1; AC_SUBST([HAVE_DECL_GETLOADAVG])
+ HAVE_GETSUBOPT=1; AC_SUBST([HAVE_GETSUBOPT])
+ HAVE_GRANTPT=1; AC_SUBST([HAVE_GRANTPT])
+ HAVE_INITSTATE=1; AC_SUBST([HAVE_INITSTATE])
+ HAVE_DECL_INITSTATE=1; AC_SUBST([HAVE_DECL_INITSTATE])
+ HAVE_MBTOWC=1; AC_SUBST([HAVE_MBTOWC])
+ HAVE_MKDTEMP=1; AC_SUBST([HAVE_MKDTEMP])
+ HAVE_MKOSTEMP=1; AC_SUBST([HAVE_MKOSTEMP])
+ HAVE_MKOSTEMPS=1; AC_SUBST([HAVE_MKOSTEMPS])
+ HAVE_MKSTEMP=1; AC_SUBST([HAVE_MKSTEMP])
+ HAVE_MKSTEMPS=1; AC_SUBST([HAVE_MKSTEMPS])
+ HAVE_POSIX_OPENPT=1; AC_SUBST([HAVE_POSIX_OPENPT])
+ HAVE_PTSNAME=1; AC_SUBST([HAVE_PTSNAME])
+ HAVE_PTSNAME_R=1; AC_SUBST([HAVE_PTSNAME_R])
+ HAVE_QSORT_R=1; AC_SUBST([HAVE_QSORT_R])
+ HAVE_RANDOM=1; AC_SUBST([HAVE_RANDOM])
+ HAVE_RANDOM_H=1; AC_SUBST([HAVE_RANDOM_H])
+ HAVE_RANDOM_R=1; AC_SUBST([HAVE_RANDOM_R])
+ HAVE_REALLOCARRAY=1; AC_SUBST([HAVE_REALLOCARRAY])
+ HAVE_REALPATH=1; AC_SUBST([HAVE_REALPATH])
+ HAVE_RPMATCH=1; AC_SUBST([HAVE_RPMATCH])
+ HAVE_SECURE_GETENV=1; AC_SUBST([HAVE_SECURE_GETENV])
+ HAVE_SETENV=1; AC_SUBST([HAVE_SETENV])
+ HAVE_DECL_SETENV=1; AC_SUBST([HAVE_DECL_SETENV])
+ HAVE_SETSTATE=1; AC_SUBST([HAVE_SETSTATE])
+ HAVE_DECL_SETSTATE=1; AC_SUBST([HAVE_DECL_SETSTATE])
+ HAVE_STRTOD=1; AC_SUBST([HAVE_STRTOD])
+ HAVE_STRTOLD=1; AC_SUBST([HAVE_STRTOLD])
+ HAVE_STRTOLL=1; AC_SUBST([HAVE_STRTOLL])
+ HAVE_STRTOULL=1; AC_SUBST([HAVE_STRTOULL])
+ HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA])
+ HAVE_SYS_LOADAVG_H=0; AC_SUBST([HAVE_SYS_LOADAVG_H])
+ HAVE_UNLOCKPT=1; AC_SUBST([HAVE_UNLOCKPT])
+ HAVE_DECL_UNSETENV=1; AC_SUBST([HAVE_DECL_UNSETENV])
+ REPLACE_CALLOC=0; AC_SUBST([REPLACE_CALLOC])
+ REPLACE_CANONICALIZE_FILE_NAME=0; AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME])
+ REPLACE_INITSTATE=0; AC_SUBST([REPLACE_INITSTATE])
+ REPLACE_MALLOC=0; AC_SUBST([REPLACE_MALLOC])
+ REPLACE_MBTOWC=0; AC_SUBST([REPLACE_MBTOWC])
+ REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP])
+ REPLACE_PTSNAME=0; AC_SUBST([REPLACE_PTSNAME])
+ REPLACE_PTSNAME_R=0; AC_SUBST([REPLACE_PTSNAME_R])
+ REPLACE_PUTENV=0; AC_SUBST([REPLACE_PUTENV])
+ REPLACE_QSORT_R=0; AC_SUBST([REPLACE_QSORT_R])
+ REPLACE_RANDOM=0; AC_SUBST([REPLACE_RANDOM])
+ REPLACE_RANDOM_R=0; AC_SUBST([REPLACE_RANDOM_R])
+ REPLACE_REALLOC=0; AC_SUBST([REPLACE_REALLOC])
+ REPLACE_REALPATH=0; AC_SUBST([REPLACE_REALPATH])
+ REPLACE_SETENV=0; AC_SUBST([REPLACE_SETENV])
+ REPLACE_SETSTATE=0; AC_SUBST([REPLACE_SETSTATE])
+ REPLACE_STRTOD=0; AC_SUBST([REPLACE_STRTOD])
+ REPLACE_STRTOLD=0; AC_SUBST([REPLACE_STRTOLD])
+ REPLACE_UNSETENV=0; AC_SUBST([REPLACE_UNSETENV])
+ REPLACE_WCTOMB=0; AC_SUBST([REPLACE_WCTOMB])
+])
diff --git a/m4/stpcpy.m4 b/m4/stpcpy.m4
new file mode 100644
index 0000000..0f0fa9e
--- /dev/null
+++ b/m4/stpcpy.m4
@@ -0,0 +1,25 @@
+# stpcpy.m4 serial 8
+dnl Copyright (C) 2002, 2007, 2009-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STPCPY],
+[
+ dnl Persuade glibc <string.h> to declare stpcpy().
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+ dnl The stpcpy() declaration in lib/string.in.h uses 'restrict'.
+ AC_REQUIRE([AC_C_RESTRICT])
+
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ AC_CHECK_FUNCS([stpcpy])
+ if test $ac_cv_func_stpcpy = no; then
+ HAVE_STPCPY=0
+ fi
+])
+
+# Prerequisites of lib/stpcpy.c.
+AC_DEFUN([gl_PREREQ_STPCPY], [
+ :
+])
diff --git a/m4/strerror.m4 b/m4/strerror.m4
new file mode 100644
index 0000000..fd84ce8
--- /dev/null
+++ b/m4/strerror.m4
@@ -0,0 +1,102 @@
+# strerror.m4 serial 21
+dnl Copyright (C) 2002, 2007-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STRERROR],
+[
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ AC_REQUIRE([gl_HEADER_ERRNO_H])
+ AC_REQUIRE([gl_FUNC_STRERROR_0])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ m4_ifdef([gl_FUNC_STRERROR_R_WORKS], [
+ AC_REQUIRE([gl_FUNC_STRERROR_R_WORKS])
+ ])
+ if test "$ERRNO_H:$REPLACE_STRERROR_0" = :0; then
+ AC_CACHE_CHECK([for working strerror function],
+ [gl_cv_func_working_strerror],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <string.h>
+ ]],
+ [[if (!*strerror (-2)) return 1;]])],
+ [gl_cv_func_working_strerror=yes],
+ [gl_cv_func_working_strerror=no],
+ [case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu* | gnu*) gl_cv_func_working_strerror="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_working_strerror="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_working_strerror="$gl_cross_guess_normal" ;;
+ esac
+ ])
+ ])
+ case "$gl_cv_func_working_strerror" in
+ *yes) ;;
+ *)
+ dnl The system's strerror() fails to return a string for out-of-range
+ dnl integers. Replace it.
+ REPLACE_STRERROR=1
+ ;;
+ esac
+ m4_ifdef([gl_FUNC_STRERROR_R_WORKS], [
+ dnl If the system's strerror_r or __xpg_strerror_r clobbers strerror's
+ dnl buffer, we must replace strerror.
+ case "$gl_cv_func_strerror_r_works" in
+ *no) REPLACE_STRERROR=1 ;;
+ esac
+ ])
+ else
+ dnl The system's strerror() cannot know about the new errno values we add
+ dnl to <errno.h>, or any fix for strerror(0). Replace it.
+ REPLACE_STRERROR=1
+ fi
+])
+
+dnl Detect if strerror(0) passes (that is, does not set errno, and does not
+dnl return a string that matches strerror(-1)).
+AC_DEFUN([gl_FUNC_STRERROR_0],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ REPLACE_STRERROR_0=0
+ AC_CACHE_CHECK([whether strerror(0) succeeds],
+ [gl_cv_func_strerror_0_works],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <string.h>
+ #include <errno.h>
+ ]],
+ [[int result = 0;
+ char *str;
+ errno = 0;
+ str = strerror (0);
+ if (!*str) result |= 1;
+ if (errno) result |= 2;
+ if (strstr (str, "nknown") || strstr (str, "ndefined"))
+ result |= 4;
+ return result;]])],
+ [gl_cv_func_strerror_0_works=yes],
+ [gl_cv_func_strerror_0_works=no],
+ [case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu* | gnu*) gl_cv_func_strerror_0_works="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl*) gl_cv_func_strerror_0_works="guessing yes" ;;
+ # Guess yes on native Windows.
+ mingw*) gl_cv_func_strerror_0_works="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_strerror_0_works="$gl_cross_guess_normal" ;;
+ esac
+ ])
+ ])
+ case "$gl_cv_func_strerror_0_works" in
+ *yes) ;;
+ *)
+ REPLACE_STRERROR_0=1
+ AC_DEFINE([REPLACE_STRERROR_0], [1], [Define to 1 if strerror(0)
+ does not return a message implying success.])
+ ;;
+ esac
+])
diff --git a/m4/string_h.m4 b/m4/string_h.m4
new file mode 100644
index 0000000..4c1f685
--- /dev/null
+++ b/m4/string_h.m4
@@ -0,0 +1,122 @@
+# Configure a GNU-like replacement for <string.h>.
+
+# Copyright (C) 2007-2020 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 22
+
+# Written by Paul Eggert.
+
+AC_DEFUN([gl_HEADER_STRING_H],
+[
+ dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+ dnl once only, before all statements that occur in other macros.
+ AC_REQUIRE([gl_HEADER_STRING_H_BODY])
+])
+
+AC_DEFUN([gl_HEADER_STRING_H_BODY],
+[
+ AC_REQUIRE([AC_C_RESTRICT])
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ gl_NEXT_HEADERS([string.h])
+
+ dnl Check for declarations of anything we want to poison if the
+ dnl corresponding gnulib module is not in use, and which is not
+ dnl guaranteed by C89.
+ gl_WARN_ON_USE_PREPARE([[#include <string.h>
+ ]],
+ [ffsl ffsll memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul
+ strdup strncat strndup strnlen strpbrk strsep strcasestr strtok_r
+ strerror_r strsignal strverscmp])
+])
+
+AC_DEFUN([gl_STRING_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
+[
+ GNULIB_EXPLICIT_BZERO=0; AC_SUBST([GNULIB_EXPLICIT_BZERO])
+ GNULIB_FFSL=0; AC_SUBST([GNULIB_FFSL])
+ GNULIB_FFSLL=0; AC_SUBST([GNULIB_FFSLL])
+ GNULIB_MEMCHR=0; AC_SUBST([GNULIB_MEMCHR])
+ GNULIB_MEMMEM=0; AC_SUBST([GNULIB_MEMMEM])
+ GNULIB_MEMPCPY=0; AC_SUBST([GNULIB_MEMPCPY])
+ GNULIB_MEMRCHR=0; AC_SUBST([GNULIB_MEMRCHR])
+ GNULIB_RAWMEMCHR=0; AC_SUBST([GNULIB_RAWMEMCHR])
+ GNULIB_STPCPY=0; AC_SUBST([GNULIB_STPCPY])
+ GNULIB_STPNCPY=0; AC_SUBST([GNULIB_STPNCPY])
+ GNULIB_STRCHRNUL=0; AC_SUBST([GNULIB_STRCHRNUL])
+ GNULIB_STRDUP=0; AC_SUBST([GNULIB_STRDUP])
+ GNULIB_STRNCAT=0; AC_SUBST([GNULIB_STRNCAT])
+ GNULIB_STRNDUP=0; AC_SUBST([GNULIB_STRNDUP])
+ GNULIB_STRNLEN=0; AC_SUBST([GNULIB_STRNLEN])
+ GNULIB_STRPBRK=0; AC_SUBST([GNULIB_STRPBRK])
+ GNULIB_STRSEP=0; AC_SUBST([GNULIB_STRSEP])
+ GNULIB_STRSTR=0; AC_SUBST([GNULIB_STRSTR])
+ GNULIB_STRCASESTR=0; AC_SUBST([GNULIB_STRCASESTR])
+ GNULIB_STRTOK_R=0; AC_SUBST([GNULIB_STRTOK_R])
+ GNULIB_MBSLEN=0; AC_SUBST([GNULIB_MBSLEN])
+ GNULIB_MBSNLEN=0; AC_SUBST([GNULIB_MBSNLEN])
+ GNULIB_MBSCHR=0; AC_SUBST([GNULIB_MBSCHR])
+ GNULIB_MBSRCHR=0; AC_SUBST([GNULIB_MBSRCHR])
+ GNULIB_MBSSTR=0; AC_SUBST([GNULIB_MBSSTR])
+ GNULIB_MBSCASECMP=0; AC_SUBST([GNULIB_MBSCASECMP])
+ GNULIB_MBSNCASECMP=0; AC_SUBST([GNULIB_MBSNCASECMP])
+ GNULIB_MBSPCASECMP=0; AC_SUBST([GNULIB_MBSPCASECMP])
+ GNULIB_MBSCASESTR=0; AC_SUBST([GNULIB_MBSCASESTR])
+ GNULIB_MBSCSPN=0; AC_SUBST([GNULIB_MBSCSPN])
+ GNULIB_MBSPBRK=0; AC_SUBST([GNULIB_MBSPBRK])
+ GNULIB_MBSSPN=0; AC_SUBST([GNULIB_MBSSPN])
+ GNULIB_MBSSEP=0; AC_SUBST([GNULIB_MBSSEP])
+ GNULIB_MBSTOK_R=0; AC_SUBST([GNULIB_MBSTOK_R])
+ GNULIB_STRERROR=0; AC_SUBST([GNULIB_STRERROR])
+ GNULIB_STRERROR_R=0; AC_SUBST([GNULIB_STRERROR_R])
+ GNULIB_STRSIGNAL=0; AC_SUBST([GNULIB_STRSIGNAL])
+ GNULIB_STRVERSCMP=0; AC_SUBST([GNULIB_STRVERSCMP])
+ HAVE_MBSLEN=0; AC_SUBST([HAVE_MBSLEN])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_EXPLICIT_BZERO=1; AC_SUBST([HAVE_EXPLICIT_BZERO])
+ HAVE_FFSL=1; AC_SUBST([HAVE_FFSL])
+ HAVE_FFSLL=1; AC_SUBST([HAVE_FFSLL])
+ HAVE_MEMCHR=1; AC_SUBST([HAVE_MEMCHR])
+ HAVE_DECL_MEMMEM=1; AC_SUBST([HAVE_DECL_MEMMEM])
+ HAVE_MEMPCPY=1; AC_SUBST([HAVE_MEMPCPY])
+ HAVE_DECL_MEMRCHR=1; AC_SUBST([HAVE_DECL_MEMRCHR])
+ HAVE_RAWMEMCHR=1; AC_SUBST([HAVE_RAWMEMCHR])
+ HAVE_STPCPY=1; AC_SUBST([HAVE_STPCPY])
+ HAVE_STPNCPY=1; AC_SUBST([HAVE_STPNCPY])
+ HAVE_STRCHRNUL=1; AC_SUBST([HAVE_STRCHRNUL])
+ HAVE_DECL_STRDUP=1; AC_SUBST([HAVE_DECL_STRDUP])
+ HAVE_DECL_STRNDUP=1; AC_SUBST([HAVE_DECL_STRNDUP])
+ HAVE_DECL_STRNLEN=1; AC_SUBST([HAVE_DECL_STRNLEN])
+ HAVE_STRPBRK=1; AC_SUBST([HAVE_STRPBRK])
+ HAVE_STRSEP=1; AC_SUBST([HAVE_STRSEP])
+ HAVE_STRCASESTR=1; AC_SUBST([HAVE_STRCASESTR])
+ HAVE_DECL_STRTOK_R=1; AC_SUBST([HAVE_DECL_STRTOK_R])
+ HAVE_DECL_STRERROR_R=1; AC_SUBST([HAVE_DECL_STRERROR_R])
+ HAVE_DECL_STRSIGNAL=1; AC_SUBST([HAVE_DECL_STRSIGNAL])
+ HAVE_STRVERSCMP=1; AC_SUBST([HAVE_STRVERSCMP])
+ REPLACE_MEMCHR=0; AC_SUBST([REPLACE_MEMCHR])
+ REPLACE_MEMMEM=0; AC_SUBST([REPLACE_MEMMEM])
+ REPLACE_STPNCPY=0; AC_SUBST([REPLACE_STPNCPY])
+ REPLACE_STRCHRNUL=0; AC_SUBST([REPLACE_STRCHRNUL])
+ REPLACE_STRDUP=0; AC_SUBST([REPLACE_STRDUP])
+ REPLACE_STRNCAT=0; AC_SUBST([REPLACE_STRNCAT])
+ REPLACE_STRNDUP=0; AC_SUBST([REPLACE_STRNDUP])
+ REPLACE_STRNLEN=0; AC_SUBST([REPLACE_STRNLEN])
+ REPLACE_STRSTR=0; AC_SUBST([REPLACE_STRSTR])
+ REPLACE_STRCASESTR=0; AC_SUBST([REPLACE_STRCASESTR])
+ REPLACE_STRTOK_R=0; AC_SUBST([REPLACE_STRTOK_R])
+ REPLACE_STRERROR=0; AC_SUBST([REPLACE_STRERROR])
+ REPLACE_STRERROR_R=0; AC_SUBST([REPLACE_STRERROR_R])
+ REPLACE_STRSIGNAL=0; AC_SUBST([REPLACE_STRSIGNAL])
+ UNDEFINE_STRTOK_R=0; AC_SUBST([UNDEFINE_STRTOK_R])
+])
diff --git a/m4/sys_socket_h.m4 b/m4/sys_socket_h.m4
new file mode 100644
index 0000000..1471aea
--- /dev/null
+++ b/m4/sys_socket_h.m4
@@ -0,0 +1,188 @@
+# sys_socket_h.m4 serial 24
+dnl Copyright (C) 2005-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Simon Josefsson.
+
+AC_DEFUN([gl_HEADER_SYS_SOCKET],
+[
+ AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ dnl On OSF/1, the functions recv(), send(), recvfrom(), sendto() have
+ dnl old-style declarations (with return type 'int' instead of 'ssize_t')
+ dnl unless _POSIX_PII_SOCKET is defined.
+ case "$host_os" in
+ osf*)
+ AC_DEFINE([_POSIX_PII_SOCKET], [1],
+ [Define to 1 in order to get the POSIX compatible declarations
+ of socket functions.])
+ ;;
+ esac
+
+ AC_CACHE_CHECK([whether <sys/socket.h> is self-contained],
+ [gl_cv_header_sys_socket_h_selfcontained],
+ [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]], [[]])],
+ [gl_cv_header_sys_socket_h_selfcontained=yes],
+ [gl_cv_header_sys_socket_h_selfcontained=no])
+ ])
+ if test $gl_cv_header_sys_socket_h_selfcontained = yes; then
+ dnl If the shutdown function exists, <sys/socket.h> should define
+ dnl SHUT_RD, SHUT_WR, SHUT_RDWR.
+ AC_CHECK_FUNCS([shutdown])
+ if test $ac_cv_func_shutdown = yes; then
+ AC_CACHE_CHECK([whether <sys/socket.h> defines the SHUT_* macros],
+ [gl_cv_header_sys_socket_h_shut],
+ [
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[#include <sys/socket.h>]],
+ [[int a[] = { SHUT_RD, SHUT_WR, SHUT_RDWR };]])],
+ [gl_cv_header_sys_socket_h_shut=yes],
+ [gl_cv_header_sys_socket_h_shut=no])
+ ])
+ if test $gl_cv_header_sys_socket_h_shut = no; then
+ SYS_SOCKET_H='sys/socket.h'
+ fi
+ fi
+ fi
+ # We need to check for ws2tcpip.h now.
+ gl_PREREQ_SYS_H_SOCKET
+ AC_CHECK_TYPES([struct sockaddr_storage, sa_family_t],,,[
+ /* sys/types.h is not needed according to POSIX, but the
+ sys/socket.h in i386-unknown-freebsd4.10 and
+ powerpc-apple-darwin5.5 required it. */
+#include <sys/types.h>
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+])
+ if test $ac_cv_type_struct_sockaddr_storage = no; then
+ HAVE_STRUCT_SOCKADDR_STORAGE=0
+ fi
+ if test $ac_cv_type_sa_family_t = no; then
+ HAVE_SA_FAMILY_T=0
+ fi
+ if test $ac_cv_type_struct_sockaddr_storage != no; then
+ AC_CHECK_MEMBERS([struct sockaddr_storage.ss_family],
+ [],
+ [HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=0],
+ [#include <sys/types.h>
+ #ifdef HAVE_SYS_SOCKET_H
+ #include <sys/socket.h>
+ #endif
+ #ifdef HAVE_WS2TCPIP_H
+ #include <ws2tcpip.h>
+ #endif
+ ])
+ fi
+ if test $HAVE_STRUCT_SOCKADDR_STORAGE = 0 || test $HAVE_SA_FAMILY_T = 0 \
+ || test $HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = 0; then
+ SYS_SOCKET_H='sys/socket.h'
+ fi
+ gl_PREREQ_SYS_H_WINSOCK2
+
+ dnl Check for declarations of anything we want to poison if the
+ dnl corresponding gnulib module is not in use.
+ gl_WARN_ON_USE_PREPARE([[
+/* Some systems require prerequisite headers. */
+#include <sys/types.h>
+#include <sys/socket.h>
+ ]], [socket connect accept bind getpeername getsockname getsockopt
+ listen recv send recvfrom sendto setsockopt shutdown accept4])
+])
+
+AC_DEFUN([gl_PREREQ_SYS_H_SOCKET],
+[
+ dnl Check prerequisites of the <sys/socket.h> replacement.
+ AC_REQUIRE([gl_CHECK_SOCKET_HEADERS])
+ gl_CHECK_NEXT_HEADERS([sys/socket.h])
+ if test $ac_cv_header_sys_socket_h = yes; then
+ HAVE_SYS_SOCKET_H=1
+ else
+ HAVE_SYS_SOCKET_H=0
+ fi
+ AC_SUBST([HAVE_SYS_SOCKET_H])
+ gl_PREREQ_SYS_H_WS2TCPIP
+])
+
+# Common prerequisites of the <sys/socket.h> replacement and of the
+# <sys/select.h> replacement.
+# Sets and substitutes HAVE_WINSOCK2_H.
+AC_DEFUN([gl_PREREQ_SYS_H_WINSOCK2],
+[
+ m4_ifdef([gl_UNISTD_H_DEFAULTS], [AC_REQUIRE([gl_UNISTD_H_DEFAULTS])])
+ m4_ifdef([gl_SYS_IOCTL_H_DEFAULTS], [AC_REQUIRE([gl_SYS_IOCTL_H_DEFAULTS])])
+ AC_CHECK_HEADERS_ONCE([sys/socket.h])
+ if test $ac_cv_header_sys_socket_h != yes; then
+ dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make
+ dnl the check for those headers unconditional; yet cygwin reports
+ dnl that the headers are present but cannot be compiled (since on
+ dnl cygwin, all socket information should come from sys/socket.h).
+ AC_CHECK_HEADERS([winsock2.h])
+ fi
+ if test "$ac_cv_header_winsock2_h" = yes; then
+ HAVE_WINSOCK2_H=1
+ UNISTD_H_HAVE_WINSOCK2_H=1
+ SYS_IOCTL_H_HAVE_WINSOCK2_H=1
+ else
+ HAVE_WINSOCK2_H=0
+ fi
+ AC_SUBST([HAVE_WINSOCK2_H])
+])
+
+# Common prerequisites of the <sys/socket.h> replacement and of the
+# <arpa/inet.h> replacement.
+# Sets and substitutes HAVE_WS2TCPIP_H.
+AC_DEFUN([gl_PREREQ_SYS_H_WS2TCPIP],
+[
+ AC_REQUIRE([gl_CHECK_SOCKET_HEADERS])
+ if test $ac_cv_header_sys_socket_h = yes; then
+ HAVE_WS2TCPIP_H=0
+ else
+ if test $ac_cv_header_ws2tcpip_h = yes; then
+ HAVE_WS2TCPIP_H=1
+ else
+ HAVE_WS2TCPIP_H=0
+ fi
+ fi
+ AC_SUBST([HAVE_WS2TCPIP_H])
+])
+
+AC_DEFUN([gl_SYS_SOCKET_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS])
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_SYS_SOCKET_H_DEFAULTS],
+[
+ GNULIB_SOCKET=0; AC_SUBST([GNULIB_SOCKET])
+ GNULIB_CONNECT=0; AC_SUBST([GNULIB_CONNECT])
+ GNULIB_ACCEPT=0; AC_SUBST([GNULIB_ACCEPT])
+ GNULIB_BIND=0; AC_SUBST([GNULIB_BIND])
+ GNULIB_GETPEERNAME=0; AC_SUBST([GNULIB_GETPEERNAME])
+ GNULIB_GETSOCKNAME=0; AC_SUBST([GNULIB_GETSOCKNAME])
+ GNULIB_GETSOCKOPT=0; AC_SUBST([GNULIB_GETSOCKOPT])
+ GNULIB_LISTEN=0; AC_SUBST([GNULIB_LISTEN])
+ GNULIB_RECV=0; AC_SUBST([GNULIB_RECV])
+ GNULIB_SEND=0; AC_SUBST([GNULIB_SEND])
+ GNULIB_RECVFROM=0; AC_SUBST([GNULIB_RECVFROM])
+ GNULIB_SENDTO=0; AC_SUBST([GNULIB_SENDTO])
+ GNULIB_SETSOCKOPT=0; AC_SUBST([GNULIB_SETSOCKOPT])
+ GNULIB_SHUTDOWN=0; AC_SUBST([GNULIB_SHUTDOWN])
+ GNULIB_ACCEPT4=0; AC_SUBST([GNULIB_ACCEPT4])
+ HAVE_STRUCT_SOCKADDR_STORAGE=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE])
+ HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=1;
+ AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY])
+ HAVE_SA_FAMILY_T=1; AC_SUBST([HAVE_SA_FAMILY_T])
+ HAVE_ACCEPT4=1; AC_SUBST([HAVE_ACCEPT4])
+])
diff --git a/m4/sys_types_h.m4 b/m4/sys_types_h.m4
new file mode 100644
index 0000000..be918dc
--- /dev/null
+++ b/m4/sys_types_h.m4
@@ -0,0 +1,60 @@
+# sys_types_h.m4 serial 9
+dnl Copyright (C) 2011-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN_ONCE([gl_SYS_TYPES_H],
+[
+ dnl Use sane struct stat types in OpenVMS 8.2 and later.
+ AC_DEFINE([_USE_STD_STAT], 1, [For standard stat data types on VMS.])
+
+ AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS])
+ gl_NEXT_HEADERS([sys/types.h])
+
+ dnl Ensure the type pid_t gets defined.
+ AC_REQUIRE([AC_TYPE_PID_T])
+
+ dnl Ensure the type mode_t gets defined.
+ AC_REQUIRE([AC_TYPE_MODE_T])
+
+ dnl Whether to override the 'off_t' type.
+ AC_REQUIRE([gl_TYPE_OFF_T])
+
+ dnl Whether to override the 'dev_t' and 'ino_t' types.
+ m4_ifdef([gl_WINDOWS_STAT_INODES], [
+ AC_REQUIRE([gl_WINDOWS_STAT_INODES])
+ ], [
+ WINDOWS_STAT_INODES=0
+ ])
+ AC_SUBST([WINDOWS_STAT_INODES])
+])
+
+AC_DEFUN([gl_SYS_TYPES_H_DEFAULTS],
+[
+])
+
+# This works around a buggy version in autoconf <= 2.69.
+# See <https://lists.gnu.org/r/autoconf/2016-08/msg00014.html>
+
+m4_version_prereq([2.70], [], [
+
+# This is taken from the following Autoconf patch:
+# https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=e17a30e987d7ee695fb4294a82d987ec3dc9b974
+
+m4_undefine([AC_HEADER_MAJOR])
+AC_DEFUN([AC_HEADER_MAJOR],
+[AC_CHECK_HEADERS_ONCE([sys/types.h])
+AC_CHECK_HEADER([sys/mkdev.h],
+ [AC_DEFINE([MAJOR_IN_MKDEV], [1],
+ [Define to 1 if `major', `minor', and `makedev' are declared in
+ <mkdev.h>.])])
+if test $ac_cv_header_sys_mkdev_h = no; then
+ AC_CHECK_HEADER([sys/sysmacros.h],
+ [AC_DEFINE([MAJOR_IN_SYSMACROS], [1],
+ [Define to 1 if `major', `minor', and `makedev' are declared in
+ <sysmacros.h>.])])
+fi
+])
+
+])
diff --git a/m4/unistd_h.m4 b/m4/unistd_h.m4
new file mode 100644
index 0000000..7453866
--- /dev/null
+++ b/m4/unistd_h.m4
@@ -0,0 +1,201 @@
+# unistd_h.m4 serial 76
+dnl Copyright (C) 2006-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Simon Josefsson, Bruno Haible.
+
+AC_DEFUN([gl_UNISTD_H],
+[
+ dnl Use AC_REQUIRE here, so that the default behavior below is expanded
+ dnl once only, before all statements that occur in other macros.
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+
+ gl_CHECK_NEXT_HEADERS([unistd.h])
+ if test $ac_cv_header_unistd_h = yes; then
+ HAVE_UNISTD_H=1
+ else
+ HAVE_UNISTD_H=0
+ fi
+ AC_SUBST([HAVE_UNISTD_H])
+
+ dnl Ensure the type pid_t gets defined.
+ AC_REQUIRE([AC_TYPE_PID_T])
+
+ dnl Determine WINDOWS_64_BIT_OFF_T.
+ AC_REQUIRE([gl_TYPE_OFF_T])
+
+ dnl Check for declarations of anything we want to poison if the
+ dnl corresponding gnulib module is not in use.
+ gl_WARN_ON_USE_PREPARE([[
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+/* Some systems declare various items in the wrong headers. */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <fcntl.h>
+# include <stdio.h>
+# include <stdlib.h>
+# if defined _WIN32 && ! defined __CYGWIN__
+# include <io.h>
+# endif
+#endif
+ ]], [access chdir chown dup dup2 dup3 environ euidaccess faccessat fchdir
+ fchownat fdatasync fsync ftruncate getcwd getdomainname getdtablesize
+ getgroups gethostname getlogin getlogin_r getpagesize getpass
+ getusershell setusershell endusershell
+ group_member isatty lchown link linkat lseek pipe pipe2 pread pwrite
+ readlink readlinkat rmdir sethostname sleep symlink symlinkat
+ truncate ttyname_r unlink unlinkat usleep])
+])
+
+AC_DEFUN([gl_UNISTD_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_UNISTD_H_DEFAULTS],
+[
+ GNULIB_ACCESS=0; AC_SUBST([GNULIB_ACCESS])
+ GNULIB_CHDIR=0; AC_SUBST([GNULIB_CHDIR])
+ GNULIB_CHOWN=0; AC_SUBST([GNULIB_CHOWN])
+ GNULIB_CLOSE=0; AC_SUBST([GNULIB_CLOSE])
+ GNULIB_COPY_FILE_RANGE=0; AC_SUBST([GNULIB_COPY_FILE_RANGE])
+ GNULIB_DUP=0; AC_SUBST([GNULIB_DUP])
+ GNULIB_DUP2=0; AC_SUBST([GNULIB_DUP2])
+ GNULIB_DUP3=0; AC_SUBST([GNULIB_DUP3])
+ GNULIB_ENVIRON=0; AC_SUBST([GNULIB_ENVIRON])
+ GNULIB_EUIDACCESS=0; AC_SUBST([GNULIB_EUIDACCESS])
+ GNULIB_FACCESSAT=0; AC_SUBST([GNULIB_FACCESSAT])
+ GNULIB_FCHDIR=0; AC_SUBST([GNULIB_FCHDIR])
+ GNULIB_FCHOWNAT=0; AC_SUBST([GNULIB_FCHOWNAT])
+ GNULIB_FDATASYNC=0; AC_SUBST([GNULIB_FDATASYNC])
+ GNULIB_FSYNC=0; AC_SUBST([GNULIB_FSYNC])
+ GNULIB_FTRUNCATE=0; AC_SUBST([GNULIB_FTRUNCATE])
+ GNULIB_GETCWD=0; AC_SUBST([GNULIB_GETCWD])
+ GNULIB_GETDOMAINNAME=0; AC_SUBST([GNULIB_GETDOMAINNAME])
+ GNULIB_GETDTABLESIZE=0; AC_SUBST([GNULIB_GETDTABLESIZE])
+ GNULIB_GETGROUPS=0; AC_SUBST([GNULIB_GETGROUPS])
+ GNULIB_GETHOSTNAME=0; AC_SUBST([GNULIB_GETHOSTNAME])
+ GNULIB_GETLOGIN=0; AC_SUBST([GNULIB_GETLOGIN])
+ GNULIB_GETLOGIN_R=0; AC_SUBST([GNULIB_GETLOGIN_R])
+ GNULIB_GETPAGESIZE=0; AC_SUBST([GNULIB_GETPAGESIZE])
+ GNULIB_GETPASS=0; AC_SUBST([GNULIB_GETPASS])
+ GNULIB_GETUSERSHELL=0; AC_SUBST([GNULIB_GETUSERSHELL])
+ GNULIB_GROUP_MEMBER=0; AC_SUBST([GNULIB_GROUP_MEMBER])
+ GNULIB_ISATTY=0; AC_SUBST([GNULIB_ISATTY])
+ GNULIB_LCHOWN=0; AC_SUBST([GNULIB_LCHOWN])
+ GNULIB_LINK=0; AC_SUBST([GNULIB_LINK])
+ GNULIB_LINKAT=0; AC_SUBST([GNULIB_LINKAT])
+ GNULIB_LSEEK=0; AC_SUBST([GNULIB_LSEEK])
+ GNULIB_PIPE=0; AC_SUBST([GNULIB_PIPE])
+ GNULIB_PIPE2=0; AC_SUBST([GNULIB_PIPE2])
+ GNULIB_PREAD=0; AC_SUBST([GNULIB_PREAD])
+ GNULIB_PWRITE=0; AC_SUBST([GNULIB_PWRITE])
+ GNULIB_READ=0; AC_SUBST([GNULIB_READ])
+ GNULIB_READLINK=0; AC_SUBST([GNULIB_READLINK])
+ GNULIB_READLINKAT=0; AC_SUBST([GNULIB_READLINKAT])
+ GNULIB_RMDIR=0; AC_SUBST([GNULIB_RMDIR])
+ GNULIB_SETHOSTNAME=0; AC_SUBST([GNULIB_SETHOSTNAME])
+ GNULIB_SLEEP=0; AC_SUBST([GNULIB_SLEEP])
+ GNULIB_SYMLINK=0; AC_SUBST([GNULIB_SYMLINK])
+ GNULIB_SYMLINKAT=0; AC_SUBST([GNULIB_SYMLINKAT])
+ GNULIB_TRUNCATE=0; AC_SUBST([GNULIB_TRUNCATE])
+ GNULIB_TTYNAME_R=0; AC_SUBST([GNULIB_TTYNAME_R])
+ GNULIB_UNISTD_H_NONBLOCKING=0; AC_SUBST([GNULIB_UNISTD_H_NONBLOCKING])
+ GNULIB_UNISTD_H_SIGPIPE=0; AC_SUBST([GNULIB_UNISTD_H_SIGPIPE])
+ GNULIB_UNLINK=0; AC_SUBST([GNULIB_UNLINK])
+ GNULIB_UNLINKAT=0; AC_SUBST([GNULIB_UNLINKAT])
+ GNULIB_USLEEP=0; AC_SUBST([GNULIB_USLEEP])
+ GNULIB_WRITE=0; AC_SUBST([GNULIB_WRITE])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_CHOWN=1; AC_SUBST([HAVE_CHOWN])
+ HAVE_COPY_FILE_RANGE=1; AC_SUBST([HAVE_COPY_FILE_RANGE])
+ HAVE_DUP2=1; AC_SUBST([HAVE_DUP2])
+ HAVE_DUP3=1; AC_SUBST([HAVE_DUP3])
+ HAVE_EUIDACCESS=1; AC_SUBST([HAVE_EUIDACCESS])
+ HAVE_FACCESSAT=1; AC_SUBST([HAVE_FACCESSAT])
+ HAVE_FCHDIR=1; AC_SUBST([HAVE_FCHDIR])
+ HAVE_FCHOWNAT=1; AC_SUBST([HAVE_FCHOWNAT])
+ HAVE_FDATASYNC=1; AC_SUBST([HAVE_FDATASYNC])
+ HAVE_FSYNC=1; AC_SUBST([HAVE_FSYNC])
+ HAVE_FTRUNCATE=1; AC_SUBST([HAVE_FTRUNCATE])
+ HAVE_GETDTABLESIZE=1; AC_SUBST([HAVE_GETDTABLESIZE])
+ HAVE_GETGROUPS=1; AC_SUBST([HAVE_GETGROUPS])
+ HAVE_GETHOSTNAME=1; AC_SUBST([HAVE_GETHOSTNAME])
+ HAVE_GETLOGIN=1; AC_SUBST([HAVE_GETLOGIN])
+ HAVE_GETPAGESIZE=1; AC_SUBST([HAVE_GETPAGESIZE])
+ HAVE_GETPASS=1; AC_SUBST([HAVE_GETPASS])
+ HAVE_GROUP_MEMBER=1; AC_SUBST([HAVE_GROUP_MEMBER])
+ HAVE_LCHOWN=1; AC_SUBST([HAVE_LCHOWN])
+ HAVE_LINK=1; AC_SUBST([HAVE_LINK])
+ HAVE_LINKAT=1; AC_SUBST([HAVE_LINKAT])
+ HAVE_PIPE=1; AC_SUBST([HAVE_PIPE])
+ HAVE_PIPE2=1; AC_SUBST([HAVE_PIPE2])
+ HAVE_PREAD=1; AC_SUBST([HAVE_PREAD])
+ HAVE_PWRITE=1; AC_SUBST([HAVE_PWRITE])
+ HAVE_READLINK=1; AC_SUBST([HAVE_READLINK])
+ HAVE_READLINKAT=1; AC_SUBST([HAVE_READLINKAT])
+ HAVE_SETHOSTNAME=1; AC_SUBST([HAVE_SETHOSTNAME])
+ HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP])
+ HAVE_SYMLINK=1; AC_SUBST([HAVE_SYMLINK])
+ HAVE_SYMLINKAT=1; AC_SUBST([HAVE_SYMLINKAT])
+ HAVE_UNLINKAT=1; AC_SUBST([HAVE_UNLINKAT])
+ HAVE_USLEEP=1; AC_SUBST([HAVE_USLEEP])
+ HAVE_DECL_ENVIRON=1; AC_SUBST([HAVE_DECL_ENVIRON])
+ HAVE_DECL_FCHDIR=1; AC_SUBST([HAVE_DECL_FCHDIR])
+ HAVE_DECL_FDATASYNC=1; AC_SUBST([HAVE_DECL_FDATASYNC])
+ HAVE_DECL_GETDOMAINNAME=1; AC_SUBST([HAVE_DECL_GETDOMAINNAME])
+ HAVE_DECL_GETLOGIN=1; AC_SUBST([HAVE_DECL_GETLOGIN])
+ HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
+ HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE])
+ HAVE_DECL_GETUSERSHELL=1; AC_SUBST([HAVE_DECL_GETUSERSHELL])
+ HAVE_DECL_SETHOSTNAME=1; AC_SUBST([HAVE_DECL_SETHOSTNAME])
+ HAVE_DECL_TRUNCATE=1; AC_SUBST([HAVE_DECL_TRUNCATE])
+ HAVE_DECL_TTYNAME_R=1; AC_SUBST([HAVE_DECL_TTYNAME_R])
+ HAVE_OS_H=0; AC_SUBST([HAVE_OS_H])
+ HAVE_SYS_PARAM_H=0; AC_SUBST([HAVE_SYS_PARAM_H])
+ REPLACE_ACCESS=0; AC_SUBST([REPLACE_ACCESS])
+ REPLACE_CHOWN=0; AC_SUBST([REPLACE_CHOWN])
+ REPLACE_CLOSE=0; AC_SUBST([REPLACE_CLOSE])
+ REPLACE_DUP=0; AC_SUBST([REPLACE_DUP])
+ REPLACE_DUP2=0; AC_SUBST([REPLACE_DUP2])
+ REPLACE_FACCESSAT=0; AC_SUBST([REPLACE_FACCESSAT])
+ REPLACE_FCHOWNAT=0; AC_SUBST([REPLACE_FCHOWNAT])
+ REPLACE_FTRUNCATE=0; AC_SUBST([REPLACE_FTRUNCATE])
+ REPLACE_GETCWD=0; AC_SUBST([REPLACE_GETCWD])
+ REPLACE_GETDOMAINNAME=0; AC_SUBST([REPLACE_GETDOMAINNAME])
+ REPLACE_GETDTABLESIZE=0; AC_SUBST([REPLACE_GETDTABLESIZE])
+ REPLACE_GETLOGIN_R=0; AC_SUBST([REPLACE_GETLOGIN_R])
+ REPLACE_GETGROUPS=0; AC_SUBST([REPLACE_GETGROUPS])
+ REPLACE_GETPAGESIZE=0; AC_SUBST([REPLACE_GETPAGESIZE])
+ REPLACE_GETPASS=0; AC_SUBST([REPLACE_GETPASS])
+ REPLACE_ISATTY=0; AC_SUBST([REPLACE_ISATTY])
+ REPLACE_LCHOWN=0; AC_SUBST([REPLACE_LCHOWN])
+ REPLACE_LINK=0; AC_SUBST([REPLACE_LINK])
+ REPLACE_LINKAT=0; AC_SUBST([REPLACE_LINKAT])
+ REPLACE_LSEEK=0; AC_SUBST([REPLACE_LSEEK])
+ REPLACE_PREAD=0; AC_SUBST([REPLACE_PREAD])
+ REPLACE_PWRITE=0; AC_SUBST([REPLACE_PWRITE])
+ REPLACE_READ=0; AC_SUBST([REPLACE_READ])
+ REPLACE_READLINK=0; AC_SUBST([REPLACE_READLINK])
+ REPLACE_READLINKAT=0; AC_SUBST([REPLACE_READLINKAT])
+ REPLACE_RMDIR=0; AC_SUBST([REPLACE_RMDIR])
+ REPLACE_SLEEP=0; AC_SUBST([REPLACE_SLEEP])
+ REPLACE_SYMLINK=0; AC_SUBST([REPLACE_SYMLINK])
+ REPLACE_SYMLINKAT=0; AC_SUBST([REPLACE_SYMLINKAT])
+ REPLACE_TRUNCATE=0; AC_SUBST([REPLACE_TRUNCATE])
+ REPLACE_TTYNAME_R=0; AC_SUBST([REPLACE_TTYNAME_R])
+ REPLACE_UNLINK=0; AC_SUBST([REPLACE_UNLINK])
+ REPLACE_UNLINKAT=0; AC_SUBST([REPLACE_UNLINKAT])
+ REPLACE_USLEEP=0; AC_SUBST([REPLACE_USLEEP])
+ REPLACE_WRITE=0; AC_SUBST([REPLACE_WRITE])
+ UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H])
+ UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0;
+ AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS])
+])
diff --git a/m4/warn-on-use.m4 b/m4/warn-on-use.m4
new file mode 100644
index 0000000..5c8ee45
--- /dev/null
+++ b/m4/warn-on-use.m4
@@ -0,0 +1,51 @@
+# warn-on-use.m4 serial 6
+dnl Copyright (C) 2010-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# gl_WARN_ON_USE_PREPARE(INCLUDES, NAMES)
+# ---------------------------------------
+# If the module 'posixcheck' is in use:
+#
+# For each whitespace-separated element in the list of NAMES, define
+# HAVE_RAW_DECL_name if the function has a declaration among INCLUDES
+# even after being undefined as a macro.
+#
+# See warn-on-use.h for some hints on how to poison function names, as
+# well as ideas on poisoning global variables and macros. NAMES may
+# include global variables, but remember that only functions work with
+# _GL_WARN_ON_USE. Typically, INCLUDES only needs to list a single
+# header, but if the replacement header pulls in other headers because
+# some systems declare functions in the wrong header, then INCLUDES
+# should do likewise.
+#
+# It is generally safe to assume declarations for functions declared
+# in the intersection of C89 and C11 (such as printf) without
+# needing gl_WARN_ON_USE_PREPARE.
+AC_DEFUN([gl_WARN_ON_USE_PREPARE],
+[
+ m4_ifdef([gl_POSIXCHECK],
+ [m4_foreach_w([gl_decl], [$2],
+ [AH_TEMPLATE([HAVE_RAW_DECL_]AS_TR_CPP(m4_defn([gl_decl])),
+ [Define to 1 if ]m4_defn([gl_decl])[ is declared even after
+ undefining macros.])])dnl
+dnl FIXME: gl_Symbol must be used unquoted until we can assume
+dnl autoconf 2.64 or newer.
+ for gl_func in m4_flatten([$2]); do
+ AS_VAR_PUSHDEF([gl_Symbol], [gl_cv_have_raw_decl_$gl_func])dnl
+ AC_CACHE_CHECK([whether $gl_func is declared without a macro],
+ gl_Symbol,
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$1],
+[@%:@undef $gl_func
+ (void) $gl_func;])],
+ [AS_VAR_SET(gl_Symbol, [yes])], [AS_VAR_SET(gl_Symbol, [no])])])
+ AS_VAR_IF(gl_Symbol, [yes],
+ [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1])
+ dnl shortcut - if the raw declaration exists, then set a cache
+ dnl variable to allow skipping any later AC_CHECK_DECL efforts
+ eval ac_cv_have_decl_$gl_func=yes])
+ AS_VAR_POPDEF([gl_Symbol])dnl
+ done
+ ])
+])
diff --git a/m4/wchar_t.m4 b/m4/wchar_t.m4
new file mode 100644
index 0000000..e48d464
--- /dev/null
+++ b/m4/wchar_t.m4
@@ -0,0 +1,24 @@
+# wchar_t.m4 serial 4 (gettext-0.18.2)
+dnl Copyright (C) 2002-2003, 2008-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether <stddef.h> has the 'wchar_t' type.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_WCHAR_T],
+[
+ AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <stddef.h>
+ wchar_t foo = (wchar_t)'\0';]],
+ [[]])],
+ [gt_cv_c_wchar_t=yes],
+ [gt_cv_c_wchar_t=no])])
+ if test $gt_cv_c_wchar_t = yes; then
+ AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
+ fi
+])
diff --git a/m4/wint_t.m4 b/m4/wint_t.m4
new file mode 100644
index 0000000..877fd86
--- /dev/null
+++ b/m4/wint_t.m4
@@ -0,0 +1,74 @@
+# wint_t.m4 serial 7
+dnl Copyright (C) 2003, 2007-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether <wchar.h> has the 'wint_t' type and whether gnulib's
+dnl <wchar.h> or <wctype.h> would, if present, override 'wint_t'.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_WINT_T],
+[
+ AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+ wint_t foo = (wchar_t)'\0';]],
+ [[]])],
+ [gt_cv_c_wint_t=yes],
+ [gt_cv_c_wint_t=no])])
+ if test $gt_cv_c_wint_t = yes; then
+ AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
+
+ dnl Determine whether gnulib's <wchar.h> or <wctype.h> would, if present,
+ dnl override 'wint_t'.
+ AC_CACHE_CHECK([whether wint_t is too small],
+ [gl_cv_type_wint_t_too_small],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+#endif
+#include <wchar.h>
+ int verify[sizeof (wint_t) < sizeof (int) ? -1 : 1];
+ ]])],
+ [gl_cv_type_wint_t_too_small=no],
+ [gl_cv_type_wint_t_too_small=yes])])
+ if test $gl_cv_type_wint_t_too_small = yes; then
+ GNULIB_OVERRIDES_WINT_T=1
+ else
+ GNULIB_OVERRIDES_WINT_T=0
+ fi
+ else
+ GNULIB_OVERRIDES_WINT_T=0
+ fi
+ AC_SUBST([GNULIB_OVERRIDES_WINT_T])
+])
+
+dnl Prerequisites of the 'wint_t' override.
+AC_DEFUN([gl_TYPE_WINT_T_PREREQ],
+[
+ AC_CHECK_HEADERS_ONCE([crtdefs.h])
+ if test $ac_cv_header_crtdefs_h = yes; then
+ HAVE_CRTDEFS_H=1
+ else
+ HAVE_CRTDEFS_H=0
+ fi
+ AC_SUBST([HAVE_CRTDEFS_H])
+])
diff --git a/m4/xalloc.m4 b/m4/xalloc.m4
new file mode 100644
index 0000000..a556870
--- /dev/null
+++ b/m4/xalloc.m4
@@ -0,0 +1,7 @@
+# xalloc.m4 serial 18
+dnl Copyright (C) 2002-2006, 2009-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_XALLOC], [:])
diff --git a/make.lnk b/make.lnk
deleted file mode 100644
index 0d983bf..0000000
--- a/make.lnk
+++ /dev/null
@@ -1,5 +0,0 @@
-FROM LIB:cres.o "commands.o"+"job.o"+"dir.o"+"file.o"+"misc.o"+"main.o"+"read.o"+"remake.o"+"rule.o"+"implicit.o"+"default.o"+"variable.o"+"expand.o"+"function.o"+"vpath.o"+"version.o"+"ar.o"+"arscan.o"+"signame.o"+"remote-stub.o"+"getopt.o"+"getopt1.o"+"alloca.o"+"amiga.o"+"hash.o"+"strcache.o"+"output.o"
-TO "make.new"
-LIB glob/glob.lib LIB:sc.lib LIB:amiga.lib
-QUIET
-
diff --git a/make_msvc_net2003.sln b/make_msvc_net2003.sln
deleted file mode 100644
index e993896..0000000
--- a/make_msvc_net2003.sln
+++ /dev/null
@@ -1,21 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "make_msvc.net2003", "make_msvc_net2003.vcproj", "{E96B5060-3240-4723-91C9-E64F1C877A04}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfiguration) = preSolution
- Debug = Debug
- Release = Release
- EndGlobalSection
- GlobalSection(ProjectConfiguration) = postSolution
- {E96B5060-3240-4723-91C9-E64F1C877A04}.Debug.ActiveCfg = Debug|Win32
- {E96B5060-3240-4723-91C9-E64F1C877A04}.Debug.Build.0 = Debug|Win32
- {E96B5060-3240-4723-91C9-E64F1C877A04}.Release.ActiveCfg = Release|Win32
- {E96B5060-3240-4723-91C9-E64F1C877A04}.Release.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- EndGlobalSection
- GlobalSection(ExtensibilityAddIns) = postSolution
- EndGlobalSection
-EndGlobal
diff --git a/make_msvc_net2003.vcproj b/make_msvc_net2003.vcproj
deleted file mode 100644
index bcc2e8b..0000000
--- a/make_msvc_net2003.vcproj
+++ /dev/null
@@ -1,340 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="make_msvc.net2003"
- ProjectGUID="{E96B5060-3240-4723-91C9-E64F1C877A04}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=".;w32/include;glob"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;HAVE_CONFIG_H=1;WINDOWS32=1"
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="1"
- ForceConformanceInForLoopScope="TRUE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- SuppressStartupBanner="TRUE"
- Detect64BitPortabilityProblems="FALSE"
- DebugInformationFormat="4"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)/make_msvc.net2003.exe"
- LinkIncremental="2"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/make_msvc.net2003.pdb"
- SubSystem="1"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"
- Description="Copying config.h.W32 to config.h"
- CommandLine="if not exist config.h copy config.h.W32 config.h"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=".;w32/include;glob"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H=1;WINDOWS32=1"
- RuntimeLibrary="0"
- ForceConformanceInForLoopScope="TRUE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="FALSE"
- DebugInformationFormat="3"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)/make_msvc.net2003.exe"
- LinkIncremental="1"
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"
- Description="Copying config.h.W32 to config.h"
- CommandLine="if not exist config.h copy config.h.W32 config.h"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="src"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
- <File
- RelativePath=".\ar.c">
- </File>
- <File
- RelativePath=".\arscan.c">
- </File>
- <File
- RelativePath=".\commands.c">
- </File>
- <File
- RelativePath=".\default.c">
- </File>
- <File
- RelativePath=".\dir.c">
- </File>
- <File
- RelativePath=".\expand.c">
- </File>
- <File
- RelativePath=".\file.c">
- </File>
- <File
- RelativePath=".\function.c">
- </File>
- <File
- RelativePath=".\getloadavg.c">
- </File>
- <File
- RelativePath=".\getopt.c">
- </File>
- <File
- RelativePath=".\getopt1.c">
- </File>
-
- <File
- RelativePath=".\guile.c">
- </File>
-
- <File
- RelativePath=".\hash.c">
- </File>
- <File
- RelativePath=".\strcache.c">
- </File>
- <File
- RelativePath=".\implicit.c">
- </File>
- <File
- RelativePath=".\job.c">
- </File>
- <File
- RelativePath=".\load.c">
- </File>
- <File
- RelativePath=".\output.c">
- </File>
- <File
- RelativePath=".\main.c">
- </File>
- <File
- RelativePath=".\misc.c">
- </File>
- <File
- RelativePath=".\read.c">
- </File>
- <File
- RelativePath=".\remake.c">
- </File>
- <File
- RelativePath=".\remote-stub.c">
- </File>
- <File
- RelativePath=".\rule.c">
- </File>
- <File
- RelativePath=".\signame.c">
- </File>
- <File
- RelativePath=".\variable.c">
- </File>
- <File
- RelativePath=".\version.c">
- </File>
- <File
- RelativePath=".\vpath.c">
- </File>
- <Filter
- Name="w32"
- Filter="">
- <File
- RelativePath=".\w32\compat\dirent.c">
- </File>
- <File
- RelativePath=".\w32\compat\posixfcn.c">
- </File>
- <File
- RelativePath=".\w32\subproc\misc.c">
- <FileConfiguration
- Name="Debug|Win32">
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)/$(InputName)1.obj"/>
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32">
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)/$(InputName)1.obj"/>
- </FileConfiguration>
- </File>
- <File
- RelativePath=".\w32\pathstuff.c">
- </File>
- <File
- RelativePath=".\w32\w32os.c">
- </File>
- <File
- RelativePath=".\w32\subproc\sub_proc.c">
- </File>
- <File
- RelativePath=".\w32\subproc\w32err.c">
- </File>
- </Filter>
- <Filter
- Name="glob"
- Filter="">
- <File
- RelativePath=".\glob\fnmatch.c">
- </File>
- <File
- RelativePath=".\glob\glob.c">
- </File>
- </Filter>
- </Filter>
- <Filter
- Name="include"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
- <File
- RelativePath=".\commands.h">
- </File>
- <File
- RelativePath=".\config.h">
- </File>
- <File
- RelativePath=".\debug.h">
- </File>
- <File
- RelativePath=".\dep.h">
- </File>
- <File
- RelativePath=".\filedef.h">
- </File>
- <File
- RelativePath=".\getopt.h">
- </File>
- <File
- RelativePath=".\gettext.h">
- </File>
- <File
- RelativePath=".\gmk-default.h">
- </File>
- <File
- RelativePath=".\hash.h">
- </File>
- <File
- RelativePath=".\job.h">
- </File>
- <File
- RelativePath=".\output.h">
- </File>
- <File
- RelativePath=".\makeint.h">
- </File>
- <File
- RelativePath=".\rule.h">
- </File>
- <File
- RelativePath=".\variable.h">
- </File>
- <File
- RelativePath=".\vmsdir.h">
- </File>
- <Filter
- Name="w32"
- Filter="">
- <File
- RelativePath=".\w32\include\dirent.h">
- </File>
- <File
- RelativePath=".\w32\include\pathstuff.h">
- </File>
- <File
- RelativePath=".\w32\subproc\proc.h">
- </File>
- <File
- RelativePath=".\w32\include\sub_proc.h">
- </File>
- <File
- RelativePath=".\w32\include\w32err.h">
- </File>
- </Filter>
- <Filter
- Name="glob"
- Filter="">
- <File
- RelativePath=".\glob\fnmatch.h">
- </File>
- <File
- RelativePath=".\glob\glob.h">
- </File>
- </Filter>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/makefile.com b/makefile.com
index f579695..eff906e 100644
--- a/makefile.com
+++ b/makefile.com
@@ -71,14 +71,19 @@ $ if (p3.nes."WALL")
$ then
$ gosub check_cc_qual
$ endif
-$ filelist = "alloca ar arscan commands default dir expand file function " + -
- "guile hash implicit job load main misc read remake " + -
- "remote-stub rule output signame variable version " + -
- "vmsfunctions vmsify vpath vms_progname vms_exit " + -
- "vms_export_symbol [.glob]glob [.glob]fnmatch getopt1 " + -
- "getopt strcache"
-$!
-$ copy config.h-vms config.h
+$ filelist = "[.src]ar [.src]arscan [.src]commands [.src]default [.src]dir " + -
+ "[.src]expand [.src]file [.src]function [.src]guile " + -
+ "[.src]hash [.src]implicit [.src]job [.src]load [.src]main " + -
+ "[.src]misc [.src]read [.src]remake [.src]remote-stub " + -
+ "[.src]rule [.src]output [.src]signame [.src]variable " + -
+ "[.src]version [.src]strcache [.src]vpath " + -
+ "[.src]vmsfunctions [.src]vmsify [.src]vms_progname " + -
+ "[.src]vms_exit [.src]vms_export_symbol " + -
+ "[.lib]alloca [.lib]fnmatch [.lib]glob [.src]getopt1 [.src]getopt"
+$!
+$ copy [.src]config.h-vms [.src]config.h
+$ copy [.lib]fnmatch.in.h [.lib]fnmatch.h
+$ copy [.lib]glob.in.h [.lib]glob.h
$ n=0
$ open/write optf make.opt
$ loop:
@@ -141,7 +146,7 @@ $ else
$ objdir := []
$ write optf objdir+p1
$ endif
-$ cc'ccopt'/nested=none/include=([],[.glob])/obj='objdir' -
+$ cc'ccopt'/nested=none/include=([],[.src],[.lib])/obj='objdir' -
/define=("allocated_variable_expand_for_file=alloc_var_expand_for_file",-
"unlink=remove","HAVE_CONFIG_H","VMS") -
'p1'
@@ -149,7 +154,7 @@ $ exit
$ endsubroutine : compileit
$!
$!-----------------------------------------------------------------------------
-$!Copyright (C) 1996-2016 Free Software Foundation, Inc.
+$!Copyright (C) 1996-2020 Free Software Foundation, Inc.
$!This file is part of GNU Make.
$!
$!GNU Make is free software; you can redistribute it and/or modify it under
diff --git a/makefile.vms b/makefile.vms
deleted file mode 100644
index 37702d5..0000000
--- a/makefile.vms
+++ /dev/null
@@ -1,180 +0,0 @@
-# -*-Makefile-*- to build GNU make on VMS
-#
-# Copyright (C) 1996-2016 Free Software Foundation, Inc.
-# This file is part of GNU Make.
-#
-# GNU Make is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 3 of the License, or (at your option) any later
-# version.
-#
-# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program. If not, see <http://www.gnu.org/licenses/>.
-
-# VMS extensions from GNU Make 3.60 imported by
-# Klaus Kämpf (kkaempf@rmi.de)
-# Modified for version 3.78.1 by Hartmut.Becker@compaq.com.
-# Modified for version 3.80 by zinser@decus.de
-# Modified for versions 3.81, 3.99.90 by Hartmut Becker
-
-CC = cc
-CP = copy
-
-%.obj: %.c
- $(CC) $(CFLAGS)/obj=$@ $<
-#
-# Makefile for GNU Make
-#
-
-ifeq ($(CC),cc)
-cinclude = /nested=none/include=([],[.glob])
-cprefix = /prefix=(all,except=(glob,globfree))
-cwarn = /standard=relaxed/warn=(disable=questcompare)
-CFLAGS = $(defines) $(cinclude)$(cprefix)$(cwarn)
-else
-CFLAGS = $(defines) $(cinclude)
-endif
-#LDFLAGS = /deb
-LDFLAGS =
-
-ifeq ($(CC),cc)
-defines = /define=("unlink=remove","HAVE_CONFIG_H","VMS","allocated_variable_expand_for_file=alloc_var_expand_for_file")
-else
-ifeq ($(ARCH),VAX)
-defines = /define=("HAVE_CONFIG_H","GCC_IS_NATIVE","VAX")
-else
-defines = /define=("HAVE_CONFIG_H","GCC_IS_NATIVE")
-endif
-endif
-
-LOAD_AVG = /define="NO_LDAV"
-
-# If you don't want archive support, comment these out.
-ARCHIVES = ,ar.obj,arscan.obj
-ARCHIVES_SRC = ar.c arscan.c
-
-# If your system needs extra libraries loaded in, define them here.
-# System V probably need -lPW for alloca.
-# if on vax, uncomment the following line
-#LOADLIBES = ,c.opt/opt
-ifeq ($(CC),cc)
-#LOADLIBES =,sys$$library:vaxcrtl.olb/lib
-CRT0 =
-else
-LOADLIBES =,gnu_cc_library:libgcc.olb/lib
-endif
-
-# If your system doesn't have alloca, or the one provided is bad,
-# get it from the Emacs distribution and define these.
-#ALLOCA = ,alloca.obj
-#ALLOCASRC = alloca.c
-
-# If there are remote execution facilities defined,
-# enable them with switches here (see remote-*.c).
-REMOTE =
-
-# Any extra object files your system needs.
-extras = ,signame.obj,remote-stub.obj,vmsfunctions.obj,vmsify.obj
-#,directory.obj
-# as an alternative:
-glob = ,[.glob]glob.obj,[.glob]fnmatch.obj
-getopt = ,getopt.obj,getopt1.obj
-# Directory to install 'make' in.
-bindir = []
-# Directory to install the man page in.
-mandir = []
-# Number to put on the man page filename.
-manext = 1
-
-guile = ,guile.obj
-
-objs = commands.obj,job.obj,output.obj,dir.obj,file.obj,misc.obj,hash.obj,\
- load.obj,main.obj,read.obj,remake.obj,rule.obj,implicit.obj,\
- default.obj,variable.obj,expand.obj,function.obj,strcache.obj,\
- vpath.obj,version.obj,vms_progname.obj,vms_exit.obj,\
- vms_export_symbol.obj$(guile)$(ARCHIVES)$(extras)$(getopt)$(glob)
-
-srcs = commands.c job.c output.c dir.c file.c misc.c guile.c hash.c \
- load.c main.c read.c remake.c rule.c implicit.c \
- default.c variable.c expand.c function.c strcache.c \
- vpath.c version.c vmsfunctions.c vmsify.c vms_progname.c vms_exit.c \
- vms_export_symbol.c $(ARCHIVES_SRC) $(ALLOCASRC) \
- commands.h dep.h filedef.h job.h output.h makeint.h rule.h variable.h
-
-
-.PHONY: all doc
-all: config.h make.exe
-
-doc: make.info make.dvi
-
-
-make.exe: $(objs)
- $(LD)$(LDFLAGS)/exe=$@ $^$(LOADLIBES)$(CRT0)
-
-.PHONY: clean realclean
-clean:
- -purge [...]
- -$(RM) make.exe;,*.obj;
- -$(RM) [.glob]*.obj;
-
-ar.obj: ar.c makeint.h config.h gnumake.h gettext.h filedef.h hash.h dep.h \
- [.glob]fnmatch.h
-arscan.obj: arscan.c makeint.h config.h gnumake.h gettext.h
-commands.obj: commands.c makeint.h config.h gnumake.h gettext.h filedef.h \
- hash.h dep.h variable.h job.h output.h commands.h
-default.obj: default.c makeint.h config.h gnumake.h gettext.h filedef.h \
- hash.h variable.h rule.h dep.h job.h output.h commands.h
-dir.obj: dir.c makeint.h config.h gnumake.h gettext.h hash.h filedef.h \
- dep.h [.glob]glob.h
-expand.obj: expand.c makeint.h config.h gnumake.h gettext.h filedef.h \
- hash.h job.h output.h commands.h variable.h rule.h
-file.obj: file.c makeint.h config.h gnumake.h gettext.h filedef.h hash.h \
- dep.h job.h output.h commands.h variable.h debug.h
-[.glob]fnmatch.obj: [.glob]fnmatch.c config.h [.glob]fnmatch.h
-function.obj: function.c makeint.h config.h gnumake.h gettext.h filedef.h \
- hash.h variable.h dep.h job.h output.h commands.h debug.h
-getopt.obj: getopt.c config.h gettext.h getopt.h
-getopt1.obj: getopt1.c config.h getopt.h
-[.glob]glob.obj: [.glob]glob.c config.h [.glob]fnmatch.h [.glob]glob.h
-guile.obj: guile.c makeint.h config.h gnumake.h gettext.h
-hash.obj: hash.c makeint.h config.h gnumake.h gettext.h hash.h
-implicit.obj: implicit.c makeint.h config.h gnumake.h gettext.h filedef.h \
- hash.h rule.h dep.h debug.h variable.h job.h output.h commands.h
-job.obj: job.c makeint.h config.h gnumake.h gettext.h job.h output.h debug.h \
- filedef.h hash.h commands.h variable.h debug.h vmsjobs.c
-load.obj: load.c makeint.h config.h gnumake.h gettext.h
-main.obj: main.c makeint.h config.h gnumake.h gettext.h filedef.h hash.h \
- dep.h variable.h job.h output.h commands.h rule.h debug.h getopt.h
-misc.obj: misc.c makeint.h config.h gnumake.h gettext.h filedef.h hash.h \
- dep.h debug.h
-output.obj: output.c makeint.h config.h gnumake.h gettext.h job.h output.h
-read.obj: read.c makeint.h config.h gnumake.h gettext.h [.glob]glob.h \
- filedef.h hash.h dep.h job.h output.h commands.h variable.h rule.h \
- debug.h
-remake.obj: remake.c makeint.h config.h gnumake.h gettext.h filedef.h \
- hash.h job.h output.h commands.h dep.h variable.h debug.h
-remote-stub.obj: remote-stub.c makeint.h config.h gnumake.h gettext.h \
- filedef.h hash.h job.h output.h commands.h
-rule.obj: rule.c makeint.h config.h gnumake.h gettext.h filedef.h hash.h \
- dep.h job.h output.h commands.h variable.h rule.h
-signame.obj: signame.c makeint.h config.h gnumake.h gettext.h
-strcache.obj: strcache.c makeint.h config.h gnumake.h gettext.h hash.h
-variable.obj: variable.c makeint.h config.h gnumake.h gettext.h filedef.h \
- hash.h dep.h job.h output.h commands.h variable.h rule.h
-version.obj: version.c config.h
-vmsfunctions.obj: vmsfunctions.c makeint.h config.h gnumake.h gettext.h \
- debug.h job.h output.h vmsdir.h
-vmsify.obj: vmsify.c
-vpath.obj: vpath.c makeint.h config.h gnumake.h gettext.h filedef.h hash.h \
- variable.h
-vms_progname.obj: vms_progname.c
-vms_exit.obj: vms_exit.c
-vms_export_symbol.obj: vms_export_symbol.c
-
-config.h: config.h-vms
- $(CP) $< $@
diff --git a/mk/Amiga.mk b/mk/Amiga.mk
new file mode 100644
index 0000000..074c53e
--- /dev/null
+++ b/mk/Amiga.mk
@@ -0,0 +1,45 @@
+# GNU -*-Makefile-*- to build GNU make on Amiga
+#
+# Amiga overrides for use with Basic.mk.
+#
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 3 of the License, or (at your option) any later
+# version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program. If not, see <http://www.gnu.org/licenses/>.
+
+CC = sc
+LD = $(CC) Link
+
+MKDIR.cmd = makedir $1
+RM.cmd = delete $1
+CP.cmd = copy $1 To $2
+
+CPPFLAGS =
+CFLAGS =
+LDFLAGS =
+
+prog_SOURCES += $(alloca_SOURCES) $(loadavg_SOURCES) $(glob_SOURCES) $(amiga_SOURCES)
+
+BUILT_SOURCES += $(lib)alloca.h $(lib)fnmatch.h $(lib)glob.h
+
+extra_CPPFLAGS = IDir $(OUTDIR)src IDir $(SRCDIR)/src IDir $(OUTDIR)lib IDir $(SRCDIR)/lib
+
+C_SOURCE =
+OUTPUT_OPTION =
+LDFLAGS = From LIB:cres.o
+LDLIBS = Lib LIB:sc.lib LIB:amiga.lib
+LINK_OUTPUT = To $@
+
+$(OUTDIR)src/config.h: $(SRCDIR)/src/config.ami
+ $(call CP.cmd,$<,$@)
diff --git a/mk/VMS.mk b/mk/VMS.mk
new file mode 100644
index 0000000..75d33fe
--- /dev/null
+++ b/mk/VMS.mk
@@ -0,0 +1,97 @@
+# GNU -*-Makefile-*- to build GNU make on VMS
+#
+# VMS overrides for use with Basic.mk.
+#
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 3 of the License, or (at your option) any later
+# version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program. If not, see <http://www.gnu.org/licenses/>.
+
+src = [.src]
+lib = [.lib]
+SRCDIR = []
+
+OBJEXT = .obj
+EXEEXT = .exe
+
+e =
+s = $e $e
+c = ,
+
+defs = HAVE_CONFIG_H
+
+ifeq ($(CC),cc)
+defs += VMS unlink=remove allocated_variable_expand_for_file=alloc_var_expand_for_file
+else
+defs += GCC_IS_NATIVE
+ifeq ($(ARCH),VAX)
+defs += VAX
+endif
+endif
+
+extra_CPPFLAGS = /define=($(subst $s,$c,$(patsubst %,"%",$(defs))))
+
+cinclude = /nested=none/include=($(src),$(lib))
+ifeq ($(CC),cc)
+cprefix = /prefix=(all,except=(glob,globfree))
+cwarn = /standard=relaxed/warn=(disable=questcompare)
+endif
+
+extra_CFLAGS = $(cinclude)$(cprefix)$(cwarn)
+
+#extra_LDFLAGS = /deb
+extra_LDFLAGS =
+
+# If your system needs extra libraries loaded in, define them here.
+# System V probably need -lPW for alloca.
+# if on vax, uncomment the following line
+#LDLIBS = ,c.opt/opt
+ifeq ($(CC),cc)
+#LDLIBS =,sys$$library:vaxcrtl.olb/lib
+else
+LDLIBS =,gnu_cc_library:libgcc.olb/lib
+endif
+
+# If your system doesn't have alloca, or the one provided is bad,
+# uncomment this
+#ALLOCA = $(alloca_SOURCES)
+
+# If your system doesn't have alloca.h, or the one provided is bad,
+# uncomment this
+#BUILT_SOURCES += $(lib)alloca.h
+
+prog_SOURCES += $(ALLOCA) $(glob_SOURCES) $(vms_SOURCES)
+
+BUILT_SOURCES += $(lib)fnmatch.h $(lib)glob.h
+
+COMPILE.cmd = $(CC) $(extra_CFLAGS)$(CFLAGS)/obj=$@ $(extra_CPPFLAGS)$(CPPFLAGS) $1
+
+LINK.cmd = $(LD)$(extra_LDFLAGS)$(LDFLAGS)/exe=$@ $(subst $s,$c,$1)$(LDLIBS)
+
+# Don't know how to do this
+CHECK.cmd =
+
+MKDIR.cmd = create/dir $1
+RM.cmd = delete $1
+CP.cmd = copy $1 $2
+
+define CLEANSPACE
+ -purge [...]
+ -delete $(PROG);
+ -delete $(src)*.$(OBJEXT);
+endef
+
+
+$(OUTDIR)$(src)config.h: $(SRCDIR)$(src)config.h.W32
+ $(call CP.cmd,$<,$@)
diff --git a/mk/Windows32.mk b/mk/Windows32.mk
new file mode 100644
index 0000000..494be02
--- /dev/null
+++ b/mk/Windows32.mk
@@ -0,0 +1,122 @@
+# GNU -*-Makefile-*- to build GNU make on Windows
+#
+# Windows overrides for use with Basic.mk.
+#
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 3 of the License, or (at your option) any later
+# version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program. If not, see <http://www.gnu.org/licenses/>.
+
+# TARGET_TYPE can be either "release" or "debug"
+TARGET_TYPE = release
+
+# TOOLCHAIN can be either "msvc" or "gcc"
+TOOLCHAIN = msvc
+
+# Translate a POSIX path into a Windows path. Don't bother with drives.
+# Used only inside recipes, with DOS/CMD tools that require it.
+P2W = $(subst /,\,$1)
+
+prog_SOURCES += $(loadavg_SOURCES) $(glob_SOURCES) $(w32_SOURCES)
+
+BUILT_SOURCES += $(lib)alloca.h $(lib)fnmatch.h $(lib)glob.h
+
+w32_LIBS = kernel32 user32 gdi32 winspool comdlg32 advapi32 shell32 ole32 \
+ oleaut32 uuid odbc32 odbccp32
+
+CPPFLAGS =
+CFLAGS =
+LDFLAGS =
+
+# --- Visual Studio
+msvc_CC = cl.exe
+msvc_LD = link.exe
+
+msvc_CPPFLAGS = /DHAVE_CONFIG_H /DWINDOWS32 /DWIN32 /D_CONSOLE
+msvc_CPPFLAGS += /I$(OUTDIR)src /I$(SRCDIR)/src /I$(SRCDIR)/src/w32/include /I$(OUTDIR)lib /I$(SRCDIR)/lib
+
+msvc_CFLAGS = /nologo /MT /W4 /EHsc
+msvc_CFLAGS += /FR$(OUTDIR) /Fp$(BASE_PROG).pch /Fd$(BASE_PROG).pdb
+
+msvc_LDFLAGS = /nologo /SUBSYSTEM:console /PDB:$(BASE_PROG).pdb
+
+msvc_LDLIBS = $(addsuffix .lib,$(w32_LIBS))
+
+msvc_C_SOURCE = /c
+msvc_OUTPUT_OPTION = /Fo$@
+msvc_LINK_OUTPUT = /OUT:$@
+
+release_msvc_OUTDIR = ./WinRel/
+release_msvc_CPPFLAGS = /D NDEBUG
+release_msvc_CFLAGS = /O2
+
+debug_msvc_OUTDIR = ./WinDebug/
+debug_msvc_CPPFLAGS = /D _DEBUG
+debug_msvc_CFLAGS = /Zi /Od
+debug_msvc_LDFLAGS = /DEBUG
+
+# --- GCC
+gcc_CC = gcc
+gcc_LD = $(gcc_CC)
+
+release_gcc_OUTDIR = ./GccRel/
+debug_gcc_OUTDIR = ./GccDebug/
+
+gcc_CPPFLAGS = -DHAVE_CONFIG_H -I$(OUTDIR)src -I$(SRCDIR)/src -I$(SRCDIR)/src/w32/include -I$(OUTDIR)lib -I$(SRCDIR)/lib
+gcc_CFLAGS = -mthreads -Wall -std=gnu99 -gdwarf-2 -g3
+gcc_LDFLAGS = -mthreads -gdwarf-2 -g3
+gcc_LDLIBS = $(addprefix -l,$(w32_libs))
+
+gcc_C_SOURCE = -c
+gcc_OUTPUT_OPTION = -o $@
+gcc_LINK_OUTPUT = -o $@
+
+debug_gcc_CFLAGS = -O0
+release_gcc_CFLAGS = -O2
+
+# ---
+
+LINK.cmd = $(LD) $(extra_LDFLAGS) $(LDFLAGS) $(TARGET_ARCH) $1 $(LDLIBS) $(LINK_OUTPUT)
+
+CHECK.cmd = cmd /c cd tests \& .\run_make_tests.bat -make ../$(PROG)
+
+MKDIR.cmd = cmd /c mkdir $(call P2W,$1)
+RM.cmd = cmd /c del /F /Q $(call P2W,$1)
+CP.cmd = cmd /c copy /Y $(call P2W,$1 $2)
+
+CC = $($(TOOLCHAIN)_CC)
+LD = $($(TOOLCHAIN)_LD)
+
+C_SOURCE = $($(TOOLCHAIN)_C_SOURCE)
+OUTPUT_OPTION = $($(TOOLCHAIN)_OUTPUT_OPTION)
+LINK_OUTPUT = $($(TOOLCHAIN)_LINK_OUTPUT)
+
+OUTDIR = $($(TARGET_TYPE)_$(TOOLCHAIN)_OUTDIR)
+
+OBJEXT = obj
+EXEEXT = .exe
+
+_CUSTOM = $($(TOOLCHAIN)_$1) $($(TARGET_TYPE)_$1) $($(TARGET_TYPE)_$(TOOLCHAIN)_$1)
+
+# I'm not sure why this builds gnumake rather than make...?
+PROG = $(OUTDIR)gnumake$(EXEEXT)
+BASE_PROG = $(basename $(PROG))
+
+extra_CPPFLAGS = $(call _CUSTOM,CPPFLAGS)
+extra_CFLAGS = $(call _CUSTOM,CFLAGS)
+extra_LDFLAGS = $(call _CUSTOM,LDFLAGS)
+LDLIBS = $(call _CUSTOM,LDLIBS)
+
+$(OUTDIR)src/config.h: $(SRCDIR)/src/config.h.W32
+ $(call CP.cmd,$<,$@)
diff --git a/mk/msdosdjgpp.mk b/mk/msdosdjgpp.mk
new file mode 100644
index 0000000..420937d
--- /dev/null
+++ b/mk/msdosdjgpp.mk
@@ -0,0 +1,43 @@
+# GNU -*-Makefile-*- to build GNU make on MS-DOS with DJGPP
+#
+# MS-DOS overrides for use with Basic.mk.
+#
+# Copyright (C) 2017-2020 Free Software Foundation, Inc.
+# This file is part of GNU Make.
+#
+# GNU Make is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 3 of the License, or (at your option) any later
+# version.
+#
+# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program. If not, see <http://www.gnu.org/licenses/>.
+
+OBJEXT = o
+EXEEXT = .exe
+
+CC = gcc
+
+# Translate a POSIX path into a Windows path. Don't bother with drives.
+# Used only inside recipes, with DOS/CMD tools that require it.
+P2W = $(subst /,\,$1)
+
+prog_SOURCES += $(loadavg_SOURCES) $(glob_SOURCES)
+
+BUILT_SOURCES += $(lib)alloca.h $(lib)fnmatch.h $(lib)glob.h
+
+INCLUDEDIR = c:/djgpp/include
+LIBDIR = c:/djgpp/lib
+LOCALEDIR = c:/djgpp/share
+
+MKDIR.cmd = command.com /c mkdir $(call P2W,$1)
+RM.cmd = command.com /c del /F /Q $(call P2W,$1)
+CP.cmd = command.com /c copy /Y $(call P2W,$1 $2)
+
+$(OUTDIR)src/config.h: $(SRCDIR)/src/configh.dos
+ $(call CP.cmd,$<,$@)
diff --git a/po/LINGUAS b/po/LINGUAS
index d9ba7f4..b1682e8 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -1,5 +1,29 @@
-# Set of available languages: 25 languages
-
-be cs da de es fi fr ga gl he hr id it ja ko lt nl pl pt_BR ru sv tr uk vi zh_CN
-
-# Can't seem to get en@quot and en@boldquot to build properly?
+be
+bg
+cs
+da
+de
+es
+fi
+fr
+ga
+gl
+he
+hr
+id
+it
+ja
+ko
+lt
+nl
+pl
+pt
+pt_BR
+ru
+sr
+sv
+tr
+uk
+vi
+zh_CN
+zh_TW
diff --git a/po/Makevars b/po/Makevars
index ee01884..f7abd7b 100644
--- a/po/Makevars
+++ b/po/Makevars
@@ -1,21 +1,3 @@
-# This is a -*-Makefile-*-
-# Copyright (C) 2002-2016 Free Software Foundation, Inc.
-# This file is part of GNU Make.
-#
-# GNU Make is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free
-# Software Foundation; either version 3 of the License, or (at your option)
-# any later version.
-#
-# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program. If not, see <http://www.gnu.org/licenses/>.
-
-
# Makefile variables for PO directory in any package using GNU gettext.
# Usually the message domain is the same as the package name.
@@ -26,7 +8,16 @@ subdir = po
top_builddir = ..
# These options get passed to xgettext.
-XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ \
+ \
+ --from-code=UTF-8\
+ --flag=_:1:pass-c-format\
+ --flag=N_:1:pass-c-format\
+ --flag=DB:2:c-format --flag=DBF:2:c-format --flag=DBS:2:c-format\
+ --flag=O:3:c-format --flag=OSN:3:c-format --flag=ONS:3:c-format\
+ --flag=OS:3:c-format --flag=OSS:3:c-format --flag=OSSS:3:c-format\
+ --flag=ON:3:c-format --flag=ONN:3:c-format\
+ $${end_of_xgettext_options+}
# This is the copyright holder that gets inserted into the header of the
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
@@ -38,6 +29,13 @@ XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
# their copyright.
COPYRIGHT_HOLDER = Free Software Foundation, Inc.
+# This tells whether or not to prepend "GNU " prefix to the package
+# name that gets inserted into the header of the $(DOMAIN).pot file.
+# Possible values are "yes", "no", or empty. If it is empty, try to
+# detect it automatically by scanning the files in $(top_srcdir) for
+# "GNU packagename" string.
+PACKAGE_GNU =
+
# This is the email address or URL to which the translators shall report
# bugs in the untranslated strings:
# - Strings which are not entire sentences, see the maintainer guidelines
@@ -56,4 +54,34 @@ MSGID_BUGS_ADDRESS = bug-make@gnu.org
# This is the list of locale categories, beyond LC_MESSAGES, for which the
# message catalogs shall be used. It is usually empty.
-EXTRA_LOCALE_CATEGORIES =
+EXTRA_LOCALE_CATEGORIES =
+
+# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt'
+# context. Possible values are "yes" and "no". Set this to yes if the
+# package uses functions taking also a message context, like pgettext(), or
+# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument.
+USE_MSGCTXT = no
+
+# These options get passed to msgmerge.
+# Useful options are in particular:
+# --previous to keep previous msgids of translated messages,
+# --quiet to reduce the verbosity.
+MSGMERGE_OPTIONS =
+
+# These options get passed to msginit.
+# If you want to disable line wrapping when writing PO files, add
+# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and
+# MSGINIT_OPTIONS.
+MSGINIT_OPTIONS =
+
+# This tells whether or not to regenerate a PO file when $(DOMAIN).pot
+# has changed. Possible values are "yes" and "no". Set this to no if
+# the POT file is checked in the repository and the version control
+# program ignores timestamps.
+PO_DEPENDS_ON_POT = yes
+
+# This tells whether or not to forcibly update $(DOMAIN).pot and
+# regenerate PO files on "make dist". Possible values are "yes" and
+# "no". Set this to no if the POT file and PO files are maintained
+# externally.
+DIST_DEPENDS_ON_UPDATE_PO = yes
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 061ff2b..46e53ef 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,5 +1,5 @@
# List of source files containing translatable strings.
-# Copyright (C) 2000-2016 Free Software Foundation, Inc.
+# Copyright (C) 2000-2020 Free Software Foundation, Inc.
# This file is part of GNU Make.
#
# GNU Make is free software; you can redistribute it and/or modify it under
@@ -15,33 +15,33 @@
# You should have received a copy of the GNU General Public License along with
# this program. If not, see <http://www.gnu.org/licenses/>.
-ar.c
-arscan.c
-commands.c
-dir.c
-expand.c
-file.c
-function.c
-getopt.c
-guile.c
-hash.c
-implicit.c
-job.c
-job.h
-load.c
-main.c
-misc.c
-output.c
-posixos.c
-read.c
-remake.c
-remote-cstms.c
-rule.c
-signame.c
-strcache.c
-variable.c
-variable.h
-vmsfunctions.c
-vmsjobs.c
-vpath.c
-w32/w32os.c
+src/ar.c
+src/arscan.c
+src/commands.c
+src/dir.c
+src/expand.c
+src/file.c
+src/function.c
+src/getopt.c
+src/guile.c
+src/hash.c
+src/implicit.c
+src/job.c
+src/load.c
+src/main.c
+src/misc.c
+src/output.c
+src/output.h
+src/posixos.c
+src/read.c
+src/remake.c
+src/remote-cstms.c
+src/rule.c
+src/signame.c
+src/strcache.c
+src/variable.c
+src/variable.h
+src/vmsfunctions.c
+src/vmsjobs.c
+src/vpath.c
+src/w32/w32os.c
diff --git a/po/be.gmo b/po/be.gmo
index ca376b2..0908d0a 100644
--- a/po/be.gmo
+++ b/po/be.gmo
Binary files differ
diff --git a/po/be.po b/po/be.po
index 7f8b309..12408f1 100644
--- a/po/be.po
+++ b/po/be.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: make 3.80\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
"PO-Revision-Date: 2003-10-21 11:50+0300\n"
"Last-Translator: Ales Nyakhaychyk <nab@mail.by>\n"
"Language-Team: Belarusian <i18n@mova.org>\n"
@@ -14,115 +14,117 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"X-Generator: KBabel 0.9.6\n"
-#: ar.c:46
+#: src/ar.c:46
#, fuzzy, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "Ñпроба выкарыÑтаць непадтрымліваемую мажліваÑьць: \"%s\""
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "дакрананьне да ўдзельніку архіва недаÑтупна на VMS"
-#: ar.c:147
+#: src/ar.c:147
#, fuzzy, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "touch: архіў \"%s\" Ð½Ñ Ð¹Ñнуе"
-#: ar.c:150
+#: src/ar.c:150
#, fuzzy, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "touch: \"%s\" - гÑта не Ñ€ÑчаіÑны архіў"
-#: ar.c:157
+#: src/ar.c:157
#, fuzzy, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "touch: удзельнік \"%s\" Ð½Ñ Ð¹Ñнуе Ñž \"%s\""
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr ""
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr ""
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr ""
-#: arscan.c:261
+#: src/arscan.c:261
#, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr ""
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr ""
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (назва муÑіла быць абрÑзана)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Дата %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, Ñ€Ñжым = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr ""
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr ""
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr ""
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr ""
-#: commands.c:645
+#: src/commands.c:646
#, fuzzy, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] ВыдалÑецца файл \"%s\""
-#: commands.c:647
+#: src/commands.c:648
#, fuzzy, c-format
msgid "*** Deleting file '%s'"
msgstr "*** ВыдалÑецца файл \"%s\""
-#: commands.c:683
+#: src/commands.c:684
#, fuzzy
msgid "# recipe to execute"
msgstr "# загады Ð´Ð»Ñ Ð²Ñ‹ÐºÐ°Ð½Ð°Ð½ÑŒÐ½Ñ"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (убудаваны):"
-#: commands.c:688
+#: src/commands.c:689
#, fuzzy, c-format
msgid " (from '%s', line %lu):\n"
msgstr " (з\"%s\", радок %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -130,219 +132,221 @@ msgstr ""
"\n"
"# ТÑчкі\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr ""
-#: dir.c:1085
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
msgstr ""
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr ""
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr ""
-#: dir.c:1122
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
msgstr ""
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr ""
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr ""
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "Ðе"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " файлаў, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "не"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr ""
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " так далёка."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr ""
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr ""
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr ""
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr ""
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr ""
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr ""
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr ""
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr ""
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr ""
-#: file.c:408
+#: src/file.c:408
#, fuzzy, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "*** ВыдалÑецца файл \"%s\""
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "ВыдалÑюцца Ð¿Ñ€Ð°Ð¼ÐµÐ¶ÐºÐ°Ð²Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "БÑгучы чаÑ"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: адбітак чаÑу па-за дапушчальнымі межамі, падÑтаўлÑецца %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# ÐÑ Ð¼Ñта:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr ""
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr ""
-#: file.c:971
+#: src/file.c:1025
#, fuzzy
msgid "# Command line target."
msgstr "загадны радок"
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr ""
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
msgstr ""
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr ""
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr ""
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr ""
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr ""
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# Так Ñама робÑцца:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# Ð§Ð°Ñ Ð·ÑŒÐ¼ÑÐ½ÐµÐ½ÑŒÐ½Ñ Ð½Ñ–ÐºÐ¾Ð»Ñ– не правÑраўÑÑ."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# Файл Ð½Ñ Ð¹Ñнуе."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# Файл вельмі Ñтары."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# ÐпошнÑе зьмÑненьне %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# Файл быў абноўлены."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# Файл Ð½Ñ Ð±Ñ‹Ñž абноўлены."
-#: file.c:1008
+#: src/file.c:1062
#, fuzzy
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# Загады, што выконваюцца зараз (ГЭТР- ПÐМЫЛКÐ)."
-#: file.c:1011
+#: src/file.c:1065
#, fuzzy
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr "# Загады, што выконваюцца зараз (ГЭТР- ПÐМЫЛКÐ)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# ПаÑьпÑхова абноўлены."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr ""
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr ""
-#: file.c:1032
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
msgstr ""
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -350,613 +354,614 @@ msgstr ""
"\n"
"# Файлы"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
"# "
msgstr ""
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr ""
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
msgstr ""
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr ""
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
msgstr ""
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
msgstr ""
-#: function.c:1525
+#: src/function.c:1533
#, fuzzy, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "windows32_openpipe (): памылка ў process_init_fd()\n"
-#: function.c:1549
+#: src/function.c:1557
#, fuzzy, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr "windows32_openpipe (): памылка ў process_init_fd()\n"
-#: function.c:1556
+#: src/function.c:1564
#, fuzzy, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "памылка ў CreatePipe() (e=%d)\n"
-#: function.c:1564
-#, fuzzy
+#: src/function.c:1572
+#, fuzzy, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe (): памылка ў process_init_fd()\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr ""
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr ""
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, fuzzy, c-format
msgid "open: %s: %s"
msgstr "%s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, fuzzy, c-format
msgid "write: %s: %s"
msgstr "%s: %s"
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, fuzzy, c-format
msgid "close: %s: %s"
msgstr "%s%s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr ""
-#: function.c:2262
+#: src/function.c:2277
#, fuzzy, c-format
msgid "read: %s: %s"
msgstr "%s: %s"
-#: function.c:2275
+#: src/function.c:2290
#, fuzzy, c-format
msgid "file: invalid file operation: %s"
msgstr "%s: нерÑчаіÑны выбар -- %c.\n"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr ""
-#: function.c:2402
+#: src/function.c:2417
#, fuzzy, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "ÐÑ Ð·Ñ€Ð¾Ð±Ð»ÐµÐ½Ð° Ð´Ð»Ñ Ð³Ñтае плÑтформы: Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ \"%s\""
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr ""
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr ""
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr ""
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr ""
-#: function.c:2657
+#: src/function.c:2674
#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
msgstr ""
-#: function.c:2660
+#: src/function.c:2677
#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
msgstr ""
-#: getopt.c:659
+#: src/getopt.c:659
#, fuzzy, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: выбар \"%s\" - неадназначы.\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, fuzzy, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: выбар \"--%s\" не дазвалÑе довад.\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, fuzzy, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: выбар \"%c%s\" не дазвалÑе довад.\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, fuzzy, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: выбар \"%s\" патрабуе довад.\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, fuzzy, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: нераÑпазнаны выбар \"--%s\".\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, fuzzy, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: нераÑпазнаны выбар \"%c%s\".\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: недапушчальны выбар -- %c.\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: нерÑчаіÑны выбар -- %c.\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: выбар патрабуе довад -- %c.\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, fuzzy, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: выбар \"-W %s\" - неадназначын.\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, fuzzy, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: выбар \"-W %s\" не дазвалÑе довад.\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr ""
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr ""
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr ""
-#: hash.c:280
+#: src/hash.c:280
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
+msgid "Load=%lu/%lu=%.0f%%, "
msgstr ""
-#: hash.c:282
+#: src/hash.c:282
#, c-format
-msgid "Rehash=%d, "
+msgid "Rehash=%u, "
msgstr ""
-#: hash.c:283
+#: src/hash.c:283
#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
+msgid "Collisions=%lu/%lu=%.0f%%"
msgstr ""
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr ""
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr ""
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr ""
-#: implicit.c:486
+#: src/implicit.c:484
#, c-format
-msgid "Stem too long: '%.*s'.\n"
+msgid "Stem too long: '%s%.*s'.\n"
msgstr ""
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr ""
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr ""
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr ""
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr ""
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr ""
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr ""
-#: implicit.c:765
+#: src/implicit.c:786
#, fuzzy, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr "ВыдалÑюцца Ð¿Ñ€Ð°Ð¼ÐµÐ¶ÐºÐ°Ð²Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹...\n"
-#: job.c:363
+#: src/job.c:370
#, fuzzy
msgid "Cannot create a temporary file\n"
msgstr "fwrite (чаÑовы файл)"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr ""
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr ""
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
#, fuzzy
msgid "<builtin>"
msgstr " (убудаваны):"
-#: job.c:510
+#: src/job.c:573
#, fuzzy, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "*** [%s] Памылка %d"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** Чакаюцца Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÐ°Ð½Ñ‹Ñ Ð¿Ñ€Ð°Ñ†Ñ‹...."
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr ""
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr ""
-#: job.c:831
+#: src/job.c:898
#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
+msgid "Reaping winning child %p PID %s %s\n"
msgstr ""
-#: job.c:832
+#: src/job.c:899
#, c-format
-msgid "Reaping winning child %p PID %s %s\n"
+msgid "Reaping losing child %p PID %s %s\n"
msgstr ""
-#: job.c:839
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr ""
-#: job.c:845
+#: src/job.c:956
#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr ""
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr ""
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr ""
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr ""
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
"Counted %d args in failed launch\n"
msgstr ""
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr ""
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr ""
-#: job.c:1838
+#: src/job.c:1902
#, fuzzy, c-format
msgid "%s: target '%s' does not exist"
msgstr "touch: архіў \"%s\" Ð½Ñ Ð¹Ñнуе"
-#: job.c:1841
+#: src/job.c:1905
#, fuzzy, c-format
msgid "%s: update target '%s' due to: %s"
msgstr "%s ÐÑма правіла каб зрабіць мÑту \"%s\", патрÑбную Ð´Ð»Ñ \"%s\"%s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr ""
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr ""
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr ""
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr ""
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr ""
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr ""
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr ""
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr ""
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr ""
-#: job.c:2275
-#, fuzzy, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: загад не адшуканы"
-
-#: job.c:2277
-#, fuzzy, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s: загад не адшуканы"
-
-#: job.c:2337
+#: src/job.c:2623
#, c-format
-msgid "%s: Shell program not found"
-msgstr ""
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr ""
-#: job.c:2584
+#: src/job.c:2862
#, fuzzy, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "$SHELL зьменена (раней \"%s\", зараз \"%s\")"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr ""
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
msgstr ""
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
"\t%s\n"
msgstr ""
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr ""
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr ""
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr ""
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr ""
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr ""
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr ""
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr ""
-#: load.c:256
-#, fuzzy
+#: src/load.c:256
+#, fuzzy, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr "ÐŸÐ°Ñ€Ð°Ð»ÐµÐ»ÑŒÐ½Ñ Ð¿Ñ€Ð°Ñ†Ñ‹ (-j) не падтрымліваюцца на гÑтае плÑтхорме."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "Выбары:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr ""
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr ""
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
msgstr ""
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr ""
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
msgstr ""
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
msgstr ""
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr ""
" -h, --help Друкуе гÑтае паведамленьне й выходзіць.\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr ""
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
msgstr ""
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
msgstr ""
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
"N.\n"
msgstr ""
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
msgstr ""
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
"them.\n"
msgstr ""
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
"it.\n"
msgstr ""
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
msgstr ""
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr " -p, --print-data-base Друкуе нутраную базу даньнÑÑž make.\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
msgstr ""
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr ""
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr ""
-#: main.c:391
+#: src/main.c:388
#, fuzzy
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr " -s, --silent, --quiet Ðе адлюÑтроўваць загады.\n"
-#: main.c:393
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
@@ -964,63 +969,64 @@ msgstr ""
" -S, --no-keep-going, --stop\n"
" Выключае -k.\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
-#: main.c:398
+#: src/main.c:397
#, fuzzy
msgid " --trace Print tracing information.\n"
msgstr ""
" -h, --help Друкуе гÑтае паведамленьне й выходзіць.\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr ""
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory Друкуе бÑгучую Ñ‚Ñчку.\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
msgstr ""
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
msgstr ""
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
msgstr ""
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "пуÑÑ‚Ñ‹ радок нерÑчаіÑны Ñž ÑкаÑьці назвы файла"
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
msgstr ""
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr ""
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr ""
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1030,132 +1036,140 @@ msgid ""
"ExceptionAddress = 0x%p\n"
msgstr ""
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr ""
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr ""
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr ""
-#: main.c:1021
+#: src/main.c:1009
#, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr ""
-#: main.c:1538
-#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s Ñпынена на 30 ÑÑкундаў..."
-
-#: main.c:1540
+#: src/main.c:1609
#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr ""
-
-#: main.c:1627
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
msgstr ""
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr "Makefile Ñа Ñтандартнага ўводу зададзены двойчы."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (чаÑовы файл)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (чаÑовы файл)"
-#: main.c:2048
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr ""
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr "ÐŸÐ°Ñ€Ð°Ð»ÐµÐ»ÑŒÐ½Ñ Ð¿Ñ€Ð°Ñ†Ñ‹ (-j) не падтрымліваюцца на гÑтае плÑтхорме."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr ""
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr ""
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "ÐбнаўлÑюцца make-файлы....\n"
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr ""
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
msgstr ""
-#: main.c:2299
+#: src/main.c:2323
#, fuzzy, c-format
msgid "Included makefile '%s' was not found."
msgstr "Makefile \"%s\" Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½"
-#: main.c:2304
+#: src/main.c:2328
#, fuzzy, c-format
msgid "Makefile '%s' was not found"
msgstr "Makefile \"%s\" Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr ""
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr ""
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (чаÑовы файл): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ""
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr ""
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "ÐÑма мÑÑ‚"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr ""
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr ""
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr ""
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "ВыкарыÑтаньне: %s [выбары] [мÑта] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1164,7 +1178,7 @@ msgstr ""
"\n"
"ГÑта праграма пабудавана Ð´Ð»Ñ %s\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1173,36 +1187,36 @@ msgstr ""
"\n"
"ГÑта праграма падубавана Ð´Ð»Ñ %s (%s)\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr "ПаведамлÑйце пра памылкі на <bug-make@gnu.org>.\n"
-#: main.c:2870
+#: src/main.c:2901
#, fuzzy, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "выбар \"-%c\" патрабуе Ñтаноўчы цÑлы довад"
-#: main.c:2934
+#: src/main.c:2965
#, fuzzy, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "выбар \"-%c\" патрабуе Ñтаноўчы цÑлы довад"
-#: main.c:3332
+#: src/main.c:3363
#, fuzzy, c-format
msgid "%sBuilt for %s\n"
msgstr ""
"\n"
"ГÑта праграма пабудавана Ð´Ð»Ñ %s\n"
-#: main.c:3334
+#: src/main.c:3365
#, fuzzy, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr ""
"\n"
"ГÑта праграма падубавана Ð´Ð»Ñ %s (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1211,702 +1225,729 @@ msgid ""
"%sThere is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
"# Make data base, printed on %s"
msgstr ""
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
"# Finished Make data base on %s\n"
msgstr ""
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: карыÑтальнік %lu (наÑамрÑч %lu), група %lu (наÑамрÑч %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr ""
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr ""
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr ""
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr ""
-#: output.c:104
+#: src/output.c:97
#, fuzzy, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: уваход у невÑдомую Ñ‚Ñчку"
-#: output.c:106
+#: src/output.c:99
#, fuzzy, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: выхад зь невÑдомае Ñ‚Ñчкі"
-#: output.c:109
+#: src/output.c:102
#, fuzzy, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "%s: уваход у Ñ‚Ñчку \"%s\"\n"
-#: output.c:111
+#: src/output.c:104
#, fuzzy, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "%s: выхад з Ñ‚Ñчкі \"%s\"\n"
-#: output.c:115
+#: src/output.c:108
#, fuzzy, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: уваход у невÑдомую Ñ‚Ñчку"
-#: output.c:117
+#: src/output.c:110
#, fuzzy, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: выхад зь невÑдомае Ñ‚Ñчкі"
-#: output.c:120
+#: src/output.c:113
#, fuzzy, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr "%s[%u]: уваход у Ñ‚Ñчку \"%s\"\n"
-#: output.c:122
+#: src/output.c:115
#, fuzzy, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "%s[%u]: выхад з Ñ‚Ñчкі \"%s\"\n"
-#: output.c:495 output.c:497
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
msgstr ""
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ""
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "Ñтвараецца трубаправод прац"
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
#, fuzzy
msgid "duping jobs pipe"
msgstr "Ñтвараецца трубаправод прац"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr ""
-#: posixos.c:90
+#: src/posixos.c:119
#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr ""
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr ""
-#: posixos.c:109
+#: src/posixos.c:138
msgid "jobserver pipeline"
msgstr ""
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr ""
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr ""
+
+#: src/posixos.c:303
#, fuzzy
msgid "pselect jobs pipe"
msgstr "Ñтвараецца трубаправод прац"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr ""
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "Чытаюцца make-файлы...\n"
-#: read.c:329
+#: src/read.c:336
#, fuzzy, c-format
msgid "Reading makefile '%s'"
msgstr "Чытаецца make-файл \"%s\""
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (нÑма дапомнае мÑÑ‚Ñ‹)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (пошук шлÑху)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr ""
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr ""
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr ""
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr ""
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr ""
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr ""
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
msgstr ""
-#: read.c:1034
-#, fuzzy
+#: src/read.c:1035
+#, fuzzy, c-format
msgid "missing rule before recipe"
msgstr "прапушчана правіла перад загадамі"
-#: read.c:1124
-#, fuzzy
+#: src/read.c:1136
+#, fuzzy, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr " (вы маеце на ўвазе TAB замеÑÑ‚ 8 прагалаў?)"
-#: read.c:1126
-#, fuzzy
+#: src/read.c:1138
+#, fuzzy, c-format
msgid "missing separator"
msgstr "прапушчан падзÑлÑльнік %s"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr ""
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr ""
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
msgstr ""
-#: read.c:1390
-#, fuzzy
+#: src/read.c:1404
+#, fuzzy, c-format
msgid "missing 'endif'"
msgstr "прапушчаны \"endif\""
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr ""
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
msgstr ""
-#: read.c:1488
-#, fuzzy
+#: src/read.c:1503
+#, fuzzy, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "прапушчаны \"endef\", незавершаны \"define\""
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
msgstr ""
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
msgstr ""
-#: read.c:1589
+#: src/read.c:1604
#, fuzzy, c-format
msgid "extraneous '%s'"
msgstr "зьнешні \"%s\""
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
msgstr ""
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr ""
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr ""
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr ""
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr ""
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr ""
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr ""
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
msgstr ""
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
msgstr ""
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr ""
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr ""
-#: read.c:2223
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr ""
-#: read.c:2542
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr ""
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr ""
-#: remake.c:226
+#: src/remake.c:226
#, fuzzy, c-format
msgid "Nothing to be done for '%s'."
msgstr "Ðічога Ð½Ñ Ð±Ñ‹Ð»Ð¾ зроблена Ð´Ð»Ñ \"%s\"."
-#: remake.c:227
+#: src/remake.c:227
#, fuzzy, c-format
msgid "'%s' is up to date."
msgstr "\"%s\" - ÑаÑтарÑл(а)."
-#: remake.c:323
+#: src/remake.c:323
#, fuzzy, c-format
msgid "Pruning file '%s'.\n"
msgstr "УÑÑ‘ ÑÑˆÑ Ð°Ð±Ð½Ð°ÑžÐ»Ñецца файл \"%s\".\n"
-#: remake.c:406
+#: src/remake.c:389
#, fuzzy, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr "%s ÐÑма правіла каб зрабіць мÑту \"%s\", патрÑбную Ð´Ð»Ñ \"%s\"%s"
-#: remake.c:416
+#: src/remake.c:399
#, fuzzy, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%sÐÑма правіла каб зрабіць мÑту \"%s\"%s"
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
msgstr ""
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr ""
-#: remake.c:461
+#: src/remake.c:444
#, fuzzy, c-format
msgid "File '%s' was considered already.\n"
msgstr "Файл \"%s\" ужо быў разгледжаны.\n"
-#: remake.c:471
+#: src/remake.c:454
#, fuzzy, c-format
msgid "Still updating file '%s'.\n"
msgstr "УÑÑ‘ ÑÑˆÑ Ð°Ð±Ð½Ð°ÑžÐ»Ñецца файл \"%s\".\n"
-#: remake.c:474
+#: src/remake.c:457
#, fuzzy, c-format
msgid "Finished updating file '%s'.\n"
msgstr "Скончана абнаўленьне файла \"%s\".\n"
-#: remake.c:503
+#: src/remake.c:486
#, fuzzy, c-format
msgid "File '%s' does not exist.\n"
msgstr "Файл \"%s\" Ð½Ñ Ð¹Ñнуе.\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
msgstr ""
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr ""
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr ""
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
msgstr ""
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr ""
-#: remake.c:691
+#: src/remake.c:674
#, fuzzy, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr "Скончана абнаўленьне файла \"%s\".\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr ""
-#: remake.c:711
+#: src/remake.c:694
#, fuzzy, c-format
msgid "Giving up on target file '%s'.\n"
msgstr "Скончана абнаўленьне файла \"%s\".\n"
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
msgstr ""
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr ""
-#: remake.c:773
+#: src/remake.c:756
#, fuzzy, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr "Файл \"%s\" Ð½Ñ Ð¹Ñнуе.\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr ""
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr ""
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr ""
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr ""
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr ""
-#: remake.c:819
+#: src/remake.c:802
#, fuzzy, c-format
msgid "No need to remake target '%s'"
msgstr "%sÐÑма правіла каб зрабіць мÑту \"%s\"%s"
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
msgstr ""
-#: remake.c:841
+#: src/remake.c:824
#, fuzzy, c-format
msgid "Must remake target '%s'.\n"
msgstr "%sÐÑма правіла каб зрабіць мÑту \"%s\"%s"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr ""
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr ""
-#: remake.c:863
+#: src/remake.c:846
#, fuzzy, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr "%sÐÑма правіла каб зрабіць мÑту \"%s\"%s"
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr ""
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr ""
-#: remake.c:1064
+#: src/remake.c:1047
#, fuzzy, c-format
msgid "Using default commands for '%s'.\n"
msgstr "ÐевÑдомы ўбудаваны загад \"%s\".\n"
-#: remake.c:1430
-#, fuzzy, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "Увага! Файл \"%s\" мае Ñ‡Ð°Ñ Ð·ÑŒÐ¼ÑненьнÑ, Ñкі ÑˆÑ‡Ñ Ð½Ðµ надышоў."
-
-#: remake.c:1444
+#: src/remake.c:1422
#, fuzzy, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr "Увага! Файл \"%s\" мае Ñ‡Ð°Ñ Ð·ÑŒÐ¼ÑÐ½ÐµÐ½ÑŒÐ½Ñ %.2g Ñ, Ñкі ÑˆÑ‡Ñ Ð½Ðµ надышоў."
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr ""
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr ""
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
msgstr ""
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
msgstr ""
-#: rule.c:514
+#: src/rule.c:548
#, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
-#: rule.c:523
-msgid " terminal."
-msgstr " Ñ‚Ñрмінал."
-
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr ""
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "невÑдомы Ñыгнал"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr ""
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr ""
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr ""
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "ÐÐµÐ´Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ñ–Ð½ÑтрукцыÑ"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr ""
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr ""
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr ""
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr ""
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr ""
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Забіты"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "Памылка шыны"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr ""
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "ДрÑнны ÑÑ‹ÑÑ‚Ñмны выклік"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "Зламаны трубаправод"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr ""
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "Завершаны"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr ""
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr ""
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr ""
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr ""
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Спынен"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Спынен (tty увод)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Спынен (вывад на tty)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Спынена (Ñыгнал)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr ""
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr ""
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr ""
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr ""
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "Ðкно зьменена"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr ""
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr ""
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "магчым У/В"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr ""
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr ""
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr ""
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Сыгнал пагрозы"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Запыт аб зьвеÑтках"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr ""
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
"%s No strcache buffers\n"
msgstr ""
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -1914,75 +1955,75 @@ msgid ""
"B\n"
msgstr ""
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr ""
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
msgstr ""
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
msgstr ""
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
msgstr ""
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "аўтаматычна"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "дапомны"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "аÑÑродзьдзе"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "make-файл"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr ""
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "загадны радок"
-#: variable.c:1647
+#: src/variable.c:1671
#, fuzzy
msgid "'override' directive"
msgstr "дырÑктыва \"override\""
-#: variable.c:1658
+#: src/variable.c:1682
#, fuzzy, c-format
msgid " (from '%s', line %lu)"
msgstr " (з \"%s\", радок %lu)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr ""
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -1990,123 +2031,123 @@ msgstr ""
"\n"
"# ПераменныÑ\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
msgstr ""
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
msgstr ""
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
"# %u pattern-specific variable values"
msgstr ""
-#: variable.h:224
+#: src/variable.h:229
#, fuzzy, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "Увага! ÐÑÐ²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°Ñ Ð¿ÐµÑ€Ð°Ð¼ÐµÐ½Ð½Ð°Ñ \"%.*s\""
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr ""
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr ""
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr ""
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr ""
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, fuzzy, c-format
msgid "Append output to %s\n"
msgstr "Перанакіраваны вывад у %s\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr ""
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr ""
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
msgstr ""
-#: vpath.c:620
+#: src/vpath.c:620
#, fuzzy
msgid "# No 'vpath' search paths."
msgstr " (пошук шлÑху)"
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
"# %u 'vpath' search paths.\n"
msgstr ""
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
msgstr ""
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
"# "
msgstr ""
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr ""
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr ""
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr ""
@@ -2120,6 +2161,12 @@ msgstr ""
#~ msgid "Redirected input from %s\n"
#~ msgstr "Перанакіраваны ўвод з %s\n"
+#~ msgid "%s: Command not found"
+#~ msgstr "%s: загад не адшуканы"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s Ñпынена на 30 ÑÑкундаў..."
+
#~ msgid "Do not specify -j or --jobs if sh.exe is not available."
#~ msgstr "Ðе задавайце -j ці --jobs, калі sh.exe недаÑтупны."
@@ -2132,6 +2179,9 @@ msgstr ""
#~ "%sÐ¿Ð°Ð³Ð°Ð´Ð½ÐµÐ½ÑŒÐ½Ñ Ð°Ð± раÑпаўÑюджваньні. ÐÑ Ð¹Ñнуе ÐІЯКÐЕ гарантыі, нават аб\n"
#~ "%sмагчымаÑьці выкарыÑÑ‚Ð½ÑŒÐ½Ñ Ð·ÑŒ Ñкой небудзь мÑтай.\n"
+#~ msgid "Unknown error %d"
+#~ msgstr "ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° %d"
+
#~ msgid "virtual memory exhausted"
#~ msgstr "Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð°Ð¼Ñць вычарпана"
@@ -2141,6 +2191,12 @@ msgstr ""
#~ msgid "no file name for `%sinclude'"
#~ msgstr "нÑма назвы файла Ð´Ð»Ñ \"%sinclude\""
+#~ msgid "Warning: File `%s' has modification time in the future"
+#~ msgstr "Увага! Файл \"%s\" мае Ñ‡Ð°Ñ Ð·ÑŒÐ¼ÑненьнÑ, Ñкі ÑˆÑ‡Ñ Ð½Ðµ надышоў."
+
+#~ msgid " terminal."
+#~ msgstr " Ñ‚Ñрмінал."
+
#~ msgid ""
#~ "\n"
#~ "# No files."
diff --git a/po/bg.gmo b/po/bg.gmo
new file mode 100644
index 0000000..ea867cc
--- /dev/null
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
new file mode 100644
index 0000000..641201e
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,2293 @@
+# Bulgarian translation of make po-file.
+# Copyright (C) 2019, 2020 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
+# Alexander Shopov <ash@kambanaria.org>, 2019, 2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: make 4.2.93\n"
+"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2020-01-04 12:41+0100\n"
+"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
+"Language-Team: Bulgarian <dict@ludost.net>\n"
+"Language: bg\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+
+#: src/ar.c:46
+#, c-format
+msgid "attempt to use unsupported feature: '%s'"
+msgstr "опит за ползване на „%s“, което не Ñе поддържа"
+
+#: src/ar.c:123
+#, c-format
+msgid "touch archive member is not available on VMS"
+msgstr ""
+"обновÑването на информациÑта чрез „touch“ на член на архив не Ñе поддържа "
+"под VMS"
+
+#: src/ar.c:147
+#, c-format
+msgid "touch: Archive '%s' does not exist"
+msgstr "„touch“: архивът „%s“ не ÑъщеÑтвува"
+
+#: src/ar.c:150
+#, c-format
+msgid "touch: '%s' is not a valid archive"
+msgstr "„touch“: „%s“ не е поддържан архив"
+
+#: src/ar.c:157
+#, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
+msgstr "„touch“: в „%2$s“ нÑма член „%1$s“"
+
+#: src/ar.c:164
+#, c-format
+msgid "touch: Bad return code from ar_member_touch on '%s'"
+msgstr "„touch“: неправилен изходен код от „ar_member_touch“ върху „%s“"
+
+#: src/arscan.c:130
+#, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
+msgstr "„lbr$set_module()“ не може да получи Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° модула, код = %d"
+
+#: src/arscan.c:236
+#, c-format
+msgid "lbr$ini_control() failed with status = %d"
+msgstr "„lbr$ini_control()“ завърши неуÑпешно Ñ ÐºÐ¾Ð´ = %d"
+
+#: src/arscan.c:261
+#, c-format
+msgid "unable to open library '%s' to lookup member status %d"
+msgstr "библиотеката „%s“ не може да Ñе отвори за проверката на член, код = %d"
+
+#: src/arscan.c:944
+#, c-format
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "Член „%s“%s: %ld байта при %ld (%ld).\n"
+
+#: src/arscan.c:945
+msgid " (name might be truncated)"
+msgstr " (името може да е отÑечено)"
+
+#: src/arscan.c:947
+#, c-format
+msgid " Date %s"
+msgstr " Дата %s"
+
+#: src/arscan.c:948
+#, c-format
+msgid " uid = %d, gid = %d, mode = 0%o.\n"
+msgstr " ИД_П = %d, ИД_ГР = %d, режим = 0%o.\n"
+
+#: src/commands.c:403
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr "Прекалено много редове в рецептата (%ud)"
+
+#: src/commands.c:504
+msgid "*** Break.\n"
+msgstr "••• ПрекъÑване.\n"
+
+#: src/commands.c:628
+#, c-format
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
+msgstr "••• [%s] „%s“ може да е фалшива чаÑÑ‚ от архив — нÑма да бъде изтрита"
+
+#: src/commands.c:632
+#, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
+msgstr "••• „%s“ може да е фалшива чаÑÑ‚ от архив — нÑма да бъде изтрита"
+
+#: src/commands.c:646
+#, c-format
+msgid "*** [%s] Deleting file '%s'"
+msgstr "••• [%s] Изтриване на файл „%s“"
+
+#: src/commands.c:648
+#, c-format
+msgid "*** Deleting file '%s'"
+msgstr "••• Изтриване на файл „%s“"
+
+#: src/commands.c:684
+msgid "# recipe to execute"
+msgstr "# рецепта за изпълнение"
+
+#: src/commands.c:687
+msgid " (built-in):"
+msgstr " (вградено):"
+
+#: src/commands.c:689
+#, c-format
+msgid " (from '%s', line %lu):\n"
+msgstr " (от „%s“, ред %lu)\n"
+
+#: src/dir.c:1073
+msgid ""
+"\n"
+"# Directories\n"
+msgstr ""
+"\n"
+"# Директории\n"
+
+#: src/dir.c:1085
+#, c-format
+msgid "# %s: could not be stat'd.\n"
+msgstr "# „%s“: не може да Ñе получи Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ñ‡Ñ€ÐµÐ· „stat“.\n"
+
+#: src/dir.c:1089
+msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
+msgstr "# %s (ключ %s, време на промÑна %I64u): не може да Ñе отвори.\n"
+
+#: src/dir.c:1094
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
+msgstr "# %s (уÑтройÑтво %d, i-възел [%d,%d,%d]): не може да Ñе отвори.\n"
+
+#: src/dir.c:1099
+#, c-format
+msgid "# %s (device %ld, inode %ld): could not be opened.\n"
+msgstr "# %s (уÑтройÑтво %ld, i-възел %ld): не може да Ñе отвори.\n"
+
+#: src/dir.c:1126
+msgid "# %s (key %s, mtime %I64u): "
+msgstr "# %s (ключ %s, време на промÑна %I64u): "
+
+#: src/dir.c:1131
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): "
+msgstr "# %s (уÑтройÑтво %d, i-възел [%d,%d,%d]): "
+
+#: src/dir.c:1136
+#, c-format
+msgid "# %s (device %ld, inode %ld): "
+msgstr "# %s (уÑтройÑтво %ld, i-възел %ld): "
+
+#: src/dir.c:1142 src/dir.c:1163
+msgid "No"
+msgstr "ÐÑма"
+
+#: src/dir.c:1145 src/dir.c:1166
+msgid " files, "
+msgstr " файлове, "
+
+#: src/dir.c:1147 src/dir.c:1168
+msgid "no"
+msgstr "нÑма"
+
+#: src/dir.c:1150
+msgid " impossibilities"
+msgstr " пречки"
+
+#: src/dir.c:1154
+msgid " so far."
+msgstr " заÑега."
+
+#: src/dir.c:1171
+#, c-format
+msgid " impossibilities in %lu directories.\n"
+msgstr " пречки в %lu директории.\n"
+
+#: src/expand.c:125
+#, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
+msgstr "РекурÑивната променлива „%s“ Ñочи Ñебе Ñи (в нÑкой момент)"
+
+#: src/expand.c:271
+#, c-format
+msgid "unterminated variable reference"
+msgstr "незавършен указател към променлива"
+
+#: src/file.c:278
+#, c-format
+msgid "Recipe was specified for file '%s' at %s:%lu,"
+msgstr "Рецептата е указана за файл „%s“ при %s:%lu,"
+
+#: src/file.c:283
+#, c-format
+msgid "Recipe for file '%s' was found by implicit rule search,"
+msgstr "Рецептата за файла „%s“ бе открита при Ñ‚ÑŠÑ€Ñене на вградените правила."
+
+#: src/file.c:287
+#, c-format
+msgid "but '%s' is now considered the same file as '%s'."
+msgstr "но Ñега „%s“ Ñе Ñчита за ÑÑŠÑ‰Ð¸Ñ Ñ„Ð°Ð¹Ð» като „%s“."
+
+#: src/file.c:290
+#, c-format
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
+msgstr "Рецептата за „%s“ Ñе преÑкача, а Ñе ползва тази за „%s“."
+
+#: src/file.c:310
+#, c-format
+msgid "can't rename single-colon '%s' to double-colon '%s'"
+msgstr ""
+"единичното двоеточие „%s“ не може да Ñе преименува на двойно двоеточие „%s“"
+
+#: src/file.c:316
+#, c-format
+msgid "can't rename double-colon '%s' to single-colon '%s'"
+msgstr ""
+"двойното двоеточие „%s“ не може да Ñе преименува на единично двоеточие „%s“"
+
+#: src/file.c:408
+#, c-format
+msgid "*** Deleting intermediate file '%s'"
+msgstr "••• Изтриване на Ð¼ÐµÐ¶Ð´Ð¸Ð½Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“"
+
+#: src/file.c:412
+#, c-format
+msgid "Removing intermediate files...\n"
+msgstr "Изтриване на междинните файлове…\n"
+
+#: src/file.c:872
+msgid "Current time"
+msgstr "Текущо време"
+
+#: src/file.c:876
+#, c-format
+msgid "%s: Timestamp out of range; substituting %s"
+msgstr "%s: времевото клеймо е извън диапазона, замеÑтва Ñе Ñ â€ž%s“"
+
+#: src/file.c:1016
+msgid "# Not a target:"
+msgstr "# Ðе е цел:"
+
+#: src/file.c:1021
+msgid "# Precious file (prerequisite of .PRECIOUS)."
+msgstr "# Ценен файл (изиÑкване на „.PRECIOUS“)."
+
+#: src/file.c:1023
+msgid "# Phony target (prerequisite of .PHONY)."
+msgstr "# Фалшива цел (изиÑкване на „.PHONY“)."
+
+#: src/file.c:1025
+msgid "# Command line target."
+msgstr "# Цел на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´."
+
+#: src/file.c:1027
+msgid "# A default, MAKEFILES, or -include/sinclude makefile."
+msgstr "# Стандартен, MAKEFILES или -include/sinclude makefile."
+
+#: src/file.c:1029
+msgid "# Builtin rule"
+msgstr "# Вградено правило"
+
+#: src/file.c:1031
+msgid "# Implicit rule search has been done."
+msgstr "# ТърÑенето във вградените правила е извършено."
+
+#: src/file.c:1032
+msgid "# Implicit rule search has not been done."
+msgstr "# ТърÑенето във вградените правила не е извършено."
+
+#: src/file.c:1034
+#, c-format
+msgid "# Implicit/static pattern stem: '%s'\n"
+msgstr "# Вградена/Ñтатична оÑнова на шаблон: „%s“\n"
+
+#: src/file.c:1036
+msgid "# File is an intermediate prerequisite."
+msgstr "# Файлът е междинно изиÑкване."
+
+#: src/file.c:1040
+msgid "# Also makes:"
+msgstr "# Също изгражда:"
+
+#: src/file.c:1046
+msgid "# Modification time never checked."
+msgstr "# Времето на промÑна не е проверено."
+
+#: src/file.c:1048
+msgid "# File does not exist."
+msgstr "# Файлът не ÑъщеÑтвува."
+
+#: src/file.c:1050
+msgid "# File is very old."
+msgstr "# Файлът е много Ñтар."
+
+#: src/file.c:1055
+#, c-format
+msgid "# Last modified %s\n"
+msgstr "# ПоÑледна промÑна на „%s“\n"
+
+#: src/file.c:1058
+msgid "# File has been updated."
+msgstr "# Файлът е обновен."
+
+#: src/file.c:1058
+msgid "# File has not been updated."
+msgstr "# Файлът не е обновен."
+
+#: src/file.c:1062
+msgid "# Recipe currently running (THIS IS A BUG)."
+msgstr "# Рецептата в момента Ñе изпълнÑва (това е ГРЕШКÐ)."
+
+#: src/file.c:1065
+msgid "# Dependencies recipe running (THIS IS A BUG)."
+msgstr "# Рецептата за завиÑимоÑтите в момента Ñе изпълнÑва (това е ГРЕШКÐ)"
+
+#: src/file.c:1074
+msgid "# Successfully updated."
+msgstr "# УÑпешно обновено."
+
+#: src/file.c:1078
+msgid "# Needs to be updated (-q is set)."
+msgstr "# ТрÑбва да бъде обновено („-q“ е зададена)."
+
+#: src/file.c:1081
+msgid "# Failed to be updated."
+msgstr "# ÐеуÑпешно обновÑване."
+
+#: src/file.c:1086
+msgid "# Invalid value in 'command_state' member!"
+msgstr "# Ðеправилна ÑтойноÑÑ‚ в член на „command_state“!"
+
+#: src/file.c:1105
+msgid ""
+"\n"
+"# Files"
+msgstr ""
+"\n"
+"# Файлове"
+
+#: src/file.c:1109
+msgid ""
+"\n"
+"# files hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# ÑтатиÑтика за речника за файлове:\n"
+"# "
+
+#: src/file.c:1119
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr "%s: полето „%s“ не е кеширано: %s"
+
+#: src/function.c:794
+msgid "non-numeric first argument to 'word' function"
+msgstr "нечиÑлов първи аргумент към функциÑта „word“"
+
+#: src/function.c:799
+#, c-format
+msgid "first argument to 'word' function must be greater than 0"
+msgstr "първиÑÑ‚ аргумент към функциÑта „word“ Ñ‚Ñ€Ñбва да е положително чиÑло"
+
+#: src/function.c:819
+msgid "non-numeric first argument to 'wordlist' function"
+msgstr "нечиÑлов първи аргумент за функциÑта „wordlist“"
+
+#: src/function.c:821
+msgid "non-numeric second argument to 'wordlist' function"
+msgstr "нечиÑлов втори аргумент за функциÑта „wordlist“"
+
+#: src/function.c:1533
+#, c-format
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr ""
+"„windows32_openpipe“: неуÑпешно извикване на „DuplicateHandle(In)“ (e=%ld)\n"
+
+#: src/function.c:1557
+#, c-format
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr ""
+"„windows32_openpipe“: неуÑпешно извикване на „DuplicateHandle(Out)“ (e=%ld)\n"
+
+#: src/function.c:1564
+#, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "неуÑпешно извикване на „CreatePipe()“ failed (e=%ld)\n"
+
+#: src/function.c:1572
+#, c-format
+msgid "windows32_openpipe(): process_init_fd() failed\n"
+msgstr "„windows32_openpipe()“: неуÑпешно извикване на „process_init_fd()“\n"
+
+#: src/function.c:1857
+#, c-format
+msgid "Cleaning up temporary batch file %s\n"
+msgstr "ИзчиÑтване на временен файл за пакетна обработка „%s“\n"
+
+#: src/function.c:2230 src/function.c:2255
+#, c-format
+msgid "file: missing filename"
+msgstr "файл: липÑва име на файл"
+
+#: src/function.c:2234 src/function.c:2265
+#, c-format
+msgid "open: %s: %s"
+msgstr "отварÑне: %s: %s"
+
+#: src/function.c:2242
+#, c-format
+msgid "write: %s: %s"
+msgstr "запазване: %s: %s"
+
+#: src/function.c:2245 src/function.c:2282
+#, c-format
+msgid "close: %s: %s"
+msgstr "затварÑне: %s: %s"
+
+#: src/function.c:2258
+#, c-format
+msgid "file: too many arguments"
+msgstr "файл: прекалено много аргументи"
+
+#: src/function.c:2277
+#, c-format
+msgid "read: %s: %s"
+msgstr "четене: %s: %s"
+
+#: src/function.c:2290
+#, c-format
+msgid "file: invalid file operation: %s"
+msgstr "файл: неправилно дейÑтвие върху файл: %s"
+
+#: src/function.c:2405
+#, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
+msgstr "недоÑтатъчен брой аргументи (%d) към функциÑта „%s“"
+
+#: src/function.c:2417
+#, c-format
+msgid "unimplemented on this platform: function '%s'"
+msgstr "без Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° тази платформа: Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ â€ž%s“"
+
+#: src/function.c:2483
+#, c-format
+msgid "unterminated call to function '%s': missing '%c'"
+msgstr "незавършено извикване на функциÑта „%s“: липÑва „%c“"
+
+#: src/function.c:2667
+#, c-format
+msgid "Empty function name"
+msgstr "Празно име на функциÑ"
+
+#: src/function.c:2669
+#, c-format
+msgid "Invalid function name: %s"
+msgstr "Грешно име на функциÑ: „%s“"
+
+#: src/function.c:2671
+#, c-format
+msgid "Function name too long: %s"
+msgstr "Името на функциÑта е твърде дълго: „%s“"
+
+#: src/function.c:2674
+#, c-format
+msgid "Invalid minimum argument count (%u) for function %s"
+msgstr "Ðеправилен минимален брой аргументи (%u) за функциÑта „%s“"
+
+#: src/function.c:2677
+#, c-format
+msgid "Invalid maximum argument count (%u) for function %s"
+msgstr "Ðеправилен макÑимален брой аргументи (%u) за функциÑта „%s“"
+
+#: src/getopt.c:659
+#, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: опциÑта „%s“ не е еднозначна\n"
+
+#: src/getopt.c:683
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: опциÑта „--%s“ не приема аргумент\n"
+
+#: src/getopt.c:688
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: опциÑта „%c%s“ не приема аргумент\n"
+
+#: src/getopt.c:705 src/getopt.c:878
+#, c-format
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: опциÑта „%s“ изиÑква аргумент\n"
+
+#: src/getopt.c:734
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: непозната Ð¾Ð¿Ñ†Ð¸Ñ â€ž--%s“\n"
+
+#: src/getopt.c:738
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: непозната Ð¾Ð¿Ñ†Ð¸Ñ â€ž%c%s“\n"
+
+#: src/getopt.c:764
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: непозволена Ð¾Ð¿Ñ†Ð¸Ñ â€” %c\n"
+
+#: src/getopt.c:767
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: неправилна Ð¾Ð¿Ñ†Ð¸Ñ â€” „%c“\n"
+
+#: src/getopt.c:797 src/getopt.c:927
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: опциÑта изиÑква аргумент — %c\n"
+
+#: src/getopt.c:844
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: опциÑта „-W %s“ не е еднозначна\n"
+
+#: src/getopt.c:862
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: опциÑта „-W %s“ не приема аргумент\n"
+
+#: src/guile.c:58
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr "guile: замеÑтване на „%s“\n"
+
+#: src/guile.c:74
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr "guile: изчиÑлÑване на „%s“\n"
+
+#: src/hash.c:50
+#, c-format
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
+msgstr "не могат да Ñе заделÑÑ‚ %lu байта за речник — паметта е изчерпана"
+
+#: src/hash.c:280
+#, c-format
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "Ðатоварване=%lu/%lu=%.0f%%, "
+
+#: src/hash.c:282
+#, c-format
+msgid "Rehash=%u, "
+msgstr "Преизграждане на речник=%u, "
+
+#: src/hash.c:283
+#, c-format
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "СъвпадениÑ=%lu/%lu=%.0f%%"
+
+#: src/implicit.c:38
+#, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
+msgstr "ТърÑене на вградено правило за „%s“.\n"
+
+#: src/implicit.c:54
+#, c-format
+msgid "Looking for archive-member implicit rule for '%s'.\n"
+msgstr "ТърÑене на вградено правило по член на архив за „%s“.\n"
+
+#: src/implicit.c:311
+#, c-format
+msgid "Avoiding implicit rule recursion.\n"
+msgstr "ИзбÑгване на рекурÑÐ¸Ñ Ð²ÑŠÐ² вградените правила.\n"
+
+#: src/implicit.c:484
+#, c-format
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "Твърде дълга оÑнова: „%s%.*s“.\n"
+
+#: src/implicit.c:490
+#, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
+msgstr "Опит за шаблонно правило Ñ Ð¾Ñнова „%.*s“.\n"
+
+#: src/implicit.c:717
+#, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
+msgstr "ОтхвърлÑне на невъзможно изиÑкване „%s“.\n"
+
+#: src/implicit.c:718
+#, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
+msgstr "ОтхвърлÑне на невъзможно вградено изиÑкване „%s“.\n"
+
+#: src/implicit.c:732
+#, c-format
+msgid "Trying rule prerequisite '%s'.\n"
+msgstr "Опитване на изиÑкването „%s“.\n"
+
+#: src/implicit.c:733
+#, c-format
+msgid "Trying implicit prerequisite '%s'.\n"
+msgstr "Опитване на вграденото изиÑкване „%s“.\n"
+
+#: src/implicit.c:772
+#, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
+msgstr "ИзиÑканото „%s“ е открито чрез „VPATH“ като „%s“\n"
+
+#: src/implicit.c:786
+#, c-format
+msgid "Looking for a rule with intermediate file '%s'.\n"
+msgstr "ТърÑене на правило Ñ Ð¼ÐµÐ¶Ð´Ð¸Ð½ÐµÐ½ файл „%s“.\n"
+
+#: src/job.c:370
+msgid "Cannot create a temporary file\n"
+msgstr "Ðе може да Ñе Ñъздаде временен файл\n"
+
+#: src/job.c:548
+msgid " (core dumped)"
+msgstr " (паметта е разтоварена)"
+
+#: src/job.c:553
+msgid " (ignored)"
+msgstr " (преÑкачане)"
+
+#: src/job.c:557 src/job.c:1892
+msgid "<builtin>"
+msgstr "<вградено>"
+
+#: src/job.c:573
+#, c-format
+msgid "%s[%s: %s] Error %d%s"
+msgstr "%s[%s: %s] Грешка %d%s"
+
+#: src/job.c:662
+#, c-format
+msgid "*** Waiting for unfinished jobs...."
+msgstr "••• Изчакване на незавършени задачи…"
+
+#: src/job.c:704
+#, c-format
+msgid "Live child %p (%s) PID %s %s\n"
+msgstr "Ðезавършил дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ %p (%s) ИД_ПР %s %s\n"
+
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
+msgid " (remote)"
+msgstr " (отдалечено)"
+
+#: src/job.c:898
+#, c-format
+msgid "Reaping winning child %p PID %s %s\n"
+msgstr "Приключване на ÑÐ¿ÐµÑ‡ÐµÐ»ÐµÐ»Ð¸Ñ Ð´ÑŠÑ‰ÐµÑ€ÐµÐ½ Ð¿Ñ€Ð¾Ñ†ÐµÑ %p ИД_ПР %s %s\n"
+
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Приключване на Ð¸Ð·Ð³ÑƒÐ±Ð¸Ð»Ð¸Ñ Ð´ÑŠÑ‰ÐµÑ€ÐµÐ½ Ð¿Ñ€Ð¾Ñ†ÐµÑ %p ИД_ПР %s %s\n"
+
+#: src/job.c:950
+#, c-format
+msgid "Cleaning up temp batch file %s\n"
+msgstr "ИзчиÑтване на временен файл за пакетна обработка „%s“\n"
+
+#: src/job.c:956
+#, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "ÐеуÑпешно изчиÑтване на временен файл за пакетна обработка „%s“: %d\n"
+
+#: src/job.c:1071
+#, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
+msgstr "ИзчиÑтване на Ð´ÑŠÑ‰ÐµÑ€Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ %p PID %s%s от веригата.\n"
+
+#: src/job.c:1120
+#, c-format
+msgid "Released token for child %p (%s).\n"
+msgstr "ОÑвобождаване на жетона за дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ %p (%s).\n"
+
+#: src/job.c:1575 src/job.c:2487
+#, c-format
+msgid "process_easy() failed to launch process (e=%ld)\n"
+msgstr "„process_easy()“ не уÑÐ¿Ñ Ð´Ð° Ñтартира Ð¿Ñ€Ð¾Ñ†ÐµÑ (e=%ld)\n"
+
+#: src/job.c:1579 src/job.c:2491
+#, c-format
+msgid ""
+"\n"
+"Counted %d args in failed launch\n"
+msgstr ""
+"\n"
+"При неуÑпешно Ñтартиране Ñа изброени %d аргумента\n"
+
+#: src/job.c:1642
+#, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
+msgstr "ПоÑтавÑне на Ð´ÑŠÑ‰ÐµÑ€Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ %p (%s) PID %s%s във веригата.\n"
+
+#: src/job.c:1875
+#, c-format
+msgid "Obtained token for child %p (%s).\n"
+msgstr "Получен е жетон за дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ %p (%s).\n"
+
+#: src/job.c:1902
+#, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "%s: целта „%s“ не ÑъщеÑтвува"
+
+#: src/job.c:1905
+#, c-format
+msgid "%s: update target '%s' due to: %s"
+msgstr "%s: обновÑване на целта „%s“ заради: %s"
+
+#: src/job.c:2108
+#, c-format
+msgid "cannot enforce load limits on this operating system"
+msgstr ""
+"на тази операционна ÑиÑтема не могат да Ñе налагат Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð·Ð° "
+"натоварването"
+
+#: src/job.c:2110
+msgid "cannot enforce load limit: "
+msgstr "ограничението не може да бъде наложено: "
+
+#: src/job.c:2200
+#, c-format
+msgid "no more file handles: could not duplicate stdin\n"
+msgstr ""
+"нÑма реÑÑƒÑ€Ñ Ð·Ð° отварÑне на повече файлове: ÑтандартниÑÑ‚ вход не може да Ñе "
+"дублира\n"
+
+#: src/job.c:2212
+#, c-format
+msgid "no more file handles: could not duplicate stdout\n"
+msgstr ""
+"нÑма реÑÑƒÑ€Ñ Ð·Ð° отварÑне на повече файлове: ÑтандартниÑÑ‚ изход не може да Ñе "
+"дублира\n"
+
+#: src/job.c:2226
+#, c-format
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr ""
+"нÑма реÑÑƒÑ€Ñ Ð·Ð° отварÑне на повече файлове: Ñтандартната грешка не може да Ñе "
+"дублира\n"
+
+#: src/job.c:2241
+#, c-format
+msgid "Could not restore stdin\n"
+msgstr "СтандартниÑÑ‚ вход не може да Ñе възÑтанови\n"
+
+#: src/job.c:2249
+#, c-format
+msgid "Could not restore stdout\n"
+msgstr "СтандартниÑÑ‚ изход не може да Ñе възÑтанови\n"
+
+#: src/job.c:2257
+#, c-format
+msgid "Could not restore stderr\n"
+msgstr "Стандартната грешка не може да Ñе възÑтанови\n"
+
+#: src/job.c:2520
+#, c-format
+msgid "make reaped child pid %s, still waiting for pid %s\n"
+msgstr ""
+"„make“ приключи дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ %s, вÑе още Ñе чака за %s\n"
+
+#: src/job.c:2623
+#, c-format
+msgid "spawnvpe: environment space might be exhausted"
+msgstr "spawnvpe: проÑтранÑтвото на Ñредата може да е изчерпано"
+
+#: src/job.c:2862
+#, c-format
+msgid "$SHELL changed (was '%s', now '%s')\n"
+msgstr "Променливата „SHELL“ е променена (бе „%s“, а Ñега е „%s“)\n"
+
+#: src/job.c:3300 src/job.c:3485
+#, c-format
+msgid "Creating temporary batch file %s\n"
+msgstr "Ðе може да Ñе Ñъздаде временен файл за пакетна обработка в „%s“\n"
+
+#: src/job.c:3308
+#, c-format
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+"Съдържание на файл за пакетна обработка:\n"
+"\t@echo off\n"
+
+#: src/job.c:3497
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+"Съдържание на файла за пакетна обработка:%s\n"
+"\t%s\n"
+
+#: src/job.c:3605
+#, c-format
+msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
+msgstr ""
+"%s (ред %d) неправилен контекÑÑ‚ на обвивката (!unixy && !batch_mode_shell)\n"
+
+#: src/load.c:60
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr "ÐеуÑпешно отварÑне на глобалната таблица ÑÑŠÑ Ñимволи: %s"
+
+#: src/load.c:97
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr "ЗаредениÑÑ‚ обект „%s“ не е обÑвен като ÑъвмеÑтим Ñ ÐžÐŸÐ› (GPL)"
+
+#: src/load.c:104
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr "ÐеуÑпешно зареждане на Ñимвола „%s“ от „%s“: %s"
+
+#: src/load.c:149
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr "Празно име на Ñимвол за зареждане: „%s“"
+
+#: src/load.c:204
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr "Зареждане на Ñимвола „%s“ от „%s“\n"
+
+#: src/load.c:256
+#, c-format
+msgid "The 'load' operation is not supported on this platform."
+msgstr "ОперациÑта за зареждане („load“) не Ñе поддържа на тази платформа"
+
+#: src/main.c:335
+msgid "Options:\n"
+msgstr "Опции:\n"
+
+#: src/main.c:336
+msgid " -b, -m Ignored for compatibility.\n"
+msgstr " -b, -m преÑкача Ñе, за ÑъвмеÑтимоÑÑ‚\n"
+
+#: src/main.c:338
+msgid " -B, --always-make Unconditionally make all targets.\n"
+msgstr " -B, --always-make безуÑловно изграждане на вÑички цели\n"
+
+#: src/main.c:340
+msgid ""
+" -C DIRECTORY, --directory=DIRECTORY\n"
+" Change to DIRECTORY before doing anything.\n"
+msgstr ""
+" -C ДИРЕКТОРИЯ, --directory=ДИРЕКТОРИЯ\n"
+" преминаване към тази ДИРЕКТОРИЯ, преди да Ñе\n"
+" прави каквото и да е\n"
+
+#: src/main.c:343
+msgid " -d Print lots of debugging information.\n"
+msgstr " -d Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° изчиÑтване на грешки\n"
+
+#: src/main.c:345
+msgid ""
+" --debug[=FLAGS] Print various types of debugging information.\n"
+msgstr " --debug[=ФЛÐГОВЕ] вид Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° изчиÑтване на грешки\n"
+
+#: src/main.c:347
+msgid ""
+" -e, --environment-overrides\n"
+" Environment variables override makefiles.\n"
+msgstr ""
+" -e, --environment-overrides\n"
+" променливите от Ñредата да Ñа Ñ Ð¿Ñ€ÐµÐ²ÐµÑ Ð½Ð°Ð´\n"
+" указаното във файловете управлÑващи "
+"изграждането\n"
+" (makefile)\n"
+
+#: src/main.c:350
+msgid ""
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
+msgstr ""
+" --eval=ÐИЗ, --eval=ÐИЗ изчиÑлÑване на ÐИЗа като израз във файловете\n"
+" управлÑващи изграждането (makefile)\n"
+
+#: src/main.c:352
+msgid ""
+" -f FILE, --file=FILE, --makefile=FILE\n"
+" Read FILE as a makefile.\n"
+msgstr ""
+" -f ФÐЙЛ, --file=ФÐЙЛ, --makefile=ФÐЙЛ\n"
+" ползване на този ФÐЙЛ да управлÑва "
+"изграждането\n"
+" (makefile)\n"
+
+#: src/main.c:355
+msgid " -h, --help Print this message and exit.\n"
+msgstr " -h, --help извеждане на тази помощ и изход\n"
+
+#: src/main.c:357
+msgid " -i, --ignore-errors Ignore errors from recipes.\n"
+msgstr " -i, --ignore-errors незачитане на грешките от рецептите\n"
+
+#: src/main.c:359
+msgid ""
+" -I DIRECTORY, --include-dir=DIRECTORY\n"
+" Search DIRECTORY for included makefiles.\n"
+msgstr ""
+" -I ДИРЕКТОРИЯ, --include-dir=ДИРЕКТОРИЯ\n"
+" Ñ‚ÑŠÑ€Ñене на вмъкнатите файлове в ДИРЕКТОРИЯта\n"
+
+#: src/main.c:362
+msgid ""
+" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
+"arg.\n"
+msgstr ""
+" -j [БРОЙ], --jobs[=БРОЙ] ограничаване на задачите до макÑимум този "
+"БРОЙ,\n"
+" без аргумент — без ограничениÑ\n"
+
+#: src/main.c:364
+msgid ""
+" -k, --keep-going Keep going when some targets can't be made.\n"
+msgstr ""
+" -k, --keep-going продължаване дори и нÑкои от целите не могат\n"
+" да Ñе изградÑÑ‚\n"
+
+#: src/main.c:366
+msgid ""
+" -l [N], --load-average[=N], --max-load[=N]\n"
+" Don't start multiple jobs unless load is below "
+"N.\n"
+msgstr ""
+" -l [N], --load-average[=N], --max-load[=N]\n"
+" множеÑтво задачи Ñе Ñтартират, Ñамо ако\n"
+" натоварването е ≤N\n"
+
+#: src/main.c:369
+msgid ""
+" -L, --check-symlink-times Use the latest mtime between symlinks and "
+"target.\n"
+msgstr ""
+" -L, --check-symlink-times използване на минималното време на промÑна\n"
+" измежду Ñимволна връзка и целта ѝ\n"
+
+#: src/main.c:371
+msgid ""
+" -n, --just-print, --dry-run, --recon\n"
+" Don't actually run any recipe; just print "
+"them.\n"
+msgstr ""
+" -n, --just-print, --dry-run, --recon\n"
+" извеждане на целите без изпълнение\n"
+
+#: src/main.c:374
+msgid ""
+" -o FILE, --old-file=FILE, --assume-old=FILE\n"
+" Consider FILE to be very old and don't remake "
+"it.\n"
+msgstr ""
+" -o ФÐЙЛ, --old-file=ФÐЙЛ, --assume-old=ФÐЙЛ\n"
+" без преизграждане на ФÐЙЛа, който да Ñе\n"
+" Ñчита за много Ñтар\n"
+
+#: src/main.c:377
+msgid ""
+" -O[TYPE], --output-sync[=TYPE]\n"
+" Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+" -O[ВИД], --output-sync[=ВИД]\n"
+" ВИД ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° изхода от паралелните "
+"задачи\n"
+
+#: src/main.c:380
+msgid " -p, --print-data-base Print make's internal database.\n"
+msgstr ""
+" -p, --print-data-base извеждане на вътрешната база от данни на "
+"„make“\n"
+
+#: src/main.c:382
+msgid ""
+" -q, --question Run no recipe; exit status says if up to "
+"date.\n"
+msgstr ""
+" -q, --question без изпълнение на цели, Ñамо изходниÑÑ‚ код\n"
+" да указва дали те Ñа актуални\n"
+
+#: src/main.c:384
+msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
+msgstr " -r, --no-builtin-rules изключване на вградените правила\n"
+
+#: src/main.c:386
+msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
+msgstr ""
+" -R, --no-builtin-variables изключване на вграденото задаване на "
+"променливи\n"
+
+#: src/main.c:388
+msgid " -s, --silent, --quiet Don't echo recipes.\n"
+msgstr " -s, --silent, --quiet без извеждане на рецептите\n"
+
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" --no-silent извеждане на рецептите (изключване на „--"
+"silent“)\n"
+
+#: src/main.c:392
+msgid ""
+" -S, --no-keep-going, --stop\n"
+" Turns off -k.\n"
+msgstr ""
+" -S, --no-keep-going, --stop\n"
+" Изключване на „-k“\n"
+
+#: src/main.c:395
+msgid " -t, --touch Touch targets instead of remaking them.\n"
+msgstr ""
+" -t, --touch обновÑване на информациÑта чрез „touch“ "
+"вмеÑто\n"
+" ново изграждане\n"
+
+#: src/main.c:397
+msgid " --trace Print tracing information.\n"
+msgstr ""
+" --trace извеждане на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° изчиÑтване на "
+"грешки\n"
+
+#: src/main.c:399
+msgid ""
+" -v, --version Print the version number of make and exit.\n"
+msgstr " -v, --version извеждане на верÑиÑта и изход\n"
+
+#: src/main.c:401
+msgid " -w, --print-directory Print the current directory.\n"
+msgstr " -w, --print-directory извеждане на текущата директориÑ\n"
+
+#: src/main.c:403
+msgid ""
+" --no-print-directory Turn off -w, even if it was turned on "
+"implicitly.\n"
+msgstr ""
+" --no-print-directory изключване на „-w“, дори ако вградената\n"
+" функционалноÑÑ‚ Ñ Ðµ включила\n"
+
+#: src/main.c:405
+msgid ""
+" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
+" Consider FILE to be infinitely new.\n"
+msgstr ""
+" -W ФÐЙЛ, --what-if=ФÐЙЛ, --new-file=ФÐЙЛ, --assume-new=ФÐЙЛ\n"
+" Ñчитане на ФÐЙЛа за абÑолютно нов\n"
+
+#: src/main.c:408
+msgid ""
+" --warn-undefined-variables Warn when an undefined variable is "
+"referenced.\n"
+msgstr ""
+" --warn-undefined-variables предупреждаване при използването\n"
+" на незададена променлива\n"
+
+#: src/main.c:671
+#, c-format
+msgid "empty string invalid as file name"
+msgstr "задаването на празен низ за име на файл е грешка"
+
+#: src/main.c:754
+#, c-format
+msgid "unknown debug level specification '%s'"
+msgstr "неправилно ниво за изчиÑтване на грешки „%s“"
+
+#: src/main.c:794
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr "непознат вид ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ â€ž%s“ към опциÑта „--output-sync“"
+
+#: src/main.c:849
+#, c-format
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
+msgstr "%s: прихванато прекъÑване/изключение (код = 0x%lx, Ð°Ð´Ñ€ÐµÑ = 0x%p)\n"
+
+#: src/main.c:856
+#, c-format
+msgid ""
+"\n"
+"Unhandled exception filter called from program %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = 0x%p\n"
+msgstr ""
+"\n"
+"Филтърът за необработени Ð¸Ð·ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðµ извикан от програмата „%s“\n"
+"Код на изключение = %lx\n"
+"Флагове на изключение = %lx\n"
+"ÐÐ´Ñ€ÐµÑ Ð½Ð° изключение = 0x%p\n"
+
+#: src/main.c:864
+#, c-format
+msgid "Access violation: write operation at address 0x%p\n"
+msgstr "Ðарушение на доÑтъпа: Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð·Ð° Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° Ð°Ð´Ñ€ÐµÑ 0x%p\n"
+
+#: src/main.c:865
+#, c-format
+msgid "Access violation: read operation at address 0x%p\n"
+msgstr "Ðарушение на доÑтъпа: Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð·Ð° четене на Ð°Ð´Ñ€ÐµÑ 0x%p\n"
+
+#: src/main.c:941 src/main.c:956
+#, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
+msgstr "„find_and_set_shell()“ задава Ñтандартна обвивка = %s\n"
+
+#: src/main.c:1009
+#, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
+msgstr ""
+"„find_and_set_shell()“ — Ñ‚ÑŠÑ€Ñенето в Ð¿ÑŠÑ‚Ñ Ð·Ð°Ð´Ð°Ð²Ð° Ñтандартна обвивка = %s\n"
+
+#: src/main.c:1609
+#, c-format
+msgid ""
+"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
+msgstr ""
+"ПРЕДУПРЕЖДЕÐИЕ: Ñървърът за задачи не е наличен, ползва Ñе „-j1“. Добавете "
+"„+“ към родителÑкото правило на „make“."
+
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
+msgstr ""
+"ПРЕДУПРЕЖДЕÐИЕ: в подизграждане е зададено „-j%d“. Режимът на Ñървър за "
+"задачи Ñе изключва."
+
+#: src/main.c:1781
+#, c-format
+msgid "Makefile from standard input specified twice."
+msgstr ""
+"Файлът управлÑващ изграждането е зададен двукратно на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´."
+
+#: src/main.c:1819 src/vmsjobs.c:1248
+msgid "fopen (temporary file)"
+msgstr "отварÑне („fopen“ на временен файл)"
+
+#: src/main.c:1825
+msgid "fwrite (temporary file)"
+msgstr "Ð·Ð°Ð¿Ð¸Ñ („fwrite“ на временен файл)"
+
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr ""
+"ПРЕДУПРЕЖДЕÐИЕ: в подизграждане е зададено „-j%d“. Режимът на Ñървър за "
+"задачи Ñе изключва."
+
+#: src/main.c:2068
+#, c-format
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Тази ÑиÑтема не поддържа паралелни задачи („-j“)."
+
+#: src/main.c:2069
+#, c-format
+msgid "Resetting to single job (-j1) mode."
+msgstr "Преминаване към еднозадачен режим (-j1)."
+
+#: src/main.c:2109
+#, c-format
+msgid "Symbolic links not supported: disabling -L."
+msgstr "Ðе Ñе поддържат Ñимволни връзки: „-L“ Ñе изключва."
+
+#: src/main.c:2190
+#, c-format
+msgid "Updating makefiles....\n"
+msgstr "ОбновÑване на управлÑващите изграждането файлове (makefile)…\n"
+
+#: src/main.c:2226
+#, c-format
+msgid "Makefile '%s' might loop; not remaking it.\n"
+msgstr ""
+"УправлÑващиÑÑ‚ изграждането файл „%s“ може да зацикли, затова не Ñе "
+"преÑъздава.\n"
+
+#: src/main.c:2303
+#, c-format
+msgid "Failed to remake makefile '%s'."
+msgstr "ÐеуÑпешно преÑъздаване на управлÑÐ²Ð°Ñ‰Ð¸Ñ Ð¸Ð·Ð³Ñ€Ð°Ð¶Ð´Ð°Ð½ÐµÑ‚Ð¾ файл „%s“"
+
+#: src/main.c:2323
+#, c-format
+msgid "Included makefile '%s' was not found."
+msgstr "ВмъкнатиÑÑ‚ управлÑващ изграждането файл „%s“ липÑва"
+
+#: src/main.c:2328
+#, c-format
+msgid "Makefile '%s' was not found"
+msgstr "УправлÑващиÑÑ‚ изграждането файл „%s“ липÑва"
+
+#: src/main.c:2394
+#, c-format
+msgid "Couldn't change back to original directory."
+msgstr "Ðевъзможно връщане към първоначалната директориÑ"
+
+#: src/main.c:2402
+#, c-format
+msgid "Re-executing[%u]:"
+msgstr "Изпълнение наново[%u]:"
+
+#: src/main.c:2522
+msgid "unlink (temporary file): "
+msgstr "изтриване („unlink“ на временен файл): "
+
+#: src/main.c:2555
+#, c-format
+msgid ".DEFAULT_GOAL contains more than one target"
+msgstr "Стандартната цел „.DEFAULT_GOAL“ Ñъдържа повече от една цел"
+
+#: src/main.c:2579
+#, c-format
+msgid "No targets"
+msgstr "ÐÑма цели"
+
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Ðе е зададена цел, а и липÑва управлÑващ изграждането файл"
+
+#: src/main.c:2586
+#, c-format
+msgid "Updating goal targets....\n"
+msgstr "ОбновÑване на целите…\n"
+
+#: src/main.c:2610
+#, c-format
+msgid "warning: Clock skew detected. Your build may be incomplete."
+msgstr ""
+"ПРЕДУПРЕЖДЕÐИЕ: проблем ÑÑŠÑ ÑиÑÑ‚ÐµÐ¼Ð½Ð¸Ñ Ñ‡Ð°Ñовник — изграждането може да е "
+"непълно."
+
+#: src/main.c:2804
+#, c-format
+msgid "Usage: %s [options] [target] ...\n"
+msgstr "Употреба: %s [ОПЦИЯ]… [ФÐЙЛ]…\n"
+
+#: src/main.c:2810
+#, c-format
+msgid ""
+"\n"
+"This program built for %s\n"
+msgstr ""
+"\n"
+"Тази програма е изградена за %s\n"
+
+#: src/main.c:2812
+#, c-format
+msgid ""
+"\n"
+"This program built for %s (%s)\n"
+msgstr ""
+"\n"
+"Тази програма е изградена за %s (%s)\n"
+
+#: src/main.c:2815
+#, c-format
+msgid "Report bugs to <bug-make@gnu.org>\n"
+msgstr ""
+"Съобщавайте за програмни грешки на <bug-make@gnu.org>.\n"
+"За грешки в българÑÐºÐ¸Ñ Ð¿Ñ€ÐµÐ²Ð¾Ð´ на <dict@fsa-bg.org>.\n"
+
+#: src/main.c:2901
+#, c-format
+msgid "the '%s%s' option requires a non-empty string argument"
+msgstr "опциÑта „%s%s“ изиÑква непразен аргумент-низ"
+
+#: src/main.c:2965
+#, c-format
+msgid "the '-%c' option requires a positive integer argument"
+msgstr "опциÑта „%c“ изиÑква положителен, целочиÑлен аргумент"
+
+#: src/main.c:3363
+#, c-format
+msgid "%sBuilt for %s\n"
+msgstr "%sИзградена за %s\n"
+
+#: src/main.c:3365
+#, c-format
+msgid "%sBuilt for %s (%s)\n"
+msgstr "%sИзградена за %s (%s)\n"
+
+#: src/main.c:3376
+#, c-format
+msgid ""
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"%sЛиценз — Общ публичен лиценз на GNU (GNU GPL), както е публикуван от "
+"ФондациÑта\n"
+"за Ñвободен Ñофтуер — верÑÐ¸Ñ 3 на лиценза или (по ваше решение) по-къÑна "
+"верÑиÑ.\n"
+"<http://gnu.org/licenses/gpl.html>\n"
+"%sТази програма е Ñвободен Ñофтуер. Можете да Ñ Ñ€Ð°Ð·Ð¿Ñ€Ð¾ÑтранÑвате и/или "
+"променÑте.\n"
+"%sÐ¢Ñ Ñе разпроÑтранÑва БЕЗ ÐИКÐКВИ ГÐРÐÐЦИИ доколкото е позволено от "
+"закона.\n"
+
+#: src/main.c:3397
+#, c-format
+msgid ""
+"\n"
+"# Make data base, printed on %s"
+msgstr ""
+"\n"
+"# Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° „make“, отпечатана на %s"
+
+#: src/main.c:3407
+#, c-format
+msgid ""
+"\n"
+"# Finished Make data base on %s\n"
+msgstr ""
+"\n"
+"# Край на информациÑта за „make“, отпечатана на %s\n"
+
+#: src/misc.c:643
+#, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s: потр. %lu (реално %lu), група %lu (реално %lu)\n"
+
+#: src/misc.c:664
+msgid "Initialized access"
+msgstr "Инициализиран доÑтъп"
+
+#: src/misc.c:743
+msgid "User access"
+msgstr "ПотребителÑки доÑтъп"
+
+#: src/misc.c:791
+msgid "Make access"
+msgstr "Задаване на доÑтъп"
+
+#: src/misc.c:825
+msgid "Child access"
+msgstr "Дъщерен процеÑ"
+
+#: src/output.c:97
+#, c-format
+msgid "%s: Entering an unknown directory\n"
+msgstr "%s: влизане в непозната директориÑ\n"
+
+#: src/output.c:99
+#, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "%s: излизане от непозната директориÑ\n"
+
+#: src/output.c:102
+#, c-format
+msgid "%s: Entering directory '%s'\n"
+msgstr "%s: влизане в Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž%s“\n"
+
+#: src/output.c:104
+#, c-format
+msgid "%s: Leaving directory '%s'\n"
+msgstr "%s: излизане от Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž%s“\n"
+
+#: src/output.c:108
+#, c-format
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]: влизане в непозната директориÑ\n"
+
+#: src/output.c:110
+#, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]: излизане от непозната директориÑ\n"
+
+#: src/output.c:113
+#, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr "%s[%u]: влизане в Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž%s“\n"
+
+#: src/output.c:115
+#, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
+msgstr "%s[%u]: излизане от Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ â€ž%s“\n"
+
+#: src/output.c:442 src/output.c:444
+#, c-format
+msgid "write error: stdout"
+msgstr "грешка при запиÑ: Ñтандартна грешка"
+
+#: src/output.c:624
+msgid ". Stop.\n"
+msgstr ". Край.\n"
+
+#: src/output.c:658
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: src/output.c:667
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+"опциÑта „-O[ВИД]“/„--output-sync[=ВИД]“ не е зададена за това изграждане"
+
+#: src/posixos.c:90
+msgid "creating jobs pipe"
+msgstr "Ñъздаване на програмен канал ÑÑŠÑ Ð·Ð°Ð´Ð°Ñ‡Ð¸"
+
+#: src/posixos.c:98 src/posixos.c:251
+msgid "duping jobs pipe"
+msgstr "дублиране на програмен канал ÑÑŠÑ Ð·Ð°Ð´Ð°Ñ‡Ð¸"
+
+#: src/posixos.c:104
+msgid "init jobserver pipe"
+msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° канал за Ñървър за задачи"
+
+#: src/posixos.c:119
+#, c-format
+msgid "internal error: invalid --jobserver-auth string '%s'"
+msgstr "ВЪТРЕШÐРГРЕШКÐ: неправилен низ към „--jobserver-auth“: „%s“"
+
+#: src/posixos.c:122
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr "Клиент за Ñървър за задачи (fds %d,%d)\n"
+
+#: src/posixos.c:138
+msgid "jobserver pipeline"
+msgstr "програмен канал на Ñървър за задачи"
+
+#: src/posixos.c:186
+msgid "write jobserver"
+msgstr "Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° Ñървър за задачи"
+
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr "Ñпиране на Ñървъра за задачи"
+
+#: src/posixos.c:303
+msgid "pselect jobs pipe"
+msgstr "грешка в „pselect“ в канала за задачи"
+
+#: src/posixos.c:319 src/posixos.c:433
+msgid "read jobs pipe"
+msgstr "грешка при четене в канала за задачи"
+
+#: src/read.c:181
+#, c-format
+msgid "Reading makefiles...\n"
+msgstr "Изчитане на файловете управлÑващи изграждането…\n"
+
+#: src/read.c:336
+#, c-format
+msgid "Reading makefile '%s'"
+msgstr "Изчитане на файла управлÑващ изграждането „%s“"
+
+#: src/read.c:338
+#, c-format
+msgid " (no default goal)"
+msgstr " (нÑма Ñтандартна цел)"
+
+#: src/read.c:340
+#, c-format
+msgid " (search path)"
+msgstr " (Ñ‚ÑŠÑ€Ñене в път)"
+
+#: src/read.c:342
+#, c-format
+msgid " (don't care)"
+msgstr " (без значение)"
+
+#: src/read.c:344
+#, c-format
+msgid " (no ~ expansion)"
+msgstr " (без замеÑтване на „~“)"
+
+#: src/read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr ""
+"ПреÑкачанe на знака за подредба на байтовете за UTF-8 (BOM) във файла „%s“\n"
+
+#: src/read.c:658
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr ""
+"ПреÑкачанe на знака за подредба на байтовете за UTF-8 (BOM) в буфера на "
+"файла управлÑващ изграждането\n"
+
+#: src/read.c:787
+#, c-format
+msgid "invalid syntax in conditional"
+msgstr "неправилен ÑинтакÑÐ¸Ñ Ð½Ð° уÑловен израз"
+
+#: src/read.c:960
+#, c-format
+msgid "%s: failed to load"
+msgstr "%s: не може да Ñе зареди"
+
+#: src/read.c:986
+#, c-format
+msgid "recipe commences before first target"
+msgstr "рецепта почва преди първата цел"
+
+#: src/read.c:1035
+#, c-format
+msgid "missing rule before recipe"
+msgstr "липÑващо правило преди рецепта"
+
+#: src/read.c:1136
+#, c-format
+msgid "missing separator (did you mean TAB instead of 8 spaces?)"
+msgstr ""
+"липÑва разделител (дали не Ñ‚Ñ€Ñбва да замените 8 интервала Ñ Ñ‚Ð°Ð±ÑƒÐ»Ð°Ñ‚Ð¾Ñ€?)"
+
+#: src/read.c:1138
+#, c-format
+msgid "missing separator"
+msgstr "липÑва разделител"
+
+#: src/read.c:1283
+#, c-format
+msgid "missing target pattern"
+msgstr "липÑва целеви шаблон"
+
+#: src/read.c:1285
+#, c-format
+msgid "multiple target patterns"
+msgstr "множеÑтво целеви шаблони"
+
+#: src/read.c:1289
+#, c-format
+msgid "target pattern contains no '%%'"
+msgstr "целевиÑÑ‚ шаблон не Ñъдържа „%%“"
+
+#: src/read.c:1404
+#, c-format
+msgid "missing 'endif'"
+msgstr "липÑващ „endif“"
+
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
+msgid "empty variable name"
+msgstr "празно име на променлива"
+
+#: src/read.c:1478
+#, c-format
+msgid "extraneous text after 'define' directive"
+msgstr "излишен текÑÑ‚ Ñлед директива „define“"
+
+#: src/read.c:1503
+#, c-format
+msgid "missing 'endef', unterminated 'define'"
+msgstr "„endef“ липÑва — нÑÐºÐ¾Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° „define“ не е завършена"
+
+#: src/read.c:1531
+#, c-format
+msgid "extraneous text after 'endef' directive"
+msgstr "излишен текÑÑ‚ Ñлед директива „endef“"
+
+#: src/read.c:1603
+#, c-format
+msgid "extraneous text after '%s' directive"
+msgstr "излишен текÑÑ‚ Ñлед директива „%s“"
+
+#: src/read.c:1604
+#, c-format
+msgid "extraneous '%s'"
+msgstr "излишен „%s“"
+
+#: src/read.c:1632
+#, c-format
+msgid "only one 'else' per conditional"
+msgstr "може да има макÑимално една директива „else“ за уÑловен израз"
+
+#: src/read.c:1908
+#, c-format
+msgid "Malformed target-specific variable definition"
+msgstr "Ðеправилна Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ Ð½Ð° променлива, завиÑеща от целта"
+
+#: src/read.c:1968
+#, c-format
+msgid "prerequisites cannot be defined in recipes"
+msgstr "изиÑкваниÑта не могат да Ñе дефинират в рецептите"
+
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr "целите в група Ñ‚Ñ€Ñбва да предоÑтавÑÑ‚ рецепта"
+
+#: src/read.c:2029
+#, c-format
+msgid "mixed implicit and static pattern rules"
+msgstr "вградените и правилата ÑÑŠÑ Ñтатични шаблони Ñа ÑмеÑени"
+
+#: src/read.c:2052
+#, c-format
+msgid "mixed implicit and normal rules"
+msgstr "вградените и изричните правила Ñа ÑмеÑени"
+
+#: src/read.c:2107
+#, c-format
+msgid "target '%s' doesn't match the target pattern"
+msgstr "целта „%s“ не Ñъвпада Ñ Ñ†ÐµÐ»Ñ‚Ð° на шаблона"
+
+#: src/read.c:2122 src/read.c:2168
+#, c-format
+msgid "target file '%s' has both : and :: entries"
+msgstr "целевиÑÑ‚ файл „%s“ Ñъдържа запиÑи и Ñ â€ž:“, и Ñ â€ž::“"
+
+#: src/read.c:2128
+#, c-format
+msgid "target '%s' given more than once in the same rule"
+msgstr "целта „%s“ е дадена повече от веднъж в едно правило"
+
+#: src/read.c:2138
+#, c-format
+msgid "warning: overriding recipe for target '%s'"
+msgstr "ПРЕДУПРЕЖДЕÐИЕ: замеÑтване на рецептата за целта „%s“"
+
+#: src/read.c:2141
+#, c-format
+msgid "warning: ignoring old recipe for target '%s'"
+msgstr "ПРЕДУПРЕЖДЕÐИЕ: Ñтарата рецепта за „%s“ Ñе преÑкача"
+
+#: src/read.c:2254
+#, c-format
+msgid "*** mixed implicit and normal rules: deprecated syntax"
+msgstr "••• ÑмеÑване на вградени и обикновени правила: оÑтарÑл ÑинтакÑиÑ"
+
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "ПРЕДУПРЕЖДЕÐИЕ: замеÑтване на групата на целта „%s“"
+
+#: src/read.c:2636
+#, c-format
+msgid "warning: NUL character seen; rest of line ignored"
+msgstr "ПРЕДУПРЕЖДЕÐИЕ: нулев знак NUL, оÑтаналата чаÑÑ‚ на реда Ñе преÑкача"
+
+#: src/remake.c:226
+#, c-format
+msgid "Nothing to be done for '%s'."
+msgstr "ÐÑма нищо за правене за „%s“."
+
+#: src/remake.c:227
+#, c-format
+msgid "'%s' is up to date."
+msgstr "„%s“ нÑма нужда да Ñе обновÑва."
+
+#: src/remake.c:323
+#, c-format
+msgid "Pruning file '%s'.\n"
+msgstr "ОкаÑÑ‚Ñ€Ñне на файл „%s“\n"
+
+#: src/remake.c:389
+#, c-format
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
+msgstr ""
+"%sÐÑма правило за изграждане на целта „%s“, коÑто е необходима на „%s“%s"
+
+#: src/remake.c:399
+#, c-format
+msgid "%sNo rule to make target '%s'%s"
+msgstr "%sÐÑма правило за изграждане на целта „%s“%s"
+
+#: src/remake.c:425
+#, c-format
+msgid "Considering target file '%s'.\n"
+msgstr "Разглеждане на Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“\n"
+
+#: src/remake.c:432
+#, c-format
+msgid "Recently tried and failed to update file '%s'.\n"
+msgstr "Скорошен неуÑпешен опит за обновÑване на файла „%s“\n"
+
+#: src/remake.c:444
+#, c-format
+msgid "File '%s' was considered already.\n"
+msgstr "Файлът „%s“ вече е разгледан.\n"
+
+#: src/remake.c:454
+#, c-format
+msgid "Still updating file '%s'.\n"
+msgstr "Ð’Ñе още Ñе обновÑва файл „%s“.\n"
+
+#: src/remake.c:457
+#, c-format
+msgid "Finished updating file '%s'.\n"
+msgstr "Завършване на обновÑването на файл „%s“.\n"
+
+#: src/remake.c:486
+#, c-format
+msgid "File '%s' does not exist.\n"
+msgstr "Файлът „%s“ не ÑъщеÑтвува.\n"
+
+#: src/remake.c:494
+#, c-format
+msgid ""
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
+msgstr ""
+" ••• ПРЕДУПРЕЖДЕÐИЕ: файлът „.LOW_RESOLUTION_TIME“, указващ ниÑка "
+"разделителна ÑпоÑобноÑÑ‚ на времето „%s“, е Ñ Ð²Ñ€ÐµÐ¼ÐµÐ²Ð¾ клеймо Ñ Ð²Ð¸Ñока "
+"разделителна ÑпоÑобноÑÑ‚"
+
+#: src/remake.c:507 src/remake.c:1039
+#, c-format
+msgid "Found an implicit rule for '%s'.\n"
+msgstr "Открито е вградено правило за „%s“.\n"
+
+#: src/remake.c:509 src/remake.c:1041
+#, c-format
+msgid "No implicit rule found for '%s'.\n"
+msgstr "Ðе е открито вградено правило за „%s“.\n"
+
+#: src/remake.c:515
+#, c-format
+msgid "Using default recipe for '%s'.\n"
+msgstr "Използване на Ñтандартната рецепта за „%s“.\n"
+
+#: src/remake.c:549 src/remake.c:1088
+#, c-format
+msgid "Circular %s <- %s dependency dropped."
+msgstr "Цикличната завиÑимоÑÑ‚ „%s“ ↠„%s“ Ñе преÑкача."
+
+#: src/remake.c:674
+#, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
+msgstr "ИзиÑкваниÑта за Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“ Ñа завършени.\n"
+
+#: src/remake.c:680
+#, c-format
+msgid "The prerequisites of '%s' are being made.\n"
+msgstr "ИзиÑкваниÑта на „%s“ Ñе изграждат.\n"
+
+#: src/remake.c:694
+#, c-format
+msgid "Giving up on target file '%s'.\n"
+msgstr "Отказ за изграждане на Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“.\n"
+
+#: src/remake.c:699
+#, c-format
+msgid "Target '%s' not remade because of errors."
+msgstr "Целта „%s“ не е преизградена поради грешки."
+
+#: src/remake.c:751
+#, c-format
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
+msgstr "ИзиÑкването „%s“ е Ñамо за поÑледователноÑÑ‚ за целта „%s“.\n"
+
+#: src/remake.c:756
+#, c-format
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
+msgstr "ИзиÑкването „%s“ на целта „%s“ не ÑъщеÑтвува.\n"
+
+#: src/remake.c:761
+#, c-format
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
+msgstr "ИзиÑкването „%s“ е по-ново от целта „%s“.\n"
+
+#: src/remake.c:764
+#, c-format
+msgid "Prerequisite '%s' is older than target '%s'.\n"
+msgstr "ИзиÑкването „%s“ е по-Ñтаро от целта „%s“.\n"
+
+#: src/remake.c:782
+#, c-format
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
+msgstr "Целта е „%s“ е „::“ и нÑма изиÑкваниÑ.\n"
+
+#: src/remake.c:789
+#, c-format
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
+msgstr "ÐÑма рецепта за „%s“ и никое от изиÑкваниÑта не е променено.\n"
+
+#: src/remake.c:794
+#, c-format
+msgid "Making '%s' due to always-make flag.\n"
+msgstr "„%s“ Ñе изгражда наново поради флаг за изрично преизграждане.\n"
+
+#: src/remake.c:802
+#, c-format
+msgid "No need to remake target '%s'"
+msgstr "ÐÑма нужда за преизграждане на целта „%s“"
+
+#: src/remake.c:804
+#, c-format
+msgid "; using VPATH name '%s'"
+msgstr "; използва Ñе име от „VPATH“ „%s“"
+
+#: src/remake.c:824
+#, c-format
+msgid "Must remake target '%s'.\n"
+msgstr "Целта „%s“ Ñ‚Ñ€Ñбва да Ñе преизгради.\n"
+
+#: src/remake.c:830
+#, c-format
+msgid " Ignoring VPATH name '%s'.\n"
+msgstr " ПреÑкачане на името от „VPATH“ „%s“.\n"
+
+#: src/remake.c:839
+#, c-format
+msgid "Recipe of '%s' is being run.\n"
+msgstr "Рецептата за „%s“ в момента Ñе изпълнÑва.\n"
+
+#: src/remake.c:846
+#, c-format
+msgid "Failed to remake target file '%s'.\n"
+msgstr "ÐеуÑпешно преизграждане на Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“\n"
+
+#: src/remake.c:849
+#, c-format
+msgid "Successfully remade target file '%s'.\n"
+msgstr "УÑпешно преизграждане на Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ñ„Ð°Ð¹Ð» „%s“\n"
+
+#: src/remake.c:852
+#, c-format
+msgid "Target file '%s' needs to be remade under -q.\n"
+msgstr "ЦелевиÑÑ‚ файл „%s“ Ñ‚Ñ€Ñбва да Ñе преизгради при „-q“.\n"
+
+#: src/remake.c:1047
+#, c-format
+msgid "Using default commands for '%s'.\n"
+msgstr "Използват Ñе Ñтандартни команди за „%s“.\n"
+
+#: src/remake.c:1422
+#, c-format
+msgid "Warning: File '%s' has modification time %s s in the future"
+msgstr "ПРЕДУПРЕЖДЕÐИЕ: файлът „%s“ е Ñ Ð²Ñ€ÐµÐ¼Ðµ на промÑна %s Ñек. в бъдещето"
+
+#: src/remake.c:1662
+#, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
+msgstr "Елементът „%s“ за „.LIBPATTERNS“ не е шаблон"
+
+#: src/remote-cstms.c:122
+#, c-format
+msgid "Customs won't export: %s\n"
+msgstr "Модулът нÑма да Ñе изнеÑе: %s\n"
+
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
+msgid ""
+"\n"
+"# Implicit Rules"
+msgstr ""
+"\n"
+"# Вградени правила"
+
+#: src/rule.c:545
+msgid ""
+"\n"
+"# No implicit rules."
+msgstr ""
+"\n"
+"# ÐÑма вградени правила."
+
+#: src/rule.c:548
+#, c-format
+msgid ""
+"\n"
+"# %u implicit rules, %u (%.1f%%) terminal."
+msgstr ""
+"\n"
+"# %u вградени правила, %u (%.1f%%) крайни."
+
+#: src/rule.c:557
+#, c-format
+msgid "BUG: num_pattern_rules is wrong! %u != %u"
+msgstr ""
+"ПРОГРÐÐœÐРГРЕШКÐ: „num_pattern_rules“ върна неправилен резултат! %u != %u"
+
+#: src/signame.c:84
+msgid "unknown signal"
+msgstr "непознат Ñигнал"
+
+#: src/signame.c:92
+msgid "Hangup"
+msgstr "ПрекъÑване на връзката"
+
+#: src/signame.c:95
+msgid "Interrupt"
+msgstr "ПрекъÑване"
+
+#: src/signame.c:98
+msgid "Quit"
+msgstr "Спиране"
+
+#: src/signame.c:101
+msgid "Illegal Instruction"
+msgstr "Ðеправилна инÑтрукциÑ"
+
+#: src/signame.c:104
+msgid "Trace/breakpoint trap"
+msgstr "ПрекъÑване за траÑиране"
+
+#: src/signame.c:109
+msgid "Aborted"
+msgstr "ПреуÑтановÑване"
+
+#: src/signame.c:112
+msgid "IOT trap"
+msgstr "ПреуÑтановÑване (IOT)"
+
+#: src/signame.c:115
+msgid "EMT trap"
+msgstr "Емулирана инÑтрукциÑ"
+
+#: src/signame.c:118
+msgid "Floating point exception"
+msgstr "Изключение от плаваща запетаÑ"
+
+#: src/signame.c:121
+msgid "Killed"
+msgstr "Убит"
+
+#: src/signame.c:124
+msgid "Bus error"
+msgstr "Грешка в шината"
+
+#: src/signame.c:127
+msgid "Segmentation fault"
+msgstr "Грешка в разделÑнето"
+
+#: src/signame.c:130
+msgid "Bad system call"
+msgstr "Грешно ÑиÑтемно извикване"
+
+#: src/signame.c:133
+msgid "Broken pipe"
+msgstr "ПрекъÑнат програмен канал"
+
+#: src/signame.c:136
+msgid "Alarm clock"
+msgstr "Ðларма"
+
+#: src/signame.c:139
+msgid "Terminated"
+msgstr "Прекратен"
+
+#: src/signame.c:142
+msgid "User defined signal 1"
+msgstr "ПотребителÑки Ñигнал 1"
+
+#: src/signame.c:145
+msgid "User defined signal 2"
+msgstr "ПотребителÑки Ñигнал 2"
+
+#: src/signame.c:150 src/signame.c:153
+msgid "Child exited"
+msgstr "ПреуÑтановен дъщерен процеÑ"
+
+#: src/signame.c:156
+msgid "Power failure"
+msgstr "Проблем в захранването"
+
+#: src/signame.c:159
+msgid "Stopped"
+msgstr "СпрÑн"
+
+#: src/signame.c:162
+msgid "Stopped (tty input)"
+msgstr "Спиране (вход от tty)"
+
+#: src/signame.c:165
+msgid "Stopped (tty output)"
+msgstr "Спиране (изход към tty)"
+
+#: src/signame.c:168
+msgid "Stopped (signal)"
+msgstr "СпрÑн (Ñигнал)"
+
+#: src/signame.c:171
+msgid "CPU time limit exceeded"
+msgstr "Ðадвишаване на процеÑорното време"
+
+#: src/signame.c:174
+msgid "File size limit exceeded"
+msgstr "Ðадвишаване на размера на файл"
+
+#: src/signame.c:177
+msgid "Virtual timer expired"
+msgstr "Изтекъл виртуален таймер"
+
+#: src/signame.c:180
+msgid "Profiling timer expired"
+msgstr "Изтекъл профилиращ таймер"
+
+#: src/signame.c:186
+msgid "Window changed"
+msgstr "Преоразмерен прозорец"
+
+#: src/signame.c:189
+msgid "Continued"
+msgstr "Продължен"
+
+#: src/signame.c:192
+msgid "Urgent I/O condition"
+msgstr "Спешно вх./изх. ÑÑŠÑтоÑние"
+
+#: src/signame.c:199 src/signame.c:208
+msgid "I/O possible"
+msgstr "Възможен вх./изх."
+
+#: src/signame.c:202
+msgid "SIGWIND"
+msgstr "Преоразмерен прозорец"
+
+#: src/signame.c:205
+msgid "SIGPHONE"
+msgstr "ПромÑна на ÑÑŠÑтоÑнието на линиÑта"
+
+#: src/signame.c:211
+msgid "Resource lost"
+msgstr "Загубен реÑурÑ"
+
+#: src/signame.c:214
+msgid "Danger signal"
+msgstr "Сигнал за опаÑноÑÑ‚"
+
+#: src/signame.c:217
+msgid "Information request"
+msgstr "ЗаÑвка за информациÑ"
+
+#: src/signame.c:220
+msgid "Floating point co-processor not available"
+msgstr "ЛипÑва копроцеÑор за чиÑла Ñ Ð¿Ð»Ð°Ð²Ð°Ñ‰Ð° запетаÑ"
+
+#: src/strcache.c:274
+#, c-format
+msgid ""
+"\n"
+"%s No strcache buffers\n"
+msgstr ""
+"\n"
+"%s ÐÑма буфери за „strcache“\n"
+
+#: src/strcache.c:304
+#, c-format
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
+msgstr ""
+"\n"
+"%s буфери за кеша за низове: %lu (%lu) / низове = %lu / Ñъхранение = %lu B / "
+"Ñредно = %lu B\n"
+
+#: src/strcache.c:308
+#, c-format
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
+msgstr ""
+"%s текущ буфер: размер = %hu B / ползвано = %hu B / брой = %hu / Ñредно = %u "
+"B\n"
+
+#: src/strcache.c:319
+#, c-format
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
+msgstr "%s други използвани: общо = %lu B / брой = %lu / Ñредно = %lu B\n"
+
+#: src/strcache.c:322
+#, c-format
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
+msgstr ""
+"%s други Ñвободни: общо = %lu B / макÑ. = %lu B / мин. = %lu B / Ñредно = "
+"%hu B\n"
+
+#: src/strcache.c:326
+#, c-format
+msgid ""
+"\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+"\n"
+"%s производителноÑÑ‚ на кеша за низове: Ñ‚ÑŠÑ€ÑÐµÐ½Ð¸Ñ = %lu / Ð½Ð°Ð¼Ð¸Ñ€Ð°Ð½Ð¸Ñ = %lu%%\n"
+
+#: src/strcache.c:328
+msgid ""
+"# hash-table stats:\n"
+"# "
+msgstr ""
+"# ÑтатиÑтика на речника:\n"
+"# "
+
+#: src/variable.c:1653
+msgid "automatic"
+msgstr "автоматично"
+
+#: src/variable.c:1656
+msgid "default"
+msgstr "Ñтандартно"
+
+#: src/variable.c:1659
+msgid "environment"
+msgstr "Ñреда"
+
+#: src/variable.c:1662
+msgid "makefile"
+msgstr "файл управлÑващ изграждането"
+
+#: src/variable.c:1665
+msgid "environment under -e"
+msgstr "обкръжението е твърде голÑмо за „exec“"
+
+#: src/variable.c:1668
+msgid "command line"
+msgstr "команден ред"
+
+#: src/variable.c:1671
+msgid "'override' directive"
+msgstr "директива „override“"
+
+#: src/variable.c:1682
+#, c-format
+msgid " (from '%s', line %lu)"
+msgstr " (от „%s“, ред %lu)"
+
+#: src/variable.c:1745
+msgid "# variable set hash-table stats:\n"
+msgstr "# ÑтатиÑтика за множеÑтвото на променливите в речника:\n"
+
+#: src/variable.c:1756
+msgid ""
+"\n"
+"# Variables\n"
+msgstr ""
+"\n"
+"# Променливи\n"
+
+#: src/variable.c:1760
+msgid ""
+"\n"
+"# Pattern-specific Variable Values"
+msgstr ""
+"\n"
+"# СтойноÑти на променливи, завиÑещи от шаблона"
+
+#: src/variable.c:1774
+msgid ""
+"\n"
+"# No pattern-specific variable values."
+msgstr ""
+"\n"
+"# ÐÑма ÑтойноÑти на променливи, завиÑещи от шаблона"
+
+#: src/variable.c:1776
+#, c-format
+msgid ""
+"\n"
+"# %u pattern-specific variable values"
+msgstr ""
+"\n"
+"# %u ÑтойноÑти на променливи, завиÑещи от шаблона"
+
+#: src/variable.h:229
+#, c-format
+msgid "warning: undefined variable '%.*s'"
+msgstr "ПРЕДУПРЕЖДЕÐИЕ: недефинирана променлива „%.*s“"
+
+#: src/vmsfunctions.c:91
+#, c-format
+msgid "sys$search() failed with %d\n"
+msgstr "„sys$search()“ завърши неуÑпешно Ñ ÐºÐ¾Ð´ %d\n"
+
+#: src/vmsjobs.c:244
+#, c-format
+msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
+msgstr ""
+"- ПРЕДУПРЕЖДЕÐИЕ, вероÑтно Ñ‚Ñ€Ñбва отново да включите управлението на CTRL-Y "
+"от „DCL“.\n"
+
+#: src/vmsjobs.c:681
+#, c-format
+msgid "BUILTIN CD %s\n"
+msgstr "ВГРÐДЕÐРКОМÐÐДР„CD“ %s\n"
+
+#: src/vmsjobs.c:1224
+#, c-format
+msgid "DCL: %s\n"
+msgstr "„DCL“: %s\n"
+
+#: src/vmsjobs.c:1284
+#, c-format
+msgid "Append output to %s\n"
+msgstr "ДобавÑне на изхода към „%s“\n"
+
+#: src/vmsjobs.c:1309
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr "ДобавÑне на %.*s и изчиÑтване\n"
+
+#: src/vmsjobs.c:1322
+#, c-format
+msgid "Executing %s instead\n"
+msgstr "„%s“ Ñе изпълнÑва вмеÑто\n"
+
+#: src/vpath.c:603
+msgid ""
+"\n"
+"# VPATH Search Paths\n"
+msgstr ""
+"\n"
+"# Пътища за Ñ‚ÑŠÑ€Ñене „VPATH“\n"
+
+#: src/vpath.c:620
+msgid "# No 'vpath' search paths."
+msgstr "# ÐÑма пътища за Ñ‚ÑŠÑ€Ñене във „VPATH“"
+
+#: src/vpath.c:622
+#, c-format
+msgid ""
+"\n"
+"# %u 'vpath' search paths.\n"
+msgstr ""
+"\n"
+"# %u пътища за Ñ‚ÑŠÑ€Ñене във „VPATH“\n"
+
+#: src/vpath.c:625
+msgid ""
+"\n"
+"# No general ('VPATH' variable) search path."
+msgstr ""
+"\n"
+"# ÐÑма общ път (във „VPATH“) за Ñ‚ÑŠÑ€Ñене"
+
+#: src/vpath.c:631
+msgid ""
+"\n"
+"# General ('VPATH' variable) search path:\n"
+"# "
+msgstr ""
+"\n"
+"# Общ път за Ñ‚ÑŠÑ€Ñене (във „VPATH“)\n"
+"# "
+
+#: src/w32/w32os.c:44
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr "Сървърът за задачи приема макÑимум %d заданиÑ\n"
+
+#: src/w32/w32os.c:60
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr "Ñъздаване на Ñемафор за Ñървър за задачи: (грешка %ld: %s)"
+
+#: src/w32/w32os.c:79
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+"ВЪТРЕШÐРГРЕШКÐ: Ñемафорът на Ñървъра за задачи не може да Ñе отвори „%s“: "
+"(грешка %ld: %s)"
+
+#: src/w32/w32os.c:82
+#, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr "Клиент на Ñървър за задачи (Ñемафор %s)\n"
+
+#: src/w32/w32os.c:123
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr "оÑвобождаване на Ñемафора на Ñървъра за задачи: (грешка %ld: %s)"
+
+#: src/w32/w32os.c:194
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr "изчакване на Ñемафор или дъщерен процеÑ: (Грешка %ld: %s)"
diff --git a/po/cs.gmo b/po/cs.gmo
index 84066b1..a59c572 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 90d78ea..e3ab2cb 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -1,7 +1,7 @@
# Czech translation of make.
# Copyright (C) 2010 Free Software Foundation, Inc.
# This file is distributed under the same license as the make package.
-# Petr Pisar <petr.pisar@atlas.cz>, 2011, 2013, 2014, 2016.
+# Petr Pisar <petr.pisar@atlas.cz>, 2011, 2013, 2014, 2016, 2019, 2020.
#
# directive → klíÄové slovo (nepÅ™ekládat jako příkaz kvůli zámÄ›nÄ›)
# hash → haÅ¡ (zapisovat Äesky)
@@ -25,125 +25,127 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: make 4.2\n"
+"Project-Id-Version: make 4.2.93\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
-"PO-Revision-Date: 2016-05-23 21:16+02:00\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2020-01-03 17:47+01:00\n"
"Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n"
"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
-#: ar.c:46
+#: src/ar.c:46
#, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "pokus použít nepodporovanou vlastnost: „%s“"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "nastavení Äasu zmÄ›ny prvku archivu není na VMS dostupné"
-#: ar.c:147
+#: src/ar.c:147
#, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "touch: Archiv „%s“ neexistuje"
-#: ar.c:150
+#: src/ar.c:150
#, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "touch: „%s“ není platným archivem"
-#: ar.c:157
+#: src/ar.c:157
#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "touch: Prvek „%s“ v „%s“ neexistuje"
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr "touch: Chybný návratový kód z funkce ar_member_touch volané nad „%s“"
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr ""
"funkce lbr$set_module() nedokázala vytáhnout údaje o modulu, status = %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "funkce lbr$ini_control() selhala se stavem = %d"
-#: arscan.c:261
+#: src/arscan.c:261
#, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr "není možné otevřít knihovnu „%s“ potřebnou k najití stav prvku %d"
# TODO: Pluralize
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr "Prvek „%s“%s: %'ld bajtů at %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (název může být zkrácen)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Datum %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " UID = %d, GID = %d, práva = 0%o\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr "Návod má příliš mnoho řádků (%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** Přerušeno.\n"
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr "*** [%s] Prvek archivu „%s“ je možná chybný, nesmazáno"
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr "*** Prvek archivu „%s“ ne možná chybný, nesmazáno"
-#: commands.c:645
+#: src/commands.c:646
#, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] Maže se soubor „%s“"
-#: commands.c:647
+#: src/commands.c:648
#, c-format
msgid "*** Deleting file '%s'"
msgstr "*** Maže se soubor „%s“"
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
msgstr "# spustitelný návod"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (vestavěný):"
-#: commands.c:688
+#: src/commands.c:689
#, c-format
msgid " (from '%s', line %lu):\n"
msgstr " (z „%s“, řádek %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -151,223 +153,223 @@ msgstr ""
"\n"
"# Adresáře\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: nebylo možné nad ním zavolat stat().\n"
-#: dir.c:1085
-#, fuzzy
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
-msgstr "# %s (klÃ­Ä %s, Äas zmÄ›ny obsahu %ull): nebylo možné otevřít.\n"
+msgstr "# %s (klÃ­Ä %s, Äas zmÄ›ny obsahu %I64u): nebylo možné otevřít.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr "# %s (zařízení %d, iuzel [%d,%d,%d]): nebylo možné otevřít.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr "# %s (zařízení %ld, iuzel %ld): nebylo možné otevřít.\n"
-#: dir.c:1122
-#, fuzzy
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
-msgstr "# %s (klÃ­Ä %s, Äas zmÄ›ny obsahu %ull): "
+msgstr "# %s (klÃ­Ä %s, Äas zmÄ›ny obsahu %I64u): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (zařízení %d, iuzel [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (zařízení %ld, iuzel %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "Žádný"
# TODO: Pluralize
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " souborů, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "žádný "
# TODO: Pluralize
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " nemožností "
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " zatím."
# TODO: Pluralize
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " nemožností v %lu adresářích.\n"
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr "Rekurzivní proměnná „%s“ odkazuje na sebe (nakonec)"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "neukonÄený odkaz na promÄ›nnou"
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr "Návod byl urÄen pro soubor „%s“ v %s:%lu,"
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr "Návod pro soubor „%s“ byl nalezen hledáním implicitních pravidel,"
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr "ale „%s“ se nyní považuje za soubor totožný s „%s“."
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr "Návod pro „%s“ bude ignorován ve prospěch návodu pro „%s“."
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr ""
"„%s“ s jednoduchou dvojteÄkou nelze pÅ™ejmenovat na „%s“ s dvojitou dvojteÄkou"
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr ""
"„%s“ s dvojitou dvojteÄkou nelze pÅ™ejmenovat na „%s“ s jednoduchou dvojteÄkou"
-#: file.c:408
+#: src/file.c:408
#, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "Maže se mezilehlý soubor „%s“ "
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "Odstraňují se mezilehlé soubory…\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "Aktuální Äas"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: Časový údaj mimo rozsah, nahrazuje se %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# Není cílem:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# Cenný soubor (prerekvizita k .PRECIOUS)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# Falešný cíl (prerekvizita k .PHONY)."
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# Cíl příkazové řádky."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr "# Default, MAKEFILES nebo -include/sinclude makefile."
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
msgstr "# Vestavěné pravidlo"
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# Hledalo se za pomoci implicitních pravidel."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# Nehledalo se za pomoci implicitních pravidel."
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr "# Kořen implicitního/statického vzoru: „%s“\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr "# Soubor je mezilehlá prerekvizita."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# Rovněž vyrábí:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# Čas změny obsahu se nikdy nekontroluje."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# Soubor neexistuje."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# Soubor je velmi starý."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# Obsah naposledy změněn v %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# Soubor byl aktualizován."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# Soubor nebyl aktualizován."
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# Návod se právě vykonává (TOTO JE CHYBA)."
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr "# Návod pro závislosti se právě vykonává (TOTO JE CHYBA)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# Úspěšně aktualizováno."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# Je třeba aktualizovat (-q je nastaveno)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# Aktualizace selhala."
-#: file.c:1032
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
msgstr "# Neplatná hodnota v Älenu „command_state“!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -375,7 +377,7 @@ msgstr ""
"\n"
"# Soubory"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -385,336 +387,344 @@ msgstr ""
"# Statistika hašovací tabulky souborů:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr "%s: Položka „%s“ není v keši: %s"
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
msgstr "neÄíselný první argument funkce „word“"
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr "první argument funkce „word“ musí být vetší než 0"
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
msgstr "neÄíselný první argument funkce „wordlist“"
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
msgstr "neÄíselný druhý argument funkce „wordlist“"
-#: function.c:1525
+#: src/function.c:1533
#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "windows32_openpipe: DuplicateHandle(vstup) selhalo (chyba=%ld)\n"
-#: function.c:1549
+#: src/function.c:1557
#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr ""
"windows32_openpipe: DuplicateHandle(chybový výstup) selhalo (chyba=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "CreatePipe() selhalo (chyba=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe(): process_init_fd() selhalo\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "DoÄasný dávkový soubor %s se uklízí\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr "soubor: chybí název souboru"
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
msgstr "otevření: %s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
msgstr "zápis: %s: %s"
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, c-format
msgid "close: %s: %s"
msgstr "zavření: %s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr "soubor: příliš mnoho argumentů"
-#: function.c:2262
+#: src/function.c:2277
#, c-format
msgid "read: %s: %s"
msgstr "Ätení: %s: %s"
-#: function.c:2275
+#: src/function.c:2290
#, c-format
msgid "file: invalid file operation: %s"
msgstr "soubor: neplatná operace na souboru: %s"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr "nedostateÄný poÄet argumentů (%d) funkce „%s“"
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "na této platformě neimplementováno: funkce „%s“"
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr "neukonÄené volání funkce „%s“: chybí „%c“"
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr "Prázdný název funkce"
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr "Neplatný název funkce: %s"
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr "Název funkce je příliš dlouhý: %s"
-#: function.c:2657
+#: src/function.c:2674
#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
msgstr "Neplatný minimální poÄet argumentů (%u) funkce %s"
-#: function.c:2660
+#: src/function.c:2677
#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
msgstr "Neplatný maximální poÄet argumentů (%u) funkce %s"
-#: getopt.c:659
+#: src/getopt.c:659
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: pÅ™epínaÄ â€ž%s“ není jednoznaÄný\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: pÅ™epínaÄe „--%s“ nepÅ™ipouÅ¡tí argument\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: pÅ™epínaÄ â€ž%c%s“ nepÅ™ipouÅ¡tí argument\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: pÅ™epínaÄ â€ž%s“ vyžaduje argument\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: nerozpoznaný pÅ™epínaÄ â€ž--%s“\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: nerozpoznaný pÅ™epínaÄ â€ž%c%s“\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: zakázaný pÅ™epínaÄ – %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: neplatný pÅ™epínaÄ – %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: pÅ™epínaÄ vyžaduje argument – %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: pÅ™epínaÄ â€ž-W %s“ není jednoznaÄný\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: pÅ™epínaÄ â€ž-W %s“ nepÅ™ipouÅ¡tí argument\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr "guile: Expanduje se „%s“\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr "guile: Vyhodnocuje se „%s“\n"
# TODO: Pluralize
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr "nelze alokovat %lu bajtů na haÅ¡ovací tabulku: paměť vyÄerpána"
-#: hash.c:280
+#: src/hash.c:280
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "Zátěž = %ld/%ld = %.0f %%, "
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "Zátěž = %lu/%lu = %.0f %%, "
-#: hash.c:282
+#: src/hash.c:282
#, c-format
-msgid "Rehash=%d, "
-msgstr "Přehašováno = %d, "
+msgid "Rehash=%u, "
+msgstr "Přehašováno = %u, "
-#: hash.c:283
+#: src/hash.c:283
#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "Kolizí = %ld/%ld = %.0f %%"
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "Kolizí = %lu/%lu = %.0f %%"
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr "Hledá se implicitní pravidlo pro „%s“.\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr "Hledá se implicitní pravidlo prvku archivu pro „%s“.\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr "Zabraňuje se rekurzi implicitního pravidla.\n"
-#: implicit.c:486
+#: src/implicit.c:484
#, c-format
-msgid "Stem too long: '%.*s'.\n"
-msgstr "Kořen je příliš dlouhý „%.*s“.\n"
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "Kořen je příliš dlouhý: „%s%.*s“.\n"
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr "Zkouší se pravidlo vzoru s kořenem „%.*s“.\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr "Zamítá se nemožná prerekvizita pravidla „%s“.\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr "Zamítá se nemožná implicitní prerekvizita „%s“.\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr "Zkouší se prerekvizita pravidla „%s“.\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr "Zkouší se implicitní prerekvizita „%s“.\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr "Nalezena prerekvizita „%s“ jako VPATH „%s“\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr "Hledá se pravidlo s mezilehlým souborem „%s“.\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr "DoÄasný soubor nelze vytvoÅ™it\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (obraz paměti uložen)"
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr " (ignorováno)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
msgstr "<vestavěný>"
-#: job.c:510
+#: src/job.c:573
#, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "%s[%s: %s] Chyba %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** ÄŒeká se na nedokonÄené úlohy…"
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "Živý potomek %p (%s) PID %s %s\n"
# Continuation of Live child
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (vzdálený)"
-#: job.c:831
-#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Uklízí se prohrávající potomek %p PID %s %s\n"
-
-#: job.c:832
+#: src/job.c:898
#, c-format
msgid "Reaping winning child %p PID %s %s\n"
msgstr "Uklízí se vyhrávající potomek %p PID %s %s\n"
-#: job.c:839
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Uklízí se prohrávající potomek %p PID %s %s\n"
+
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "Uklízí se doÄasný dávkový soubor %s\n"
-#: job.c:845
+#: src/job.c:956
#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr "Úklid doÄasného dávkového souboru %s selhal (%d)\n"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr "Z řetězce se odstraňuje potomek %p PID %s%s.\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr "Uvolněn token pro potomka %p (%s).\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "process_easy() nedokázala spustit proces (chyba=%ld)\n"
# FIXME: Pluralize
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -723,93 +733,87 @@ msgstr ""
"\n"
"NapoÄítáno %d argumentů v selhaném spuÅ¡tÄ›ní\n"
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr "Do řetězce se přidává potomek %p (%s) PID %s%s.\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "Získán token pro potomka %p (%s).\n"
-#: job.c:1838
+#: src/job.c:1902
#, c-format
msgid "%s: target '%s' does not exist"
msgstr "%s: cíl „%s“ neexistuje"
-#: job.c:1841
+#: src/job.c:1905
#, c-format
msgid "%s: update target '%s' due to: %s"
msgstr "%s: aktualizovat cíl „%s“ potřebný pro %s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr "na tomto operaÄním systému nelze vynutit omezení zátěže"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "omezení zátěže nelze vynutit: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr "nedostatek deskriptorů souboru: standardní vstup nelze zduplikovat\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr "nedostatek deskriptorů souboru: standardní výstup nelze zduplikovat\n"
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr "nedostatek deskriptorů souboru: chybový výstup nelze zduplikovat\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr "Standardní vstup nelze obnovit\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr "Standardní výstup nelze obnovit\n"
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr "Chybový výstup nelze obnovit\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr "make uklidil potomka s PID %s, stále se Äeká na PID %s\n"
-#: job.c:2275
+#: src/job.c:2623
#, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: %s: Příkaz nenalezen\n"
-
-#: job.c:2277
-#, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s[%u]: %s: Příkaz nenalezen\n"
-
-#: job.c:2337
-#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: Program shellu nenalezen"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr "spawnvpe: možná byl vyÄerpán prostor pro prostÅ™edí"
-#: job.c:2584
+#: src/job.c:2862
#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "Proměnná $SHELL se změnila (byla „%s“, nyní je „%s“)\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr "Vytváří se doÄasný dávkový soubor %s\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
@@ -817,7 +821,7 @@ msgstr ""
"Obsah dávkového souboru:\n"
"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
@@ -826,58 +830,54 @@ msgstr ""
"Obsah dávkového souboru:%s\n"
"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr "%s (řádek %d) Chybný kontext shellu (!unixy && !batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr ""
-"PÅ™epínaÄ -O[DRUH] (--output-sync[=DRUH]) není v tomto sestavení zahrnut."
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr "Nepodařilo se otevřít tabulku globálních symbolů: %s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr "Zavedený objekt %s není veden jako sluÄitelný s GPL"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr "Symbol %s z %s se nepodařilo zavést: %s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr "Pokus zavést prázdný název symbolu: %s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr "Zavádí se symbol %s z %s\n"
-#: load.c:256
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr "Na této platformě není operace zavedení (load) podporována."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "PÅ™epínaÄe:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr " -b, -m Ignoruje se kvůli kompatibilitě.\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr " -B, --always-make BezpodmíneÄnÄ› vyrobí vÅ¡echny cíle.\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
@@ -885,17 +885,17 @@ msgstr ""
" -C ADRESÃŘ, --directory=ADRESÃŘ\n"
" PÅ™ed dÄ›láním Äehokoliv se pÅ™epne do ADRESÃŘE.\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr " -d Vypisuje mnoho ladicích údajů.\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
" --debug[=PŘÃZNAKY] Vypisuje ladicí údaje rozliÄných druhů.\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
@@ -903,12 +903,12 @@ msgstr ""
" -e, --environment-overrides\n"
" Proměnné prostředí přebijí ty z makefilu.\n"
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
-msgstr " --eval=ŘETĚZEC Vyhodnotí ŘETĚZEC jako kód makefilu.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
+msgstr " -E ŘETĚZEC, --eval=ŘETĚZEC Vyhodnotí ŘETĚZEC jako kód makefilu.\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -916,15 +916,15 @@ msgstr ""
" -f SOUBOR, --file=SOUBOR, --makefile=SOUBOR\n"
" NaÄte SOUBOR coby makefile.\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help Vypíše tuto zprávu a skonÄí.\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr " -i, --ignore-errors Ignoruje chyby z návodů.\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
@@ -932,7 +932,7 @@ msgstr ""
" -I ADRESÃŘ, --include-dir=ADRESÃŘ\n"
" Vložené makefily hledá v ADRESÃŘI.\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
@@ -940,13 +940,13 @@ msgstr ""
" -j [N], --jobs[=N] Dovolí nejvíce N úloh najednou;\n"
" nekoneÄno úloh bez argumentu.\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
" -k, --keep-going PokraÄuje, když nÄ›které cíle nelze vyrobit.\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
@@ -956,7 +956,7 @@ msgstr ""
" Nespouští souběžné úlohy, dokud zátěž\n"
" neklesne pod N.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
@@ -964,7 +964,7 @@ msgstr ""
" -L, --check-symlink-times Použije nejnovÄ›jší Äas zmÄ›ny obsahu z Äasů\n"
" symbolických odkazů a cíle.\n"
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
@@ -974,7 +974,7 @@ msgstr ""
" Ve skuteÄnosti nevykoná žádný návod, pouze\n"
" jej vypíše.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
@@ -984,7 +984,7 @@ msgstr ""
" Považuje SOUBOR za velmi starý a znovu jej\n"
" nevyrobí.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
@@ -993,11 +993,11 @@ msgstr ""
" Synchronizuje výstup souběžných úloh podle "
"DRUHU.\n"
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr " -p, --print-data-base Vypíše vnitřní databázi programu make.\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
@@ -1005,19 +1005,23 @@ msgstr ""
" -q, --question Nespustí žádný návod. Návratový kód řekne,\n"
" jestli je aktuální.\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr " -r, --no-builtin-rules Vypne vestavěná implicitní pravidla.\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr " -R, --no-builtin-variables Vypne vestavěné nastavení proměnných.\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr " -s, --silent, --quiet Neopisuje návod.\n"
-#: main.c:393
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr " --no-silent Opisuje návod (vypne režim --silent).\n"
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
@@ -1025,32 +1029,32 @@ msgstr ""
" -S, --no-keep-going, --stop\n"
" Vypne -k.\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr " -t, --touch Namísto výroby cílů jim zmÄ›ní Äas.\n"
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
msgstr " --trace Vypisuje trasovací údaje.\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr ""
" -v, --version Vypíše Äíslo verze programu make a skonÄí.\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory Vypisuje aktuální adresář.\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
msgstr ""
" --no-print-directory Vypne -w, i kdyby byl zapnut implicitně.\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1058,7 +1062,7 @@ msgstr ""
" -W SOUBOR, --what-if=SOUBOR, --new-file=SOUBOR, --assume-new=SOUBOR\n"
" Považuje SOUBOR za nekoneÄnÄ› nový.\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
@@ -1066,26 +1070,27 @@ msgstr ""
" --warn-undefined-variables Upozorní, kdykoliv je odkazováno na\n"
" nedefinovanou proměnnou.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "prázdný řetězec není platný název souboru"
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
msgstr "zadána neznámá úroveň ladění „%s“"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr "neznámý druh synchronizace výstupu „%s“"
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr "%s: Zachyceno přerušení/výjimka (kód = 0x%lx, adresa = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1100,135 +1105,145 @@ msgstr ""
"Příznaky výjimky = %lx\n"
"Adresa výjimky = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "Porušení přístupu: operace zápisu na adrese 0x%p\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "PoruÅ¡ení přístupu: operace Ätení na adrese 0x%p\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell() nastavuje default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr ""
"find_and_set_shell() při prohledávání cesty nastavila default_shell = %s\n"
-#: main.c:1538
+#: src/main.c:1609
#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s se uspí na 30 sekund…"
-
-#: main.c:1540
-#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "sleep(30) dokonÄeno. PokraÄuje se.\n"
-
-#: main.c:1627
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
"pozor: správce úloh není dostupný: použije se -j1. Do nadřízeného pravidla "
"maku přidejte „+“."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
-msgstr "pozor: -jN vnuceno podřízenému maku: režim správce úloh se vypíná."
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
+msgstr ""
+"pozor: -j%d vnuceno podřízenému programu make: režim správce úloh se restuje."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr "Makefile na standardním vstupu uveden dvakrát."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (doÄasný soubor)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (doÄasný soubor)"
-#: main.c:2048
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr ""
+"pozor: -j%d vnuceno v souboru makefile: režim správce úloh se resetuje."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr "Na této platformě nejsou paralelní úlohy (-j) podporovány."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "Návrat k jednoúlohovému režimu (-j1)."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr "Symbolické odkazy nejsou podporovány: vypíná se -L."
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "Soubory makefile se aktualizují…\n"
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr "Makefile „%s“ může cyklit, nebude znovu vyroben.\n"
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
msgstr "Výroba nového makefilu „%s“ selhala."
-#: main.c:2299
+#: src/main.c:2323
#, c-format
msgid "Included makefile '%s' was not found."
msgstr "Vložený makefile „%s“ nebyl nalezen."
-#: main.c:2304
+#: src/main.c:2328
#, c-format
msgid "Makefile '%s' was not found"
msgstr "Makefile „%s“ nebyl nalezen"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "Nebylo možné se vrátit do původního adresáře."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "Znovu se spouští [%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (doÄasný soubor): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ".DEFAULT_GOAL obsahuje více než jeden cíl"
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Nezadány žádné cíle a žádné makefily nenalezeny"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "Žádné cíle"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Nezadány žádné cíle a žádné makefily nenalezeny"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "Aktualizují se cíle…\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr "pozor: Zjištěn posun hodin. Vaše sestavení možná nebude úplné."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "Použití: %s [PŘEPÃNAÄŒE] [CÃLE]…\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1237,7 +1252,7 @@ msgstr ""
"\n"
"Tento program byl sestaven pro %s\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1246,34 +1261,34 @@ msgstr ""
"\n"
"Tento program byl sestaven pro %s (%s)\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr ""
"Chyby v programu hlaste anglicky na <bug-make@gnu.org>. Nedostatky\n"
"v pÅ™ekladu hlaste Äesky na <translation-team-cs@lists.sourceforge.net>.\n"
-#: main.c:2870
+#: src/main.c:2901
#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "pÅ™epínaÄe „%s%s“ vyžaduje neprázdný Å™etÄ›zcový argument"
-#: main.c:2934
+#: src/main.c:2965
#, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "pÅ™epínaÄ â€ž-%c“ vyžaduje kladný celoÄíselný argument"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%sSestaveno pro %s\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%s Sestaveno pro %s (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1287,7 +1302,7 @@ msgstr ""
"%sNesposkytuje se ŽÃDNà ZÃRUKA, jak jen zákon dovoluje.\n"
# FIXME: i18n %s (time)
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1297,7 +1312,7 @@ msgstr ""
"# Databáze maku vypsána v %s"
# FIXME: i18n %s (time)
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1306,344 +1321,381 @@ msgstr ""
"\n"
"# Konec databáze maku v %s\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Neznámá chyba %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: uživatel %lu (reálný %lu), skupina %lu (reálná %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "Přístup zahájen"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr "Přístup uživatelem"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "Přístup makem"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "Přístup potomkem"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: Vstupuje se do neznámého adresáře\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s Opouští se neznámý adresář\n"
-#: output.c:109
+#: src/output.c:102
#, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "%s: Vstupuje se do adresáře „%s“\n"
-#: output.c:111
+#: src/output.c:104
#, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "%s: Opouští se adresář „%s“\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: Vstupuje se do neznámého adresáře\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: Opouští se neznámý adresář\n"
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr "%s[%u]: Vstupuje se do adresáře „%s“\n"
-#: output.c:122
+#: src/output.c:115
#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "%s[%u]: Opouští se adresář „%s“\n"
-#: output.c:495 output.c:497
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
msgstr "chyba zápisu: standardní výstup"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". Konec.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+"PÅ™epínaÄ -O[DRUH] (--output-sync[=DRUH]) není v tomto sestavení zahrnut."
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "vytváření roury úloh"
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
msgstr "duplikace roury úloh"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr "inicializace roury správce úloh"
-#: posixos.c:90
+#: src/posixos.c:119
#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr "vnitřní chyba: neplatný řetězec --jobserver-auth „%s“"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr "Klient správce úloh (deskriptory %d,%d)\n"
-#: posixos.c:109
+#: src/posixos.c:138
msgid "jobserver pipeline"
msgstr "kolona správce úloh"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr "zápis správce úloh"
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr "správce úloh vypnut"
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
msgstr "volání pselect nad rourou úloh"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "Ätení z roury úloh"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "Čtou se makefily…\n"
-#: read.c:329
+#: src/read.c:336
#, c-format
msgid "Reading makefile '%s'"
msgstr "Čte se makefile „%s“"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (žádný výchozí cíl)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (vyhledávací cesta)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (nestarat se)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (žádný expanze ~)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr "Přeskakuje se UTF-8 BOM v makefilu „%s“\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr "Přeskakuje se UTF-8 BOM v paměti makefilu\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "neplatná syntaxe podmínky"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr "%s: zavedení selhalo"
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
msgstr "návod zahájen před prvním cílem"
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
msgstr "před návodem chybí pravidlo"
-#: read.c:1124
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr "chybí oddÄ›lovaÄ (mysleli jste tabulátor místo 8 mezer?)"
-#: read.c:1126
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
msgstr "chybí oddÄ›lovaÄ"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "chybí vzor cíle"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "více vzorů cíle"
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
msgstr "vzor cíle neobsahuje „%%“"
-#: read.c:1390
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
msgstr "chybí „endif“"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "prázdný název proměnné"
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
msgstr "nadbyteÄný text po klíÄovém slovu „define“"
-#: read.c:1488
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "chybí „endef“, neukonÄený „define“"
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
msgstr "nadbyteÄný text po klíÄovém slovu „endef“"
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
msgstr "nadbyteÄný text po klíÄovém slovu „%s“"
-#: read.c:1589
+#: src/read.c:1604
#, c-format
msgid "extraneous '%s'"
msgstr "nadbyteÄný „%s“"
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
msgstr "pouze jeden „else“ na podmínku"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr "Chybě utvořená definice proměnné specifické pro cíl"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr "prerekvizitu nelze definovat v návodu"
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr "seskupené cíle musí poskytovat návod"
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr "smíšené implicitní a statická pravidla vzorů"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "smíšené implicitní a normální pravidla"
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr "cíl „%s“ neodpovídá vzoru cíle"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
msgstr "cílový soubor „%s“ obsahuje jak :, tak i ::"
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
msgstr "cíl „%s“ zadán více než jednou ve stejném pravidle"
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr "pozor: návod pro cíl „%s“ bude přebit"
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr "pozor: starý návod pro cíl „%s“ bude ignorován"
-#: read.c:2223
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr "*** smíšená implicitní a normální pravidla: zastaralá skladba"
-#: read.c:2542
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "pozor: Älenství ve skupinÄ› pro cíl „%s“ bude pÅ™ebito"
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr "pozor: zaznamenán znak NUL, zbytek řádku bude ignorován"
-#: remake.c:226
+#: src/remake.c:226
#, c-format
msgid "Nothing to be done for '%s'."
msgstr "Pro „%s“ nebude nic uděláno."
-#: remake.c:227
+#: src/remake.c:227
#, c-format
msgid "'%s' is up to date."
msgstr "„%s“ je aktuální."
-#: remake.c:323
+#: src/remake.c:323
#, c-format
msgid "Pruning file '%s'.\n"
msgstr "Uklízí se soubor „%s“.\n"
-#: remake.c:406
+#: src/remake.c:389
#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr "%sŽádné pravidlo jak vyrobit cíl „%s“ potřebný pro „%s“%s"
-#: remake.c:416
+#: src/remake.c:399
#, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%sŽádné pravidlo jak vyrobit cíl „%s“%s"
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
msgstr "Zvažuje se cílový soubor „%s“.\n"
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr "Nedávná aktualizace souboru „%s“ selhala.\n"
-#: remake.c:461
+#: src/remake.c:444
#, c-format
msgid "File '%s' was considered already.\n"
msgstr "Soubor „%s“ již byl uvážen.\n"
-#: remake.c:471
+#: src/remake.c:454
#, c-format
msgid "Still updating file '%s'.\n"
msgstr "Stále se aktualizuje soubor „%s“.\n"
-#: remake.c:474
+#: src/remake.c:457
#, c-format
msgid "Finished updating file '%s'.\n"
msgstr "Aktualizace soubor „%s“ dokonÄena.\n"
-#: remake.c:503
+#: src/remake.c:486
#, c-format
msgid "File '%s' does not exist.\n"
msgstr "Soubor „%s“ neexistuje.\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
@@ -1651,149 +1703,149 @@ msgstr ""
"*** Pozor: Soubor .LOW_RESOLUTION_TIME „%s“ má Äasový údaj ve vysokém "
"rozlišení"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr "Nalezeno implicitní pravidlo pro „%s“.\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr "Pro „%s“ nenalezeno žádné implicitní pravidlo.\n"
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
msgstr "Pro „%s“ se použije výchozí návod.\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "Kruhová závislost „%s ↠%s zahozena."
-#: remake.c:691
+#: src/remake.c:674
#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr "Prerekvizity cílového souboru „%s“ dokonÄeny.\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr "Prerekvizity „%s“ se vyrábějí.\n"
-#: remake.c:711
+#: src/remake.c:694
#, c-format
msgid "Giving up on target file '%s'.\n"
msgstr "Výroba cílového souboru „%s“ vzdána.\n"
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
msgstr "Cíl „%s“ nebyl kvůli chybám znovu vyroben."
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr "Prerekvizita „%s“ pro cíl „%s“ je jen o pořadí.\n"
-#: remake.c:773
+#: src/remake.c:756
#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr "Prerekvizita „%s“ cíle „%s“ neexistuje.\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr "Prerekvizita „%s“ je novější než cíl „%s“.\n"
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr "Prerekvizita „%s“ je starší než cíl „%s“.\n"
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr "Cíl „%s“ je dvojdvouteÄkový a nemá žádnou prerekvizitu.\n"
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr "Pro „%s“ neexistuje návod a žádná prerekvizita se vskutku nezměnila.\n"
# Always-make flag is make option -B
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr "Vyrábí se „%s“ kvůli pÅ™epínaÄi --always-make.\n"
-#: remake.c:819
+#: src/remake.c:802
#, c-format
msgid "No need to remake target '%s'"
msgstr "Cíl „%s“ není třeba znovu vyrábět"
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
msgstr "; použije se název „%s“ z VPATH"
-#: remake.c:841
+#: src/remake.c:824
#, c-format
msgid "Must remake target '%s'.\n"
msgstr "Cíl „%s“ je třeba znovu vyrobit.\n"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr " Ignoruje se název „%s“ z VPATH.\n"
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr "Právě se vykonává návod pro „%s“.\n"
-#: remake.c:863
+#: src/remake.c:846
#, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr "Cílový soubor „%s“ nebylo možné znovu vyrobit.\n"
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr "Cílový soubor „%s“ byl úspěšně znovu vyroben.\n"
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr "Cílový soubor „%s“ je třeba znovu vyrobit za použití -q.\n"
-#: remake.c:1064
+#: src/remake.c:1047
#, c-format
msgid "Using default commands for '%s'.\n"
msgstr "Pro „%s„ se použijí se výchozí příkazy.\n"
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "Pozor: Soubor „%s“ má Äas zmÄ›ny obsahu v budoucnu"
-
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr "Pozor: Soubor „%s“ má Äas zmÄ›ny obsahu %s s smÄ›rem do budoucnosti"
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr "Prvek .LIBPATTERNS „%s“ není vzorem"
# `Customs' is literal (a library name). See README.customs.
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr "Customs nebude exportovat: %s\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -1801,7 +1853,7 @@ msgstr ""
"\n"
"# Implicitní pravidla"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1809,186 +1861,182 @@ msgstr ""
"\n"
"# Žádná implicitní pravidla."
-# FIXME: Pluralize by first %u
-#: rule.c:514
+# FIXME: Pluralize
+#: src/rule.c:548
#, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
-"# Implicitních pravidel: %u, %u"
+"# %u implicitních pravidel, %u (%.1f %%) koncových"
-#: rule.c:523
-msgid " terminal."
-msgstr " terminál."
-
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "CHYBA: num_pattern_rules je chybný! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "neznámý signál"
# Keep signal names in sync with GNU libc translations.
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Odpojen terminál (SIGHUP)"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "Přerušení (SIGINT)"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Konec (SIGQUIT)"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "Nedovolená instrukce (SIGILL)"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "Trasovací/ladící past (SIGTRAP)"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "NeúspěšnÄ› ukonÄen (SIGABRT)"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "IOT past (SIGIOT)"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "EMT past (SIGEMT)"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "Výjimka práce s pohyblivou řádovou Äárkou (SIGFPE)"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Zabit (SIGKILL)"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "Chyba na sběrnici (neplatná adresa) (SIGBUS)"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Neoprávněný přístup do paměti (SIGSEGV)"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "Chybné volání systému (SIGSYS)"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "Roura přerušena (SIGPIPE)"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Budík (SIGALRM)"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "UkonÄen (SIGTERM)"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "Uživatelem definovaný signál 1 (SIGUSR1)"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "Uživatelem definovaný signál 2 (SIGUSR2)"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "Potomek skonÄil (SIGCHLD)"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Výpadek napájení (SIGPWR)"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Pozastaven (SIGTSTP)"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Pozastaven (vstup TTY) (SIGTTIN)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Pozastaven (výstup TTY) (SIGTTOU)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Pozastaven (SIGSTOP)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "PÅ™ekroÄen Äasový limit pro procesor (SIGXCPU)"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "PÅ™ekroÄen limit délky souboru (SIGXFS2)"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "Virtuální ÄasovaÄ vyprÅ¡el (SIGVTALRM)"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "Profilovací ÄasovaÄ vyprÅ¡el (SIGPROF)"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "Okno se změnilo (SIGWINCH)"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Je pokraÄováno (SIGCONT)"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "Naléhavá I/O situace (SIGURG)"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "Vstup/Výstup možný (SIGIO)"
# SIGWIND exists on Darwin
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "Okno se změnilo (SIGWIND)"
# SIGPHONE exists on Unix PC (3B1)
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "Změna stavu linky (SIGPHONE)"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "Prostředek byl ztracen (SIGLOST)"
# SIGDANGER exists on AIX
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "NebezpeÄí nedostatku pamÄ›ti (SIGDANGER)"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Žádost o informaci (SIGINFO)"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "Koprocesor pro práci s pohyblivou řádkou není dostupný (SIGNOFP)"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
@@ -1997,7 +2045,7 @@ msgstr ""
"\n"
"%s Žádná keš řetězců\n"
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -2008,20 +2056,20 @@ msgstr ""
"%s užito z keše řetězců: %lu (%lu) / řetězců = %lu / úložiště = %lu B / "
"prům. = %lu B\n"
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
"%s souÄasná keÅ¡: velikost = %hu B / užito = %hu B / poÄet = %hu / prům. = "
-"%hu B\n"
+"%u B\n"
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr "%s užito dalších: celkem = %lu B / poÄet = %lu / prům. = %lu B\n"
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
@@ -2029,7 +2077,7 @@ msgstr ""
"%s volno dalších: celkem = %lu B / max. = %lu B / min. = %lu B / prům. = "
"%hu B\n"
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
@@ -2038,7 +2086,7 @@ msgstr ""
"\n"
"%s vytížení keše řetězců: dotazů = %lu / poměr nálezů = %lu %%\n"
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
@@ -2046,44 +2094,44 @@ msgstr ""
"# Statistika hašovací tabulky:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "automatická"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "výchozí"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "prostředí"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "makefile"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "prostÅ™edí z pÅ™epínaÄe -e"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "příkazový řádek"
-#: variable.c:1647
+#: src/variable.c:1671
msgid "'override' directive"
msgstr "klíÄové slovo „override“"
-#: variable.c:1658
+#: src/variable.c:1682
#, c-format
msgid " (from '%s', line %lu)"
msgstr " (z „%s“, řádek %lu)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr "# statistika hašovací tabulky pro množinu proměnných:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2091,7 +2139,7 @@ msgstr ""
"\n"
"# Proměnné\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
@@ -2099,7 +2147,7 @@ msgstr ""
"\n"
"# Hodnoty proměnných specifických pro vzor"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2108,7 +2156,7 @@ msgstr ""
"# Žádné hodnoty proměnných specifických pro vzor."
# FIXME: Pluralize
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
@@ -2117,47 +2165,47 @@ msgstr ""
"\n"
"# Hodnot proměnných specifických pro vzor: %u"
-#: variable.h:224
+#: src/variable.h:229
#, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "pozor: nedefinovaná proměnná „%.*s“"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr "volání sys$search() selhalo s %d\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr "-pozor, možná byste měli znovu povolit obsluhu CTRL-Y z DCL.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "VESTAVÄšNà PŘÃKAZ CD %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr "DCL: %s\n"
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr "Výstup připojen k %s\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr "Připojit %.*s a uklidit\n"
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "Místo toho se spustí %s\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2165,12 +2213,12 @@ msgstr ""
"\n"
"# Vyhledávací cesty VPATH\n"
-#: vpath.c:620
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
msgstr "# Žádné vyhledávací cesty „vpath“."
# FIXME: Pluralize
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
@@ -2179,7 +2227,7 @@ msgstr ""
"\n"
"$ Vyhledávacích cest „vpath“: %u\n"
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
@@ -2187,7 +2235,7 @@ msgstr ""
"\n"
"# Žádná obecná vyhledávací cesta (proměnná „VPATH“)."
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
@@ -2197,38 +2245,62 @@ msgstr ""
"# Obecná vyhledávací cesta (proměnná „VPATH“):\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr "Místa ve správci úloh jsou omezena na %d\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr "vytváření semaforu správce úloh: (Chyba %ld: %s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr ""
"vnitřní chyba: nelze otevřít semafor správce úloh „%s“: (Chyba %ld: %s)"
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr "Klient správce úloh (semafor %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr "uvolnění semaforu správce úloh: (Chyba %ld: %s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr "Äekání na semafor nebo potomka: (Chyba %ld: %s)"
+#~ msgid "%s: %s: Command not found\n"
+#~ msgstr "%s: %s: Příkaz nenalezen\n"
+
+#~ msgid "%s[%u]: %s: Command not found\n"
+#~ msgstr "%s[%u]: %s: Příkaz nenalezen\n"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s: Program shellu nenalezen"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s se uspí na 30 sekund…"
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "sleep(30) dokonÄeno. PokraÄuje se.\n"
+
+#~ msgid "Unknown error %d"
+#~ msgstr "Neznámá chyba %d"
+
+#~ msgid "Warning: File '%s' has modification time in the future"
+#~ msgstr "Pozor: Soubor „%s“ má Äas zmÄ›ny obsahu v budoucnu"
+
+#~ msgid " terminal."
+#~ msgstr " terminál."
+
#~ msgid "%s: recipe for target '%s' failed"
#~ msgstr "%s: návod pro cíl „%s“ selhal"
diff --git a/po/da.gmo b/po/da.gmo
index 8e13d9a..41d50a2 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index dc18aab..423809e 100644
--- a/po/da.po
+++ b/po/da.po
@@ -1,129 +1,140 @@
# Danish messages for make
-# Copyright (C) 2001 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2016 Free Software Foundation, Inc.
# This file is distributed under the same license as the make package.
#
# Byrial Ole Jensen <byrial@image.dk>, 2001
-# Ask Hjorth Larsen <asklarsen@gmail.com>, 2010.
+# Ask Hjorth Larsen <asklarsen@gmail.com>, 2010, 2016.
+#
+# Ordliste
+# --------
+#
+# archive -> arkiv
+# member (i arkiv) -> element
+# library -> bibliotek
+# recipe -> opskrift?
+# pipe -> pipe
#
msgid ""
msgstr ""
-"Project-Id-Version: make 3.82\n"
+"Project-Id-Version: make-4.2.1\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
-"PO-Revision-Date: 2011-01-05 02:26+0100\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2016-12-04 18:52+0100\n"
"Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"Language: da\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
-#: ar.c:46
-#, fuzzy, c-format
+#: src/ar.c:46
+#, c-format
msgid "attempt to use unsupported feature: '%s'"
-msgstr "forsøg på at bruge en ikke understøttet facilitet: '%s'"
+msgstr "forsøg på at bruge funktion som ikke understøttes: \"%s\""
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
-msgstr "'berør arkivmedlem' er ikke tilgængelig på VMS"
+msgstr "\"touch arkivelement\" er ikke tilgængelig på VMS"
-#: ar.c:147
-#, fuzzy, c-format
+#: src/ar.c:147
+#, c-format
msgid "touch: Archive '%s' does not exist"
-msgstr "touch: Arkivet '%s' findes ikke"
+msgstr "touch: Arkivet \"%s\" findes ikke"
-#: ar.c:150
-#, fuzzy, c-format
+#: src/ar.c:150
+#, c-format
msgid "touch: '%s' is not a valid archive"
-msgstr "touch: '%s' er ikke et gyldigt arkiv"
+msgstr "touch: \"%s\" er ikke et gyldigt arkiv"
-#: ar.c:157
-#, fuzzy, c-format
+#: src/ar.c:157
+#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
-msgstr "touch: Medlemmet '%s' findes ikke i '%s'"
+msgstr "touch: Elementet \"%s\" findes ikke i \"%s\""
-#: ar.c:164
-#, fuzzy, c-format
+#: src/ar.c:164
+#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
-msgstr "touch: Forkert returkode fra ar_member_touch på '%s'"
+msgstr "touch: Forkert returkode fra ar_member_touch på \"%s\""
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr "lbr$set_module() kunne ikke udtrække modulinformation, status = %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "lbr$ini_control() fejlede med status = %d"
-#: arscan.c:261
-#, fuzzy, c-format
+#: src/arscan.c:261
+#, c-format
msgid "unable to open library '%s' to lookup member status %d"
-msgstr "kan ikke åbne biblioteket '%s' for at søge medlemmet '%s'"
+msgstr "kan ikke åbne biblioteket \"%s\" for at slå elementstatus %d op"
-#: arscan.c:965
-#, fuzzy, c-format
+#: src/arscan.c:944
+#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
-msgstr "Medlem '%s'%s: %ld byte ved %ld (/%ld).\n"
+msgstr "Medlem \"%s\"%s: %ld byte ved %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (navnet kan være forkortet)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Tidsstempel %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, modus = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
-msgstr ""
+msgstr "Opskriften har for mange linjer (%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** Afbrydelse.\n"
-#: commands.c:627
-#, fuzzy, c-format
+#: src/commands.c:628
+#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
-msgstr "*** [%s] Arkivmedlemmet '%s' er måske falsk; ikke slettet"
+msgstr "*** [%s] Arkivmedlemmet \"%s\" er måske falsk; ikke slettet"
-#: commands.c:631
-#, fuzzy, c-format
+#: src/commands.c:632
+#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
-msgstr "*** Arkivmedlemmet '%s' er måske falsk; ikke slettet"
+msgstr "*** Arkivmedlemmet \"%s\" er måske falsk; ikke slettet"
-#: commands.c:645
-#, fuzzy, c-format
+#: src/commands.c:646
+#, c-format
msgid "*** [%s] Deleting file '%s'"
-msgstr "*** [%s] Sletter filen '%s'"
+msgstr "*** [%s] Sletter filen \"%s\""
-#: commands.c:647
-#, fuzzy, c-format
+#: src/commands.c:648
+#, c-format
msgid "*** Deleting file '%s'"
-msgstr "*** Sletter filen '%s'"
+msgstr "*** Sletter filen \"%s\""
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
msgstr "# kommandoer der skal køres"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (indbyggede):"
-#: commands.c:688
-#, fuzzy, c-format
+#: src/commands.c:689
+#, c-format
msgid " (from '%s', line %lu):\n"
-msgstr " (fra '%s', linje %lu):\n"
+msgstr " (fra \"%s\", linje %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -131,222 +142,219 @@ msgstr ""
"\n"
"# Filkataloger\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: kunne ikke undersøges med stat.\n"
-#: dir.c:1085
-#, fuzzy
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
-msgstr "# %s (nøgle %s, mtime %d): kunne ikke åbnes.\n"
+msgstr "# %s (nøgle %s, mtime %I64u): kunne ikke åbnes.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr "# %s (enhed %d, inode [%d,%d,%d]): kunne ikke åbnes.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr "# %s (enhed %ld, inode %ld): kunne ikke åbnes.\n"
-#: dir.c:1122
-#, fuzzy
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
-msgstr "# %s (nøgle %s, mtime %d): "
+msgstr "# %s (nøgle %s, mtime %I64u): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (enhed %d, inode [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (enhed %ld, inode %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "Ingen"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " filer, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "ingen"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " umuligheder"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " indtil videre."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " umuligheder i %lu kataloger.\n"
-#: expand.c:125
-#, fuzzy, c-format
+#: src/expand.c:125
+#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
-msgstr "Rekursiv variabel '%s' refererer (i sidste ende) til sig selv"
+msgstr "Rekursiv variabel \"%s\" refererer (i sidste ende) til sig selv"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "uafsluttet variabelreference"
-#: file.c:278
-#, fuzzy, c-format
+#: src/file.c:278
+#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
-msgstr "Kommandoer blev angivet for filen '%s' i %s:%lu,"
+msgstr "Opskrift blev angivet for filen \"%s\" i %s:%lu,"
-#: file.c:283
-#, fuzzy, c-format
+#: src/file.c:283
+#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
-msgstr "Kommandoer for filen '%s' blev fundet ved implicit regelsøgning,"
+msgstr "Opskrift for filen \"%s\" blev fundet ved implicit regelsøgning,"
-#: file.c:287
-#, fuzzy, c-format
+#: src/file.c:287
+#, c-format
msgid "but '%s' is now considered the same file as '%s'."
-msgstr "men '%s' bliver nu anset som samme fil som '%s'."
+msgstr "men \"%s\" bliver nu anset som samme fil som \"%s\"."
-#: file.c:290
-#, fuzzy, c-format
+#: src/file.c:290
+#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
-msgstr "Kommandoer for '%s' vil blive ignoreret til fordel for de for '%s'."
+msgstr ""
+"Opskriften for \"%s\" vil blive ignoreret til fordel for den for \"%s\"."
-#: file.c:310
-#, fuzzy, c-format
+#: src/file.c:310
+#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
-msgstr "kan ikke ændre enkelt-kolon '%s' til dobbelt-kolon '%s'"
+msgstr "kan ikke ændre enkelt-kolon \"%s\" til dobbelt-kolon \"%s\""
-#: file.c:316
-#, fuzzy, c-format
+#: src/file.c:316
+#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
-msgstr "kan ikke ændre dobbelt-kolon '%s' til enkelt-kolon '%s'"
+msgstr "kan ikke ændre dobbelt-kolon \"%s\" til enkelt-kolon \"%s\""
-#: file.c:408
-#, fuzzy, c-format
+#: src/file.c:408
+#, c-format
msgid "*** Deleting intermediate file '%s'"
-msgstr "*** Sletter mellemfil '%s'"
+msgstr "*** Sletter mellemfil \"%s\""
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "Sletter mellemfiler ...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "Aktuel tid"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: Tidsstempel i forkert område; bruger %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# Ikke et mål:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# Værdifuld fil (forudsætning for .PRECIOUS)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# Falsk mål (forudsætning for .PHONY)."
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# Kommandolinjemål."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr "# Et forvalg, MAKEFILES, eller -include/sinclude makefile."
-#: file.c:975
-#, fuzzy
+#: src/file.c:1029
msgid "# Builtin rule"
-msgstr ""
-"\n"
-"# Ingen implicitte regler."
+msgstr "# Indbygget regel"
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# Der er udført implicit regelsøgning."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# Der er ikke udført implicit regelsøgning."
-#: file.c:980
-#, fuzzy, c-format
+#: src/file.c:1034
+#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
-msgstr "# Implicit/statisk mønsterstamme: '%s'\n"
+msgstr "# Implicit/statisk mønsterstamme: \"%s\"\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr "# Filen er en mellemfil."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# Skaber også:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# Ændringstid ikke tjekket."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# Filen findes ikke."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# Filen er meget gammel."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# Sidst ændret %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# Filen er blevet opdateret."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# Filen er ikke blevet opdateret."
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# Der køres kommandoer nu (DETTE ER EN FEJL)."
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr "# Kommandoer for afhængigheder køres nu (DETTE ER EN FEJL)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# Opdateret med godt resultat."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# Behøver opdatering (-q er sat)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# Opdatering mislykkedes."
-#: file.c:1032
-#, fuzzy
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
-msgstr "# Ugyldig værdi i 'command_state'-felt!"
+msgstr "# Ugyldig værdi i \"command_state\"-felt!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -354,7 +362,7 @@ msgstr ""
"\n"
"# Filer"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -364,338 +372,341 @@ msgstr ""
"# Statistik for fil-hash-spande:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
-msgstr ""
+msgstr "%s: Feltet \"%s\" er ikke i cache: %s"
-#: function.c:790
-#, fuzzy
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
-msgstr "ikke-numerisk første argument til 'word'-funktionen"
+msgstr "ikke-numerisk første argument til \"word\"-funktionen"
-#: function.c:795
-#, fuzzy
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
-msgstr "første argument til 'word'-functionen skal være større end 0"
+msgstr "første argument til \"word\"-funktionen skal være større end 0"
-#: function.c:815
-#, fuzzy
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
-msgstr "ikke-numerisk første argument til 'wordlist'-funktionen"
+msgstr "ikke-numerisk første argument til \"wordlist\"-funktionen"
-#: function.c:817
-#, fuzzy
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
-msgstr "ikke-numerisk andet argument til 'wordlist'-funktionen"
+msgstr "ikke-numerisk andet argument til \"wordlist\"-funktionen"
-#: function.c:1525
-#, fuzzy, c-format
+#: src/function.c:1533
+#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "windows32_openpipe(): DuplicateHandle(In) mislykkedes (e=%ld)\n"
+msgstr "windows32_openpipe: DuplicateHandle(In) mislykkedes (e=%ld)\n"
-#: function.c:1549
-#, fuzzy, c-format
+#: src/function.c:1557
+#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr "windows32_open_pipe(): DuplicateHandle(Err) mislykkedes (e=%ld)\n"
+msgstr "windows32_openpipe: DuplicateHandle(Err) mislykkedes (e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "CreatePipe() mislykkedes (e=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe(): process_init_fd() mislykkedes\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "Afrydder midlertidig batchfil %s\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
-msgstr ""
+msgstr "fil: mangler filnavn"
-#: function.c:2219 function.c:2250
-#, fuzzy, c-format
+#: src/function.c:2234 src/function.c:2265
+#, c-format
msgid "open: %s: %s"
-msgstr "%s: %s"
+msgstr "Ã¥bn: %s: %s"
-#: function.c:2227
-#, fuzzy, c-format
+#: src/function.c:2242
+#, c-format
msgid "write: %s: %s"
-msgstr "skrivefejl: %s"
+msgstr "skriv: %s: %s"
-#: function.c:2230 function.c:2267
-#, fuzzy, c-format
+#: src/function.c:2245 src/function.c:2282
+#, c-format
msgid "close: %s: %s"
-msgstr "%s%s: %s"
+msgstr "luk: %s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
-msgstr ""
+msgstr "fil: for mange argumenter"
-#: function.c:2262
-#, fuzzy, c-format
+#: src/function.c:2277
+#, c-format
msgid "read: %s: %s"
-msgstr "%s: %s"
+msgstr "læs: %s: %s"
-#: function.c:2275
-#, fuzzy, c-format
+#: src/function.c:2290
+#, c-format
msgid "file: invalid file operation: %s"
-msgstr "%s: ugyldigt tilvalg -- %c\n"
+msgstr "fil: ugyldig filoperation: %s"
-#: function.c:2390
-#, fuzzy, c-format
+#: src/function.c:2405
+#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
-msgstr "utilstrækkeligt antal argumenter (%d) til funktionen '%s'"
+msgstr "utilstrækkeligt antal argumenter (%d) til funktionen \"%s\""
-#: function.c:2402
-#, fuzzy, c-format
+#: src/function.c:2417
+#, c-format
msgid "unimplemented on this platform: function '%s'"
-msgstr "ikke implementeret på denne platform: funktion '%s'"
+msgstr "ikke implementeret på denne platform: funktionen \"%s\""
-#: function.c:2466
-#, fuzzy, c-format
+#: src/function.c:2483
+#, c-format
msgid "unterminated call to function '%s': missing '%c'"
-msgstr "uafsluttet kald til funktionen '%s'; manglende '%c'"
+msgstr "uafsluttet kald til funktionen \"%s\"; manglende \"%c\""
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
-msgstr ""
+msgstr "Tomt funktionsnavn"
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
-msgstr ""
+msgstr "Ugyldigt funktionsnavn: %s"
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
-msgstr ""
+msgstr "Funktionsnavn er for langt: %s"
-#: function.c:2657
-#, fuzzy, c-format
+#: src/function.c:2674
+#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
-msgstr "utilstrækkeligt antal argumenter (%d) til funktionen '%s'"
+msgstr "utilstrækkeligt antal argumenter (%u) til funktionen \"%s\""
-#: function.c:2660
-#, fuzzy, c-format
+#: src/function.c:2677
+#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
-msgstr "utilstrækkeligt antal argumenter (%d) til funktionen '%s'"
+msgstr "Utilstrækkeligt antal argumenter (%u) til funktionen \"%s\""
-#: getopt.c:659
-#, fuzzy, c-format
+#: src/getopt.c:659
+#, c-format
msgid "%s: option '%s' is ambiguous\n"
-msgstr "%s: tilvalg '%s' er flertydigt\n"
+msgstr "%s: tilvalget \"%s\" er flertydigt\n"
-#: getopt.c:683
-#, fuzzy, c-format
+#: src/getopt.c:683
+#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
-msgstr "%s: tilvalg '--%s' tillader ikke et argument\n"
+msgstr "%s: tilvalget \"--%s\" tillader ikke et argument\n"
-#: getopt.c:688
-#, fuzzy, c-format
+#: src/getopt.c:688
+#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr "%s: tilvalg '%c%s' tillader ikke et argument\n"
+msgstr "%s: tilvalget \"%c%s\" tillader ikke et argument\n"
-#: getopt.c:705 getopt.c:878
-#, fuzzy, c-format
+#: src/getopt.c:705 src/getopt.c:878
+#, c-format
msgid "%s: option '%s' requires an argument\n"
-msgstr "%s tilvalg '%s' kræver et argument\n"
+msgstr "%s tilvalget \"%s\" kræver et argument\n"
-#: getopt.c:734
-#, fuzzy, c-format
+#: src/getopt.c:734
+#, c-format
msgid "%s: unrecognized option '--%s'\n"
-msgstr "%s: ikke genkendt tilvalg '--%s'\n"
+msgstr "%s: ukendt tilvalg \"--%s\"\n"
-#: getopt.c:738
-#, fuzzy, c-format
+#: src/getopt.c:738
+#, c-format
msgid "%s: unrecognized option '%c%s'\n"
-msgstr "%s: ikke genkendt tilvalg '%c%s'\n"
+msgstr "%s: ukendt tilvalg \"%c%s\"\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: ulovligt tilvalg -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: ugyldigt tilvalg -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: tilvalg kræver et argument -- %c\n"
-#: getopt.c:844
-#, fuzzy, c-format
+#: src/getopt.c:844
+#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
-msgstr "%s: tilvalg '-W %s' er flertydigt\n"
+msgstr "%s: tilvalget \"-W %s\" er flertydigt\n"
-#: getopt.c:862
-#, fuzzy, c-format
+#: src/getopt.c:862
+#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr "%s: tilvalg '-W %s' tillader ikke et argument\n"
+msgstr "%s: tilvalget \"-W %s\" tillader ikke et argument\n"
-#: guile.c:58
+# expand er normalt at skrive noget ud frem for at forkorte det. F.eks. %s -> "hello"
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
-msgstr ""
+msgstr "guile: Udskriver \"%s\"\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
-msgstr ""
+msgstr "guile: Evaluerer \"%s\"\n"
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr "kan ikke tildele %lu byte til hashtabel: hukommelsen opbrugt"
-#: hash.c:280
-#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
+#: src/hash.c:280
+#, fuzzy, c-format
+msgid "Load=%lu/%lu=%.0f%%, "
msgstr "Fyldning=%ld/%ld=%.0f%%, "
-#: hash.c:282
-#, c-format
-msgid "Rehash=%d, "
+#: src/hash.c:282
+#, fuzzy, c-format
+msgid "Rehash=%u, "
msgstr "Omgrupperinger=%d, "
-#: hash.c:283
-#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
+#: src/hash.c:283
+#, fuzzy, c-format
+msgid "Collisions=%lu/%lu=%.0f%%"
msgstr "Sammenstød=%ld/%ld=%.0f%%"
-#: implicit.c:38
-#, fuzzy, c-format
+#: src/implicit.c:38
+#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
-msgstr "Kigger efter en implicit regel for '%s'.\n"
+msgstr "Kigger efter en implicit regel for \"%s\".\n"
-#: implicit.c:54
-#, fuzzy, c-format
+#: src/implicit.c:54
+#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
-msgstr "Kigger efter en implicit arkivmedlemsregel for '%s'.\n"
+msgstr "Kigger efter en implicit arkivmedlemsregel for \"%s\".\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr "Undgår rekursion i implicitte regler.\n"
-#: implicit.c:486
-#, c-format
-msgid "Stem too long: '%.*s'.\n"
-msgstr ""
-
-#: implicit.c:491
+#: src/implicit.c:484
#, fuzzy, c-format
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "Stamme for lang: \"%.*s\"\n"
+
+#: src/implicit.c:490
+#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
-msgstr "Prøver mønsterregel med stammen '%.*s'.\n"
+msgstr "Prøver mønsterregel med stammen \"%.*s\".\n"
-#: implicit.c:697
-#, fuzzy, c-format
+#: src/implicit.c:717
+#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
-msgstr "Afviser umulig regelforudsætning '%s'.\n"
+msgstr "Afviser umulig regelforudsætning \"%s\".\n"
-#: implicit.c:698
-#, fuzzy, c-format
+#: src/implicit.c:718
+#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
-msgstr "Afviser umulig implicit forudsætning '%s'.\n"
+msgstr "Afviser umulig implicit forudsætning \"%s\".\n"
-#: implicit.c:711
-#, fuzzy, c-format
+#: src/implicit.c:732
+#, c-format
msgid "Trying rule prerequisite '%s'.\n"
-msgstr "Prøver regelforudsætning '%s'.\n"
+msgstr "Prøver regelforudsætning \"%s\".\n"
-#: implicit.c:712
-#, fuzzy, c-format
+#: src/implicit.c:733
+#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
-msgstr "Prøver implicit forudsætning '%s'.\n"
+msgstr "Prøver implicit forudsætning \"%s\".\n"
-#: implicit.c:751
-#, fuzzy, c-format
+#: src/implicit.c:772
+#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
-msgstr "Fandt forudsætning '%s' som VPATH '%s'\n"
+msgstr "Fandt forudsætning \"%s\" som VPATH \"%s\"\n"
-#: implicit.c:765
-#, fuzzy, c-format
+#: src/implicit.c:786
+#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
-msgstr "Kigger efter en regel med mellemfil '%s'.\n"
+msgstr "Kigger efter en regel med mellemfil \"%s\".\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr "Kan ikke oprette midlertidig fil\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (core-fil efterladt)"
-#: job.c:490
-#, fuzzy
+#: src/job.c:553
msgid " (ignored)"
-msgstr "[%s] Fejl %d (ignoreret)"
+msgstr "(ignoreret)"
-#: job.c:494 job.c:1828
-#, fuzzy
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
-msgstr " (indbyggede):"
+msgstr "<indbygget>"
-#: job.c:510
-#, fuzzy, c-format
+#: src/job.c:573
+#, c-format
msgid "%s[%s: %s] Error %d%s"
-msgstr "*** [%s] Fejl %d"
+msgstr "%s[%s: %s] Fejl %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** Venter på uafsluttede job...."
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "Levende underproces %p (%s) PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (eksternt)"
-#: job.c:831
-#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Høster tabende underproces %p PID %s %s\n"
-
-#: job.c:832
+#: src/job.c:898
#, c-format
msgid "Reaping winning child %p PID %s %s\n"
msgstr "Høster vindende underproces %p PID %s %s\n"
-#: job.c:839
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Høster tabende underproces %p PID %s %s\n"
+
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
-msgstr "Afrydder midlertidig jobfil %s\n"
+msgstr "Rydder midlertidig batchfil %s\n"
-#: job.c:845
-#, fuzzy, c-format
+#: src/job.c:956
+#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
-msgstr "Afrydder midlertidig jobfil %s\n"
+msgstr "Oprydning af midlertidig batchfil %s mislykkedes (%d)\n"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr "Fjerner underproces %p PID %s%s fra kæde.\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr "Frigav symbol for underproces %p (%s).\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "process_easy() fejlede ved igangsætning af proces (e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -704,104 +715,95 @@ msgstr ""
"\n"
"Talte %d argumenter i fejlet igangsætning\n"
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr "Sætter underproces %p (%s) PID %s%s på kæden.\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "Fik symbol for underproces %p (%s).\n"
-#: job.c:1838
-#, fuzzy, c-format
+#: src/job.c:1902
+#, c-format
msgid "%s: target '%s' does not exist"
-msgstr "touch: Arkivet '%s' findes ikke"
+msgstr "%s: målet \"%s\" findes ikke"
-#: job.c:1841
-#, fuzzy, c-format
+#: src/job.c:1905
+#, c-format
msgid "%s: update target '%s' due to: %s"
-msgstr "%sIngen regel til at skabe mål '%s' som behøves af '%s'%s"
+msgstr "%s: opdatér målet \"%s\" på grund af: %s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr "kan ikke gennemtvinge belastningsgrænser på dette styrestystem"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "kan ikke gennemtvinge belastningsgrænse: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr "ikke flere filhåndtag: Kunne ikke duplikere stdin\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr "ikke flere filhåndtag: Kunne ikke duplikere stdout\n"
-#: job.c:2074
-#, fuzzy
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
-msgstr "ikke flere filhåndtag: Kunne ikke duplikere stdin\n"
+msgstr "ikke flere filhåndtag: kunne ikke duplikere stdin\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr "Kunne ikke gendanne stdin\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr "Kunne ikke gendanne stdout\n"
-#: job.c:2105
-#, fuzzy
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr "Kunne ikke gendanne stdin\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr "make høstede underproces med pid %s, venter endnu på pid %s\n"
-#: job.c:2275
-#, fuzzy, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: Kommando ikke fundet"
-
-#: job.c:2277
-#, fuzzy, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s: Kommando ikke fundet"
-
-#: job.c:2337
+#: src/job.c:2623
#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s; Skalprogram ikke fundet"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr "spawnvpe: miljøplads er måske opbrugt"
-#: job.c:2584
-#, fuzzy, c-format
+#: src/job.c:2862
+#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
-msgstr "$SHELL ændret (var '%s', nu '%s')\n"
+msgstr "$SHELL ændret (var \"%s\", nu \"%s\")\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
-msgstr "Opretter midlertidig jobfil %s\n"
+msgstr "Opretter midlertidig batchfil %s\n"
-#: job.c:3030
-#, fuzzy
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
msgstr ""
-"Indhold af batchfil:%s\n"
-"\t%s\n"
+"Indhold af batchfil:\n"
+"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
@@ -810,58 +812,54 @@ msgstr ""
"Indhold af batchfil:%s\n"
"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr "%s (linje %d) Forkert skal-kontekst (!unixy && !batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr ""
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
-msgstr ""
+msgstr "Kunne ikke åbne global symboltabel: %s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
-msgstr ""
+msgstr "Det indlæste objekt %s er ikke erklæret som GPL-kompatibelt"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
-msgstr ""
+msgstr "Kunne ikke indlæse symbolet %s fra %s: %s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
-msgstr ""
+msgstr "Tomt symbolnavn ved indlæsning: %s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
-msgstr ""
+msgstr "Indlæser symbol %s fra %s\n"
-#: load.c:256
-#, fuzzy
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
-msgstr "Parallelle job (-j) er ikke understøttet på denne platform."
+msgstr "Operationen indlæs ('load') understøttes ikke på denne platform."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "Tilvalg:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr " -b, -m Ignoreret af hensyn til kompabilitet.\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr " -B, --always-make Skab alle mål betingelsesløst.\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
@@ -869,19 +867,19 @@ msgstr ""
" -C KATALOG, --directory=KATALOG\n"
" Skift allerførst til KATALOG.\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr ""
" -d Udskriv en masse fejlsøgningsinformation.\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
" --debug[=FLAG] Udskriv forskellige slags "
"fejlsøgningsinformation.\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
@@ -889,13 +887,14 @@ msgstr ""
" -e, --environment-overrides\n"
" Miljøvariable har forrang for makefiler.\n"
-#: main.c:353
+#: src/main.c:350
+#, fuzzy
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
" --eval=STRENG Evaluér STRENG som en makefil-erklæring.\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -903,15 +902,15 @@ msgstr ""
" -f FIL, --file=FIL, --makefile=FIL\n"
" Læs FIL som en makefil.\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help Udskriv denne besked og afslut.\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr " -i, --ignore-errors Ignorér fejl fra kommandoer.\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
@@ -919,7 +918,7 @@ msgstr ""
" -I KATALOG, --include-dir=KATALOG\n"
" Søg i KATALOG efter inkluderede makefiler.\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
@@ -927,13 +926,13 @@ msgstr ""
" -j [N], --jobs[=N] Tillad N samtidige job; uendelig mange job "
"uden argument.\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
" -k, --keep-going Fortsæt selvom nogen mål ikke kan skabes.\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
@@ -943,7 +942,7 @@ msgstr ""
" Start ikke flere job medmindre belastningen er "
"under N.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
@@ -951,7 +950,7 @@ msgstr ""
" -L, --check-symlink-times Brug sidste mtime mellem symbolske lænker og "
"mål.\n"
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
@@ -961,7 +960,7 @@ msgstr ""
" Udfør ikke nogen kommandoer; udskriv dem "
"bare.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
@@ -971,17 +970,20 @@ msgstr ""
" Anse FIL som værende meget gammel og genskab "
"den ikke.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
msgstr ""
+" -O[TYPE], --output-sync[=TYPE]\n"
+" Synkronisér udskrift af parallelle job efter "
+"TYPE\n"
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr " -p, --print-data-base Udskriv makes interne database.\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
@@ -990,20 +992,28 @@ msgstr ""
"angiver\n"
" om målet er tidssvarende.\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr ""
" -r, --no-builtin-rules Slå de indbyggede implicitte regler fra.\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr " -R, --no-builtin-variables Slå de indbyggede variabelværdier fra.\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr " -s, --silent, --quiet Udskriv ikke kommandoer.\n"
-#: main.c:393
+#: src/main.c:390
+#, fuzzy
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" -q, --question Udfør ingen kommandoer; afslutningskoden "
+"angiver\n"
+" om målet er tidssvarende.\n"
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
@@ -1011,27 +1021,25 @@ msgstr ""
" -S, --no-keep-going, --stop\n"
" Slår -k fra.\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
" -t, --touch Berør mål i stedet for at genskabe dem.\n"
-#: main.c:398
-#, fuzzy
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
-msgstr ""
-" -d Udskriv en masse fejlsøgningsinformation.\n"
+msgstr " --trace Udskriv trace-information.\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr " -v, --version Udskriv makes versionnummer og afslut.\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory Udskriv det aktuelle katalog.\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
@@ -1039,7 +1047,7 @@ msgstr ""
" --no-print-directory Slå -w fra, selv hvis det var slået til "
"automatisk.\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1047,33 +1055,34 @@ msgstr ""
" -W FIL, --what-if=FIL, --new-file=FIL, --assume-new=FIL\n"
" Anse FIL som værende nyskabt.\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
msgstr ""
" --warn-undefined-variables Advar når en udefineret variabel bruges.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "en tom streng er ugyldig som filnavn"
-#: main.c:766
-#, fuzzy, c-format
+#: src/main.c:754
+#, c-format
msgid "unknown debug level specification '%s'"
-msgstr "ukendt fejlsøgningsniveau-specifikation '%s'"
+msgstr "ukendt specifikation af fejlsøgningsniveau \"%s\""
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
-msgstr ""
+msgstr "ukendt type \"%s\" af output-sync"
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr "%s: Afbrydelse/undtagelse fanget (kode = 0x%lx, addr = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1088,135 +1097,146 @@ msgstr ""
"ExceptionFlags = %lx\n"
"ExceptionAddress = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "Adgangskrænkelse: skriveoperation på adresse 0x%p\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "Adgangskrænkelse: læseoperation på adresse 0x%p\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell() sætter default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr "find_and_set_shell()-stisøgning sætter default_shell = %s\n"
-#: main.c:1538
+#: src/main.c:1609
#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s er standset i 30 sekunder..."
-
-#: main.c:1540
-#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "udført sleep(30). Fortsætter.\n"
-
-#: main.c:1627
-#, fuzzy
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
-"advarsel: jobserver ikke tilgængelig: bruger -j1. Tilføj '+' til "
+"advarsel: jobserver ikke tilgængelig: bruger -j1. Tilføj \"+\" til "
"ophavsmakeregel."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
+#: src/main.c:1617
+#, fuzzy, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
msgstr "advarsel: tvunget -jN i undermake: slår jobserver tilstand fra."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr "Makefil fra standard-ind er angivet to gange."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (midlertidig fil)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (midlertidig fil)"
-#: main.c:2048
+#: src/main.c:2004
+#, fuzzy, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr "advarsel: tvunget -jN i undermake: slår jobserver tilstand fra."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr "Parallelle job (-j) er ikke understøttet på denne platform."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "Sætter tilbage til enkelt job-tilstand (-j1)."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr "Symbolske lænker understøttes ikke: Deaktiverer -L."
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "Opdaterer makefiler....\n"
-#: main.c:2195
-#, fuzzy, c-format
+#: src/main.c:2226
+#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
-msgstr "Makefilen '%s' får måske make til at gå i ring; genskaber den ikke.\n"
+msgstr ""
+"Makefilen \"%s\" får måske make til at køre i ring; genskaber den ikke.\n"
-#: main.c:2279
-#, fuzzy, c-format
+#: src/main.c:2303
+#, c-format
msgid "Failed to remake makefile '%s'."
-msgstr "Genskabelse af makefilen '%s' mislykkedes."
+msgstr "Genskabelse af makefilen \"%s\" mislykkedes."
-#: main.c:2299
-#, fuzzy, c-format
+#: src/main.c:2323
+#, c-format
msgid "Included makefile '%s' was not found."
-msgstr "Inkluderet makefil '%s' blev ikke fundet."
+msgstr "Inkluderet makefil \"%s\" blev ikke fundet."
-#: main.c:2304
-#, fuzzy, c-format
+#: src/main.c:2328
+#, c-format
msgid "Makefile '%s' was not found"
-msgstr "Makefil '%s' blev ikke fundet."
+msgstr "Makefilen \"%s\" blev ikke fundet"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "Kunne ikke skifte tilbage til det originale katalog."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "Udfører igen[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (midlertidig fil): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ".DEFAULT_GOAL indeholder mere end et mål"
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Ingen angivne mål og ingen makefil fundet"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "Ingen mål"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Ingen angivne mål og ingen makefil fundet"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "Opdaterer endemål....\n"
-#: main.c:2579
+# build?
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
-msgstr "advarsel: Fejl i urets tid opdaget. Din bygning kan være ukomplet."
+msgstr ""
+"advarsel: Der blev registreret en uoverensstemmelse i urets tid. Din "
+"kompilering kan være ufuldstændig."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "Brug: %s [tilvalg] [mål] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1225,7 +1245,7 @@ msgstr ""
"\n"
"Dette program er bygget til %s\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1234,32 +1254,32 @@ msgstr ""
"\n"
"Dette program er bygget til %s (%s)\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr "Send fejlmeldinger (på engelsk) til <bug-make@gnu.org>.\n"
-#: main.c:2870
-#, fuzzy, c-format
+#: src/main.c:2901
+#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
-msgstr "'-%s%s'-tilvalget kræver et strengargument, der ikke er tomt"
+msgstr "\"-%s%s\"-tilvalget kræver et strengargument, der ikke er tomt"
-#: main.c:2934
-#, fuzzy, c-format
+#: src/main.c:2965
+#, c-format
msgid "the '-%c' option requires a positive integer argument"
-msgstr "'-%c'-tilvalget kræver et positivt heltalligt argument"
+msgstr "\"-%c\"-tilvalget kræver et positivt heltalligt argument"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%sBygget til %s\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%sBygget til %s (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1272,7 +1292,7 @@ msgstr ""
"%sDer gives INGEN GARANTI i den grad, som dette tillades af loven.\n"
# %s giver dato og klokkeslæt
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1282,7 +1302,7 @@ msgstr ""
"# Makedatabase, udskrevet %s"
# %s giver dato og klokkeslæt
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1291,516 +1311,544 @@ msgstr ""
"\n"
"# Afsluttet makedatabase %s\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Ukendt fejl %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: bruger %lu (reelt %lu), gruppe %lu (reelt %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "Indledende adgang"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr "Brugeradgang"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "Make-adgang"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "Barneadgang"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: GÃ¥r til et ukendt katalog\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: Forlader et ukendt katalog\n"
-#: output.c:109
-#, fuzzy, c-format
+#: src/output.c:102
+#, c-format
msgid "%s: Entering directory '%s'\n"
-msgstr "%s: GÃ¥r til katalog '%s'\n"
+msgstr "%s: GÃ¥r til katalog \"%s\"\n"
-#: output.c:111
-#, fuzzy, c-format
+#: src/output.c:104
+#, c-format
msgid "%s: Leaving directory '%s'\n"
-msgstr "%s: Forlader katalog '%s'\n"
+msgstr "%s: Forlader katalog \"%s\"\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: GÃ¥r til et ukendt katalog\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: Forlader et ukendt katalog\n"
-#: output.c:120
-#, fuzzy, c-format
+#: src/output.c:113
+#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
-msgstr "%s[%u]: GÃ¥r til katalog '%s'\n"
+msgstr "%s[%u]: GÃ¥r til katalog \"%s\"\n"
-#: output.c:122
-#, fuzzy, c-format
+#: src/output.c:115
+#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
-msgstr "%s[%u]: Forlader katalog '%s'\n"
+msgstr "%s[%u]: Forlader katalog \"%s\"\n"
-#: output.c:495 output.c:497
-#, fuzzy
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
-msgstr "skrivefejl: %s"
+msgstr "skrivefejl: stdout"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". Stop.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+# build?
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+"-O[TYPE] (--output-sync[=TYPE]) er ikke konfigureret til denne kompilering."
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
-msgstr "oprettelse af jobledning"
+msgstr "opretter job-pipe"
-#: posixos.c:72 posixos.c:227
-#, fuzzy
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
-msgstr "oprettelse af jobledning"
+msgstr "kopierer job-pipe"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
-msgstr "klargøring af jobserver-ledning"
+msgstr "klargøring af jobserver-pipe"
-#: posixos.c:90
-#, fuzzy, c-format
+#: src/posixos.c:119
+#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
-msgstr "intern fejl: ugyldig '--jobserver-fds'-streng '%s'"
+msgstr "intern fejl: ugyldig \"--jobserver-auth\"-streng \"%s\""
# fd = fildeskriptor
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr "Jobserverklient (fd'er %d,%d)\n"
-#: posixos.c:109
-#, fuzzy
+#: src/posixos.c:138
msgid "jobserver pipeline"
-msgstr "klargøring af jobserver-ledning"
+msgstr "jobserver-pipe"
-#: posixos.c:154
+# ?
+#: src/posixos.c:186
msgid "write jobserver"
-msgstr "write jobserver"
+msgstr "skriv jobserver"
-#: posixos.c:268
-#, fuzzy
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr ""
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
-msgstr "read jobs pipe"
+msgstr "pselect job-pipe"
-#: posixos.c:279 posixos.c:391
+# ?
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
-msgstr "read jobs pipe"
+msgstr "læs job-pipe"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "Læser makefiler...\n"
-#: read.c:329
-#, fuzzy, c-format
+#: src/read.c:336
+#, c-format
msgid "Reading makefile '%s'"
-msgstr "Læser makefil '%s'"
+msgstr "Læser makefilen \"%s\""
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (ingen standard-endemål)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (søgesti)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (ikke nødvendig)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (ingen ~-udfoldning)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
-msgstr ""
+msgstr "Springer UTF-8-BOM over i makefilen \"%s\"\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
-msgstr ""
+msgstr "Springer UTF-8-BOM over i makefilbuffer\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "ugyldig syntaks i betingelse"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
-msgstr ""
+msgstr "%s: kunne ikke indlæse"
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
msgstr "kommandoer begynder før første mål"
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
msgstr "manglende regel før kommandoer"
-#: read.c:1124
-#, fuzzy
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
-msgstr " (mente du TAB i stedet for 8 mellemrum?)"
+msgstr "manglende skilletegn (mente du TAB i stedet for 8 mellemrum?)"
-#: read.c:1126
-#, fuzzy
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
-msgstr "manglende adskiller%s"
+msgstr "manglende skilletegn"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "manglende målmønster"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "flere målmønstre"
-#: read.c:1268
-#, fuzzy, c-format
+#: src/read.c:1289
+#, c-format
msgid "target pattern contains no '%%'"
-msgstr "målmønster indeholder ingen '%%'"
+msgstr "målmønster indeholder ingen \"%%\""
-#: read.c:1390
-#, fuzzy
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
-msgstr "manglende 'endif'"
+msgstr "mangler \"endif\""
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "tomt variabelnavn"
-#: read.c:1463
-#, fuzzy
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
-msgstr "overskydende tekst efter 'define'-direktiv"
+msgstr "overskydende tekst efter \"define\"-direktiv"
-#: read.c:1488
-#, fuzzy
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
-msgstr "manglende 'endef', uafsluttet 'define'"
+msgstr "manglende \"endef\", uafsluttet \"define\""
-#: read.c:1516
-#, fuzzy
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
-msgstr "overskydende tekst efter 'endef'-direktiv"
+msgstr "overskydende tekst efter \"endef\"-direktiv"
-#: read.c:1588
-#, fuzzy, c-format
+#: src/read.c:1603
+#, c-format
msgid "extraneous text after '%s' directive"
-msgstr "Overskydende tekst efter '%s'-direktiv"
+msgstr "overskydende tekst efter \"%s\"-direktiv"
-#: read.c:1589
-#, fuzzy, c-format
+#: src/read.c:1604
+#, c-format
msgid "extraneous '%s'"
-msgstr "fremmed '%s'"
+msgstr "overskydende \"%s\""
-#: read.c:1617
-#, fuzzy
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
-msgstr "kun én 'else' per betingelse"
+msgstr "kun én \"else\" per betingelse"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr "Misdannet målspecifik variabeldefinition"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr "der kan ikke defineres forudsætninger i kommandoer"
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr ""
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr "blandede implicitte og statiske mønsterregler"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "blandede implicitte og normale regler"
-#: read.c:2085
-#, fuzzy, c-format
+#: src/read.c:2107
+#, c-format
msgid "target '%s' doesn't match the target pattern"
-msgstr "mål '%s' passer ikke til målmønstret"
+msgstr "målet \"%s\" passer ikke til målmønstret"
-#: read.c:2100 read.c:2146
-#, fuzzy, c-format
+#: src/read.c:2122 src/read.c:2168
+#, c-format
msgid "target file '%s' has both : and :: entries"
-msgstr "målfil '%s' har både :- og ::-angivelser"
+msgstr "målfilen \"%s\" har både :- og ::-angivelser"
-#: read.c:2106
-#, fuzzy, c-format
+#: src/read.c:2128
+#, c-format
msgid "target '%s' given more than once in the same rule"
-msgstr "target '%s' optræder mere end én gang i samme regel."
+msgstr "målet \"%s\" optræder mere end én gang i samme regel"
-#: read.c:2116
-#, fuzzy, c-format
+#: src/read.c:2138
+#, c-format
msgid "warning: overriding recipe for target '%s'"
-msgstr "advarsel: tilsidesætter kommandoer for mål '%s'"
+msgstr "advarsel: tilsidesætter opskrift for målet \"%s\""
-#: read.c:2119
-#, fuzzy, c-format
+#: src/read.c:2141
+#, c-format
msgid "warning: ignoring old recipe for target '%s'"
-msgstr "advarsel: ignorerer gamle kommandoer for mål '%s'"
+msgstr "advarsel: ignorerer gammel opskrift for målet \"%s\""
-#: read.c:2223
-#, fuzzy
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
-msgstr "blandede implicitte og normale regler"
+msgstr "*** blandede implicitte og normale regler: forældet syntaks"
-#: read.c:2542
+#: src/read.c:2271
+#, fuzzy, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "advarsel: tilsidesætter opskrift for målet \"%s\""
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr "advarsel: NUL-tegn set; resten af linjen ignoreres"
-#: remake.c:226
-#, fuzzy, c-format
+#: src/remake.c:226
+#, c-format
msgid "Nothing to be done for '%s'."
-msgstr "Ingenting at gøre for '%s'."
+msgstr "Ingenting at gøre for \"%s\"."
-#: remake.c:227
-#, fuzzy, c-format
+#: src/remake.c:227
+#, c-format
msgid "'%s' is up to date."
-msgstr "'%s' er tidssvarende."
+msgstr "\"%s\" er tidssvarende."
-#: remake.c:323
-#, fuzzy, c-format
+#: src/remake.c:323
+#, c-format
msgid "Pruning file '%s'.\n"
-msgstr "Beskærer fil '%s'.\n"
+msgstr "Beskærer fil \"%s\".\n"
-#: remake.c:406
-#, fuzzy, c-format
+#: src/remake.c:389
+#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
-msgstr "%sIngen regel til at skabe mål '%s' som behøves af '%s'%s"
+msgstr "%sIngen regel til at skabe målet \"%s\" som behøves af \"%s\"%s"
-#: remake.c:416
-#, fuzzy, c-format
+#: src/remake.c:399
+#, c-format
msgid "%sNo rule to make target '%s'%s"
-msgstr "%sIngen regel til at skabe mål '%s'%s"
+msgstr "%sIngen regel til at skabe målet \"%s\"%s"
-#: remake.c:442
-#, fuzzy, c-format
+#: src/remake.c:425
+#, c-format
msgid "Considering target file '%s'.\n"
-msgstr "Overvejer målfil '%s'.\n"
+msgstr "Overvejer målfilen \"%s\".\n"
-#: remake.c:449
-#, fuzzy, c-format
+#: src/remake.c:432
+#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
-msgstr "Opdatering af fil '%s' er forgæves prøvet for nylig.\n"
+msgstr "Opdatering af fil \"%s\" er forgæves prøvet for nylig.\n"
-#: remake.c:461
-#, fuzzy, c-format
+#: src/remake.c:444
+#, c-format
msgid "File '%s' was considered already.\n"
-msgstr "Fil '%s' er allerede overvejet.\n"
+msgstr "Filen \"%s\" er allerede overvejet.\n"
-#: remake.c:471
-#, fuzzy, c-format
+#: src/remake.c:454
+#, c-format
msgid "Still updating file '%s'.\n"
-msgstr "Opdaterer stadig fil '%s'.\n"
+msgstr "Opdaterer stadig fil \"%s\".\n"
-#: remake.c:474
-#, fuzzy, c-format
+#: src/remake.c:457
+#, c-format
msgid "Finished updating file '%s'.\n"
-msgstr "Opdatering af fil '%s' afsluttet.\n"
+msgstr "Opdatering af fil \"%s\" afsluttet.\n"
-#: remake.c:503
-#, fuzzy, c-format
+#: src/remake.c:486
+#, c-format
msgid "File '%s' does not exist.\n"
-msgstr "Filen '%s' findes ikke.\n"
+msgstr "Filen \"%s\" findes ikke.\n"
-#: remake.c:511
-#, fuzzy, c-format
+#: src/remake.c:494
+#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
msgstr ""
-"*** Advarsel: .LOW_RESOLUTION_TIME-fil '%s' har et tidsstempel med høj "
+"*** Advarsel: .LOW_RESOLUTION_TIME-fil \"%s\" har et tidsstempel med høj "
"opløsning"
-#: remake.c:524 remake.c:1056
-#, fuzzy, c-format
+#: src/remake.c:507 src/remake.c:1039
+#, c-format
msgid "Found an implicit rule for '%s'.\n"
-msgstr "Fandt en implicit regel for '%s'.\n"
+msgstr "Fandt en implicit regel for \"%s\".\n"
-#: remake.c:526 remake.c:1058
-#, fuzzy, c-format
+#: src/remake.c:509 src/remake.c:1041
+#, c-format
msgid "No implicit rule found for '%s'.\n"
-msgstr "Ingen implicit regel for '%s' fundet.\n"
+msgstr "Ingen implicit regel for \"%s\" fundet.\n"
-#: remake.c:532
-#, fuzzy, c-format
+#: src/remake.c:515
+#, c-format
msgid "Using default recipe for '%s'.\n"
-msgstr "Bruger standardkommandoer for '%s'.\n"
+msgstr "Bruger standardopskrift for \"%s\".\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "Cirkulær %s <- %s afhængighed opgivet."
-#: remake.c:691
-#, fuzzy, c-format
+#: src/remake.c:674
+#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
-msgstr "Afsluttet forudsætningerne for målfil '%s'.\n"
+msgstr "Afsluttede forudsætningerne for målfilen \"%s\".\n"
-#: remake.c:697
-#, fuzzy, c-format
+#: src/remake.c:680
+#, c-format
msgid "The prerequisites of '%s' are being made.\n"
-msgstr "Forudsætningerne for '%s' er ved at blive skabt.\n"
+msgstr "Forudsætningerne for \"%s\" er ved at blive skabt.\n"
-#: remake.c:711
-#, fuzzy, c-format
+#: src/remake.c:694
+#, c-format
msgid "Giving up on target file '%s'.\n"
-msgstr "Opgiver målfil '%s'.\n"
+msgstr "Opgiver målfil \"%s\".\n"
-#: remake.c:716
-#, fuzzy, c-format
+#: src/remake.c:699
+#, c-format
msgid "Target '%s' not remade because of errors."
-msgstr "Målet '%s' ikke genskabt på grund af fejl."
+msgstr "Målet \"%s\" ikke genskabt på grund af fejl."
-#: remake.c:768
-#, fuzzy, c-format
+#: src/remake.c:751
+#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
-msgstr "Forudsætningen '%s' angiver kun rækkefølgen ift. målet '%s'.\n"
+msgstr "Forudsætningen \"%s\" angiver kun rækkefølgen ift. målet \"%s\".\n"
-#: remake.c:773
-#, fuzzy, c-format
+#: src/remake.c:756
+#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
-msgstr "Forudsætningen '%s' for målet '%s' findes ikke.\n"
+msgstr "Forudsætningen \"%s\" for målet \"%s\" findes ikke.\n"
-#: remake.c:778
-#, fuzzy, c-format
+#: src/remake.c:761
+#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
-msgstr "Forudsætningen '%s' er nyere end målet '%s'.\n"
+msgstr "Forudsætningen \"%s\" er nyere end målet \"%s\".\n"
-#: remake.c:781
-#, fuzzy, c-format
+#: src/remake.c:764
+#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
-msgstr "Forudsætningen '%s' er ældre end målet '%s'.\n"
+msgstr "Forudsætningen \"%s\" er ældre end målet \"%s\".\n"
-#: remake.c:799
-#, fuzzy, c-format
+#: src/remake.c:782
+#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
-msgstr "Målet '%s' er med dobbelt-kolon og har ingen forudsætninger.\n"
+msgstr "Målet \"%s\" er med dobbelt-kolon og har ingen forudsætninger.\n"
-#: remake.c:806
-#, fuzzy, c-format
+#: src/remake.c:789
+#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
-msgstr "Ingen kommandoer til '%s', og ingen forudsætninger har ændret sig.\n"
+msgstr "Ingen opskrift til \"%s\", og ingen forudsætninger har ændret sig.\n"
-#: remake.c:811
-#, fuzzy, c-format
+#: src/remake.c:794
+#, c-format
msgid "Making '%s' due to always-make flag.\n"
-msgstr "Skaber '%s' pga. \"always-make\"-flag.\n"
+msgstr "Skaber \"%s\" pga. \"always-make\"-flag.\n"
-#: remake.c:819
-#, fuzzy, c-format
+#: src/remake.c:802
+#, c-format
msgid "No need to remake target '%s'"
-msgstr "Ingen grund til at genskabe målet '%s'"
+msgstr "Ingen grund til at genskabe målet \"%s\""
-#: remake.c:821
-#, fuzzy, c-format
+#: src/remake.c:804
+#, c-format
msgid "; using VPATH name '%s'"
-msgstr "; bruger VPATH-navnet '%s'"
+msgstr "; bruger VPATH-navnet \"%s\""
-#: remake.c:841
-#, fuzzy, c-format
+#: src/remake.c:824
+#, c-format
msgid "Must remake target '%s'.\n"
-msgstr "Skal genskabe målet '%s'.\n"
+msgstr "Skal genskabe målet \"%s\".\n"
-#: remake.c:847
-#, fuzzy, c-format
+#: src/remake.c:830
+#, c-format
msgid " Ignoring VPATH name '%s'.\n"
-msgstr " Ignorerer VPATH-navnet '%s'.\n"
+msgstr " Ignorerer VPATH-navnet \"%s\".\n"
-#: remake.c:856
-#, fuzzy, c-format
+#: src/remake.c:839
+#, c-format
msgid "Recipe of '%s' is being run.\n"
-msgstr "Kommandoerne for '%s' er ved at blive kørt.\n"
+msgstr "Opskriften for \"%s\" er ved at blive kørt.\n"
-#: remake.c:863
-#, fuzzy, c-format
+#: src/remake.c:846
+#, c-format
msgid "Failed to remake target file '%s'.\n"
-msgstr "Genskabelse af målfil '%s' mislykkedes.\n"
+msgstr "Genskabelse af målfilen \"%s\" mislykkedes.\n"
-#: remake.c:866
-#, fuzzy, c-format
+#: src/remake.c:849
+#, c-format
msgid "Successfully remade target file '%s'.\n"
-msgstr "MÃ¥lfil '%s' genskabt.\n"
+msgstr "MÃ¥lfilen \"%s\" genskabt.\n"
-#: remake.c:869
-#, fuzzy, c-format
+#: src/remake.c:852
+#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
-msgstr "Med -q trænger målfilen '%s' til at blive genskabt.\n"
+msgstr "Det er nødvendigt at genskabe målfilen \"%s\" med -q.\n"
-#: remake.c:1064
-#, fuzzy, c-format
+#: src/remake.c:1047
+#, c-format
msgid "Using default commands for '%s'.\n"
-msgstr "Bruger standardkommandoer for '%s'.\n"
+msgstr "Bruger standardkommandoer for \"%s\".\n"
-#: remake.c:1430
-#, fuzzy, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "Advarsel: Ændringstiden for filen '%s' er i fremtiden"
-
-#: remake.c:1444
-#, fuzzy, c-format
+#: src/remake.c:1422
+#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
-msgstr "Advarsel: Filen '%s' har ændringstidspunkt %s s i fremtiden"
+msgstr "Advarsel: Filen \"%s\" har modifikationstidspunkt %s s i fremtiden"
-#: remake.c:1647
-#, fuzzy, c-format
+#: src/remake.c:1662
+#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
-msgstr ".LIBPATTERNS-element '%s' er ikke et mønster"
+msgstr ".LIBPATTERNS-elementet \"%s\" er ikke et mønster"
# "remote job exportation interface to the Customs daemon": jeg aner ikke
# hvad der er tale om. I øvrigt ser remote-cstms.c forældet/ubrugt ud, og
# koden er ikke understøttet af GNU...
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr "Customs kan ikke eksporteres: %s\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
msgstr ""
"\n"
-"# Implicitte regler."
+"# Implicitte regler"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1808,274 +1856,274 @@ msgstr ""
"\n"
"# Ingen implicitte regler."
-#: rule.c:514
-#, c-format
+#: src/rule.c:548
+#, fuzzy, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
"# %u implicitte regler, %u"
-#: rule.c:523
-msgid " terminal."
-msgstr " terminale."
-
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "FEJL: forkert num_pattern_rules! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "ukendt signal"
# De fleste af signalnavnene fra signame.c er kopieret fra libc.da.po,
# kun ganske enkelte findes ikke der.
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Læg på"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "Afbrudt"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Afslut"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "Ulovlig instruktion"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "Sporings-/stoppunkts-fælde"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Afbrudt"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "IOT_fælde"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "Emulatorfælde"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "Undtagelsestilfælde ved flydendetals-operation"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Dræbt"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "Busfejl"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Lagersegmentfejl"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "Ugyldigt systemkald"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
-msgstr "Røret blev brudt"
+msgstr "Pipe blev brudt"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Alarmen gik"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "Termineret"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "Brugerdefineret signal 1"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "Brugerdefineret signal 2"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "Barnet afsluttet"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Strømmen gik"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Stoppet"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Stoppet (ville læse fra tty)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Stoppet (ville skrive til tty)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Stoppet (signal)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "Begrænsning af CPU-tid overskredet"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "Grænse for filstørrelse overskredet"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "Virtuel tidsgrænse overskredet"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "Profileringstiden udløb"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "Vinduet blev ændret"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Fortsættes"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "Kritisk I/O-tilstand"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "I/O mulig"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "Resurse tabt"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Faresignal"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Informationsforespørgsel"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "Flydendetalshjælpeprocessor ikke tilgængelig"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
"%s No strcache buffers\n"
msgstr ""
+"\n"
+"%s Ingen strcache-buffere\n"
-#: strcache.c:304
-#, fuzzy, c-format
+#: src/strcache.c:304
+#, c-format
msgid ""
"\n"
"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
"B\n"
msgstr ""
-"%s strcache brugt: total = %d (%d) / maks = %d / min = %d / gnmsn = %d\n"
+"\n"
+"%s strcache-buffere: %lu (%lu) / strenge = %lu / lager = %lu B / middel = "
+"%lu B\n"
-#: strcache.c:308
-#, c-format
+#: src/strcache.c:308
+#, fuzzy, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
+"%s nuværende buf: størrelse = %hu B / brugt = %hu B / antal = %hu / middel = "
+"%hu B\n"
-#: strcache.c:319
-#, fuzzy, c-format
+# Ikke sikker på hvad %s er
+#: src/strcache.c:319
+#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
-msgstr ""
-"%s strcache brugt: total = %d (%d) / maks = %d / min = %d / gnmsn = %d\n"
+msgstr "%s øvrigt brugt: i alt = %lu B / antal = %lu / middel = %lu B\n"
-#: strcache.c:322
-#, fuzzy, c-format
+#: src/strcache.c:322
+#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
-msgstr "%s strcache fri: total = %d (%d) / maks = %d / min = %d / gnmsn = %d\n"
+msgstr ""
+"%s øvrigt frit: i alt = %lu B / maks = %lu B / min = %lu B / middel = %hu B\n"
-#: strcache.c:326
-#, fuzzy, c-format
+#: src/strcache.c:326
+#, c-format
msgid ""
"\n"
"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
msgstr ""
"\n"
-"%s # strenge i strcache: %d / opslag = %lu / fundne = %lu\n"
+"%s strcache-ydelse: opslag = %lu / træffere = %lu%%\n"
-#: strcache.c:328
-#, fuzzy
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
msgstr ""
-"\n"
-"# Statistik for fil-hash-spande:\n"
+"# statistik for hashtabel:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "automatisk"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "forvalgt"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "miljø"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "makefil"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "miljø med -e"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "kommandolinje"
-#: variable.c:1647
-#, fuzzy
+#: src/variable.c:1671
msgid "'override' directive"
-msgstr "'override'-direktiv"
+msgstr "\"override\"-direktiv"
-#: variable.c:1658
-#, fuzzy, c-format
+#: src/variable.c:1682
+#, c-format
msgid " (from '%s', line %lu)"
-msgstr " (fra '%s', linje %lu)"
+msgstr " (fra \"%s\", linje %lu)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr "# Statistik for variabelsæt-hash-spande:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2083,7 +2131,7 @@ msgstr ""
"\n"
"# Variabler\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
@@ -2091,7 +2139,7 @@ msgstr ""
"\n"
"# Mønsterspecifikke variabelværdier"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2099,7 +2147,7 @@ msgstr ""
"\n"
"# Ingen mønsterspecifikke variabelværdier."
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
@@ -2108,48 +2156,48 @@ msgstr ""
"\n"
"# %u mønsterspecifikke variabelværdier"
-#: variable.h:224
-#, fuzzy, c-format
+#: src/variable.h:229
+#, c-format
msgid "warning: undefined variable '%.*s'"
-msgstr "advarsel: udefineret vaiabel '%.*s'"
+msgstr "advarsel: udefineret variabel \"%.*s\""
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr "sys$search() mislykkedes med %d\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr ""
"-advarsel, du kan blive nødt til at genetablere CTRL-Y-behandling fra DCL.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "BUILTIN CD %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
-msgstr ""
+msgstr "DCL: %s\n"
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr "Tilføj uddata til slutningen af %s\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr "Tilføj %.*s og ryd op\n"
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "Udfører i stedet %s\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2157,72 +2205,92 @@ msgstr ""
"\n"
"# VPATH-søgestier\n"
-#: vpath.c:620
-#, fuzzy
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
-msgstr "# Ingen 'vpath'-søgestier."
+msgstr "# Ingen \"vpath\"-søgestier."
-#: vpath.c:622
-#, fuzzy, c-format
+#: src/vpath.c:622
+#, c-format
msgid ""
"\n"
"# %u 'vpath' search paths.\n"
msgstr ""
"\n"
-"# %u 'vpath'-søgestier.\n"
+"# %u \"vpath\"-søgestier.\n"
-#: vpath.c:625
-#, fuzzy
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
msgstr ""
"\n"
-"# Ingen generel ('VPATH'-variabel) søgesti."
+"# Ingen generel (\"VPATH\"-variabel) søgesti."
-#: vpath.c:631
-#, fuzzy
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
"# "
msgstr ""
"\n"
-"# Generel ('VPATH'-variabel) søgesti:\n"
+"# Generel (\"VPATH\"-variabel) søgesti:\n"
"# "
-# fd = fildeskriptor
-#: w32/w32os.c:46
-#, fuzzy, c-format
+#: src/w32/w32os.c:44
+#, c-format
msgid "Jobserver slots limited to %d\n"
-msgstr "Jobserverklient (fd'er %d,%d)\n"
+msgstr "Jobserverpladser begrænset til %d\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
-msgstr ""
+msgstr "opretter jobserver-semafor: (Fejl %ld: %s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
-msgstr ""
+msgstr "intern fejl: kan ikke åbne jobserver-semafor \"%s\": (Fejl %ld: %s)"
-# fd = fildeskriptor
-#: w32/w32os.c:84
-#, fuzzy, c-format
+#: src/w32/w32os.c:82
+#, c-format
msgid "Jobserver client (semaphore %s)\n"
-msgstr "Jobserverklient (fd'er %d,%d)\n"
+msgstr "Jobserverklient (semafor %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
-msgstr ""
+msgstr "frigiv jobserver-semafor: (Fejl %ld: %s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
-msgstr ""
+msgstr "ventende på semafor eller underproces: (Fejl %ld: %s)"
+
+#~ msgid "%s: %s: Command not found\n"
+#~ msgstr "%s: %s: Kommando ikke fundet\n"
+
+#~ msgid "%s[%u]: %s: Command not found\n"
+#~ msgstr "%s[%u]: %s: Kommando ikke fundet\n"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s; Skalprogram ikke fundet"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s er standset i 30 sekunder..."
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "udført sleep(30). Fortsætter.\n"
+
+#~ msgid "Unknown error %d"
+#~ msgstr "Ukendt fejl %d"
+
+# "modifikationstid" her fordi ændringstid er 'change time' som er noget andet!
+#~ msgid "Warning: File '%s' has modification time in the future"
+#~ msgstr "Advarsel: Modifikationstiden for filen \"%s\" er i fremtiden"
+
+#~ msgid " terminal."
+#~ msgstr " terminale."
#~ msgid "# Invalid value in `update_status' member!"
#~ msgstr "# Ugyldig værdi i 'update_status'-felt!"
diff --git a/po/de.gmo b/po/de.gmo
index 3ba26cd..4d9301b 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index ada4fc3..8359f3b 100644
--- a/po/de.po
+++ b/po/de.po
@@ -14,131 +14,133 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: make 4.1.90\n"
+"Project-Id-Version: make 4.2.1\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
-"PO-Revision-Date: 2016-04-25 09:47+0200\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2016-06-20 15:03+0200\n"
"Last-Translator: Philipp Thomas <pth@suse.de>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
-#: ar.c:46
+#: src/ar.c:46
#, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "Versuch, eine nicht unterstützte Funktionalität zu verwenden: „%s“"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr ""
"VMS bietet keine Möglichkeit einer Änderung \n"
"der Zeitmarken von Archiveinträgen"
-#: ar.c:147
+#: src/ar.c:147
#, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "touch: Archiv „%s“ existiert nicht"
-#: ar.c:150
+#: src/ar.c:150
#, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "touch: „%s“ ist kein gültiges Archiv"
-#: ar.c:157
+#: src/ar.c:157
#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "touch: Eintrag „%s“ existiert nicht in „%s“"
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr ""
"touch: Ungültiger Rückgabewert beim Zugriff \n"
"von ar_member_touch auf „%s“"
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr "„lbr$set_module()“ konnte keine Modulinformation auslesen; Status = %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "„lbr$ini_control()“ scheiterte mit Status = %d"
-#: arscan.c:261
+#: src/arscan.c:261
#, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr ""
"Die Bibliothek „%s“ konnte nicht geöffnet werden um nach Eintragsstatus %d "
"zu suchen"
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr ""
"Eintrag „%s“ %s: \n"
"%ld Bytes an Position %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (der Name ist möglicherweise abgeschnitten)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Datum %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " Nutzer-ID = %d, Gruppen-ID = %d, Modus = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr "Die Regel hat zu viele Zeilen (%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** Abbruch.\n"
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr "*** [%s] Archiveintrag „%s“ ist möglicherweise falsch; nicht gelöscht"
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr "*** Archiveintrag „%s“ ist möglicherweise falsch; nicht gelöscht"
-#: commands.c:645
+#: src/commands.c:646
#, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] Datei „%s“ wird gelöscht"
-#: commands.c:647
+#: src/commands.c:648
#, c-format
msgid "*** Deleting file '%s'"
msgstr "*** Datei „%s“ wird gelöscht"
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
msgstr "# Auszuführende Regel"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (eingebaut):"
-#: commands.c:688
+#: src/commands.c:689
#, c-format
msgid " (from '%s', line %lu):\n"
msgstr " (aus „%s“, Zeile %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -146,234 +148,234 @@ msgstr ""
"\n"
"# Verzeichnisse\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: Status konnte nicht festgestellt werden.\n"
-#: dir.c:1085
-#, fuzzy
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
msgstr ""
-"# %s ( Schlüssel (key) %s, letzte Änderung (mtime) %d): \n"
+"# %s ( Schlüssel %s, letzte Änderung %I64u): Öffnen scheiterte.\n"
"Konnte nicht geöffnet werden.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr ""
"# %s (Gerät %d, Inode [%d,%d,%d]): \n"
"Konnte nicht geöffnet werden.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr ""
"# %s (Gerät %ld, Inode %ld): \n"
"Konnte nicht geöffnet werden.\n"
-#: dir.c:1122
-#, fuzzy
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
-msgstr "# %s (Schlüssel (key) %s, letzte Änderung (mtime) %d): "
+msgstr "# %s (Schlüssel %s, letzte Änderung %%I64u): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (Gerät %d, Inode [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (Gerät %ld, Inode %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "Keine"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " Dateien, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "keine"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " Unmöglichkeiten"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " bisher."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " Unmöglichkeiten in %lu Verzeichnissen.\n"
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr "Rekursive Variable „%s“ referenziert sich (schließlich) selbst"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "Nicht abgeschlossene Variablenreferenz"
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr "Die Regel für die Datei „%s“ wurde in %s angegeben:%lu,"
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr ""
"Die Regel für die Datei „%s“ wurden aufgrund \n"
"der Suche nach impliziten Regeln gefunden,"
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr ""
"aber „%s“ wird jetzt als dieselbe Datei \n"
"wie „%s“ betrachtet."
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr ""
"Die Regel für „%s“ wird ignoriert, \n"
"die für „%s“ wird bevorzugt."
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr ""
"„%s“ mit einfachem Doppelpunkt kann nicht in \n"
"„%s“ mit doppeltem Doppelpunkt geändert werden"
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr ""
"„%s“ mit doppeltem Doppelpunkt kann nicht in \n"
"„%s“ mit einfachem Doppelpunkt geändert werden"
-#: file.c:408
+#: src/file.c:408
#, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "*** Löschen der übergangsweise angelegten Datei „%s“"
-#: file.c:412
+#: src/file.c:412
+#, fuzzy, c-format
msgid "Removing intermediate files...\n"
msgstr "Die übergangsweise angelegte Datei „%s“ wird gelöscht...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "Aktuelle Zeit"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: Zeitstempel außerhalb des Gültigkeitsbereichs; %s wird ersetzt"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# Dies ist kein Ziel:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# Wertvolle Datei (benötigt von .PRECIOUS)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# Vorgetäuschtes Ziel (benötigt von .PHONY)."
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# Kommandozeilen-Ziel (target)."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr "# Eine standardmässige, MAKEFILES oder -include/sinclude Makedatei."
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
msgstr "# Eingebaute Regel"
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# Die Suche nach impliziten Regeln wurde durchgeführt."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# Die Suche nach impliziten Regeln wurde nicht durchgeführt."
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr "# Wurzel impliziter/statischer Muster: „%s“\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr "# Datei ist ein Zwischenschritt in den Abhängigkeiten."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# Erzeugt außerdem:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# Zeit der letzten Änderung wurde nicht überprüft."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# Die Datei existiert nicht."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# Datei ist sehr alt."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# Zuletzt geändert %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# Datei wurde aktualisiert."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# Datei wurde nicht aktualisiert."
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# Derzeit laufende Regel (DAS IST EIN FEHLER)."
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr "# Derzeit läuft die Regel für Abhängigkeiten (DAS IST EIN FEHLER)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# Erfolgreich aktualisiert."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# Eine Aktualisierung ist notwendig (-q ist angegeben)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# Aktualisierung ist fehlgeschlagen."
-#: file.c:1032
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
msgstr "# Ungültiger Wert im „command_state“-Strukturelement!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -381,7 +383,7 @@ msgstr ""
"\n"
"# Dateien"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -391,337 +393,345 @@ msgstr ""
"# Statistik der Hash-Tabelle für Dateien:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr "%s: Feld „%s“ wird nicht zwischengespeichert: %s"
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
msgstr "Nicht-numerisches erstes Argument für die „word“-Funktion"
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr "Das erste Argument für die „word“-Funktion muss größer als 0 sein"
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
msgstr "Nicht-numerisches erstes Argument für die „wordlist“-Funktion"
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
msgstr "Nicht-numerisches zweites Argument zur „wordlist“-Funktion"
-#: function.c:1525
+#: src/function.c:1533
#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "„windows32_openpipe“: „DuplicateHandle(In)“ schlug fehl (e=%ld)\n"
-#: function.c:1549
+#: src/function.c:1557
#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr "„cwindows32_openpipe“: „DuplicateHandle(Err)“ schlug fehl (e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "„CreatePipe()“ schlug fehl (e=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe(): process_init_fd() schlug fehl\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "Die temporäre Stapelverarbeitungsdatei %s wird gelöscht\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr "Datei: fehlender Dateiname"
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
msgstr "Öffnen: %s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
msgstr "Schreiben: %s: %s"
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, c-format
msgid "close: %s: %s"
msgstr "schließend: %s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr "Datei: zu viele Argumente"
-#: function.c:2262
+#: src/function.c:2277
#, c-format
msgid "read: %s: %s"
msgstr "Lesen: %s: %s"
-#: function.c:2275
+#: src/function.c:2290
#, c-format
msgid "file: invalid file operation: %s"
msgstr "Unzulässige Dateioperation: %s"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr "Zuwenig Argumente (%d) für die Funktion „%s“"
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "Auf dieser Rechnerkonfiguration nicht implementiert: Funktion „%s“"
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr "Nicht beendeter Aufruf der Funktion „%s“: „%c“ fehlt"
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr "Leerer Funktionsname"
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr "Unzulässiger Funktionsname: %s"
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr "Der Funktionsname ist zu lang: %s"
-#: function.c:2657
-#, fuzzy, c-format
+#: src/function.c:2674
+#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
-msgstr "Ungültige minimale Anzahl von Argumenten (%d) für die Funktion „%s“"
+msgstr "Ungültige minimale Anzahl von Argumenten (%u) für die Funktion „%s“"
-#: function.c:2660
-#, fuzzy, c-format
+#: src/function.c:2677
+#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
-msgstr "Ungülte maximale Anzahl an Argumenten (%d) für die Funktion „%s“"
+msgstr "Ungülte maximale Anzahl an Argumenten (%u) für die Funktion „%s“"
-#: getopt.c:659
+#: src/getopt.c:659
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: Option „%s“ ist mehrdeutig\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: Option „--%s“ erlaubt kein Argument\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: Option „%c%s“ erlaubt kein Argument\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: Option „%s“ erfordert ein Argument\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: unbekannte Option „--%s“\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: unbekannte Option „%c%s“\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: unzulässige Option -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: ungültige Option -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: Option erfordert ein Argument -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: Option „-W %s“ ist mehrdeutig\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: Option „-W %s“ erlaubt kein Argument\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr "guile: Verarbeite „%s“\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr "guile: begutachte „%s“\n"
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr ""
"es können keine %lu Bytes für die Hashtabelle reserviert werden: "
"Hauptspeicher erschöpft"
-#: hash.c:280
-#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
+#: src/hash.c:280
+#, fuzzy, c-format
+msgid "Load=%lu/%lu=%.0f%%, "
msgstr "Auslastung=%ld/%ld=%.0f%%, "
-#: hash.c:282
-#, c-format
-msgid "Rehash=%d, "
+#: src/hash.c:282
+#, fuzzy, c-format
+msgid "Rehash=%u, "
msgstr "Rehash=%d, "
-#: hash.c:283
-#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
+#: src/hash.c:283
+#, fuzzy, c-format
+msgid "Collisions=%lu/%lu=%.0f%%"
msgstr "Kollisionen=%ld/%ld%.0f%%"
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr "Es wird nach einer impliziten Regel für „%s“ gesucht.\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr ""
"Es wird nach einer impliziten Regel für Archiveinträge für „%s“ gesucht.\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr "Rekursion in den impliziten Regeln wird vermieden.\n"
-#: implicit.c:486
-#, c-format
-msgid "Stem too long: '%.*s'.\n"
+#: src/implicit.c:484
+#, fuzzy, c-format
+msgid "Stem too long: '%s%.*s'.\n"
msgstr "Wurzel zu lang: „%.*s“.\n"
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr "Muster-Regel mit Wurzel „%.*s“ wird probiert.\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr "Unmögliche Voraussetzung „%s“ für eine Regel wird abgelehnt.\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr "Unmögliche implizite Voraussetzung „%s“ wird abgelehnt.\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr "Regel-Voraussetzung „%s“ wird auprobiert.\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr "Implizite Voraussetzung „%s“ wird ausprobiert.\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr "Die Voraussetzung „%s“ wurde als VPATH „%s“ gefunden\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr ""
"Es wird nach einer Regel mit der übergangsweise verwendeten Datei „%s“ "
"gesucht.\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr "Eine temporäre Datei kann nicht erzeugt werden\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (Speicherauszug erstellt)"
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr " (ignoriert)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
msgstr "<eingebaut>"
-#: job.c:510
+#: src/job.c:573
#, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "%s[%s: %s] Fehler %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** Es wird auf noch nicht beendete Prozesse gewartet...."
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "Aktiver Kindprozess %p (%s) PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (entfernt)"
-#: job.c:831
-#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Sammle erfolglosen Kindprozess %p PID %s %s\n"
-
-#: job.c:832
+#: src/job.c:898
#, c-format
msgid "Reaping winning child %p PID %s %s\n"
msgstr "Sammle erfolgreichen Kindprozess %p PID %s %s\n"
-#: job.c:839
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Sammle erfolglosen Kindprozess %p PID %s %s\n"
+
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "Lösche temporäre Stapelverarbeitungsdatei „%s“\n"
-#: job.c:845
+#: src/job.c:956
#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr "Löschen der temporären Stapelverarbeitungsdatei „%s“ scheiterte (%d)\n"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr "Entferne Kindprozess %p PID %s%s aus der Kette.\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr "Token des Kindprozesses %p PID (%s) freigegeben.\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "„process_easy()“ konnte den Prozess nicht starten (e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -730,103 +740,97 @@ msgstr ""
"\n"
"%d Argumente gehörten zum fehlgeschlagenen Prozessstart\n"
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr "Nehme Kindprozess %p (%s) PID %s%s in die Kette auf.\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "Token für den Kindprozess %p (%s) erhalten.\n"
-#: job.c:1838
+#: src/job.c:1902
#, c-format
msgid "%s: target '%s' does not exist"
msgstr "%s: Archiv „%s“ existiert nicht"
-#: job.c:1841
+#: src/job.c:1905
#, c-format
msgid "%s: update target '%s' due to: %s"
msgstr "%s: Ziel „%s“ wird aktualisiert wegen: %s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr ""
"Auf diesem Betriebssystem kann die Einhaltung\n"
"der Lastbeschränkung nicht erzwungen werden"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "Lasteinschränkung kann nicht erzwungen werden: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr ""
"Keine weiteren Dateireferenzen verfügbar: die Standardeingabe konnte\n"
"nicht dupliziert werden\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr ""
"Keine weiteren Dateireferenzen verfügbar: die Standardausgabe konnte\n"
"nicht dupliziert werden\n"
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr ""
"Keine weiteren Dateireferenzen verfügbar: Standardfehler konnte\n"
"nicht dupliziert werden\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr "Die Standardeingabe konnte nicht wieder hergestellt werden\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr "Die Standardausgabe konnte nicht wieder hergestellt werden\n"
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr "Standardfehler konnte nicht wieder hergestellt werden\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr ""
"„make“ registrierte die Beendigung des Kindprozesses mit ID %s,\n"
"wartet jedoch noch auf den Prozess mit ID %s.\n"
-#: job.c:2275
-#, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: %s: Kommando nicht gefunden\n"
-
-#: job.c:2277
-#, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s[%u]: %s: Befehl nicht gefunden\n"
-
-#: job.c:2337
+#: src/job.c:2623
#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: Shell-Programm wurde nicht gefunden"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr "spawnvpe: der Platz in der Programmumgebung könnte erschöpft sein"
-#: job.c:2584
+#: src/job.c:2862
#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "$SHELL gewechselt (war „%s“, ist jetzt „%s“)\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr "Temporäre Stapelverarbeitungsdatei %s wird erstellt\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
@@ -834,7 +838,7 @@ msgstr ""
"Inhalt der Stapelverarbeitungsdatei:\n"
"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
@@ -843,59 +847,55 @@ msgstr ""
"Inhalt der Stapelverarbeitungsdatei:%s\n"
"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr "%s (Zeile %d) Falscher Shell-Kontext (!unixy && !batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr ""
-"-O[TYPE] (--output-sync[=TYPE]) ist für diese Bau-Aufgabe nicht konfiguriert."
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr "Die globale Symboltabelle konnte nicht geöffnet werden: %s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr "Ds geladede Objekt %s wurde nicht als GPL-kompatibel deklariert"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr "Symbol %s konnte nicht aus %s geladen werden: %s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr "Zu ladedender Symbolname ist leer: %s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr "Symbol %s wird aus %s geladen\n"
-#: load.c:256
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr "Die Operation „load“ wird auf dieser Plattform nicht unterstützt."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "Optionen:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr ""
" -b, -m Wird aus Kompatibilitätsgründen ignoriert\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr " -B, --always-make Alle Ziele ohne Bedingungen erstellen\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
@@ -904,19 +904,19 @@ msgstr ""
" In VERZEICHNIS wechseln, bevor etwas getan "
"wird\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr ""
" -d Viele Informationen zur Fehlersuche ausgeben.\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
" --debug[=KENNUNGEN] Verschiedene Arten von Debug-Information "
"ausgeben\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
@@ -925,14 +925,15 @@ msgstr ""
" Umgebungsvariablen überschreiben „make“-"
"Steuerdateien\n"
-#: main.c:353
+#: src/main.c:350
+#, fuzzy
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
" --eval=ZEIENKETTE ZEICHENKETTE wie einen Makedatei-Eintrag "
"auswerten.\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -940,15 +941,15 @@ msgstr ""
" -f DATEI, --file=DATEI, --makefile=DATEI\n"
" DATEI als Makefile lesen\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help Diese Meldung ausgeben und beenden\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr " -i, --ignore-errors Fehler in Regeln werden irgnoriert\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
@@ -957,7 +958,7 @@ msgstr ""
" VERZEICHNIS nach eingebundenen\n"
" Makedateien durchsuchen\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
@@ -966,14 +967,14 @@ msgstr ""
"Anzahl \n"
" von Jobs ohne Argument\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
" -k, --keep-going Weiterlaufen, auch wenn einige Targets nicht\n"
" erzeugt werden konnten\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
@@ -983,7 +984,7 @@ msgstr ""
" Keine Jobs starten bevor die Auslastung nicht "
"unter N ist.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
@@ -992,7 +993,7 @@ msgstr ""
" symbolischer Verküpfung und dem Ziel "
"verwenden.\n"
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
@@ -1001,7 +1002,7 @@ msgstr ""
" -n, --just-print, --dry-run, --recon\n"
" Keine Regel ausführen, nur ausgeben.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
@@ -1011,7 +1012,7 @@ msgstr ""
" DATEI als sehr alt ansehen und nicht neu "
"erzeugen.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
@@ -1020,12 +1021,12 @@ msgstr ""
" Synchronisiert die Ausgabe paralleler Jobs per "
"TYP.\n"
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr ""
" -p, --print-data-base Die interne Datenbank von „make“ ausgeben\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
@@ -1034,23 +1035,31 @@ msgstr ""
"an, ob die Dateien\n"
" aktuell sind\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr ""
" -r, --no-builtin-rules Die eingebauten impliziten Regeln "
"deaktivieren.\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr ""
" -R, --no-builtin-variables Die eingebauten Variablenbelegungen "
"deaktivieren.\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr " -s, --silent, --quiet Regeln nicht ausgeben.\n"
-#: main.c:393
+#: src/main.c:390
+#, fuzzy
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" -q, --question Keine Regel ausführen; der Exit-Status gibt "
+"an, ob die Dateien\n"
+" aktuell sind\n"
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
@@ -1058,30 +1067,30 @@ msgstr ""
" -S, --no-keep-going, --stop\n"
" -k abschalten.\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
" -t, --touch Die Ziele werden nur als aktualisiert "
"markiert,\n"
" nicht tatsächlich erneuert\n"
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
msgstr ""
" --trace Viele Informationen zur Fehlersuche ausgeben\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr ""
" -v, --version Die Versionsnummer von „make“ ausgeben und "
"Programm beenden\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory Das aktuelle Verzeichnis ausgeben\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
@@ -1089,7 +1098,7 @@ msgstr ""
" --no-print-directory -w abschalten, selbst wenn es implizit "
"eingeschaltet wurde.\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1097,7 +1106,7 @@ msgstr ""
" -W DATEI, --what-if=DATEI, --new-file=DATEI, --assume-new=DATEI\n"
" DATEI als unendlich neu erachten.\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
@@ -1105,27 +1114,28 @@ msgstr ""
" --warn-undefined-variables Eine Warnung ausgeben, wenn eine undefinierte\n"
" Variable referenziert wird.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "Eine leere Zeichenkette ist als Dateiname ungültig"
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
msgstr "Unbekannte Debug-Level angegeben „%s“"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr "unbekannter Typ von Ausgabesynchronisierung „%s“"
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr ""
"%s: bekam Unterbrechung/Ausnahme signalisiert (Kode = 0x%lx, Adr = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1141,37 +1151,28 @@ msgstr ""
"ExceptionFlags = %lx\n"
"ExceptionAddress = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "Zugriffsverletzung: Schreiboperation an Adresse 0x%p\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "Zugriffsverletzung: Leseoperation an Adresse 0x%p\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell setzt default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr "find_and_set_shell Suche im Pfad setzte default_shell = %s\n"
-#: main.c:1538
-#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s setzt für 30 Sekunden aus..."
-
-#: main.c:1540
+#: src/main.c:1609
#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "„sleep(30)“ ist abgeschlossen. Es geht weiter.\n"
-
-#: main.c:1627
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
@@ -1179,106 +1180,125 @@ msgstr ""
"Ursprungsregel\n"
"„+“ hinzu."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
+#: src/main.c:1617
+#, fuzzy, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
msgstr ""
"Warnung: -jN in „make“-Verarbeitungszweig erzwungen: \n"
"Jobserver-Modus nicht verfügbar."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr "Das Makefile wurde zweimal über die Standardeingabe angegeben."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (temporäre Datei)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (temporäre Datei)"
-#: main.c:2048
+#: src/main.c:2004
+#, fuzzy, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr ""
+"Warnung: -jN in „make“-Verarbeitungszweig erzwungen: \n"
+"Jobserver-Modus nicht verfügbar."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr ""
"Parallele Abarbeitung (-j) \n"
"wird auf dieser Plattform nicht unterstützt."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "Umstellung auf Einzel-Job-Verarbeitung (-j1)."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr ""
"Symbolische Verknfungen werdfen nicht unterstützt: -L wird abgeschaltet."
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "Aktualisiere „make“-Steuerdateien...\n"
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr ""
"„make“-Steuerdatei „%s“ könnte eine Schleife enthalten; \n"
"es wird nicht neu erzeugt.\n"
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
msgstr "Konnte die „make“-Steuerdatei „%s“ nicht neu erstellen."
-#: main.c:2299
+#: src/main.c:2323
#, c-format
msgid "Included makefile '%s' was not found."
msgstr "Die eingebundene „make“-Steuerdatei „%s“ wurde nicht gefunden."
-#: main.c:2304
+#: src/main.c:2328
#, c-format
msgid "Makefile '%s' was not found"
msgstr "Die „make“-Steuerdatei „%s“ wurde nicht gefunden"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "Konnte nicht in das ursprüngliche Verzeichnis wechseln."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "Erneute Ausführung[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (temporäre Datei): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ".DEFAULT_GOAL beinhaltet mehr als ein Ziel"
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Es wurden keine Ziele angegeben und keine „make“-Steuerdatei gefunden"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "Keine Ziele"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Es wurden keine Ziele angegeben und keine „make“-Steuerdatei gefunden"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "Aktualisieren der Ziele...\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr ""
"Warnung: Mit der Uhr stimmt etwas nicht. \n"
" Der Bauauftrag könnte unvollständig sein."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "Aufruf: %s [Optionen] [Ziele] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1287,7 +1307,7 @@ msgstr ""
"\n"
"Diese Programm wurde für %s gebaut\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1296,32 +1316,32 @@ msgstr ""
"\n"
"Diese Programm wurde für %s (%s) gebaut\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr "Fehlermeldungen (auf Englisch) an <bug-make@gnu.org> senden.\n"
-#: main.c:2870
+#: src/main.c:2901
#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "Die Option „%s%s“ verlangt eine nicht-leere Zeichenkette als Argument"
-#: main.c:2934
+#: src/main.c:2965
#, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "Die Option „-%c“ verlangt eine positive ganze Zahl als Argument"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%sGebaut für %s\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%sGebaut für %s (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1335,7 +1355,7 @@ msgstr ""
"verteilen.\n"
"%sSoweit es die Gesetze erlauben gibt es KEINE GARANTIE.\n"
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1344,7 +1364,7 @@ msgstr ""
"\n"
"# „Make“-Datenbank; erstellt am: %s"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1353,352 +1373,389 @@ msgstr ""
"\n"
"# „Make“-Datenbank beendet am: %s\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Unbekannter Fehler %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: Nutzer %lu (tatsächlich %lu), Gruppe %lu (tatsächlich %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "Initialisierter Zugriff"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr "Zugriff durch Benutzer"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "Zugriff durch „make“"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "Kindprozess"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: ein unbekanntes Verzeichnis wird betreten\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: ein unbekanntes Verzeichnis wird verlassen\n"
# !!! Attention: concatenated with the previous messages!!!
-#: output.c:109
+#: src/output.c:102
#, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "%s: Verzeichnis „%s“ wird betreten\n"
# !!! Attention: concatenated with the previous messages!!!
-#: output.c:111
+#: src/output.c:104
#, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "%s: Verzeichnis „%s“ wird verlassen\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: Ein unbekanntes Verzeichnis wird betreten\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: Ein unbekanntes Verzeichnis wird verlassen\n"
# !!! Attention: concatenated with the previous messages!!!
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr "%s[%u]: Verzeichnis „%s“ wird betreten\n"
# !!! Attention: concatenated with the previous messages!!!
-#: output.c:122
+#: src/output.c:115
#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "%s[%u]: Verzeichnis „%s“ wird verlassen\n"
-#: output.c:495 output.c:497
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
msgstr "Schreibfehler: Standardausgabe"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". Schluss.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+"-O[TYPE] (--output-sync[=TYPE]) ist für diese Bau-Aufgabe nicht konfiguriert."
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "Öffnen der Pipe für die Jobs"
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
msgstr "Öffnen der Pipe für die Jobs"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr "Initialisierung der Pipe für den Jobserver"
-#: posixos.c:90
+#: src/posixos.c:119
#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr "Interner Fehler: ungültige --jobserver-auth Angabe „%s“"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr "Jobserver-Klient (fds %d,%d)\n"
-#: posixos.c:109
+#: src/posixos.c:138
msgid "jobserver pipeline"
msgstr "Initialisierung der Pipe für den Jobserver"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr "Job-Server wird geschrieben"
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr ""
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
msgstr "pselect der Jobs-Pipeline"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "Lese Pipe für die Jobs"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "„make“-Steuerdateien werden gelesen...\n"
-#: read.c:329
+#: src/read.c:336
#, c-format
msgid "Reading makefile '%s'"
msgstr "„make“-Steuerdatei „%s“ wird gelesen"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (kein Standard-Ziel)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (Suchpfad)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (macht nichts)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (keine ~-Auflösung)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr "UTF-8 BOM in makefile „%s“ wird übersprungen\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr "UTF-8 BOM im makefile-Puffer wird übersprungen\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "Ungültige Syntax in der Bedingung"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr "%s: konnte nicht geladen werden"
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
msgstr "Rezept beginnt vor dem ersten Ziel"
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
msgstr "Es fehlt eine Regel vor der Regel"
-#: read.c:1124
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr "fehlender Trenner (Meinten Sie TAB anstelle von 8 Leerzeichen?)"
-#: read.c:1126
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
msgstr "Fehlender Trenner"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "Es fehlt ein Ziel-Muster"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "Mehrfache Ziel-Muster"
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
msgstr "Ziel-Muster enthält kein „%%“"
-#: read.c:1390
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
msgstr "Fehlendes „endif“"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "Leerer Variablenname"
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
msgstr "Überflüssiger Text nach einer „define“-Anweisung"
-#: read.c:1488
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "Fehlendes „endef“, nicht abgeschlossenes „define“"
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
msgstr "Überflüssiger Text nach einer „endef“-Anweisung"
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
msgstr "Überflüssiger Text nach einer „%s“-Anweisung"
-#: read.c:1589
+#: src/read.c:1604
#, c-format
msgid "extraneous '%s'"
msgstr "Überflüssiges „%s“"
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
msgstr "Es ist nur ein „else“ pro Bedingung erlaubt"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr "Falsche Ziel-bezogene Variablendefinition"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr "Voraussetzungen können nicht in Regeln definiert werden"
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr ""
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr "Implizite und statische Muster-Regeln wurden vermischt"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "Implizite und normale Regeln wurden vermischt"
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr "Target „%s“ passt nicht zum Ziel-Muster"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
msgstr "Das Ziel „%s“ enthält sowohl „:“- als auch „::“-Einträge"
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
msgstr "Das Ziel „%s“ steht mehrfach in derselben Regel."
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr "Warnung: Die Befehle für das Ziel „%s“ werden überschrieben"
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr "Warnung: Alte Befehle für das Ziel „%s“ werden ignoriert"
-#: read.c:2223
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr "*** Implizite und normale Regeln wurden vermischt"
-#: read.c:2542
+#: src/read.c:2271
+#, fuzzy, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "Warnung: Die Befehle für das Ziel „%s“ werden überschrieben"
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr "Warnung: NULL-Zeichen gelesen; der Rest der Zeile wird ignoriert"
-#: remake.c:226
+#: src/remake.c:226
#, c-format
msgid "Nothing to be done for '%s'."
msgstr "Für das Ziel „%s“ ist nichts zu tun."
-#: remake.c:227
+#: src/remake.c:227
#, c-format
msgid "'%s' is up to date."
msgstr "„%s“ ist bereits aktuell."
-#: remake.c:323
+#: src/remake.c:323
#, c-format
msgid "Pruning file '%s'.\n"
msgstr "Die Datei „%s“ wird \"gestutzt\" (der Abhängigkeitsgraph).\n"
-#: remake.c:406
+#: src/remake.c:389
#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr ""
"%sKeine Regel vorhanden, um das Ziel „%s“, \n"
" benötigt von „%s“, zu erstellen%s"
-#: remake.c:416
+#: src/remake.c:399
#, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%sKeine Regel, um „%s“ zu erstellen%s"
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
msgstr "Betrachte Ziel-Datei „%s“.\n"
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr ""
"Es wurde kürzlich versucht, die Datei „%s“ zu aktualisieren,\n"
"dies schlug aber fehl.\n"
-#: remake.c:461
+#: src/remake.c:444
#, c-format
msgid "File '%s' was considered already.\n"
msgstr "Die Datei „%s“ wurde bereits betrachtet.\n"
-#: remake.c:471
+#: src/remake.c:454
#, c-format
msgid "Still updating file '%s'.\n"
msgstr "Die Datei „%s“ wird immer noch aktualisiert.\n"
-#: remake.c:474
+#: src/remake.c:457
#, c-format
msgid "Finished updating file '%s'.\n"
msgstr "Aktualisierung der Datei „%s“ beendet.\n"
-#: remake.c:503
+#: src/remake.c:486
#, c-format
msgid "File '%s' does not exist.\n"
msgstr "Die Datei „%s“ existiert nicht.\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
@@ -1706,153 +1763,153 @@ msgstr ""
"*** Warnung: mit .LOW_RESOLUTION_TIME gekennzeichnete Datei „%s“ hat einen\n"
" hochaufgelösten Zeitstempel"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr "Eine implizite Regel für „%s“ wurde gefunden.\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr "Keine implizite Regel für „%s“ gefunden.\n"
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
msgstr "Die Standard-Regel für „%s“ wird verwendet.\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "Zirkuläre Abhängigkeit %s <- %s wird nicht verwendet."
-#: remake.c:691
+#: src/remake.c:674
#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr "Fertig mit den Voraussetzungen für die Ziel-Datei „%s“.\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr "Die Voraussetzungen von „%s“ werden fertiggestellt.\n"
-#: remake.c:711
+#: src/remake.c:694
#, c-format
msgid "Giving up on target file '%s'.\n"
msgstr "Die Arbeit an der Target-Datei „%s“ wurde aufgegeben.\n"
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
msgstr "Das Ziel „%s“ wurde wegen Fehlern nicht aktualisiert."
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr "Die Datei „%s“ ist älter als das davon abhängige Ziel „%s“.\n"
-#: remake.c:773
+#: src/remake.c:756
#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr ""
"Die Datei „%s“, Voraussetzung für das Ziel „%s“, \n"
"existiert nicht.\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr "Die Datei „%s“ ist jünger als das davon abhängige Ziel „%s“.\n"
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr "Die Datei „%s“ ist älter als das davon abhängige Ziel „%s“.\n"
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr ""
"Das Ziel „%s“ hat einen doppelten Doppelpunkt \n"
"und keine Voraussetzungen.\n"
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr ""
"Kein Kommando für „%s“ und keine Voraussetzung \n"
"wurde tatsächlich verändert.\n"
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr "„%s“ wird aufgrund der Keinnzeichnung als always-make erzeugt.\n"
-#: remake.c:819
+#: src/remake.c:802
#, c-format
msgid "No need to remake target '%s'"
msgstr "Es ist nicht notwendig, das Ziel „%s“ neu zu erzeugen"
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
msgstr "; benutze VPATH-Name „%s“"
-#: remake.c:841
+#: src/remake.c:824
#, c-format
msgid "Must remake target '%s'.\n"
msgstr "Das Target „%s“ muss neu erzeugt werden.\n"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr " Der VPATH-Name „%s“ wird ignoriert.\n"
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr "Die Regel für „%s“ wird gerade ausgeführt.\n"
-#: remake.c:863
+#: src/remake.c:846
#, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr "Fehler beim Aktualisieren der Ziel-Datei „%s“.\n"
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr "Die Zieldatei „%s“ wurde erfolgreich aktualisiert.\n"
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr "Zieldatei „%s“ muss bei -q aktualisiert werden.\n"
-#: remake.c:1064
+#: src/remake.c:1047
#, c-format
msgid "Using default commands for '%s'.\n"
msgstr "Die Standard-Kommandos für „%s“ werden verwendet.\n"
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "Warnung: Datei „%s“ hat zukünftige Änderungszeit"
-
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr "Warnung: Datei „%s“ hat hat in der Zukunft liegende Änderungszeit %s"
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr ".LIBPATTERNS Element „%s“ ist kein Muster"
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr "Customs wird nicht exportieren: %s\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -1860,7 +1917,7 @@ msgstr ""
"\n"
"# Implizite Regeln"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1868,181 +1925,177 @@ msgstr ""
"\n"
"# Keine impliziten Regeln vorhanden."
-#: rule.c:514
-#, c-format
+#: src/rule.c:548
+#, fuzzy, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
"# %u implizite Regeln, %u"
-#: rule.c:523
-msgid " terminal."
-msgstr " Terminal."
-
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "BUG: „num_pattern_rules“ falsch! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "Unbekanntes Signal"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Aufgelegt"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "Abgebrochen (Interrupt)"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Quit"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "Illegaler Befehl"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "Verfolgen/anhalten abfangen (Trace/breakpoint trap)"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Abgebrochen (Aborted)"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "IOT abfangen (IOT trap)"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "EMT abfangen (EMT trap)"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "Gleitkommafehler"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Abgebrochen (Killed)"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "Bus-Fehler"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Adressierungsdefekt"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "Falscher Systemaufruf"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "Zerstörte Pipe"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Wecksignal"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "Abgebrochen (Terminated)"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "Nutzersignal 1"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "Nutzersignal 2"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "Kindprozess beendet"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Stromausfall"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Angehalten"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Angehalten (tty input)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Angehalten (tty output)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Angehalten (signal)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "CPU-Zeitschranke überschritten"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "Dateigrößenschranke überschritten"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "Virtueller Timer erloschen"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "Profiling Timer erloschen"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "Fenster hat sich verändert"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Fortgesetzt"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "Dringende I/O-Bedingung"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "I/O möglich"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "Ressource verloren gegangen"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Gefahrensignal"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Informationsanforderung"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "Es ist kein Koprozessor für Fließkommaoperationen vorhanden"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
@@ -2051,7 +2104,7 @@ msgstr ""
"\n"
"%s Keine Puffer für strcache\n"
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -2062,27 +2115,27 @@ msgstr ""
"%s Puffer für strcache: %lu (%lu) / Zeichenketten = %lu / Speicher = %lu B / "
"ø = %lu B\n"
-#: strcache.c:308
-#, c-format
+#: src/strcache.c:308
+#, fuzzy, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
"%s aktueller Puffer: Größe = %hu B / benutzt = %hu B / Anzahl = %hu / ø = "
"%hu B\n"
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr "%s andere verwendete: Summe = %lu B / Anzahl = %lu / /ø = %lu B\n"
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
msgstr ""
"%s andere freie: Summe = %lu B / Max = %lu B / Min = %lu B / ø = %hu B\n"
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
@@ -2091,7 +2144,7 @@ msgstr ""
"\n"
"%s Leistung von strcache: Suchen = %lu / Trefferrate = %lu%%\n"
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
@@ -2099,46 +2152,46 @@ msgstr ""
"# Statistik für Hashtabelle:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "automatisch"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "Standard"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "Umgebung"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "Makefile"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "Umgebung per -e"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "Kommandozeile"
-#: variable.c:1647
+#: src/variable.c:1671
msgid "'override' directive"
msgstr "„override“-Anweisung"
-#: variable.c:1658
+#: src/variable.c:1682
#, c-format
msgid " (from '%s', line %lu)"
msgstr " (aus „%s“, Zeile %lu)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr ""
"# Hashtabellen-Statistik für Variablen:\n"
"\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2146,7 +2199,7 @@ msgstr ""
"\n"
"# Variablen\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
@@ -2154,7 +2207,7 @@ msgstr ""
"\n"
"# Musterspezifische Variablenwerte"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2162,7 +2215,7 @@ msgstr ""
"\n"
"# Keine musterspezifischen Variablenwerte."
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
@@ -2171,47 +2224,47 @@ msgstr ""
"\n"
"# %u musterspezifische Variablenwerte"
-#: variable.h:224
+#: src/variable.h:229
#, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "Warnung: undefinierte Variable „%.*s“"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr "„sys$search“ schlug mit %d fehl\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr "-Warnung: Vielleicht müssen Sie STRG-Y aus DCL wieder ermöglichen.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "BUILTIN CD %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr "DCL: %s\n"
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr "Ausgabe nach %s umgeleitet\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr "%.*s anhängen und aufräumen\n"
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "%s wird stattdessen ausgeführt\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2219,11 +2272,11 @@ msgstr ""
"\n"
"# VPATH-Suchpfade\n"
-#: vpath.c:620
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
msgstr "# Keine „vpath“-Suchpfade."
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
@@ -2232,7 +2285,7 @@ msgstr ""
"\n"
"# %u „vpath“-Suchpfade.\n"
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
@@ -2240,7 +2293,7 @@ msgstr ""
"\n"
"# Kein allgemeiner Suchpfad (Variable „VPATH“)."
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
@@ -2250,17 +2303,17 @@ msgstr ""
"# Allgemeiner Suchpfad (Variable „VPATH“):\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr "Zeitschlitze der Jobservers auf %d begranzt\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr "Jobserver-Semaphore wird erzeugt: (Fehler %ld: %s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
@@ -2269,21 +2322,45 @@ msgstr ""
"werden:\n"
" (Fehler %ld: %s)"
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr "Jobserver-Klient (Semaphore %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr "Freigabe der Jobserver-Semaphore: (Fehler %ld: %s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr "warten auf Semaphore oder Kindprozess: (Fehler %ld: %s)"
+#~ msgid "%s: %s: Command not found\n"
+#~ msgstr "%s: %s: Kommando nicht gefunden\n"
+
+#~ msgid "%s[%u]: %s: Command not found\n"
+#~ msgstr "%s[%u]: %s: Befehl nicht gefunden\n"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s: Shell-Programm wurde nicht gefunden"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s setzt für 30 Sekunden aus..."
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "„sleep(30)“ ist abgeschlossen. Es geht weiter.\n"
+
+#~ msgid "Unknown error %d"
+#~ msgstr "Unbekannter Fehler %d"
+
+#~ msgid "Warning: File '%s' has modification time in the future"
+#~ msgstr "Warnung: Datei „%s“ hat zukünftige Änderungszeit"
+
+#~ msgid " terminal."
+#~ msgstr " Terminal."
+
#~ msgid "%s: recipe for target '%s' failed"
#~ msgstr "%s: die Regel für Ziel „%s“ scheiterte"
diff --git a/po/es.gmo b/po/es.gmo
index 2e0c36c..9effe87 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 9cdab9d..359648b 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,23 +1,24 @@
# Mensajes en español para GNU make.
-# Copyright (C) 1996, 2001, 2011, 2013, 2014 Free Software Foundation, Inc.
+# Copyright (C) 1996, 2001, 2011, 2013, 2014, 2016, 2019, 2020 Free Software Foundation, Inc.
# This file is distributed under the same license as the make package.
# Max de Mendizábal <max.de.mendizabal@gmail.com>, 1996, 2011.
-# Antonio Ceballos <aceballos@gmail.com>, 2013, 2014, 2016
+# Antonio Ceballos <aceballos@gmail.com>, 2013, 2014, 2016, 2019, 2020
#
msgid ""
msgstr ""
-"Project-Id-Version: GNU make 4.1.90\n"
+"Project-Id-Version: GNU make 4.2.93\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
-"PO-Revision-Date: 2016-04-26 23:05+0200\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2020-01-03 15:38+0100\n"
"Last-Translator: Antonio Ceballos <aceballos@gmail.com>\n"
"Language-Team: Spanish <es@tp.org.es>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
-#: ar.c:46
+#: src/ar.c:46
#, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "Se intentó utilizar una característica no implementada: '%s'"
@@ -34,83 +35,84 @@ msgstr "Se intentó utilizar una característica no implementada: '%s'"
# Enrique: touch es un programa del sistema operativo y sirve para
# cambiar la fecha de un programa o archivo. Es decir lo "toca" y
# modifica sus atributos. Por eso preferí no traducirlo.
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "El programa para hacer un 'touch' no está disponible en VMS"
-#: ar.c:147
+#: src/ar.c:147
#, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "touch: El archivo '%s' no existe"
-#: ar.c:150
+#: src/ar.c:150
#, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "touch: '%s' no es un archivo válido"
-#: ar.c:157
+#: src/ar.c:157
#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "touch: El miembro '%s' no existe en '%s'"
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr "touch: Código de retorno erróneo de ar_member_touch en '%s'"
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr ""
"fallo en lbr$set_module() para extraer la información del módulo, estado = %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "fallo en lbr$ini_control() con estado = %d"
-#: arscan.c:261
+#: src/arscan.c:261
#, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr ""
"error al abrir la biblioteca '%s' para buscar el estado %d del elemento"
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr "Miembro '%s'%s: %ld bytes en %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (el nombre puede estar truncado)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Fecha %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, modo = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr "Las instrucciones tienen demasiadas líneas (%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** Interrumpir.\n"
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr ""
"*** [%s] El miembro de archivo '%s' podría estar incorrecto; aunque no se "
"elimina"
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr ""
@@ -118,32 +120,32 @@ msgstr ""
# Propongo un cambio en el tiempo verbal: Se borra el archivo temporal. sv
# Ok. mm
-#: commands.c:645
+#: src/commands.c:646
#, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] Se borra el archivo '%s'"
# Propongo un cambio en el tiempo verbal: Se borra el archivo temporal. sv
# Ok. mm
-#: commands.c:647
+#: src/commands.c:648
#, c-format
msgid "*** Deleting file '%s'"
msgstr "*** Se borra el archivo '%s'"
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
msgstr "# las instrucciones para ejecutar"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (integrado):"
-#: commands.c:688
+#: src/commands.c:689
#, c-format
msgid " (from '%s', line %lu):\n"
msgstr " (de '%s', linea %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -151,7 +153,7 @@ msgstr ""
"\n"
"# Directorios\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: podría no estar establecido.\n"
@@ -159,14 +161,13 @@ msgstr "# %s: podría no estar establecido.\n"
# ¿No sobraría el "posiblemente"?
# Propongo dejarlo en " no se pudo abrir ". sv
# Ok. Es consistente con otras traducciones. mm
-#: dir.c:1085
-#, fuzzy
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
-msgstr "# %s (llave %s, mtime %d): no se pudo abrir.\n"
+msgstr "# %s (llave %s, mtime %I64u): no se pudo abrir.\n"
# En el K & R aparece inode traducido como nodo-i. ¿qué te parece? sv
# Bien. Me gusta con el guioncito. mm
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr ""
@@ -175,49 +176,48 @@ msgstr ""
# ¿No sobraría el "posiblemente"?
# Propongo dejarlo en " no se pudo abrir ". sv
# Ok. Es consistente con otras traducciones. mm
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr "# %s (dispositivo %ld, nodo-i %ld): no se pudo abrir.\n"
-#: dir.c:1122
-#, fuzzy
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
-msgstr "# %s (llave %s, mtime %d): "
+msgstr "# %s (llave %s, mtime %I64u): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (dispositivo %d, nodo-i [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (dispositivo %ld, nodo-i %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "No"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " archivos, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "no"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " imposibilidades"
# ¿"So far" no era "hasta ahora"? (no me hagas mucho caso) sv
# Si tu traducción es mejor. Aceptada. mm
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " hasta ahora."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " imposibilidades en %lu directorios.\n"
@@ -231,7 +231,7 @@ msgstr " imposibilidades en %lu directorios.\n"
# ejemplo em+
# Mejor lo eliminamos. Es de alguna forma reiterativo e innecesario.
# Lo de `al final' puede ser más confuso. mm
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr "La variable recursiva '%s' se auto-referencia"
@@ -239,18 +239,19 @@ msgstr "La variable recursiva '%s' se auto-referencia"
# No me gusta nada ( lo siento )
# ¿ Qué tal : La referencia a una variable está sin terminar em+
# Creo que tienes razón la voz pasiva es muy desagradable. mm.
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "la referencia a la variable está sin terminar"
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr "Se especificaron instrucciones para el archivo '%s' en %s:%lu,"
# Buscando en las legras implícitas em+
# Utilicé por búsqueda en para evitar el gerundio. mm
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr ""
@@ -259,7 +260,7 @@ msgstr ""
# "now" es "ahora". ¿te lo has comido consciente o inconscientemente? sv
# inconscientemente. mm
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr "pero '%s' se considera ahora como el mismo archivo que `%s'."
@@ -268,7 +269,7 @@ msgstr "pero '%s' se considera ahora como el mismo archivo que `%s'."
# "To ignore" *no* es ignorar. sv
# Propongo "no serán tenidas en cuenta" a falta de algo mejor.
# Ok. Mi necedad sobrepasa el milenio. mm
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr ""
@@ -278,46 +279,47 @@ msgstr ""
# Me suena que eso de colon es algo así como punto, dos puntos o punto y coma.
# ¿Podrías comprobarlo? sv
# Es un punto sencillo (.). A ver si te gusta mi propuesta. mm
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr "no se puede cambiar un punto (.) '%s' por dos puntos (:) '%s'"
# Lo mismo. sv
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr "no se pueden cambiar dos puntos (:) '%s' por un punto (.) '%s'"
# Propongo un cambio en el tiempo verbal: Se borra el archivo temporal. sv
# Ok. mm
-#: file.c:408
+#: src/file.c:408
#, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "*** Se borra el archivo intermedio '%s'"
# Propongo un cambio en el tiempo verbal: Se borra el archivo temporal. sv
# Ok. mm
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "*** Se borran los archivos intermedios...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "Hora actual"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: Fecha fuera de intervalo; sustituyéndola %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# No es un objetivo:"
# Pondría: es una dependencia de em+
# Si, tienes razón. mm
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# Archivo valioso (es una dependencia de .PRECIOUS)."
@@ -329,7 +331,7 @@ msgstr "# Archivo valioso (es una dependencia de .PRECIOUS)."
# No. Incondicional no es una traducción correcta. Que tal si al rato
# se les ocurre hacer una nueva instrucción .INCONDITIONAL.
# Si quieres podríamos pensar en otra traducción como señuelo o algo así. mm
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# objetivo falso (dependencia de .PHONY)."
@@ -340,7 +342,7 @@ msgstr "# objetivo falso (dependencia de .PHONY)."
# Están traduciendo commands como comandos? Son más bien ordenes o
# instrucciones. Por mi parte no hay problema, incluso me gusta más
# comandos, pero es un anglicismo. mm
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# Objetivo en línea de instrucciones."
@@ -352,11 +354,11 @@ msgstr "# Objetivo en línea de instrucciones."
# Así pues tu traducción es completamente equivocada, lo siento.
# Pondría: Fichero por defecto o definido en la variable MAKEFILE em+
# Cierto, lo has entendido bien. Arreglo acorde. mm
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr "# Por omisión, MAKEFILES, o -include/sinclude makefile."
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
msgstr "# Regla incorporada"
@@ -364,7 +366,7 @@ msgstr "# Regla incorporada"
# Ok. Es más literal. mm
# Atención ! , es la búsqueda 'de'reglas implícitas em+
# Ok. Ojo, debo pluralizar regla e implícita. Platicarlo con Ulrich. mm
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# La búsqueda de reglas implícitas ha sido efectuada."
@@ -372,22 +374,22 @@ msgstr "# La búsqueda de reglas implícitas ha sido efectuada."
# Ok. Es más literal. mm
# Atención ! , es la búsqueda 'de'reglas implícitas em+
# Ok. Ojo, debo pluralizar regla e implícita. Platicarlo con Ulrich. mm
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# La búsqueda de reglas implícitas ha sido efectuada."
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr "# Tema del patrón implícita/estática: '%s'\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr "# El archivo es una dependencia intermedia."
# Sugerencia: "crea". sv
# Ok. Aunque, viendolo bien, que tal "hace"? mm.
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# También hace:"
@@ -395,60 +397,60 @@ msgstr "# También hace:"
# Ok. Mejora. mm
# No pondría nunca, sino simplemente 'no se comprobó 'em+
# Si, es lo mismo pero es más español. mm
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# La fecha de modificación no se comprobó."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# El archivo no existe."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# El archivo es muy viejo."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# Última modificación %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# El archivo ha sido actualizado."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# El archivo ha sido actualizado."
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# Las instrucciones continúan en ejecución (ESTO ES UN BUG)."
# ¿No sería más bien "las instrucciones de las dependencias"? sv
# Si, que babas soy. Ahora corrijo. mm
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr ""
"# Las instrucciones de las dependencias continúan en ejecución (ESTO ES UN "
"BUG)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# Actualizado con éxito."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# Necesita ser actualizado (la opción -q está activa)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# Fallo al ser actualizado."
-#: file.c:1032
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
msgstr "# ¡Valor inválido en el miembro 'command_state'!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -456,7 +458,7 @@ msgstr ""
"\n"
"# Archivos"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -466,56 +468,59 @@ msgstr ""
"# estadísticas de la tabla «hash» de los archivos:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr "%s: El campo '%s' no está en «cache»: %s"
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
msgstr "el primer argumento de la función 'word' no es numérico"
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr "el primer argumento de la función 'word' debe ser mayor que 0"
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
msgstr "el primer argumento de la función 'wordlist' no es numérico"
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
msgstr "el segundo argumento de la función 'wordlist' no es numérico"
-#: function.c:1525
+#: src/function.c:1533
#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "windows32_openpipe: fallo en DuplicateHandle(In), (e=%ld)\n"
-#: function.c:1549
+#: src/function.c:1557
#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr "windows32_openpipe: fallo en DuplicateHandle(Err), (e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "Fallo en CreatePipe(), (e=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe(): fallo en process_init_fd()\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "Limpiando el archivo temporal %s\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr "archivo: falta el nombre del archivo"
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
msgstr "abrir: %s: %s"
@@ -529,17 +534,18 @@ msgstr "abrir: %s: %s"
# else
# printf ("%s[%u]: %s ", program, makelevel, message);
# Como notarás lo del directorio va en otro lado.
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
msgstr "escribir: %s: %s"
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, c-format
msgid "close: %s: %s"
msgstr "cerrar: %s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr "archivo: demasiados argumentos"
@@ -552,151 +558,152 @@ msgstr "archivo: demasiados argumentos"
# else
# printf ("%s[%u]: %s ", program, makelevel, message);
# Como notarás lo del directorio va en otro lado.
-#: function.c:2262
+#: src/function.c:2277
#, c-format
msgid "read: %s: %s"
msgstr "leer: %s: %s"
-#: function.c:2275
+#: src/function.c:2290
#, c-format
msgid "file: invalid file operation: %s"
msgstr "archivo: operación de archivo no válida: %s"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr "Número de argumentos (%d) insuficientes para la función '%s'"
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "No implementado en esta plataforma: función '%s'"
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr "la llamada a la función '%s' no concluyó: falta '%c'"
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr "Nombre de función vacío"
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr "Nombre de función no válido: %s"
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr "Nombre de función demasiado largo: %s"
-#: function.c:2657
-#, fuzzy, c-format
+#: src/function.c:2674
+#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
-msgstr "Número insuficiente de argumentos (%d) para la función %s"
+msgstr "Número insuficiente de argumentos (%u) para la función %s"
-#: function.c:2660
-#, fuzzy, c-format
+#: src/function.c:2677
+#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
-msgstr "El número máximo de argumentos (%d) no es válido para la función %s"
+msgstr "El número máximo de argumentos (%u) no es válido para la función %s"
-#: getopt.c:659
+#: src/getopt.c:659
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: la opción '%s' es ambigua\n"
# No admite ningún argumento. sv
# Ok. Y vuelve la burra al trigo. mm
-#: getopt.c:683
+#: src/getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: la opción '--%s' no admite ningún argumento\n"
# Lo mismo. sv
# Ok. mm
-#: getopt.c:688
+#: src/getopt.c:688
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: la opción '%c%s' no admite ningún argumento\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: la opción '%s' requiere un argumento\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: opción no reconocida '--%s'\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: opción no reconocida '%c%s'\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: opción inválida -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: opción inválida -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: la opción requiere un argumento -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: la opción '-W %s' es ambigua\n"
# No admite ningún argumento. sv
# Ok. Y vuelve la burra al trigo. mm
-#: getopt.c:862
+#: src/getopt.c:862
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: la opción '-W %s' no admite ningún argumento\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr "guile: Expandiendo '%s'\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr "guile: Evaluando '%s'\n"
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr "no se pueden reservar %lu bytes para la tabla «hash»: memoria agotada"
-#: hash.c:280
+#: src/hash.c:280
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "Carga=%ld/%ld=%.0f%%, "
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "Carga=%lu/%lu=%.0f%%, "
-#: hash.c:282
+#: src/hash.c:282
#, c-format
-msgid "Rehash=%d, "
-msgstr "Rehash=%d, "
+msgid "Rehash=%u, "
+msgstr "Rehash=%u, "
-#: hash.c:283
+#: src/hash.c:283
#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "Colisiones=%ld/%ld=%.0f%%"
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "Colisiones=%lu/%lu=%.0f%%"
# Y no sería mejor "Buscando una regla implícita ..."
# Ten en cuenta que este mensaje no parece un mensaje de error, sino más
# de "debug" o de "verbose". sv
# Cierto. mm
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr "Buscando una regla implícita para '%s'.\n"
@@ -704,7 +711,7 @@ msgstr "Buscando una regla implícita para '%s'.\n"
# Lo mismo.
# Buscando una regla implítita para el miembro del archivo `%s' em+
# Se me resbaló. mm
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr "Buscando una regla implícita para el miembro del archivo '%s'.\n"
@@ -716,14 +723,15 @@ msgstr "Buscando una regla implícita para el miembro del archivo '%s'.\n"
# Me gusta evade, pero evita es correcto. Acepto tu sugerencia. mm
# No me gusta se evita, pondría evitando em+
# Ok. Pero a mi paranoia de evitar gerundios dónde la dejas? mm
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr "Evitando la recursión en la regla implícita.\n"
-#: implicit.c:486
+#: src/implicit.c:484
#, c-format
-msgid "Stem too long: '%.*s'.\n"
-msgstr "Tema demasiado largo: '%.*s'.\n"
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "Tema demasiado largo: '%s%.*s'.\n"
# FUZZY
# Esto me suena fatal. Se a que se refiere, porque lo
@@ -733,7 +741,7 @@ msgstr "Tema demasiado largo: '%.*s'.\n"
# De momento cambio la regla patron por una regla de patron , y
# pondría a toda costa gerundio ( intentando ) em+
# Ok con el gerundio. Pero también tengo que meditarlo. mm
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr "Intentando una regla de patrón con el tema '%.*s'.\n"
@@ -745,7 +753,7 @@ msgstr "Intentando una regla de patrón con el tema '%.*s'.\n"
# aparecer tal y como está ahora (Se rechaza la dependencia imposible
# `%s' `%s )'em+
# Ok. mm
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr "Se rechaza la regla de dependencia imposible '%s'.\n"
@@ -757,7 +765,7 @@ msgstr "Se rechaza la regla de dependencia imposible '%s'.\n"
# aparecer tal y como está ahora (Se rechaza la dependencia imposible
# `%s' `%s )'em+
# Ok. mm
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr "Se rechaza la dependencia implícita imposible '%s'.\n"
@@ -770,7 +778,7 @@ msgstr "Se rechaza la dependencia implícita imposible '%s'.\n"
# De momento cambio la regla patron por una regla de patron , y
# pondría a toda costa gerundio ( intentando ) em+
# Ok con el gerundio. Pero también tengo que meditarlo. mm
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr "Intentando la regla de dependencia '%s'.\n"
@@ -782,22 +790,22 @@ msgstr "Intentando la regla de dependencia '%s'.\n"
# Me gusta evade, pero evita es correcto. Acepto tu sugerencia. mm
# No me gusta se evita, pondría evitando em+
# Ok. Pero a mi paranoia de evitar gerundios dónde la dejas? mm
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr "Probando la dependencia implícita '%s'.\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr "Se encontró la dependencia '%s' como la VPATH '%s'.\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr "Se busca una regla con el archivo intermedio '%s'.\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr "No se puede crear un archivo temporal\n"
@@ -805,21 +813,21 @@ msgstr "No se puede crear un archivo temporal\n"
# volcado de `core' no significa nada, que te parece si mejor dejamos
# el core dumped, o bien volcado del núcleo o algo así. Por el momento
# no cambio nada. mm
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (core dumped) [Núcleo vaciado a un archivo]"
# Preferiría mil veces "sin efecto" o algo parecido. sv
# Ok. Habíamos quedado en `no tiene efecto'. mm
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr " (no tiene efecto)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
msgstr "<integrado>"
-#: job.c:510
+#: src/job.c:573
#, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "%s[%s: %s] Error %d%s"
@@ -827,69 +835,71 @@ msgstr "%s[%s: %s] Error %d%s"
# ¿Y job -> trabajos? sv
# Si, pero no hablas de una computadora multi-trabajos sino multi-tareas.
# Por eso elegí tareas. Lo platicamos con más calma? mm
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** Se espera a que terminen otras tareas...."
# ¿De verdad se dice "vivo"? Si es un proceso, se me ocurre "activo". sv
# Me gusta lo de activo. mm
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "Hijo activo %p (%s) PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (remoto)"
# Lo mismo, pon Proceso hijo, y quita lo que hay
# entre paréntesis em+
-#: job.c:831
+#: src/job.c:898
#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Se recupera al proceso hijo perdido %p PID %s %s\n"
+msgid "Reaping winning child %p PID %s %s\n"
+msgstr "Se recupera al proceso hijo ganador %p PID %s %s\n"
# Lo mismo, pon Proceso hijo, y quita lo que hay
# entre paréntesis em+
-#: job.c:832
+#: src/job.c:899
#, c-format
-msgid "Reaping winning child %p PID %s %s\n"
-msgstr "Se recupera al proceso hijo ganador %p PID %s %s\n"
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Se recupera al proceso hijo perdido %p PID %s %s\n"
# Give up no es enfocar, es abandonar, o desistir em+
# Si, metí la pata. mm
-#: job.c:839
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "Se limpia el archivo temporal %s\n"
# Give up no es enfocar, es abandonar, o desistir em+
# Si, metí la pata. mm
-#: job.c:845
+#: src/job.c:956
#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr "Fallo al limpiar el archivo temporal por lotes %s (%d)\n"
# Proceso hijo em+
# Ok.
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr "Se elimina al proceso hijo %p PID %s%s de la cadena.\n"
# Lo mismo, pon Proceso hijo, y quita lo que hay
# entre paréntesis em+
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr "Se libera el token para el proceso hijo %p (%s).\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "fallo en process_easy() para lanzar al proceso (e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -900,109 +910,97 @@ msgstr ""
# Proceso hijo em+
# Ok.
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr "Se pone al proceso hijo %p (%s) PID %s%s en la cadena.\n"
# Lo mismo, pon Proceso hijo, y quita lo que hay
# entre paréntesis em+
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "Se obtiene el token para el proceso hijo %p (%s).\n"
-#: job.c:1838
+#: src/job.c:1902
#, c-format
msgid "%s: target '%s' does not exist"
msgstr "%s: el objetivo '%s' no existe"
-#: job.c:1841
+#: src/job.c:1905
#, c-format
msgid "%s: update target '%s' due to: %s"
msgstr "%s: actualizar el objetivo '%s' a causa de: %s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr "no se pueden forzar los límites de carga en este sistema operativo"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "no se puede forzar la carga límite: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr "no hay más manejadores de archivos: no se puede duplicar stdin\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr "no hay más manejadores de archivos: no se puede duplicar stdout\n"
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr "no hay más manejadores de archivos: no se puede duplicar stderr\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr "No se puede restaurar stdin\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr "No se puede restaurar stdout\n"
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr "No se puede restaurar stderr\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr "hacer un hijo descarriado %s, aún se espera por el pid %s\n"
-#: job.c:2275
-#, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: %s: No se encontró el programa\n"
-
-#: job.c:2277
-#, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s[%u]: %s: No se encontró el programa\n"
-
-# ¿Y "el programa Shell"? (a secas) sv
-# Si. Suena mucho mejor. mm
-# Suena, pero no es mejor. Tal y como esta escrito, incluso
-# yo pensaria que me falta un programa en mi sistema que se
-# llame shell. No se ha encontrado el 'shell'em+
-# Es bueno contar con una segunda opinión ... mm
-#: job.c:2337
+#: src/job.c:2623
#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: No se ha encontrado el `shell'"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr "spawnvpe: el espacio ambiental podría estar agotado"
-#: job.c:2584
+#: src/job.c:2862
#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "$SHELL ha cambiado (era '%s' y ahora es '%s')\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr "Se crea el archivo temporal %s\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
msgstr ""
-"Contenido del archivo de lotes:%s\n"
+"Contenido del archivo de lotes:\n"
"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
@@ -1011,63 +1009,60 @@ msgstr ""
"Contenido del archivo de lotes:%s\n"
"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr ""
"%s (linea %d) Contexto de shell erróneo (!unixy && !batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr "-O[TIPO] (--output-sync[=TIPO]) no está configurado para este «build»."
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr "Fallo al abrir tabla global de símbolos: %s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr ""
"El objeto %s que se ha cargado no está declarado como compatible con GPL"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr "Fallo al cargar símbolo %s desde %s: %s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr "Nombre de símbolo vacío en la carga: %s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr "Cargando símbolo %s desde %s\n"
-#: load.c:256
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr "La operación 'load' no está implementada en esta plataforma."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "Opciones:\n"
# Lo mismo de arriba con "ignorar". sv
# Ok. mm.
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr ""
" -b, -m No se tendrá en cuenta por compatibilidad.\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr ""
" -B, --always-make Hace incondicionalmente todos los objetivos.\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
@@ -1078,7 +1073,7 @@ msgstr ""
# ¿"depurado" o "depuración"? sv
# Puse de depurado para evitar la cacofonía información depuración.
# Sugerencias bienvenidas. mm
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr ""
" -d Se imprimirán grandes cantidades de información de depurado.\n"
@@ -1086,14 +1081,14 @@ msgstr ""
# ¿"depurado" o "depuración"? sv
# Puse de depurado para evitar la cacofonía información depuración.
# Sugerencias bienvenidas. mm
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
" --debug[=BANDERAS] Se imprimirán varios tipos de información de "
"depurado.\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
@@ -1102,14 +1097,14 @@ msgstr ""
" Las variables ambientales se imponen a las de los "
"makefiles.\n"
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
-" --eval=CADENA Evalúla la CADENA como una instrucción de un "
+" -E CADENA, --eval=CADENA Evalúa la CADENA como una instrucción de un "
"makefile.\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -1117,7 +1112,7 @@ msgstr ""
" -f ARCHIVO, --file=ARCHIVO, --makefile=ARCHIVO\n"
" Lee al ARCHIVO como un makefile.\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help Muestra este mensaje y finaliza.\n"
@@ -1127,13 +1122,13 @@ msgstr " -h, --help Muestra este mensaje y finaliza.\n"
# tambien.
# No me gusta este mensaje, preferiría: Se ignoran los errores obtenidos
# en la ejecución de las instrucciones em+
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr ""
" -i, --ignore-errors No se toman en cuenta los errores provenientes "
"de las instrucciones.\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
@@ -1144,7 +1139,7 @@ msgstr ""
# Yo traduciría "infinite" por "infinitos", no por "una infinidad", que
# parece que son muchos menos... sv
# Ok. mm
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
@@ -1155,14 +1150,14 @@ msgstr ""
# No entiendo por qué aquí empleas subjuntivo: "pudieron". sv
# Es incorrecto. Es una de las opciones `k' que dice... mm
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
" -k, --keep-going Sigue avanzando aún cuando no se puedan crear "
"algunos objetivos.\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
@@ -1172,7 +1167,7 @@ msgstr ""
" No inicia con trabajos múltiples a menos que la carga esté por debajo "
"de N.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
@@ -1180,7 +1175,7 @@ msgstr ""
" -L, --check-symlink-times Utiliza el último mtime entre los enlaces "
"simbólicos y los objetivos.\n"
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
@@ -1190,7 +1185,7 @@ msgstr ""
" No ejecuta ninguna instrucción; sólo las "
"muestra.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
@@ -1200,7 +1195,7 @@ msgstr ""
" Supone que ARCHIVO es muy viejo y no lo "
"reconstruye.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
@@ -1211,13 +1206,13 @@ msgstr ""
# de 'make' em+
# ok. mm
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr ""
" -p, --print-data-base Se imprime la base de datos interna de "
"'make'.\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
@@ -1231,7 +1226,7 @@ msgstr ""
# ¡ Por favor ! , ¿ pero qué es eso de interconstruidas ?
# Pon almacenadas internamente, que es exactamente lo que son :) em+
# Bueno, bajo protesta. mm
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr ""
" -r, --no-builtin-rules Se deshabilitan las reglas implícitas "
@@ -1242,17 +1237,23 @@ msgstr ""
# ¡ Por favor ! , ¿ pero qué es eso de interconstruidas ?
# Pon almacenadas internamente, que es exactamente lo que son :) em+
# Bueno, bajo protesta. mm
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr ""
" -R, --no-builtin-variables Se deshabilitan los ajustes a las variables "
"almacenadas internamente.\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
-msgstr " -s, --silent, --quiet No muestra las intrucciones.\n"
+msgstr " -s, --silent, --quiet No muestra las instrucciones.\n"
+
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" --no-silent Muestra las instrucciones (desactiva el modo --"
+"silent).\n"
-#: main.c:393
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
@@ -1265,7 +1266,7 @@ msgstr ""
#
# Pues entonces cámbialo arriba tambien em+
# En donde? mm
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
" -t, --touch Se tocan los objetivos en vez de "
@@ -1274,20 +1275,20 @@ msgstr ""
# ¿"depurado" o "depuración"? sv
# Puse de depurado para evitar la cacofonía información depuración.
# Sugerencias bienvenidas. mm
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
msgstr " --trace Muestra trazas.\n"
# Me comería el "Se" inicial. "Muestra la versión..." sv
# Ok. mm
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr ""
" -v, --version Muestra la versión del make y finaliza.\n"
# Lo mismo. sv
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory Muestra el directorio actual.\n"
@@ -1296,7 +1297,7 @@ msgstr " -w, --print-directory Muestra el directorio actual.\n"
# apaga luz Mari Luz apaga luz ,que yo no puedo vivir con
# tanta luz ... ( canción tradicional ) ( no lo pude evitar ) em+
# Juar, Juar, Juar. Coincido, pero el sentido es el mismo. mm
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
@@ -1304,7 +1305,7 @@ msgstr ""
" --no-print-directory Desactiva -w, aún cuando haya sido activado "
"implícitamente.\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1315,7 +1316,7 @@ msgstr ""
# Lo mismo. sv
# Todas estas parecen descripciones de opciones.
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
@@ -1323,27 +1324,28 @@ msgstr ""
" --warn-undefined-variables Advierte cuando se hace una referencia a una "
"variable no definida.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "no se permite que una cadena vacía sea el nombre de un archivo"
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
msgstr "se especificó un nivel de depuración desconocido '%s'"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr "tipo de sincronización de salida desconocido '%s'"
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr ""
"%s: Se atrapó una interrupción/excepción (código = 0x%lx, dirección = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1358,80 +1360,84 @@ msgstr ""
"Banderas de la excepción = %lx\n"
"Dirección de la excepción = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "Violación de acceso: operación de escritura en la dirección 0x%p\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "Violación de acceso: operación de lectura en la dirección 0x%p\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "la función find_and_set_shell() pone el valor del default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr ""
"la función find_and_set_shell() pone el valor de la ruta de búsceda "
"default_shell = %s\n"
-#: main.c:1538
-#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s está suspendida por 30 segundos..."
-
-#: main.c:1540
+#: src/main.c:1609
#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "se hizo un sleep(30). Continuando.\n"
-
-#: main.c:1627
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
"atención: el servidor de tareas no está disponible: se utilizará -j1. Añada "
"'+' a la regla padre del make."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
msgstr ""
-"atención: se fuerza a -jN en el submake: se deshabilita el modo de servidor "
+"atención: se fuerza a -j%d en el submake: se restablece el modo de servidor "
"de tareas."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr ""
"El archivo Makefile ha sido especificado dos veces desde la entrada estándard"
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (archivo temporal)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (archivo temporal)"
-#: main.c:2048
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr ""
+"atención: se fuerza a -j%d en el makefile: se restablece el modo de servidor "
+"de tareas."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr ""
"Los trabajos en paralelo (-j) no están implementados en esta plataforma."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "Reajustando al modo monotarea (-j1)."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr "Los enlaces simbólicos no están implementados: se deshabilitan con -L."
# Antes pusiste "makefiles". Coherencia. sv
# Cierto. mm
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "Actualizando archivos makefiles....\n"
@@ -1441,62 +1447,68 @@ msgstr "Actualizando archivos makefiles....\n"
# Pondría ( como en un mensaje anterior ) se autoreferencia ... em+
# He puesto makefile con minúsculas , par ser coherentes em+
# Ok. Es más breve. mm.
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr ""
"El makefile '%s' podría entrar en bucle; por lo tanto, no se reconstruye.\n"
# Lo mismo. sv
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
msgstr "Fallo al reconstruir el makefile '%s'."
# Lo mismo. sv
-#: main.c:2299
+#: src/main.c:2323
#, c-format
msgid "Included makefile '%s' was not found."
msgstr "No se encontró el makefile incluído '%s'."
# Lo mismo. sv
-#: main.c:2304
+#: src/main.c:2328
#, c-format
msgid "Makefile '%s' was not found"
msgstr "No se encontró el makefile '%s'"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "No se pudo regresar al directorio original."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "Re-ejecutando[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (archivo temporal)"
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ".DEFAULT_GOAL contien más de un objetivo"
+#: src/main.c:2579
+#, c-format
+msgid "No targets"
+msgstr "No hay objetivos"
+
# Sugerencia: "No se especificó ningún objetivo ... " sv
# Ok. Me gusta. mm
-#: main.c:2548
+#: src/main.c:2581
+#, c-format
msgid "No targets specified and no makefile found"
msgstr "No se especificó ningún objetivo y no se encontró ningún makefile"
-#: main.c:2550
-msgid "No targets"
-msgstr "No hay objetivos"
-
-#: main.c:2555
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "Actualizando los objetivos finales....\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr ""
"atención: Se ha detectado una desviación en el reloj. La construcción podría "
@@ -1507,12 +1519,12 @@ msgstr ""
# "target" es "objetivo", no "objetivos". Fíjate que lleva puntos
# suspensivos, permitiendo así varios objetivos. sv
# Ok. mm
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "Modo de empleo: %s [opciones] [objetivo] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1521,7 +1533,7 @@ msgstr ""
"\n"
"Este programa fue construido para %s\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1530,36 +1542,36 @@ msgstr ""
"\n"
"Este programa construido para %s (%s)\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr "Informe sobre los errores a <bug-make@gnu.org>\n"
# Me comería el "de" de "requiere de" sv
# Ok. mm
-#: main.c:2870
+#: src/main.c:2901
#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "la opción '%s%s' requiere un argumento no-vacío de tipo cadena"
# Me comería el "de" de "requiere de" sv
# Ok. mm
-#: main.c:2934
+#: src/main.c:2965
#, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "la opción '-%c' requiere un argumento positivo y entero"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%sEste programa fue construido para %s\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%sEste programa fue construido para %s (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1574,7 +1586,7 @@ msgstr ""
"%sNo existe GARANTÃA ALGUNA, hasta los límites permitidos por las leyes "
"aplicables.\n"
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1588,7 +1600,7 @@ msgstr ""
# Porqué 'del', o pones 'del programa' Make o pones
# 'de Make' em+
# Ok. mm
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1597,38 +1609,33 @@ msgstr ""
"\n"
"# Se termina la base de datos de Make en %s\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Error desconocido %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: usuario %lu (real %lu), grupo %lu (real %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "Acceso inicializado"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr "Acceso del usuario"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "Acceso del Make"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "Acceso del hijo"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: se ingresa a un directorio desconocido\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: se sale del directorio desconocido\n"
@@ -1642,7 +1649,7 @@ msgstr "%s: se sale del directorio desconocido\n"
# else
# printf ("%s[%u]: %s ", program, makelevel, message);
# Como notarás lo del directorio va en otro lado.
-#: output.c:109
+#: src/output.c:102
#, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "%s: se entra en el directorio '%s'\n"
@@ -1656,17 +1663,17 @@ msgstr "%s: se entra en el directorio '%s'\n"
# else
# printf ("%s[%u]: %s ", program, makelevel, message);
# Como notarás lo del directorio va en otro lado.
-#: output.c:111
+#: src/output.c:104
#, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "%s: se sale del directorio '%s'\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: se ingresa a un directorio desconocido\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: se sale del directorio desconocido\n"
@@ -1680,7 +1687,7 @@ msgstr "%s[%u]: se sale del directorio desconocido\n"
# else
# printf ("%s[%u]: %s ", program, makelevel, message);
# Como notarás lo del directorio va en otro lado.
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr "%s[%u]: se entra en el directorio '%s'\n"
@@ -1694,7 +1701,7 @@ msgstr "%s[%u]: se entra en el directorio '%s'\n"
# else
# printf ("%s[%u]: %s ", program, makelevel, message);
# Como notarás lo del directorio va en otro lado.
-#: output.c:122
+#: src/output.c:115
#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "%s[%u]: se sale del directorio '%s'\n"
@@ -1708,118 +1715,132 @@ msgstr "%s[%u]: se sale del directorio '%s'\n"
# else
# printf ("%s[%u]: %s ", program, makelevel, message);
# Como notarás lo del directorio va en otro lado.
-#: output.c:495 output.c:497
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
msgstr "error al escribir: stdout"
# Interrumpido (?). sv
# Mmgmh... El mensaje indica que hubo algún error muy grave y que por
# eso se detiene el make. Probablemente sea mejor dejarlo así. mm
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". Alto.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr "-O[TIPO] (--output-sync[=TIPO]) no está configurado para este «build»."
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "creando una tubería de tareas"
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
msgstr "duplicando una tubería de tareas"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr "se inicializa la tubería al servidor de tareas"
-#: posixos.c:90
+#: src/posixos.c:119
#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr "error interno: cadena --jobserver-auth inválida '%s'"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr "Cliente del servidor de tareas (fds %d,%d)\n"
-#: posixos.c:109
+#: src/posixos.c:138
msgid "jobserver pipeline"
msgstr "tubería al servidor de tareas"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr "escribir en el servidor de tareas"
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr "servidor de tareas detenido"
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
msgstr "tubería de trabajos «pselect»"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "tubería de trabajos leídos"
# Sugerencia: eliminar la palabra "archivo". sv
# Ok. Mejora. mm
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "Leyendo makefiles...\n"
-#: read.c:329
+#: src/read.c:336
#, c-format
msgid "Reading makefile '%s'"
msgstr "Leyendo makefile '%s'"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (no hay objetivo por defecto)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (ruta de búsqueda)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (no importa)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (no hay expansión del ~)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr "se salta BOM UTF-8 en el makefile '%s'\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr "se salta BOM UTF-8 en el «buffer» del makefile\n"
# ## Sintaxis no llevaba tilde.
# Ok. mm
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "sintaxis no válida en condicional"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr "%s: fallo al cargar"
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
msgstr "las instrucciones comenzaron antes del primer objetivo"
@@ -1828,100 +1849,120 @@ msgstr "las instrucciones comenzaron antes del primer objetivo"
# Cierto pareciera que se perdió dentro de algún circuito. mm
# Falta 'la' regla em+
# No no es la regla sino una regla pues puede ser cualquiera de ellas. mm
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
msgstr "falta una regla antes de las instrucciones"
-#: read.c:1124
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr "falta un separador (¿quiso decir TAB en vez de 8 espacios?)"
-#: read.c:1126
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
msgstr "falta un separador"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "falta un patrón de objetivos"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "hay varios patrones de objetivos"
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
msgstr "el patrón de objetivo no contiene '%%'"
-#: read.c:1390
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
msgstr "falta un 'endif'"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "nombre de variable vacío"
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
msgstr ""
"Hay un texto irrelevante o mal colocado después de la instrucción 'define'"
-#: read.c:1488
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "falta un 'endef', no se terminó un 'define'"
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
msgstr ""
"Hay un texto irrelevante o mal colocado después de la instrucción 'endef'"
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
msgstr "Texto irrelevante o mal colocado después de la instrucción '%s'"
-#: read.c:1589
+#: src/read.c:1604
#, c-format
msgid "extraneous '%s'"
msgstr "irrelevante o mal colocado '%s'"
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
msgstr "sólo se admite un 'else' por condicional"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr ""
"La definición de las variables específicas al blanco está mal construida"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr ""
"los prerequisitos no pueden ser definidos por los guiones de instrucciones"
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr "los objetivos agrupados deben proporcionar instrucción"
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr "las reglas implícitas y las de patrón estático están mezcladas"
# Y 'las' normales em+
# Ok. mm
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "las reglas implícitas y las normales están mezcladas"
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr "el objetivo '%s' no coincide con el patrón de objetivos"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
msgstr "el archivo de objetivos '%s' tiene líneas con : y ::"
# Cambiaría given por 'proporcionó' o 'indicó' em+
# Ok. mm
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
msgstr "el objetivo '%s' se proporcionó más de una vez en la misma regla"
@@ -1930,44 +1971,55 @@ msgstr "el objetivo '%s' se proporcionó más de una vez en la misma regla"
# si encaja mejor alguna de las dos que se proponen arriba
# em+
# Aunque no me acaba de convencer, que te parece ésto? mm
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr "atención: se anulan las instrucciones para el objetivo '%s'"
# Ojo con ignora. sv
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr "atención: se ignoran las instrucciones viejas para el objetivo '%s'"
# Y 'las' normales em+
# Ok. mm
-#: read.c:2223
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr ""
"*** las reglas implícitas y las normales están mezcladas: sintaxis obsoleta"
-#: read.c:2542
+# No me gusta esta traducción de override. Mira a ver
+# si encaja mejor alguna de las dos que se proponen arriba
+# em+
+# Aunque no me acaba de convencer, que te parece ésto? mm
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "atención: se anula pertenencia a grupo al objetivo '%s'"
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr "atención: hay un carácter NUL; se ignora el resto de la línea"
-#: remake.c:226
+#: src/remake.c:226
#, c-format
msgid "Nothing to be done for '%s'."
msgstr "No se hace nada para '%s'."
-#: remake.c:227
+#: src/remake.c:227
#, c-format
msgid "'%s' is up to date."
msgstr "'%s' está actualizado."
-#: remake.c:323
+#: src/remake.c:323
#, c-format
msgid "Pruning file '%s'.\n"
msgstr "Se poda el archivo '%s'.\n"
-#: remake.c:406
+#: src/remake.c:389
#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr ""
@@ -1975,7 +2027,7 @@ msgstr ""
# Sugerencia: No hay ninguna regla... sv
# Como una no hay ninguna. mm
-#: remake.c:416
+#: src/remake.c:399
#, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%sNo hay ninguna regla para construir el objetivo '%s'%s"
@@ -1986,7 +2038,7 @@ msgstr "%sNo hay ninguna regla para construir el objetivo '%s'%s"
# de las que aparecen al hacer un make con la opción -d ( debug )
# se refiere a lo que dice Santiago, es decir, 'archivo objetivo' em+
# Ok creo que tienen razón. mm
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
msgstr "Se considera el archivo objetivo '%s'.\n"
@@ -1997,32 +2049,32 @@ msgstr "Se considera el archivo objetivo '%s'.\n"
# o bien "Se intentó sin éxito actualizar ..."
# ¿Qué te parece? sv
# Bien y tiene razón. mm
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr "Se intentó hace poco, sin éxito, actualizar el archivo '%s'.\n"
-#: remake.c:461
+#: src/remake.c:444
#, c-format
msgid "File '%s' was considered already.\n"
msgstr "Ya se ha tenido en cuenta el archivo '%s'.\n"
-#: remake.c:471
+#: src/remake.c:454
#, c-format
msgid "Still updating file '%s'.\n"
msgstr "Se continúa actualizando el archivo '%s'.\n"
-#: remake.c:474
+#: src/remake.c:457
#, c-format
msgid "Finished updating file '%s'.\n"
msgstr "Se terminó de actualizar el archivo '%s'.\n"
-#: remake.c:503
+#: src/remake.c:486
#, c-format
msgid "File '%s' does not exist.\n"
msgstr "El archivo '%s' no existe.\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
@@ -2030,26 +2082,26 @@ msgstr ""
"*** Atención: el archivo .LOW_RESOLUTION_TIME '%s' tiene una marca de tiempo "
"de alta resolución"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr "Se encontró una regla implícita para '%s'.\n"
# Se ha encontrado em+
# Ok, pero procuro evitar como a la muerte los gerundios. mm
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr "No se ha encontrado ninguna regla implícita para '%s'.\n"
# Por defecto, como haces arriba em+
# en efecto, mm
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
msgstr "Se utilizan las instrucciones por omisión para '%s'.\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "Se elimina la dependencia circular %s <- %s."
@@ -2057,73 +2109,73 @@ msgstr "Se elimina la dependencia circular %s <- %s."
# Lo mismo de antes con "target file". sv
# Estoy de acuerdo con él ( por una vez ;) ) em+
# Ok. mm
-#: remake.c:691
+#: src/remake.c:674
#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr "Se terminaron las dependencias del archivo objetivo '%s'.\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr "Se están construyendo las dependencias de '%s'.\n"
# Give up no es enfocar, es abandonar, o desistir em+
# Si, metí la pata. mm
-#: remake.c:711
+#: src/remake.c:694
#, c-format
msgid "Giving up on target file '%s'.\n"
msgstr "Se abandona el archivo objetivo '%s'.\n"
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
msgstr "Debido a los errores, el objetivo '%s' no se reconstruyó."
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr "La dependencia '%s' es solo de orden para el objetivo '%s'.\n"
-#: remake.c:773
+#: src/remake.c:756
#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr "La dependencia '%s' del objetivo '%s' no existe.\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr "La dependencia '%s' es más reciente que el objetivo '%s'.\n"
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr "La dependencia '%s' es anterior al objetivo '%s'.\n"
# Ahorra espacio, y pon '::' en vez de eso :) em+
# Bueno, no es mala idea. A ver si te gusta lo que puse. mm
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr ""
"El objetivo '%s' es de tipo dos puntos dos veces (::)\n"
"y no tiene dependencias.\n"
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr "No hay instrucciones para '%s' y ninguna dependencia ha cambiado.\n"
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr "Haciendo '%s' debido a la bandera always-make.\n"
-#: remake.c:819
+#: src/remake.c:802
#, c-format
msgid "No need to remake target '%s'"
msgstr "No es necesario reconstruir el objetivo '%s'."
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
msgstr "; se usa el nombre del VPATH '%s'"
@@ -2131,17 +2183,17 @@ msgstr "; se usa el nombre del VPATH '%s'"
# Revisa todo el po con un search, y mira a ver si decides usar
# regenerar o reconstruir ( prefiero lo último 10000 veces ) em+
# Ok, buena propuesta. mm
-#: remake.c:841
+#: src/remake.c:824
#, c-format
msgid "Must remake target '%s'.\n"
msgstr "Se debe reconstruir el objetivo '%s'.\n"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr " Se ignora el nombre del VPATH '%s'.\n"
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr "Las instrucciones de '%s' se están ejecutando.\n"
@@ -2149,48 +2201,41 @@ msgstr "Las instrucciones de '%s' se están ejecutando.\n"
# Target file no es archivo de objetivos, sino el archivo objetivo
# make no tiene ningún archivo de objetivos em+
# Ok. mm
-#: remake.c:863
+#: src/remake.c:846
#, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr "Fallo al reconstruir el archivo objetivo '%s'.\n"
# Lo mismo em+
# Ok. mm
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr "Se reconstruyó con éxito el archivo objetivo '%s'.\n"
# Otra vez em+
# Ok, no te puedes quejar de falta de consistencia en este caso! mm
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr "Se necesita reconstruir el archivo objetivo '%s' con la opción -q.\n"
# Por defecto, como haces arriba em+
# en efecto, mm
-#: remake.c:1064
+#: src/remake.c:1047
#, c-format
msgid "Using default commands for '%s'.\n"
msgstr "Se utilizan las instrucciones por defecto para '%s'.\n"
# Ubicada :)) , que tal futura, a secas ? em+
# Bueno, sonaba como StarTrek, muy chido, pero acepto tu sugerencia. mm
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "Atención: El archivo '%s' tiene una hora de modificación en el futuro"
-
-# Ubicada :)) , que tal futura, a secas ? em+
-# Bueno, sonaba como StarTrek, muy chido, pero acepto tu sugerencia. mm
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr ""
"Atención: El archivo '%s' tiene una hora de modificación %s s en el futuro"
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr "El elemento .LIBPATTERNS '%s' no es un patrón"
@@ -2207,12 +2252,17 @@ msgstr "El elemento .LIBPATTERNS '%s' no es un patrón"
# no se exportarán em+
# Muchísimo más claro (es más me gusta más en español que en inglés con tu
# arreglo) mm
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr "Los valores definidos por el usuario no se exportarán: %s\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -2220,7 +2270,7 @@ msgstr ""
"\n"
"# Reglas implícitas."
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -2228,33 +2278,29 @@ msgstr ""
"\n"
"# No hay reglas implícitas."
-#: rule.c:514
+#: src/rule.c:548
#, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
-"# %u reglas implícitas, %u"
-
-#: rule.c:523
-msgid " terminal."
-msgstr " terminal."
+"# %u reglas implícitas, %u (%.1f%%) terminal."
# ## Añado ¡ con tu permiso. sv
# Gracias. mm
# ¿ qué tal erróneo ? em+
# Si, suena mejor. mm
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "BUG: ¡num_pattern_rules erróneo! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "señal desconocida"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Colgado"
@@ -2262,25 +2308,25 @@ msgstr "Colgado"
# Porque es una acción. De hecho es un mensaje que se envía a través
# del sistema en este caso le enviarías un kill -INT num_proceso para
# interrumpir al programa. Lo revisé contra el fuente. mm
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "Interrumpir"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Finalizar"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "Instrucción no válida"
# Los trap los hemos dejado como traps, simplemente. em+
# Ok. mm
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "Trace/breakpoint trap"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Abortado"
@@ -2288,13 +2334,13 @@ msgstr "Abortado"
# Enrique tiene esta misma frase en glibc. sv
# Eso es :) IOT trap em+
# Ok. mm
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "IOT trap"
# Otra em+
# Ok. mm
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "EMT trap"
@@ -2303,7 +2349,7 @@ msgstr "EMT trap"
# por eso usamos el punto flotante. Debemos llegar a un acuerdo.
# Por ahora pongo coma flotante para facilitar las cosas, pero bajo
# protesta ;-) mm
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "Excepción de coma flotante"
@@ -2312,23 +2358,23 @@ msgstr "Excepción de coma flotante"
# Bueno, creo que mi traducción es más exacta, concisa y clara
# pero si insisten... Además recuerda en que estoy en un país
# en donde asesinado es palabra de todos los días. mm
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Terminado (killed)"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "Error en el bus"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Fallo de segmentación"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "Llamada al sistema errónea"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "Tubería rota"
@@ -2339,36 +2385,36 @@ msgstr "Tubería rota"
# Bueno, un alarm clock es una alarma del reloj. No tiene pierde.
# Temporizador es una bonita palabra pero en donde dice que va a
# sonar una campana para despertarte? mm
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Alarma del reloj"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "Finalizado"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "Señal 1 definida por el usuario"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "Señal 2 definida por el usuario"
# Proceso hijo terminado em+
# Ok. mm
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "Proceso hijo terminado"
# Fallo. sv
# Alimentación eléctrico em+
# Ok. mm
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Falla de alimentación eléctrica"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Detenido"
@@ -2379,30 +2425,30 @@ msgstr "Detenido"
# Requiere 'de';) , como te vea Santiago que le metes
# otro 'de' otra vez ... em+
# Ok. mm
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Detenido (se requiere entrada de terminal)"
# lo mismo, se requiere entrada de terminal , em+
# Ok. mm
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Detenido (se requiere salida de terminal)"
# idem em+
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Detenido (se requiere una señal)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "Se agotó el tiempo de CPU permitido"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "Se excedió el tamaño máximo de archivo permitido"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "El contador de tiempo virtual ha expirado"
@@ -2414,51 +2460,51 @@ msgstr "El contador de tiempo virtual ha expirado"
# Esto lo tengo en glibc, lo mirare otro día. Estos mensajes no son
# importantes em+
# Agregué unas palabras en aras de claridad (espero) mm
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "El contador de tiempo para la generación del perfil ha expirado"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "La ventana ha cambiado"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Continuado"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "Condición urgente de I/O"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "Posible I/O"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "Recurso perdido"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Señal de peligro"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Petición de información"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "Coprocesador de punto flotante no disponible"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
@@ -2467,7 +2513,7 @@ msgstr ""
"\n"
"%s No hay «buffers» strcache\n"
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -2478,21 +2524,21 @@ msgstr ""
"%s «buffers» strcache: %lu (%lu) / cadenas = %lu / almacenamiento = %lu B / "
"promedio = %lu B\n"
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
"%s «buffer» actual: tamaño = %hu B / utilizado = %hu B / número = %hu / "
-"promedio = %hu B\n"
+"promedio = %u B\n"
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr ""
"%s otros utilizado: total = %lu B / / número = %lu / promedio = %lu B\n"
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
@@ -2500,7 +2546,7 @@ msgstr ""
"%s otros libre: total = %lu B / máx = %lu B / mín = %lu B / promedio = %hu "
"B\n"
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
@@ -2509,7 +2555,7 @@ msgstr ""
"\n"
"%s rendimiento de strcache: búsquedas = %lu / coincidencias = %lu%%\n"
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
@@ -2519,44 +2565,44 @@ msgstr ""
# Lo he cmabiado em+
# Ok. Deberíamos platicarlo con Ulrich. mm
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "automática/o"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "por defecto"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "entorno"
# Sugerencia: No poner archivo. sv
# Ok. mm
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "makefile"
# 'bajo -e' = 'con -e activo' em+
# Ok. Esta inversión en los idiomas sajones se pega. mm
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "con -e activo"
# Línea de comandos me parece correcto em+
# Ver arriba. Estoy de acuerdo si así han traducido en otros lados. mm
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "línea de instrucciones"
# Creo que tendremos un problema con instrucción, comando
# , programa y directiva . Está claro que aquí es directiva em+
# Ok, pero no deja de sonar a RoboCop. A ver que te parece como quedó. mm
-#: variable.c:1647
+#: src/variable.c:1671
msgid "'override' directive"
msgstr "directiva 'override'"
-#: variable.c:1658
+#: src/variable.c:1682
#, c-format
msgid " (from '%s', line %lu)"
msgstr " (de '%s', línea %lu):"
@@ -2566,11 +2612,11 @@ msgstr " (de '%s', línea %lu):"
# Estos mensajes son para debug, no creo que haga falta usar cubetas ;) em+
# Tienes razón, si el debugueador no lo entiende pues, ... que se
# dedique a otra cosa. mm
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr "# estadísticas del conjunto de variables de la tabla «hash»:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2578,7 +2624,7 @@ msgstr ""
"\n"
"# Variables\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
@@ -2586,7 +2632,7 @@ msgstr ""
"\n"
"# Valores de variables específicas al patrón"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2594,7 +2640,7 @@ msgstr ""
"\n"
"# No hay valores de variables específicas al patrón."
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
@@ -2605,51 +2651,51 @@ msgstr ""
# ¿Qué te parece "atención"? Lo hemos usado mucho en otros programas. sv
# Pero que bestia soy. Perdón por el desbarre. mm
-#: variable.h:224
+#: src/variable.h:229
#, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "atención: la variable '%.*s' no ha sido definida"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr "fallo en sys$search() con %d\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr "-atención, deberás rehabilitar el manejo del CTRL-Y desde el DCL.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "CD INTEGRADO %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr "DCL: %s\n"
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr "Salida redirigida a %s\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr "Agregada a %.*s y limpieza\n"
# "en sustituto" me suena muy raro. Propongo: "en su lugar" en su lugar :-) sv
# Ok. mm
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "En su lugar, se ejecuta %s\n"
# ¿Y al revés?: Rutas de búsqueda VPATH. sv
# Mejora
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2659,13 +2705,13 @@ msgstr ""
# Rutas creo que queda mejor. sv
# Ok. Es más común. mm
-#: vpath.c:620
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
msgstr "# No hay rutas de búsqueda 'vpath'."
# ¡Ah! Aquí si que pones el vpath al final, ¿eh? :-) sv
# You really got me! mm
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
@@ -2674,7 +2720,7 @@ msgstr ""
"\n"
"# %u rutas de búsqueda 'vpath'.\n"
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
@@ -2682,7 +2728,7 @@ msgstr ""
"\n"
"# No hay ruta de búsqueda general (variable 'VPATH')."
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
@@ -2692,17 +2738,17 @@ msgstr ""
"# Ruta de búsqueda general (variable 'VPATH'):\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr "Ranuras del servidor de tareas limitads a %d\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr "creando semáforo del servidor de tareas: (Error %ld: %s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
@@ -2710,21 +2756,54 @@ msgstr ""
"error interno: no se pudo abrir el semáforo del servidor de tareas '%s': "
"(Error %ld: %s)"
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr "Cliente del servidor de tareas (semáforo %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr "liberar semáforo del servidor de tareas: (Error %ld: %s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr "semáforo o proceso hijo en espera: (Error %ld: %s)"
+#~ msgid "%s: %s: Command not found\n"
+#~ msgstr "%s: %s: No se encontró el programa\n"
+
+#~ msgid "%s[%u]: %s: Command not found\n"
+#~ msgstr "%s[%u]: %s: No se encontró el programa\n"
+
+# ¿Y "el programa Shell"? (a secas) sv
+# Si. Suena mucho mejor. mm
+# Suena, pero no es mejor. Tal y como esta escrito, incluso
+# yo pensaria que me falta un programa en mi sistema que se
+# llame shell. No se ha encontrado el 'shell'em+
+# Es bueno contar con una segunda opinión ... mm
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s: No se ha encontrado el `shell'"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s está suspendida por 30 segundos..."
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "se hizo un sleep(30). Continuando.\n"
+
+#~ msgid "Unknown error %d"
+#~ msgstr "Error desconocido %d"
+
+# Ubicada :)) , que tal futura, a secas ? em+
+# Bueno, sonaba como StarTrek, muy chido, pero acepto tu sugerencia. mm
+#~ msgid "Warning: File '%s' has modification time in the future"
+#~ msgstr ""
+#~ "Atención: El archivo '%s' tiene una hora de modificación en el futuro"
+
+#~ msgid " terminal."
+#~ msgstr " terminal."
+
# No me gusta esta traducción de override. Mira a ver
# si encaja mejor alguna de las dos que se proponen arriba
# em+
diff --git a/po/fi.gmo b/po/fi.gmo
index bc0cd30..1c367cd 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index 52757e2..5b82045 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: make 4.2\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
"PO-Revision-Date: 2016-05-26 20:40+0300\n"
"Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
@@ -15,116 +15,118 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"X-Generator: Poedit 1.8.7\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ar.c:46
+#: src/ar.c:46
#, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "yritettiin käyttää ominaisuutta, jolle ei ole tukea: â€%sâ€"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "arkistojäsenten kosketus ei ole mahdollista VMS:ssä"
-#: ar.c:147
+#: src/ar.c:147
#, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "touch: Arkistoa â€%s†ei ole olemassa"
-#: ar.c:150
+#: src/ar.c:150
#, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "touch: â€%s†ei ole kelvollinen arkisto"
-#: ar.c:157
+#: src/ar.c:157
#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "touch: Arkistossa â€%1$s†ei ole jäsentä â€%2$sâ€"
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr "touch: ar_member_touch antoi virheellisen paluuarvon kohteesta â€%sâ€"
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr "lbr$set_module() epäonnistui moduulitietojen noutamisessa, tila = %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "lbr$ini_control() epäonnistui, tila = %d"
-#: arscan.c:261
+#: src/arscan.c:261
#, fuzzy, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr "kirjastoa â€%s†ei voi avata jäsenen â€%s†etsimiseksi"
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr "Jäsen â€%sâ€%s: %ld tavua kohdassa %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (nimi voi olla typistynyt)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Päiväys %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, oikeudet = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr ""
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** Katkaisu.\n"
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr "*** [%s] Arkistojäsen â€%s†voi olla viallinen – ei poisteta"
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr "*** Arkistojäsen â€%s†voi olla viallinen – ei poisteta"
-#: commands.c:645
+#: src/commands.c:646
#, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] Poistetaan tiedosto â€%sâ€"
-#: commands.c:647
+#: src/commands.c:648
#, c-format
msgid "*** Deleting file '%s'"
msgstr "*** Poistetaan tiedosto â€%sâ€"
-#: commands.c:683
+#: src/commands.c:684
#, fuzzy
msgid "# recipe to execute"
msgstr "# käynnisetttävät komennot"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (sisäänrakennettu):"
-#: commands.c:688
+#: src/commands.c:689
#, c-format
msgid " (from '%s', line %lu):\n"
msgstr " (tiedosto â€%sâ€, rivi %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -132,224 +134,226 @@ msgstr ""
"\n"
"# Hakemistot\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: tilaa ei voitu lukea.\n"
-#: dir.c:1085
+#: src/dir.c:1089
#, fuzzy
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
msgstr "# %s (avain %s, maika %d): ei voitu avata.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr "# %s (laite %d, i-solmu [%d,%d,%d]): ei voitu avata.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr "# %s (laite %ld, i-solmu %ld): ei voitu avata.\n"
-#: dir.c:1122
+#: src/dir.c:1126
#, fuzzy
msgid "# %s (key %s, mtime %I64u): "
msgstr "# %s (avain %s, maika %d: "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (laite %d, i-solmu [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (laite %ld, i-solmu %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "Ei"
# Juuri näin, muodostetaan käännöslause yksittäisistä sanoista...
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " tiedostoa, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "ei"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " mahdottomuutta"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " tähän mennessä."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " mahdottomuutta %lu hakemistossa.\n"
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr "Rekursiivinen muuttuja â€%s†viittaa (lopulta) itseensä"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "päättämätön muuttujaviittaus"
-#: file.c:278
+#: src/file.c:278
#, fuzzy, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr "Tiedostolle â€%s†määriteltiin komentoja paikassa %s:%lu,"
-#: file.c:283
+#: src/file.c:283
#, fuzzy, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr "Tiedostolle â€%s†löytyi komentoja oletussääntöhaussa,"
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr "mutta â€%sâ€:n katsotaan nyt olevan sama tiedosto kuin â€%sâ€."
-#: file.c:290
+#: src/file.c:290
#, fuzzy, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr ""
"Tiedoston â€%s†komentoja ei huomioida, vaan käytetään komentoja tiedostosta "
"â€%sâ€."
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr ""
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr ""
-#: file.c:408
+#: src/file.c:408
#, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "*** Poistetaan aputiedosto â€%sâ€"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "Poistetaan aputiedostot...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "Tämänhetkinen aika"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: Aikaleima ei ole sallitulla välillä, korvataan %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# Ei kohde:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# Arvokas tiedosto (ennakkoehto .PRECIOUS:ille)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# Valekohde (ennakkoehto .PHONY:lle)."
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# Komentorivikohde."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr "# Oletus-, MAKEFILES- tai -include/sinclude -makefile-tiedosto."
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
msgstr "# Sisäänrakennettu sääntö"
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# Oletussääntöhaku on suoritettu."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# Oletussääntöhakua ei ole suoritettu."
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr ""
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr "# Tiedosto on välitason ennakkoehto."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# Tuotetaan myös:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# Muutosaikaa ei koskaan tarkastettu."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# Tiedosto ei ole olemassa."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# Tiedosto on hyvin vanha."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# Viimeksi muutettu %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# Tiedosto on päivitetty."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# Tiedostoa ei ole päivitetty."
-#: file.c:1008
+#: src/file.c:1062
#, fuzzy
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# Ajossa olevat komennot (TÄMÄ ON OHJELMISTOVIKA)."
-#: file.c:1011
+#: src/file.c:1065
#, fuzzy
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr "# Ajossa olevat riippuvuuskomennot (TÄMÄ ON OHJELMISTOVIKA)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# Päivitetty onnistuneesti."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# Vaatii päivitystä (-q on asetettu)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# Päivitys epäonnistui."
-#: file.c:1032
+#: src/file.c:1086
#, fuzzy
msgid "# Invalid value in 'command_state' member!"
msgstr "# Virheellinen arvo â€command_stateâ€-jäsenessä!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -357,7 +361,7 @@ msgstr ""
"\n"
"# Tiedostot"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -367,333 +371,340 @@ msgstr ""
"# tilasto tiedostojen hajautustaulusta:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr ""
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
msgstr "ei-numeerinen ensimmäinen argumentti â€wordâ€-funktiolle"
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr "â€wordâ€-funktion ensimmäisen argumentin on oltava suurempi kuin 0"
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
msgstr "ei-numeerinen ensimmäinen argumentti â€wordlistâ€-funktiolle"
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
msgstr "ei-numeerinen toinen argumentti â€wordlistâ€-funktiolle"
-#: function.c:1525
+#: src/function.c:1533
#, fuzzy, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "create_child_process: DuplicateHandle(In) epäonnistui (v=%d)\n"
-#: function.c:1549
+#: src/function.c:1557
#, fuzzy, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr "create_child_process: DuplicateHandle(Err) epäonnistui (v=%d)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "CreatePipe() epäonnistui (v=%ld)\n"
-#: function.c:1564
-#, fuzzy
+#: src/function.c:1572
+#, fuzzy, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe (): process_init_fd() epäonnistui\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "Siivotaan väliaikainen komentotiedosto %s\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr "tiedosto: tiedostonimi puuttuu"
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
msgstr "open: %s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
msgstr "write: %s: %s"
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, c-format
msgid "close: %s: %s"
msgstr "close: %s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr "tiedosto: liian monta argumenttia"
-#: function.c:2262
+#: src/function.c:2277
#, c-format
msgid "read: %s: %s"
msgstr "read: %s: %s"
-#: function.c:2275
+#: src/function.c:2290
#, fuzzy, c-format
msgid "file: invalid file operation: %s"
msgstr "Virheellinen tiedostotoiminto: %s"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr "liian vähän (%d) argumentteja funktiolle â€%sâ€"
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "ei toteutettu tällä alustalla: funktio â€%sâ€"
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr "päättämätön kutsu funktioon â€%sâ€: puuttuva â€%câ€"
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr "Tyhjä funktionimi"
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr "Virheellinen funktionimi: %s"
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr "Funktionimi on liian pitkä: %s"
-#: function.c:2657
+#: src/function.c:2674
#, fuzzy, c-format
msgid "Invalid minimum argument count (%u) for function %s"
msgstr "Virheellinen vähimmäisargumenttimäärä (%d) funktiolle %s"
-#: function.c:2660
+#: src/function.c:2677
#, fuzzy, c-format
msgid "Invalid maximum argument count (%u) for function %s"
msgstr "Virheellinen enimmäisargumenttimäärä (%d) funktiolle %s"
-#: getopt.c:659
+#: src/getopt.c:659
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: valitsin â€%s†on moniselitteinen\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: valitsin â€--%s†ei salli argumenttia\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: valitsin â€%c%s†ei salli argumenttia\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: valitsin â€%s†vaatii argumentin\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: tunnistamaton valitsin â€--%sâ€\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: tunnistamaton valitsin â€%c%sâ€\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: virheellinen valitsin -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: virheellinen valitsin -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: valitsin vaatii argumentin -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: valitsin â€-W %s†on moniselitteinen\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: valitsin â€-W %s†ei salli argumenttia\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr "guile: Lavennetaan â€%sâ€\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr ""
-#: hash.c:49
+#: src/hash.c:50
#, fuzzy, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr "ei voida varata %ld tavua hajautustaululle: muisti lopussa"
-#: hash.c:280
-#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
+#: src/hash.c:280
+#, fuzzy, c-format
+msgid "Load=%lu/%lu=%.0f%%, "
msgstr "Kuormitus=%ld/%ld=%.0f%%, "
-#: hash.c:282
-#, c-format
-msgid "Rehash=%d, "
+#: src/hash.c:282
+#, fuzzy, c-format
+msgid "Rehash=%u, "
msgstr "Uudelleenhajautus=%d, "
-#: hash.c:283
-#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
+#: src/hash.c:283
+#, fuzzy, c-format
+msgid "Collisions=%lu/%lu=%.0f%%"
msgstr "Törmäykset=%ld/%ld=%.0f%%"
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr "Etsitään oletussääntöä kohteelle â€%sâ€.\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr "Etsitään arkistojäsenen oletussääntöä kohteelle â€%sâ€.\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr "Vältetään oletussääntörekursio.\n"
-#: implicit.c:486
-#, c-format
-msgid "Stem too long: '%.*s'.\n"
+#: src/implicit.c:484
+#, fuzzy, c-format
+msgid "Stem too long: '%s%.*s'.\n"
msgstr "Liian pitkä runko: â€%.*sâ€.\n"
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr "Kokeillaan hahmosääntöä rungolla â€%.*sâ€.\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr "Hylätään mahdoton säännön ennakkoehto â€%sâ€.\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr "Hylätään mahdoton oletusennakkoehto â€%sâ€.\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr "Yritetään käyttää säännön ennakkoehtoa â€%sâ€.\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr "Yritetään käyttää oletusennakkoehtoa â€%sâ€.\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr "Löydettiin ennakkoehto â€%sâ€, joka on VPATH â€%sâ€\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr "Etsitään sääntöä aputiedostolla â€%sâ€.\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr "Väliaikaistiedoston luominen ei onnistu\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (muisti vedostettu)"
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr " (ei huomioida)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
msgstr "<sisäänrakennettu>"
-#: job.c:510
+#: src/job.c:573
#, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "%s[%s: %s] Virhe %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** Odotetaan keskeneräisiä töitä...."
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr ""
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (etä)"
-#: job.c:831
+#: src/job.c:898
#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
+msgid "Reaping winning child %p PID %s %s\n"
msgstr ""
-#: job.c:832
+#: src/job.c:899
#, c-format
-msgid "Reaping winning child %p PID %s %s\n"
+msgid "Reaping losing child %p PID %s %s\n"
msgstr ""
-#: job.c:839
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "Siivotaan väliaikainen komentotiedosto %s\n"
-#: job.c:845
+#: src/job.c:956
#, fuzzy, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr "Siivotaan väliaikainen komentotiedosto %s\n"
-#: job.c:951
+#: src/job.c:1071
#, fuzzy, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr "Poistetaan ketjusta lapsiprosessi 0x%08lx PID %ld%s.\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr ""
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, fuzzy, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "process_easy() epäonnistui prosessin käynnistämisessä (v=%d)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -702,98 +713,92 @@ msgstr ""
"\n"
"Laskettiin %d argumenttia epäonnistuneessa käynnistyksessä\n"
-#: job.c:1581
+#: src/job.c:1642
#, fuzzy, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr "Lisätään ketjuun lapsiprosessi 0x%08lx (%s) PID %ld%s.\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr ""
-#: job.c:1838
+#: src/job.c:1902
#, c-format
msgid "%s: target '%s' does not exist"
msgstr "%s: kohde â€%s†ei ole olemassa"
-#: job.c:1841
+#: src/job.c:1905
#, fuzzy, c-format
msgid "%s: update target '%s' due to: %s"
msgstr ""
"%1$sâ€%3$sâ€-kohteen tarvitseman kohteen â€%2$s†tuottamiseen ei ole sääntöä%4$s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr "kuormarajoja ei voi ottaa käyttöön tässä käyttöjärjestelmässä"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "kuormarajaa ei voi ottaa käyttöön: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr ""
"tiedostokahvoja ei ole enempää: vakiosyötteen kahdentaminen ei onnistunut\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr ""
"tiedostokahvoja ei ole enempää: vakiotulosteen kahdentaminen epäonnistui\n"
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr ""
"tiedostokahvoja ei ole enempää: vakiovirhetulosteen kahdentaminen ei "
"onnistunut\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr "Vakiosyötettä ei voitu palauttaa\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr "Vakiotulostetta ei voitu palauttaa\n"
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr "Vakiovirhetulostetta ei voitu palauttaa\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr ""
-#: job.c:2275
-#, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: %s: Komentoa ei löytynyt\n"
-
-#: job.c:2277
+#: src/job.c:2623
#, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s[%u]: %s: Komentoa ei löytynyt\n"
-
-#: job.c:2337
-#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: Kuoriohjelmaa ei löytynyt"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr "spawnvpe: ympäristötila saattaa olla lopussa"
-#: job.c:2584
+#: src/job.c:2862
#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "$SHELL muuttunut (oli â€%sâ€, nyt â€%sâ€)\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr "Luodaan väliaikainen komentotiedosto %s\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
@@ -801,7 +806,7 @@ msgstr ""
"Komentojonotiedoston sisältö:\n"
"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
@@ -810,59 +815,55 @@ msgstr ""
"Komentojonotiedoston sisältö:%s\n"
"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr "%s (rivi %d) Väärä kuoriympäristö (!unixy && !batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr ""
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr ""
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr ""
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr ""
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr ""
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr ""
-#: load.c:256
-#, fuzzy
+#: src/load.c:256
+#, fuzzy, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr "Rinnakkaiset työt (-j) eivät ole tuettuja tällä alustalla."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "Valitsimet:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr ""
" -b, -m Yhteensopivuuden vuoksi jätetään huomiotta.\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr " -B, --always-make Tuota kaikki kohteet ehdoitta.\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
@@ -870,16 +871,16 @@ msgstr ""
" -C HAKEMISTO, --directory=HAKEMISTO\n"
" Siirry HAKEMISTOon ennen jatkamista.\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr " -d Näytä runsaasti vianetsintätietoja.\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr " --debug[=LIPUT] Näytä monenlaisia vianetsintätietoja.\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
@@ -888,12 +889,12 @@ msgstr ""
" Ympäristömuuttujat kumoavat makefile-"
"tiedostot.\n"
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -901,18 +902,18 @@ msgstr ""
" -f TIEDOSTO, --file=TIEDOSTO, --makefile=TIEDOSTO\n"
" Käytä TIEDOSTOa makefile-tiedostona.\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help Näytä tämä viesti ja poistu.\n"
-#: main.c:360
+#: src/main.c:357
#, fuzzy
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr ""
" -i, --ignore-errors Älä huomioi suoritettujen komentojen "
"virheitä.\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
@@ -921,7 +922,7 @@ msgstr ""
" Etsi sisällytettäviä makefile:ja "
"HAKEMISTOsta.\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
@@ -929,14 +930,14 @@ msgstr ""
" -j [N], --jobs[=N] Salli N yhtäaikaista työtä; ilman N:ää "
"ääretön.\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
" -k, --keep-going Jatka vaikka joidenkin kohteiden tuottaminen\n"
" epäonnistuisi.\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
@@ -946,7 +947,7 @@ msgstr ""
" Älä aloita useita töitä ellei kuormitus alle "
"N.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
@@ -954,7 +955,7 @@ msgstr ""
" -L, --check-symlink-times Käytä uusinta mtime-aikaa symlinkkien ja\n"
" kohteen välillä.\n"
-#: main.c:374
+#: src/main.c:371
#, fuzzy
msgid ""
" -n, --just-print, --dry-run, --recon\n"
@@ -965,7 +966,7 @@ msgstr ""
" Näytä ajettavat komennot, älä käynnistä "
"niitä.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
@@ -974,17 +975,17 @@ msgstr ""
" -o TIEDOSTO, --old-file=TIEDOSTO, --assume-old=TIEDOSTO\n"
" Käsittele TIEDOSTO vanhana, älä tuota sitä.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
msgstr ""
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr " -p, --print-data-base Näytä make:in sisäinen tietokanta.\n"
-#: main.c:385
+#: src/main.c:382
#, fuzzy
msgid ""
" -q, --question Run no recipe; exit status says if up to "
@@ -993,22 +994,29 @@ msgstr ""
" -q, --question Älä aja komentoja; paluuarvo kertoo ajan-\n"
" tasaisuuden.\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr ""
" -r, --no-builtin-rules Poista käytöstä sisäiset oletussäännöt.\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr ""
" -R, --no-builtin-variables Poista käytöstä sisäiset muuttuja-asetukset.\n"
-#: main.c:391
+#: src/main.c:388
#, fuzzy
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr " -s, --silent, --quiet Älä kaiuta komentoja.\n"
-#: main.c:393
+#: src/main.c:390
+#, fuzzy
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" -q, --question Älä aja komentoja; paluuarvo kertoo ajan-\n"
+" tasaisuuden.\n"
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
@@ -1016,25 +1024,25 @@ msgstr ""
" -S, --no-keep-going, --stop\n"
" Kumoaa valitsimen -k.\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr " -t, --touch Kosketa kohteita tuottamisen sijaan.\n"
-#: main.c:398
+#: src/main.c:397
#, fuzzy
msgid " --trace Print tracing information.\n"
msgstr " -d Näytä runsaasti vianetsintätietoja.\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr " -v, --version Näytä make:in versionumero ja poistu.\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory Näytä nykyinen hakemisto.\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
@@ -1042,7 +1050,7 @@ msgstr ""
" --no-print-directory Kumoa -w, vaikka se olisi käytössä "
"oletuksena.\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1051,7 +1059,7 @@ msgstr ""
"new=TIEDOSTO\n"
" Käsittele TIEDOSTO aina uutena.\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
@@ -1059,26 +1067,27 @@ msgstr ""
" --warn-undefined-variables Varoita viittauksista määrittelemättömiin\n"
" muuttujiin.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "tyhjä merkkijono ei kelpaa tiedostonimeksi"
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
msgstr "tuntematon vianetsintätason määritys â€%sâ€"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr ""
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr "%s: Keskeytys/poikkeus siepattu (koodi = 0x%lx, osoite = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, fuzzy, c-format
msgid ""
"\n"
@@ -1093,139 +1102,146 @@ msgstr ""
"Poikkeusliput = %x\n"
"Poikkeusosoite = %x\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "Suojausvirhe: kirjoitusoperaatio osoitteeseen 0x%p\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "Suojausvirhe: lukuoperaatio osoitteeseen 0x%p\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, fuzzy, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell asettaa default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, fuzzy, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr "find_and_set_shell: polkuhaku asetti default_shell = %s\n"
-#: main.c:1538
-#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s keskeytyy 30 sekunniksi..."
-
-#: main.c:1540
-#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "sleep(30) valmis. Jatketaan.\n"
-
-#: main.c:1627
-#, fuzzy
+#: src/main.c:1609
+#, fuzzy, c-format
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
"varoitus: työpalvelin ei käytettävissä: käytetään -j1. Lisää â€+†ylemmän "
"tason make-sääntöön."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
+#: src/main.c:1617
+#, fuzzy, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
msgstr "varoitus: -jN pakotettu ali-make:ssa: poistetaan työpalvelin käytöstä."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr "Makefile-tiedosto vakiosyötteestä määritelty kahdesti."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (väliaikaistiedosto)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (väliaikaistiedosto)"
-#: main.c:2048
+#: src/main.c:2004
+#, fuzzy, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr "varoitus: -jN pakotettu ali-make:ssa: poistetaan työpalvelin käytöstä."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr "Rinnakkaiset työt (-j) eivät ole tuettuja tällä alustalla."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "Palataan yhden työn (-j1) tilaan."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr "Ei tukea symbolisille linkeille: poistetaan -L käytöstä."
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "Päivitetään makefile-tiedostoja....\n"
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr ""
"Ei uudelleentuoteta makefile-tiedostoa â€%s†– vältetään mahdollinen ikuinen "
"silmukka.\n"
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
msgstr "Makefile-tiedoston â€%s†uudelleentuottaminen epäonnistui."
-#: main.c:2299
+#: src/main.c:2323
#, c-format
msgid "Included makefile '%s' was not found."
msgstr "Sisällytettyä makefile-tiedostoa â€%s†ei löytynyt."
-#: main.c:2304
+#: src/main.c:2328
#, c-format
msgid "Makefile '%s' was not found"
msgstr "Makefile-tiedostoa â€%s†ei löytynyt"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "Ei voitu siirtyä takaisin alkuperäiseen hakemistoon."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "Uudelleenkäynnistetään[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (väliaikaistiedosto): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ".DEFAULT_GOAL sisältää yli yhden kohteen"
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Kohteita ei ole annettu, eikä makefileä löytynyt"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "Ei kohteita"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Kohteita ei ole annettu, eikä makefileä löytynyt"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr ""
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr ""
"varoitus: Havaittu väärä kellonaika. Käännösversio saattaa olla "
"epätäydellinen."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "Käyttö: %s [valitsimet] [kohde] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1234,7 +1250,7 @@ msgstr ""
"\n"
"Tämä ohjelma on käännetty järjestelmälle %s.\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1243,33 +1259,33 @@ msgstr ""
"\n"
"Tämä ohjelma on käännetty järjestelmälle %s (%s).\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr ""
"Ilmoita ohjelmistovioista (englanniksi) osoitteeseen <bug-make@gnu.org>.\n"
-#: main.c:2870
+#: src/main.c:2901
#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "valitsin â€%s%s†vaatii ei-tyhjän merkkijonoargumentin"
-#: main.c:2934
+#: src/main.c:2965
#, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "valitsin â€-%c†vaatii positiivisen kokonaislukuargumentin"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%sTämä ohjelma on käännetty järjestelmälle %s\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%sTämä ohjelma on käännetty järjestelmälle %s (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1278,7 +1294,7 @@ msgid ""
"%sThere is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1287,7 +1303,7 @@ msgstr ""
"\n"
"# Make-tietokanta, tulostettu %s"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1296,353 +1312,385 @@ msgstr ""
"\n"
"# Make-tietokanta saatu valmiiksi %s\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Tuntematon virhe %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: käyttäjä %lu (todellinen %lu), ryhmä %lu (todellinen %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "Alkuperäiset käyttöoikeudet"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr "Käyttäjän käyttöoikeudet"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "Make-prosessin käyttöoikeudet"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "Lapsiprosessin käyttöoikeudet"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: Siirrytään tuntemattomaan hakemistoon\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: Poistutaan tuntemattomasta hakemistosta\n"
-#: output.c:109
+#: src/output.c:102
#, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "%s: Siirrytään hakemistoon â€%sâ€\n"
-#: output.c:111
+#: src/output.c:104
#, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "%s: Poistutaan hakemistosta â€%sâ€\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: Siirrytään tuntemattomaan hakemistoon\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: Poistutaan tuntemattomasta hakemistosta\n"
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr "%s[%u]: Siirrytään hakemistoon â€%sâ€\n"
-#: output.c:122
+#: src/output.c:115
#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "%s[%u]: Poistutaan hakemistosta â€%sâ€\n"
-#: output.c:495 output.c:497
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
msgstr "kirjoitusvirhe: vakiotuloste"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". Seis.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "luodaan työputki"
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
#, fuzzy
msgid "duping jobs pipe"
msgstr "luodaan työputki"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr "alustetaan työpalvelimen putki"
-#: posixos.c:90
+#: src/posixos.c:119
#, fuzzy, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr "sisäinen virhe: virheellinen --jobserver-fds -merkkijono â€%sâ€"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr ""
-#: posixos.c:109
+#: src/posixos.c:138
#, fuzzy
msgid "jobserver pipeline"
msgstr "alustetaan työpalvelimen putki"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr "työpalvelimen kirjoitus"
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr ""
+
+#: src/posixos.c:303
#, fuzzy
msgid "pselect jobs pipe"
msgstr "työputken luku"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "työputken luku"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "Luetaan makefile-tiedostoja...\n"
-#: read.c:329
+#: src/read.c:336
#, c-format
msgid "Reading makefile '%s'"
msgstr "Luetaan makefile-tiedosto â€%sâ€"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr ""
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (hakupolku)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (ei välitetä)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (ei ~-laajennusta)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr "Ohitetaan UTF-8-BOM makefile-tiedostossa â€%sâ€\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr "Ohitetaan UTF-8-BOM makefile-puskurissa\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "virheellinen syntaksi ehtolauseessa"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr ""
-#: read.c:985
-#, fuzzy
+#: src/read.c:986
+#, fuzzy, c-format
msgid "recipe commences before first target"
msgstr "komennot alkavat ennen ensimmäistä kohdetta"
-#: read.c:1034
-#, fuzzy
+#: src/read.c:1035
+#, fuzzy, c-format
msgid "missing rule before recipe"
msgstr "puuttuva sääntö ennen komentoja"
-#: read.c:1124
-#, fuzzy
+#: src/read.c:1136
+#, fuzzy, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr " (ehkä tarkoitit sarkainta eikä kahdeksaa välilyöntiä?)"
-#: read.c:1126
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
msgstr "puuttuva erotin"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "puuttuva kohdehahmo"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "useita kohdehahmoja"
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
msgstr "kohdehahmo ei sisällä â€%%â€-merkkiä"
-#: read.c:1390
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
msgstr "puuttuva â€endifâ€"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "tyhjä muuttujan nimi"
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
msgstr "ylimääräistä tekstiä â€endefâ€-toimintaohjeen jälkeen"
-#: read.c:1488
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "puuttuva â€endefâ€, päättämätön â€defineâ€"
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
msgstr "ylimääräistä tekstiä â€endefâ€-toimintaohjeen jälkeen"
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
msgstr "ylimääräistä tekstiä â€%sâ€-toimintaohjeen jälkeen"
-#: read.c:1589
+#: src/read.c:1604
#, c-format
msgid "extraneous '%s'"
msgstr "ylimääräinen â€%sâ€"
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
msgstr "vain yksi â€else†ehtolausetta kohden"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr "Väärin muotoiltu kohdekohtainen muuttujamäärittely"
# skripti?
-#: read.c:1950
-#, fuzzy
+#: src/read.c:1968
+#, fuzzy, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr "ennakkoehtoja ei voi määritellä komentoskripteissä"
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr ""
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr ""
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr ""
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr "kohde â€%s†ei täsmää kohdehahmon kanssa"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
msgstr "kohdetiedostolla â€%s†on sekä :- että ::-merkinnät"
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
msgstr "kohde â€%s†annettu yli yhden kerran samassa säännössä"
-#: read.c:2116
+#: src/read.c:2138
#, fuzzy, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr "varoitus: syrjäytetään kohteen â€%s†komennot"
-#: read.c:2119
+#: src/read.c:2141
#, fuzzy, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr "varoitus: ei huomioida vanhoja komentoja kohteelle â€%sâ€"
-#: read.c:2223
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr ""
-#: read.c:2542
+#: src/read.c:2271
+#, fuzzy, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "varoitus: syrjäytetään kohteen â€%s†komennot"
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr "varoitus: havaittu NUL-merkki, rivin loppuosaa ei huomioida"
-#: remake.c:226
+#: src/remake.c:226
#, c-format
msgid "Nothing to be done for '%s'."
msgstr "Kohteelle â€%s†ei tarvitse tehdä mitään."
-#: remake.c:227
+#: src/remake.c:227
#, c-format
msgid "'%s' is up to date."
msgstr "â€%s†on ajan tasalla."
-#: remake.c:323
+#: src/remake.c:323
#, c-format
msgid "Pruning file '%s'.\n"
msgstr "Karsitaan tiedosto â€%sâ€.\n"
-#: remake.c:406
+#: src/remake.c:389
#, fuzzy, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr ""
"%1$sâ€%3$sâ€-kohteen tarvitseman kohteen â€%2$s†tuottamiseen ei ole sääntöä%4$s"
-#: remake.c:416
+#: src/remake.c:399
#, fuzzy, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%sKohteen â€%s†tuottamiseen ei ole sääntöä%s"
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
msgstr "Tarkastellaan kohdetiedostoa â€%sâ€.\n"
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr "Tiedoston â€%s†päivitysyritys epäonnistui äskettäin.\n"
-#: remake.c:461
+#: src/remake.c:444
#, c-format
msgid "File '%s' was considered already.\n"
msgstr "Tiedostoa â€%s†on jo tarkasteltu.\n"
-#: remake.c:471
+#: src/remake.c:454
#, c-format
msgid "Still updating file '%s'.\n"
msgstr "Päivitetään edelleen tiedostoa â€%sâ€.\n"
-#: remake.c:474
+#: src/remake.c:457
#, c-format
msgid "Finished updating file '%s'.\n"
msgstr "Tiedoston â€%s†päivitys valmistui.\n"
-#: remake.c:503
+#: src/remake.c:486
#, c-format
msgid "File '%s' does not exist.\n"
msgstr "Tiedosto â€%s†ei ole olemassa.\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
@@ -1650,147 +1698,147 @@ msgstr ""
"*** Varoitus: .LOW_RESOLUTION_TIME-tiedostolla â€%s†on korkearesoluutioinen "
"aikaleima"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr "Kohteelle â€%s†löytyi oletussääntö.\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr "Kohteelle â€%s†ei löytynyt oletussääntöä.\n"
-#: remake.c:532
+#: src/remake.c:515
#, fuzzy, c-format
msgid "Using default recipe for '%s'.\n"
msgstr "Käytetään oletuskomentoja kohteelle â€%sâ€.\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "Kehäriippuvuus %s <- %s hylätty."
-#: remake.c:691
+#: src/remake.c:674
#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr "Kohdetiedoston â€%s†ennakkoehdot täytetty.\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr "Kohteen â€%s†ennakkoehtoja täytetään.\n"
-#: remake.c:711
+#: src/remake.c:694
#, c-format
msgid "Giving up on target file '%s'.\n"
msgstr "Luovutaan kohdetiedostosta â€%sâ€.\n"
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
msgstr "Kohdetta â€%s†ei tuotettu uudelleen virheiden vuoksi."
-#: remake.c:768
+#: src/remake.c:751
#, fuzzy, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr "Ennakkoehto â€%s†on vanhempi kuin kohde â€%sâ€.\n"
-#: remake.c:773
+#: src/remake.c:756
#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr "Kohteen â€%2$s†ennakkoehto â€%1$s†ei ole olemassa.\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr "Ennakkoehto â€%s†on uudempi kuin kohde â€%sâ€.\n"
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr "Ennakkoehto â€%s†on vanhempi kuin kohde â€%sâ€.\n"
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr ""
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr ""
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr "Tuotetaan â€%sâ€, koska always-make-lippu on käytössä.\n"
-#: remake.c:819
+#: src/remake.c:802
#, c-format
msgid "No need to remake target '%s'"
msgstr "Ei tarvetta uudelleentuottaa kohdetta â€%sâ€"
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
msgstr "; käytetään VPATH-nimeä â€%sâ€"
-#: remake.c:841
+#: src/remake.c:824
#, c-format
msgid "Must remake target '%s'.\n"
msgstr "Kohde â€%s†on tuotettava uudelleen.\n"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr " Ei huomioida VPATH-nimeä â€%sâ€.\n"
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr ""
-#: remake.c:863
+#: src/remake.c:846
#, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr "Kohdetiedoston â€%s†uudelleentuottaminen epäonnistui.\n"
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr "Kohdetiedosto â€%s†uudelleentuotettiin onnistuneesti.\n"
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr ""
-#: remake.c:1064
+#: src/remake.c:1047
#, c-format
msgid "Using default commands for '%s'.\n"
msgstr "Käytetään oletuskomentoja kohteelle â€%sâ€.\n"
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "Varoitus: Tiedoston â€%s†muutosaika on tulevaisuudessa"
-
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr "Varoitus: Tiedoston â€%s†muutosaika on %s sekuntia tulevaisuudessa"
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr ".LIBPATTERNS-elementti â€%s†ei ole hahmo"
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr ""
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -1798,7 +1846,7 @@ msgstr ""
"\n"
"# Oletussäännöt"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1806,188 +1854,184 @@ msgstr ""
"\n"
"# Ei oletussääntöjä."
-#: rule.c:514
-#, c-format
+#: src/rule.c:548
+#, fuzzy, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
"# %u oletussääntöä, %u"
-#: rule.c:523
-msgid " terminal."
-msgstr ""
-
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "VIKA: num_pattern_rules on väärä! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "tuntematon signaali"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Linjankatkaisu"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "Keskeytys"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Lopetettu"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "Virheellinen käsky"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "Jäljitys/katkaisupisteansa"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Keskeytetty"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "IOT-ansa"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "EMT-ansa"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "Liukulukupoikkeus"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Tapettu"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "Väylävirhe"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Muistialueen ylitys"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "Virheellinen järjestelmäkutsu"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "Katkennut putki"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Herätyskello"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "Päätetty"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "Käyttäjän määrittelemä signaali 1"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "Käyttäjän määrittelemä signaali 2"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "Lapsi lopetti"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Sähkökatko"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Pysäytetty"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Pysäytetty (päätteen syöte)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Pysäytetty (päätteen tuloste)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Pysäytetty (signaali)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "Suoritinaikaraja ylittynyt"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "Tiedoston kokoraja ylitetty"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "Virtuaaliajastin vanhentunut"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "Profilointiajastin vanhentunut"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "Ikkuna vaihtunut"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Jatkettu"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "Kiireellinen I/O-tilanne"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "I/O mahdollista"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "Resurssi menetetty"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Vaarasignaali"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Tietopyyntö"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "Käytettävissä ei ole liukulukusuoritinta"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
"%s No strcache buffers\n"
msgstr ""
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -1995,31 +2039,31 @@ msgid ""
"B\n"
msgstr ""
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr ""
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
msgstr ""
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
msgstr ""
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
@@ -2027,44 +2071,44 @@ msgstr ""
"# tilasto tiedostojen hajautustaulusta:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "automaattinen"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "oletus"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "ympäristö"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "makefile"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "-e:n alainen ympäristö"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "komentorivi"
-#: variable.c:1647
+#: src/variable.c:1671
msgid "'override' directive"
msgstr "â€overrideâ€-toimintaohje"
-#: variable.c:1658
+#: src/variable.c:1682
#, c-format
msgid " (from '%s', line %lu)"
msgstr " (tiedosto â€%sâ€, rivi %lu)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr "# muuttujajoukon hajautustaulutilastot:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2072,7 +2116,7 @@ msgstr ""
"\n"
"# Muuttujat\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
@@ -2080,7 +2124,7 @@ msgstr ""
"\n"
"# Hahmokohtaisia muuttujien arvoja"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2088,7 +2132,7 @@ msgstr ""
"\n"
"# Ei hahmokohtaisia muuttuja-arvoja."
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
@@ -2097,48 +2141,48 @@ msgstr ""
"\n"
"# %u hahmokohtaista muuttuja-arvoa"
-#: variable.h:224
+#: src/variable.h:229
#, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "varoitus: määrittelemätön muuttuja â€%.*sâ€"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, fuzzy, c-format
msgid "sys$search() failed with %d\n"
msgstr "sys$search epäonnistui, arvo %d\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr ""
"-varoitus, Ctrl-Y-käsittely on ehkä otettava uudelleen käyttöön DCL:stä.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "SISÄÄNRAKENNETTU CD %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr "DCL: %s\n"
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, fuzzy, c-format
msgid "Append output to %s\n"
msgstr "Tuloste uudelleenohjattu kohteeseen %s\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr ""
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "Käynnistetään sen sijaan %s\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2146,11 +2190,11 @@ msgstr ""
"\n"
"# VPATH-hakupolut\n"
-#: vpath.c:620
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
msgstr "# Ei â€vpathâ€-hakupolkuja."
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
@@ -2159,7 +2203,7 @@ msgstr ""
"\n"
"# %u â€vpathâ€-hakupolkua.\n"
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
@@ -2167,7 +2211,7 @@ msgstr ""
"\n"
"# Ei yleistä (â€VPATHâ€-muuttuja) hakupolkua."
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
@@ -2177,37 +2221,58 @@ msgstr ""
"# Yleinen (â€VPATHâ€-muuttuja) hakupolku:\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr ""
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr ""
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr ""
+#~ msgid "%s: %s: Command not found\n"
+#~ msgstr "%s: %s: Komentoa ei löytynyt\n"
+
+#~ msgid "%s[%u]: %s: Command not found\n"
+#~ msgstr "%s[%u]: %s: Komentoa ei löytynyt\n"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s: Kuoriohjelmaa ei löytynyt"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s keskeytyy 30 sekunniksi..."
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "sleep(30) valmis. Jatketaan.\n"
+
+#~ msgid "Unknown error %d"
+#~ msgstr "Tuntematon virhe %d"
+
+#~ msgid "Warning: File '%s' has modification time in the future"
+#~ msgstr "Varoitus: Tiedoston â€%s†muutosaika on tulevaisuudessa"
+
#~ msgid "%s[%s] Error 0x%x%s"
#~ msgstr "%s[%s] Virhe 0x%x%s"
diff --git a/po/fr.gmo b/po/fr.gmo
index 8c4a0f3..71682ca 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index c9d5536..70d0349 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,367 +1,369 @@
-# Messages français pour make.
-# Copyright © 2010 Free Software Foundation, Inc.
+# Messages français pour make.
+# Copyright © 2010 Free Software Foundation, Inc.
# This file is distributed under the same license as the make package.
#
# 30-juillet-2001, n'avons plus de nouvelle de Marc depuis 5 janvier 1997
-# Marc Baudoin <babafou@ensta.fr>, Frédéric Liné <line@MicroNet.fr>, 1996.
+# Marc Baudoin <babafou@ensta.fr>, Frédéric Liné <line@MicroNet.fr>, 1996.
# Michel Robitaille <robitail@IRO.UMontreal.CA>, 1996-2006
# Christophe Combelles <ccomb@free.fr>, 2009, 2010
-# Kévin Raymond <shaiton@fedoraproject.org>, 2012, 2013, 2015
+# Kévin Raymond <shaiton@fedoraproject.org>, 2012-2016, 2018
#
msgid ""
msgstr ""
-"Project-Id-Version: GNU make 4.1\n"
+"Project-Id-Version: GNU make 4.2.1\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
-"PO-Revision-Date: 2015-03-11 22:20+0100\n"
-"Last-Translator: Kévin Raymond <shaiton@fedoraproject.org>\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2018-08-28 17:59+0200\n"
+"Last-Translator: Kévin Raymond <shaiton@fedoraproject.org>\n"
"Language-Team: French <traduc@traduc.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Poedit 1.5.4\n"
+"X-Generator: Poedit 2.1.1\n"
-#: ar.c:46
+#: src/ar.c:46
#, c-format
msgid "attempt to use unsupported feature: '%s'"
-msgstr "tentative d'utiliser une fonctionnalité non prise en charge : « %s »"
+msgstr "tentative d'utiliser une fonctionnalité non prise en charge : « %s »"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "impossible de modifier la date d'un membre d'une archive sur VMS"
-#: ar.c:147
+#: src/ar.c:147
#, c-format
msgid "touch: Archive '%s' does not exist"
-msgstr "touch : l'archive « %s » n'existe pas"
+msgstr "touch : l'archive « %s » n'existe pas"
-#: ar.c:150
+#: src/ar.c:150
#, c-format
msgid "touch: '%s' is not a valid archive"
-msgstr "touch : « %s » n'est pas une archive valide"
+msgstr "touch : « %s » n'est pas une archive valide"
-#: ar.c:157
+#: src/ar.c:157
#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
-msgstr "touch : le membre « %s » n'existe pas dans « %s »"
+msgstr "touch : le membre « %s » n'existe pas dans « %s »"
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
-msgstr "touch : mauvais code de retour de ar_member_touch pour « %s »"
+msgstr "touch : mauvais code de retour de ar_member_touch pour « %s »"
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr "lbr$set_module() n'a pas pu extraire les infos du module. Code = %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
-msgstr "lbr$ini_control() a échoué avec un code = %d"
+msgstr "lbr$ini_control() a échoué avec un code = %d"
-#: arscan.c:261
+#: src/arscan.c:261
#, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr ""
-"impossible d'ouvrir la bibliothèque « %s » pour récupérer le statut du "
-"membre « %d »"
+"impossible d'ouvrir la bibliothèque « %s » pour récupérer le statut du "
+"membre « %d »"
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
-msgstr "Membre `%s'%s : %ld octets à %ld (%ld).\n"
+msgstr "Membre `%s'%s : %ld octets à %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
-msgstr " (le nom peut être tronqué)"
+msgstr " (le nom peut être tronqué)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Date %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, mode = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr "La recette contient trop de lignes (%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
-msgstr "*** Break.\n"
+msgstr "*** Arrêt.\n"
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr ""
-"*** [%s] le membre « %s » de l'archive peut avoir un problème ; il n'a pas "
-"été supprimé"
+"*** [%s] le membre « %s » de l'archive peut avoir un problème ; il n'a pas "
+"été supprimé"
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr ""
-"*** Le membre « %s » de l'archive peut avoir un problème ; il n'a pas été "
-"supprimé"
+"*** Le membre « %s » de l'archive peut avoir un problème ; il n'a pas été "
+"supprimé"
-#: commands.c:645
+#: src/commands.c:646
#, c-format
msgid "*** [%s] Deleting file '%s'"
-msgstr "*** [%s] Suppression du fichier « %s »"
+msgstr "*** [%s] Suppression du fichier « %s »"
-#: commands.c:647
+#: src/commands.c:648
#, c-format
msgid "*** Deleting file '%s'"
-msgstr "*** Suppression du fichier « %s »"
+msgstr "*** Suppression du fichier « %s »"
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
-msgstr "# recette à exécuter"
+msgstr "# recette à exécuter"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
-msgstr " (commande interne) :"
+msgstr " (commande interne) :"
-#: commands.c:688
+#: src/commands.c:689
#, c-format
msgid " (from '%s', line %lu):\n"
-msgstr " (de « %s », ligne %lu) : \n"
+msgstr " (de « %s », ligne %lu) : \n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
msgstr ""
"\n"
-"# Répertoires\n"
+"# Répertoires\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
-msgstr "# %s: « stat » impossible.\n"
+msgstr "# %s: « stat » impossible.\n"
-#: dir.c:1085
-#, fuzzy
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
-msgstr "# %s (clé %s, mtime %d) : ouverture impossible.\n"
+msgstr "# %s (clé %s, mtime %I64u) : ouverture impossible.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
-msgstr "# %s (périphérique %d, inode [%d,%d,%d]) : ouverture impossible.\n"
+msgstr "# %s (périphérique %d, inode [%d,%d,%d]) : ouverture impossible.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
-msgstr "# %s (périphérique %ld, inode %ld) : ouverture impossible.\n"
+msgstr "# %s (périphérique %ld, inode %ld) : ouverture impossible.\n"
-#: dir.c:1122
-#, fuzzy
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
-msgstr "# %s (périphérique %s, mtime %d) : "
+msgstr "# %s (clé %s, mtime %I64u) : "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
-msgstr "# %s (périphérique %d, inode [%d,%d,%d]) : "
+msgstr "# %s (périphérique %d, inode [%d,%d,%d]) : "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
-msgstr "# %s (périphérique %ld, inode %ld) : "
+msgstr "# %s (périphérique %ld, inode %ld) : "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "Aucun"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " fichier(s), "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "aucune"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
-msgstr " impossibilité(s)"
+msgstr " impossibilité(s)"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " jusqu'ici."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
-msgstr " impossibilités dans %lu répertoires.\n"
+msgstr " impossibilités dans %lu répertoires.\n"
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
-msgstr "La variable récursive « %s » se référence elle-même (à la fin)"
+msgstr "La variable récursive « %s » se référence elle-même (à la fin)"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
-msgstr "référence incomplète à une variable"
+msgstr "référence incomplète à une variable"
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
-msgstr "Une recette a été spécifiée pour le fichier « %s » dans %s : %lu,"
+msgstr "Une recette a été spécifiée pour le fichier « %s » dans %s : %lu,"
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr ""
-"La recette pour le fichier « %s » a été trouvée par une recherche de règle "
+"La recette pour le fichier « %s » a été trouvée par une recherche de règle "
"implicite,"
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr ""
-"mais « %s » est maintenant considéré comme étant le même fichier que « %s »."
+"mais « %s » est maintenant considéré comme étant le même fichier que « %s »."
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
-msgstr "La recette pour « %s » sera ignorée en faveur de celle pour « %s »."
+msgstr "La recette pour « %s » sera ignorée en faveur de celle pour « %s »."
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr ""
-"impossible de renommer le deux-points simple « %s » en deux-points double "
-"« %s »"
+"impossible de renommer le deux-points simple « %s » en deux-points double "
+"« %s »"
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr ""
-"impossible de renommer le deux-points double « %s » en deux-points simple "
-"« %s »"
+"impossible de renommer le deux-points double « %s » en deux-points simple "
+"« %s »"
-#: file.c:408
+#: src/file.c:408
#, c-format
msgid "*** Deleting intermediate file '%s'"
-msgstr "*** Suppression du fichier intermédiaire « %s »"
+msgstr "*** Suppression du fichier intermédiaire « %s »"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
-msgstr "Suppression des fichiers intermédiaires...\n"
+msgstr "Suppression des fichiers intermédiaires...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "Heure actuelle"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s : horodatage hors limite ; remplacement par %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
-msgstr "# Pas une cible :"
+msgstr "# Pas une cible :"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
-msgstr "# Fichier précieux (dépendance de .PRECIOUS)."
+msgstr "# Fichier précieux (dépendance de .PRECIOUS)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
-msgstr "# Cible factice (dépendance de .PHONY)."
+msgstr "# Cible factice (dépendance de .PHONY)."
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# Cible de la ligne de commande."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
-msgstr "# Une valeur par défaut, MAKEFILES ou -include/sinclude makefile."
+msgstr "# Une valeur par défaut, MAKEFILES ou -include/sinclude makefile."
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
-msgstr "# Pas de règle interne"
+msgstr "# Pas de règle interne"
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
-msgstr "# La recherche de règle implicite a été effectuée."
+msgstr "# La recherche de règle implicite a été effectuée."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
-msgstr "# La recherche de règle implicite n'a pas été effectuée."
+msgstr "# La recherche de règle implicite n'a pas été effectuée."
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
-msgstr "# Préfixe de motif implicite ou statique : « %s »\n"
+msgstr "# Préfixe de motif implicite ou statique : « %s »\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
-msgstr "# Le fichier est une dépendance intermédiaire."
+msgstr "# Le fichier est une dépendance intermédiaire."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
-msgstr "# Fabrique également :"
+msgstr "# Fabrique également :"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
-msgstr "# Heure de modification jamais vérifiée."
+msgstr "# Heure de modification jamais vérifiée."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# Le fichier n'existe pas."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
-msgstr "# Le fichier est très ancien."
+msgstr "# Le fichier est très ancien."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
-msgstr "# Dernière modification %s\n"
+msgstr "# Dernière modification %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
-msgstr "# Le fichier a été mis à jour."
+msgstr "# Le fichier a été mis à jour."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
-msgstr "# Le fichier n'a pas été mis à jour."
+msgstr "# Le fichier n'a pas été mis à jour."
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
-msgstr "# Recette en cours d'exécution (CECI EST UNE ANOMALIE)."
+msgstr "# Recette en cours d'exécution (CECI EST UNE ANOMALIE)."
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr ""
-"# Recette de dépendances en cours d'exécution (CECI EST UNE ANOMALIE)."
+"# Recette de dépendances en cours d'exécution (CECI EST UNE ANOMALIE)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
-msgstr "# Mise à jour réussie."
+msgstr "# Mise à jour réussie."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
-msgstr "# À besoin d'être mis à jour (l'option -q est activée)."
+msgstr "# À besoin d'être mis à jour (l'option -q est activée)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
-msgstr "# N'a pas pu être mis à jour."
+msgstr "# N'a pas pu être mis à jour."
-#: file.c:1032
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
-msgstr "# Valeur non valable dans le membre « command_state » !"
+msgstr "# Valeur non valable dans le membre « command_state » !"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -369,537 +371,535 @@ msgstr ""
"\n"
"# Fichiers"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
"# "
msgstr ""
"\n"
-"# stats des tables de hachage des fichiers :\n"
+"# stats des tables de hachage des fichiers :\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
-msgstr "%s : le champ « %s » n'est pas en cache : %s"
+msgstr "%s : le champ « %s » n'est pas en cache : %s"
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
-msgstr "le premier argument de la fonction « word » doit être numérique"
+msgstr "le premier argument de la fonction « word » doit être numérique"
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
-msgstr "le premier argument de la fonction « word » doit être supérieur à 0"
+msgstr "le premier argument de la fonction « word » doit être supérieur à 0"
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
-msgstr "le premier argument de la fonction « wordlist » doit être numérique"
+msgstr "le premier argument de la fonction « wordlist » doit être numérique"
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
-msgstr "le deuxième argument de la fonction « wordlist » doit être numérique"
+msgstr "le deuxième argument de la fonction « wordlist » doit être numérique"
-#: function.c:1525
+#: src/function.c:1533
#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "windows32_openpipe : DuplicateHandle(In) a échoué (e=%ld)\n"
+msgstr "windows32_openpipe : DuplicateHandle(In) a échoué (e=%ld)\n"
-#: function.c:1549
+#: src/function.c:1557
#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr "windows32_openpipe : DuplicateHandle(Err) a échoué (e=%ld)\n"
+msgstr "windows32_openpipe : DuplicateHandle(Err) a échoué (e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "CreatePipe() a échoué (e=%ld)\n"
+msgstr "CreatePipe() a échoué (e=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
-msgstr "windows32_openpipe() : process_init_fd() a échoué\n"
+msgstr "windows32_openpipe() : process_init_fd() a échoué\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "Nettoyage du fichier de commandes temporaire %s\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
-msgstr ""
+msgstr "file : fichier manquant"
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
-msgstr "open : %s : %s"
+msgstr "open : %s : %s"
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
-msgstr "write : %s : %s"
+msgstr "write : %s : %s"
-#: function.c:2230 function.c:2267
-#, fuzzy, c-format
+#: src/function.c:2245 src/function.c:2282
+#, c-format
msgid "close: %s: %s"
-msgstr "open : %s : %s"
+msgstr "close : %s : %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
-msgstr ""
+msgstr "file : trop d'arguments"
-#: function.c:2262
-#, fuzzy, c-format
+#: src/function.c:2277
+#, c-format
msgid "read: %s: %s"
-msgstr "write : %s : %s"
+msgstr "read : %s : %s"
-#: function.c:2275
-#, fuzzy, c-format
+#: src/function.c:2290
+#, c-format
msgid "file: invalid file operation: %s"
-msgstr "Fichier d'opérations invalide : %s"
+msgstr "file : opération invalide : %s"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
-msgstr "nombre d'arguments insuffisant (%d) pour la fonction « %s »"
+msgstr "nombre d'arguments insuffisant (%d) pour la fonction « %s »"
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
-msgstr "non implémenté sur cette plateforme : fonction « %s »"
+msgstr "non implémenté sur cette plateforme : fonction « %s »"
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
-msgstr "appel à la fonction « %s » non terminé : « %c » manquant"
+msgstr "appel à la fonction « %s » non terminé : « %c » manquant"
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr "Nom de fonction absent"
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
-msgstr "Nom de fonction invalide : %s"
+msgstr "Nom de fonction invalide : %s"
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
-msgstr "Nom de fonction trop long : %s"
+msgstr "Nom de fonction trop long : %s"
-#: function.c:2657
-#, fuzzy, c-format
+#: src/function.c:2674
+#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
-msgstr "nombre d'arguments insuffisant (%d) pour la fonction « %s »"
+msgstr "Nombre d'arguments insuffisant (%u) pour la fonction %s"
-#: function.c:2660
-#, fuzzy, c-format
+#: src/function.c:2677
+#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
-msgstr "nombre d'arguments insuffisant (%d) pour la fonction « %s »"
+msgstr "Nombre d'arguments excessif (%u) pour la fonction %s"
-#: getopt.c:659
+#: src/getopt.c:659
#, c-format
msgid "%s: option '%s' is ambiguous\n"
-msgstr "%s : l'option « %s » est ambiguë\n"
+msgstr "%s : l'option « %s » est ambiguë\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
-msgstr "%s : l'option « --%s » ne prend pas d'argument\n"
+msgstr "%s : l'option « --%s » ne prend pas d'argument\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr "%s : l'option « %c%s » ne prend pas d'argument\n"
+msgstr "%s : l'option « %c%s » ne prend pas d'argument\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, c-format
msgid "%s: option '%s' requires an argument\n"
-msgstr "%s : l'option « %s » nécessite un argument\n"
+msgstr "%s : l'option « %s » nécessite un argument\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, c-format
msgid "%s: unrecognized option '--%s'\n"
-msgstr "%s : option non reconnue « --%s »\n"
+msgstr "%s : option non reconnue « --%s »\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
-msgstr "%s : option non reconnue « %c%s »\n"
+msgstr "%s : option non reconnue « %c%s »\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
-msgstr "%s : option non admise -- %c\n"
+msgstr "%s : option non admise -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
-msgstr "%s : option incorrecte -- %c\n"
+msgstr "%s : option incorrecte -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
-msgstr "%s : l'option nécessite un argument -- %c\n"
+msgstr "%s : l'option nécessite un argument -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
-msgstr "%s : l'option « -W %s » est ambiguë\n"
+msgstr "%s : l'option « -W %s » est ambiguë\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr "%s : l'option « -W %s » ne prend pas d'argument\n"
+msgstr "%s : l'option « -W %s » ne prend pas d'argument\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
-msgstr "guile : expansion de « %s »\n"
+msgstr "guile : expansion de « %s »\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
-msgstr "guile : évaluation de « %s »\n"
+msgstr "guile : évaluation de « %s »\n"
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr ""
-"impossible d'allouer %lu octets pour la table de hachage : mémoire épuisée"
+"impossible d'allouer %lu octets pour la table de hachage : mémoire épuisée"
-#: hash.c:280
-#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
+#: src/hash.c:280
+#, fuzzy, c-format
+msgid "Load=%lu/%lu=%.0f%%, "
msgstr "Charge=%ld/%ld=%.0f%%, "
-#: hash.c:282
-#, c-format
-msgid "Rehash=%d, "
+#: src/hash.c:282
+#, fuzzy, c-format
+msgid "Rehash=%u, "
msgstr "Rehash=%d, "
-#: hash.c:283
-#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
+#: src/hash.c:283
+#, fuzzy, c-format
+msgid "Collisions=%lu/%lu=%.0f%%"
msgstr "Collisions=%ld/%ld=%.0f%%"
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
-msgstr "Recherche d'une règle implicite pour « %s ».\n"
+msgstr "Recherche d'une règle implicite pour « %s ».\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
-msgstr "Recherche d'une règle implicite de membre d'archive pour « %s ».\n"
+msgstr "Recherche d'une règle implicite de membre d'archive pour « %s ».\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
-msgstr "Évitement de récursion dans une règle implicite.\n"
+msgstr "Évitement de récursion dans une règle implicite.\n"
-#: implicit.c:486
-#, c-format
-msgid "Stem too long: '%.*s'.\n"
-msgstr "Motif trop long : « %.*s ».\n"
+#: src/implicit.c:484
+#, fuzzy, c-format
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "Motif trop long : « %.*s ».\n"
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
-msgstr "Essai du motif avec « %.*s » comme radical.\n"
+msgstr "Essai du motif avec « %.*s » comme radical.\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
-msgstr "Rejet d'une dépendance de règle impossible « %s ».\n"
+msgstr "Rejet d'une dépendance de règle impossible « %s ».\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
-msgstr "Rejet d'une dépendance implicite impossible « %s ».\n"
+msgstr "Rejet d'une dépendance implicite impossible « %s ».\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
-msgstr "Essai de la dépendance de règle « %s ».\n"
+msgstr "Essai de la dépendance de règle « %s ».\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
-msgstr "Essai de la dépendance implicite « %s ».\n"
+msgstr "Essai de la dépendance implicite « %s ».\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
-msgstr "Dépendance trouvée « %s » comme VPATH « %s »\n"
+msgstr "Dépendance trouvée « %s » comme VPATH « %s »\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
-msgstr "Recherche d'une règle contenant le fichier intermédaire « %s ».\n"
+msgstr "Recherche d'une règle contenant le fichier intermédaire « %s ».\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
-msgstr "Impossible de créer un fichier temporaire\n"
+msgstr "Impossible de créer un fichier temporaire\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
-msgstr " (core dump créé)"
+msgstr " (core dump créé)"
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
-msgstr " (ignorée)"
+msgstr " (ignorée)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
msgstr "<commande interne>"
-#: job.c:510
-#, fuzzy, c-format
+#: src/job.c:573
+#, c-format
msgid "%s[%s: %s] Error %d%s"
-msgstr "%s[%s] Erreur %d%s"
+msgstr "%s[%s : %s] Erreur %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
-msgstr "*** Attente des tâches non terminées...."
+msgstr "*** Attente des tâches non terminées...."
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "Processus fils actif %p (%s) PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (distant)"
-#: job.c:831
+#: src/job.c:898
#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Récolte du processus fils perdant %p PID %s %s\n"
+msgid "Reaping winning child %p PID %s %s\n"
+msgstr "Récolte du processus fils gagnant %p PID %s %s\n"
-#: job.c:832
+#: src/job.c:899
#, c-format
-msgid "Reaping winning child %p PID %s %s\n"
-msgstr "Récolte du processus fils gagnant %p PID %s %s\n"
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Récolte du processus fils perdant %p PID %s %s\n"
-#: job.c:839
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "Nettoyage du fichier de commande temporaire %s\n"
-#: job.c:845
+#: src/job.c:956
#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
-msgstr "Le nettoyage du fichier de commandes temporaire %s a échoué (%d)\n"
+msgstr "Le nettoyage du fichier de commandes temporaire %s a échoué (%d)\n"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
-msgstr "Retrait du processus fils %p PID %s%s de la chaîne.\n"
+msgstr "Retrait du processus fils %p PID %s%s de la chaîne.\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
-msgstr "Jeton relâché pour le processus fils %p (%s).\n"
+msgstr "Jeton relâché pour le processus fils %p (%s).\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "process_easy() n'a pas pu lancer de processus (e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
"Counted %d args in failed launch\n"
msgstr ""
"\n"
-"%d arguments comptés lors du lancement échoué\n"
+"%d arguments comptés lors du lancement échoué\n"
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
-msgstr "Ajout du processus fils %p (%s) PID %s%s à la chaîne.\n"
+msgstr "Ajout du processus fils %p (%s) PID %s%s à la chaîne.\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "Jeton obtenu pour le processus fils %p (%s).\n"
-#: job.c:1838
+#: src/job.c:1902
#, c-format
msgid "%s: target '%s' does not exist"
-msgstr "%s : la cible « %s » n'existe pas"
+msgstr "%s : la cible « %s » n'existe pas"
-#: job.c:1841
+#: src/job.c:1905
#, c-format
msgid "%s: update target '%s' due to: %s"
-msgstr "%s : mise à jour de la cible « %s » nécessaire pour : %s"
+msgstr "%s : mise à jour de la cible « %s » causée par : %s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr ""
-"impossible d'imposer des limites de charge sur ce système d'exploitation"
+"impossible d'imposer des limites de charge sur ce système d'exploitation"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
-msgstr "impossible d'imposer des limites de charge : "
+msgstr "impossible d'imposer des limites de charge : "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr ""
-"plus d'identificateur de fichier disponible : impossible de dupliquer stdin\n"
+"plus d'identificateur de fichier disponible : impossible de dupliquer stdin\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr ""
-"plus d'identificateur de fichier disponible : impossible de dupliquer "
+"plus d'identificateur de fichier disponible : impossible de dupliquer "
"stdout\n"
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr ""
-"plus d'identificateurs de fichier disponible : impossible de dupliquer "
+"plus d'identificateurs de fichier disponible : impossible de dupliquer "
"stderr\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr "Impossible de restaurer stdin\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr "Impossible de restaurer stdout\n"
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr "Impossible de restaurer stderr\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr ""
-"make a récolté le processus fils pid %s, toujours en attente du pid %s\n"
+"make a récolté le processus fils pid %s, toujours en attente du pid %s\n"
-#: job.c:2275
-#, fuzzy, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s : commande introuvable"
-
-#: job.c:2277
-#, fuzzy, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s : commande introuvable"
-
-#: job.c:2337
+#: src/job.c:2623
#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s : programme Shell introuvable"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
-msgstr "spawnvpe : l'espace d'environnement est peut-être épuisé"
+msgstr "spawnvpe : l'espace d'environnement est peut-être épuisé"
-#: job.c:2584
+#: src/job.c:2862
#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
-msgstr "$SHELL a été modifié (de « %s » à « %s »)\n"
+msgstr "$SHELL a été modifié (de « %s » à « %s »)\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
-msgstr "Création d'un fichier de commande temporaire %s\n"
+msgstr "Création d'un fichier de commande temporaire %s\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
msgstr ""
-"Contenu du fichier de commande :\n"
+"Contenu du fichier de commande :\n"
"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
"\t%s\n"
msgstr ""
-"Contenu du fichier Batch :%s\n"
+"Contenu du fichier Batch :%s\n"
"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr ""
"%s (ligne %d) Mauvais contexte du shell (!unixy && !batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr ""
-"-O[TYPE] (--output-sync[=TYPE]) n'est pas configuré pour cette construction."
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
-msgstr "Echec de l'ouverture de la table des symboles générale : %s"
+msgstr "Echec de l'ouverture de la table des symboles générale : %s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
-msgstr "L'objet chargé « %s » n'est pas déclaré compatible avec la GPL"
+msgstr "L'objet chargé « %s » n'est pas déclaré compatible avec la GPL"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
-msgstr "Echec du chargement du symbole %s à partir de %s : %s"
+msgstr "Echec du chargement du symbole %s à partir de %s : %s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
-msgstr "Nom du symbole absent pour l'opération « load » : %s"
+msgstr "Nom du symbole absent pour l'opération « load » : %s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
-msgstr "Chargement du symbole %s à partir de %s\n"
+msgstr "Chargement du symbole %s à partir de %s\n"
-#: load.c:256
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr ""
-"Les opérations « load » ne sont pas prises en charge sur cette plateforme."
+"Les opérations « load » ne sont pas prises en charge sur cette plateforme."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
-msgstr "Options :\n"
+msgstr "Options :\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
-msgstr " -b, -m Ignoré pour compatibilité.\n"
+msgstr " -b, -m Ignoré pour compatibilité.\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr ""
" -B, --always-make Fabriquer toutes les cibles sans condition.\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
msgstr ""
-" -C RÉPERTOIRE, --directory=RÉPERTOIRE\n"
-" Se placer dans le RÉPERTOIRE avant toute "
+" -C RÉPERTOIRE, --directory=RÉPERTOIRE\n"
+" Se placer dans le RÉPERTOIRE avant toute "
"action.\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr ""
-" -d Afficher beaucoup d'informations de débogage.\n"
+" -d Afficher beaucoup d'informations de débogage.\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
" --debug[=FLAGS] Afficher divers types d'informations de "
-"débogage.\n"
+"débogage.\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
@@ -908,14 +908,15 @@ msgstr ""
" Les variables d'environment sont prioritaires "
"sur les makefiles.\n"
-#: main.c:353
+#: src/main.c:350
+#, fuzzy
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
-" --eval=CHAINE Evaluer la CHAINE comme une instruction de "
+" --eval=CHAINE Évaluer la CHAÎNE comme une instruction de "
"makefile.\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -923,189 +924,197 @@ msgstr ""
" -f FICHIER, --file=FICHIER, --makefile=FICHIER\n"
" Lire le FICHIER comme un makefile.\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help Afficher ce message et quitter.\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr ""
" -i, --ignore-errors Ignorer les erreurs venant des recettes.\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
msgstr ""
-" -I RÉPERTOIRE, --include-dir=RÉPERTOIRE\n"
-" Chercher dans le RÉPERTOIRE les makefiles "
-"traités par inclusion.\n"
+" -I RÉPERTOIRE, --include-dir=RÉPERTOIRE\n"
+" Chercher dans le RÉPERTOIRE les makefiles "
+"traités par inclusion.\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
msgstr ""
-" -j [N], --jobs[=N] Autoriser N tâches simultanées ; nombre infini "
-"si utilisé sans argument.\n"
+" -j [N], --jobs[=N] Autoriser N tâches simultanées ; nombre infini "
+"si utilisé sans argument.\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
-" -k, --keep-going Poursuivre même si certaines cibles n'ont pas "
-"pu être fabriquées.\n"
+" -k, --keep-going Poursuivre même si certaines cibles n'ont pas "
+"pu être fabriquées.\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
"N.\n"
msgstr ""
" -l [N], --load-average[=N], --max-load[=N]\n"
-" Ne pas lancer de tâches multiples à moins que "
-"la charge soit inférieure à N.\n"
+" Ne pas lancer de tâches multiples à moins que "
+"la charge soit inférieure à N.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
msgstr ""
-" -L, --check-symlink-times Utiliser le « mtime » le plus récent entre les "
+" -L, --check-symlink-times Utiliser le « mtime » le plus récent entre les "
"liens symboliques et la cible.\n"
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
"them.\n"
msgstr ""
" -n, --just-print, --dry-run, --recon\n"
-" N'exécuter aucune recette ; seulement les "
+" N'exécuter aucune recette ; seulement les "
"afficher.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
"it.\n"
msgstr ""
" -o FICHIER, --old-file=FICHIER, --assume-old=FICHIER\n"
-" Considérer le FICHIER comme étant très ancien "
+" Considérer le FICHIER comme étant très ancien "
"et ne pas le refabriquer.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
msgstr ""
" -O[TYPE], --output-sync[=TYPE]\n"
-" Synchronise la sortie des tâches parallèles "
+" Synchronise la sortie des tâches parallèles "
"par TYPE.\n"
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr ""
-" -p, --print-data-base Afficher la base de données interne de make.\n"
+" -p, --print-data-base Afficher la base de données interne de make.\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
msgstr ""
-" -q, --question Ne pas exécuter de recette ; le code de sortie "
-"indique si la cible est à jour.\n"
+" -q, --question Ne pas exécuter de recette ; le code de sortie "
+"indique si la cible est à jour.\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr ""
-" -r, --no-builtin-rules Désactiver les règles implicites internes.\n"
+" -r, --no-builtin-rules Désactiver les règles implicites internes.\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr ""
-" -R, --no-builtin-variables Désactiver les réglages des variables "
+" -R, --no-builtin-variables Désactiver les réglages des variables "
"internes.\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
-msgstr " -s, --silent, --quiet Ne pas répéter les recettes.\n"
+msgstr " -s, --silent, --quiet Ne pas répéter les recettes.\n"
+
+#: src/main.c:390
+#, fuzzy
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" -q, --question Ne pas exécuter de recette ; le code de sortie "
+"indique si la cible est à jour.\n"
-#: main.c:393
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
msgstr ""
" -S, --no-keep-going, --stop\n"
-" Désactiver -k.\n"
+" Désactiver -k.\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
" -t, --touch Assigner l'heure actuelle aux cibles au lieu "
"de les refabriquer.\n"
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
-msgstr " --trace Afficher les traces mémoire.\n"
+msgstr " --trace Afficher les traces mémoire.\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr ""
-" -v, --version Afficher le numéro de version de make et "
+" -v, --version Afficher le numéro de version de make et "
"quitter.\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
-msgstr " -w, --print-directory Afficher le répertoire courant.\n"
+msgstr " -w, --print-directory Afficher le répertoire courant.\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
msgstr ""
-" --no-print-directory Désactiver l'option -w, même si elle a été "
-"activée implicitement.\n"
+" --no-print-directory Désactiver l'option -w, même si elle a été "
+"activée implicitement.\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
msgstr ""
" -W FICHIER, --what-if=FICHIER, --new-file=FICHIER, --assume-new=FICHIER\n"
-" Considérer le FICHIER comme étant toujours "
+" Considérer le FICHIER comme étant toujours "
"nouveau.\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
msgstr ""
-" --warn-undefined-variables Prévenir lorsqu'une variable non définie est "
-"référencée.\n"
+" --warn-undefined-variables Prévenir lorsqu'une variable non définie est "
+"référencée.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
-msgstr "une chaîne vide n'est pas un nom de fichier valable"
+msgstr "une chaîne vide n'est pas un nom de fichier valable"
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
-msgstr "niveau de débogage inconnu « %s »"
+msgstr "niveau de débogage inconnu « %s »"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
-msgstr "type de output-sync « %s » inconnu"
+msgstr "type de output-sync « %s » inconnu"
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr ""
"%s: interception de l'interruption/exception (code = 0x%lx, addr = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1115,147 +1124,157 @@ msgid ""
"ExceptionAddress = 0x%p\n"
msgstr ""
"\n"
-"Filtre d'exception non pris en charge appelé depuis le programme %s\n"
+"Filtre d'exception non pris en charge appelé depuis le programme %s\n"
"ExceptionCode = %lx\n"
"ExceptionFlags = %lx\n"
"ExceptionAddress = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
-msgstr "Violation d'accès : opération d'écriture à l'adresse 0x%p\n"
+msgstr "Violation d'accès : opération d'écriture à l'adresse 0x%p\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
-msgstr "Violation d'accès : opération de lecture à l'adresse 0x%p\n"
+msgstr "Violation d'accès : opération de lecture à l'adresse 0x%p\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
-msgstr "find_and_set_shell() définit default_shell = %s\n"
+msgstr "find_and_set_shell() définit default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr ""
-"La recherche de chemin de find_and_set_shell() a définit default_shell = %s\n"
-
-#: main.c:1538
-#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s s'arrête pendant 30 secondes..."
+"La recherche de chemin de find_and_set_shell() a définit default_shell = %s\n"
-#: main.c:1540
+#: src/main.c:1609
#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "sleep(30) terminé. On continue.\n"
-
-#: main.c:1627
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
-"avertissement : jobserver n'est pas disponible : utilisation de -j1. Ajouter "
-"« + » à la règle parent du make."
+"avertissement : jobserver n'est pas disponible : utilisation de -j1. Ajouter "
+"« + » à la règle parent du make."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
+#: src/main.c:1617
+#, fuzzy, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
msgstr ""
-"AVERTISSEMENT : -jN forcé dans un submake : désactivation du mode serveur de "
-"tâches."
+"AVERTISSEMENT : -jN forcé dans un submake : désactivation du mode serveur de "
+"tâches."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
-msgstr "Makefile depuis l'entrée standard spécifié deux fois."
+msgstr "Makefile depuis l'entrée standard spécifié deux fois."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (fichier temporaire)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (fichier temporaire)"
-#: main.c:2048
+#: src/main.c:2004
+#, fuzzy, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr ""
+"AVERTISSEMENT : -jN forcé dans un submake : désactivation du mode serveur de "
+"tâches."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr ""
-"Les tâches en parallèle (-j) ne sont pas prises en charge sur cette "
+"Les tâches en parallèle (-j) ne sont pas prises en charge sur cette "
"plateforme."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
-msgstr "On revient en mode monotâche (-j1)."
+msgstr "On revient en mode monotâche (-j1)."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr ""
-"Les liens symboliques ne sont pas pris en charge : désactivation de -L."
+"Les liens symboliques ne sont pas pris en charge : désactivation de -L."
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
-msgstr "Mise à jour des makefiles....\n"
+msgstr "Mise à jour des makefiles....\n"
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
-msgstr "Le makefile « %s » pourrait boucler ; on ne recommence pas.\n"
+msgstr "Le makefile « %s » pourrait boucler ; on ne recommence pas.\n"
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
-msgstr "Échec de refabrication du makefile « %s »."
+msgstr "Échec de refabrication du makefile « %s »."
-#: main.c:2299
+#: src/main.c:2323
#, c-format
msgid "Included makefile '%s' was not found."
-msgstr "Le makefile inclus « %s » est introuvable."
+msgstr "Le makefile inclus « %s » est introuvable."
-#: main.c:2304
+#: src/main.c:2328
#, c-format
msgid "Makefile '%s' was not found"
-msgstr "Le makefile « %s » est introuvable"
+msgstr "Le makefile « %s » est introuvable"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
-msgstr "Impossible de revenir dans le répertoire d'origine."
+msgstr "Impossible de revenir dans le répertoire d'origine."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
-msgstr "Réexécution[%u] :"
+msgstr "Réexécution[%u] :"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
-msgstr "unlink (fichier temporaire) :"
+msgstr "unlink (fichier temporaire) :"
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ".DEFAULT_GOAL contient plus d'une cible"
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Pas de cible spécifiée et aucun makefile n'a été trouvé"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "Pas de cible"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Pas de cible spécifiée et aucun makefile n'a été trouvé"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
-msgstr "Mise à jour des objectifs cibles....\n"
+msgstr "Mise à jour des objectifs cibles....\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr ""
-"AVERTISSEMENT : décalage d'horloge détecté. La construction peut être "
-"incomplète."
+"AVERTISSEMENT : décalage d'horloge détecté. La construction peut être "
+"incomplète."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
-msgstr "Utilisation : %s [options] [cible] ...\n"
+msgstr "Utilisation : %s [options] [cible] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1264,7 +1283,7 @@ msgstr ""
"\n"
"Ce programme est construit pour %s\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1273,32 +1292,32 @@ msgstr ""
"\n"
"Ce programme est construit pour %s (%s)\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
-msgstr "Signaler les anomalies à <bug-make@gnu.org>.\n"
+msgstr "Signaler les anomalies à <bug-make@gnu.org>.\n"
-#: main.c:2870
+#: src/main.c:2901
#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
-msgstr "l'option « %s%s » a besoin d'une chaîne non vide comme argument"
+msgstr "l'option « %s%s » a besoin d'une chaîne non vide comme argument"
-#: main.c:2934
+#: src/main.c:2965
#, c-format
msgid "the '-%c' option requires a positive integer argument"
-msgstr "l'option « -%c » prend en argument un entier positif"
+msgstr "l'option « -%c » prend en argument un entier positif"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%sConstruit pour %s\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%sConstruit pour %s (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1306,714 +1325,743 @@ msgid ""
"%sThis is free software: you are free to change and redistribute it.\n"
"%sThere is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
-"%sLicence GPLv3+ : GNU GPL version 3 ou ultérieure <http://gnu.org/licenses/"
+"%sLicence GPLv3+ : GNU GPL version 3 ou ultérieure <http://gnu.org/licenses/"
"gpl.html>\n"
-"%sCeci est un logiciel libre : vous êtes autorisé à le modifier et à la "
+"%sCeci est un logiciel libre : vous êtes autorisé à le modifier et à la "
"redistribuer.\n"
"%sIl ne comporte AUCUNE GARANTIE, dans la mesure de ce que permet la loi.\n"
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
"# Make data base, printed on %s"
msgstr ""
"\n"
-"# Base de données de Make, imprimée le %s"
+"# Base de données de Make, imprimée le %s"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
"# Finished Make data base on %s\n"
msgstr ""
"\n"
-"# Base de données de Make terminée le %s\n"
-
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Erreur inconnue %d"
+"# Base de données de Make terminée le %s\n"
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
-msgstr "%s : utilisateur %lu (reél %lu), groupe %lu (réel %lu)\n"
+msgstr "%s : utilisateur %lu (reél %lu), groupe %lu (réel %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
-msgstr "Accès initialisé"
+msgstr "Accès initialisé"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
-msgstr "Accès utilisateur"
+msgstr "Accès utilisateur"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
-msgstr "Accès de Make"
+msgstr "Accès de Make"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
-msgstr "Accès des fils"
+msgstr "Accès des fils"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
-msgstr "%s : on entre dans un répertoire inconnu\n"
+msgstr "%s : on entre dans un répertoire inconnu\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
-msgstr "%s : on quitte un répertoire inconnu\n"
+msgstr "%s : on quitte un répertoire inconnu\n"
-#: output.c:109
+#: src/output.c:102
#, c-format
msgid "%s: Entering directory '%s'\n"
-msgstr "%s : on entre dans le répertoire « %s »\n"
+msgstr "%s : on entre dans le répertoire « %s »\n"
-#: output.c:111
+#: src/output.c:104
#, c-format
msgid "%s: Leaving directory '%s'\n"
-msgstr "%s : on quitte le répertoire « %s »\n"
+msgstr "%s : on quitte le répertoire « %s »\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "%s[%u] : on entre dans un répertoire inconnu\n"
+msgstr "%s[%u] : on entre dans un répertoire inconnu\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
-msgstr "%s[%u] : on quitte un répertoire inconnu\n"
+msgstr "%s[%u] : on quitte un répertoire inconnu\n"
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
-msgstr "%s[%u] : on entre dans le répertoire « %s »\n"
+msgstr "%s[%u] : on entre dans le répertoire « %s »\n"
-#: output.c:122
+#: src/output.c:115
#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
-msgstr "%s[%u] : on quitte le répertoire « %s »\n"
+msgstr "%s[%u] : on quitte le répertoire « %s »\n"
-#: output.c:495 output.c:497
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
-msgstr "erreur d'écriture : stdout"
+msgstr "erreur d'écriture : stdout"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
-msgstr ". Arrêt.\n"
+msgstr ". Arrêt.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s : %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s : %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+"-O[TYPE] (--output-sync[=TYPE]) n'est pas configuré pour cette construction."
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
-msgstr "création d'un tube pour les tâches"
+msgstr "création d'un tube pour les tâches"
-#: posixos.c:72 posixos.c:227
-#, fuzzy
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
-msgstr "création d'un tube pour les tâches"
+msgstr "duplication d'un tube pour les tâches"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
-msgstr "initialisation du tube du serveur de tâches"
+msgstr "initialisation du tube du serveur de tâches"
-#: posixos.c:90
-#, fuzzy, c-format
+#: src/posixos.c:119
+#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
-msgstr "erreur interne : chaîne --jobserver-fds incorrecte « %s »"
+msgstr "erreur interne : chaîne --jobserver-auth incorrecte « %s »"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr "client Jobserver (fds %d,%d)\n"
-#: posixos.c:109
-#, fuzzy
+#: src/posixos.c:138
msgid "jobserver pipeline"
-msgstr "initialisation du tube du serveur de tâches"
+msgstr "pipeline du serveur de tâches"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
-msgstr "écriture vers le serveur de tâches"
+msgstr "écriture vers le serveur de tâches"
-#: posixos.c:268
-#, fuzzy
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr ""
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
-msgstr "lecture du tube des processus"
+msgstr "pselect du tube de tâches"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "lecture du tube des processus"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "Lecture des makefiles...\n"
-#: read.c:329
+#: src/read.c:336
#, c-format
msgid "Reading makefile '%s'"
-msgstr "Lecture du makefile « %s »"
+msgstr "Lecture du makefile « %s »"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
-msgstr " (pas d'objectif par défaut)"
+msgstr " (pas d'objectif par défaut)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (chemin de recherche)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (peu importe)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (pas de remplacement du ~)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
-msgstr "On saute les BOM UTF-8 du makefile « %s »\n"
+msgstr "On saute les BOM UTF-8 du makefile « %s »\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr "On saute les BOM UTF-8 du tampon makefile\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "syntaxe incorrecte dans la condition"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
-msgstr "%s : echec du chargement"
+msgstr "%s : echec du chargement"
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
-msgstr "La recette commence avant la première cible"
+msgstr "La recette commence avant la première cible"
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
-msgstr "règle manquante avant la recette"
+msgstr "règle manquante avant la recette"
-#: read.c:1124
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
-msgstr "séparateur manquant (vouliez-vous dire TAB au lieu des 8 espaces ?)"
+msgstr "séparateur manquant (vouliez-vous dire TAB au lieu des 8 espaces ?)"
-#: read.c:1126
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
-msgstr "séparateur manquant"
+msgstr "séparateur manquant"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "motif de cible manquant"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "motifs de cible multiples"
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
-msgstr "le motif de cible ne contient pas « %% »"
+msgstr "le motif de cible ne contient pas « %% »"
-#: read.c:1390
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
-msgstr "« endif » manquant"
+msgstr "« endif » manquant"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "nom de variable vide"
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
-msgstr "texte superflu après la directive « define »"
+msgstr "texte superflu après la directive « define »"
-#: read.c:1488
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
-msgstr "« endef » manquant, « define » non terminé"
+msgstr "« endef » manquant, « define » non terminé"
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
-msgstr "texte superflu après la directive « endef »"
+msgstr "texte superflu après la directive « endef »"
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
-msgstr "texte superflu après la directive « %s »"
+msgstr "texte superflu après la directive « %s »"
-#: read.c:1589
+#: src/read.c:1604
#, c-format
msgid "extraneous '%s'"
-msgstr "« %s » superflu"
+msgstr "« %s » superflu"
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
-msgstr "un seul « else » par condition"
+msgstr "un seul « else » par condition"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
-msgstr "Définition malformée de variable spécifique à une cible"
+msgstr "Définition malformée de variable spécifique à une cible"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
-msgstr "les prérequis ne peuvent être définis dans des recettes"
+msgstr "les prérequis ne peuvent être définis dans des recettes"
+
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr ""
-#: read.c:2009
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
-msgstr "mélange de règles implicites et statiques pour le motif"
+msgstr "mélange de règles implicites et statiques pour le motif"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
-msgstr "mélange de règles implicites et normales"
+msgstr "mélange de règles implicites et normales"
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
-msgstr "la cible « %s » ne correspond pas au motif de cible"
+msgstr "la cible « %s » ne correspond pas au motif de cible"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
-msgstr "le fichier cible « %s » possède à la fois des entrées : et ::"
+msgstr "le fichier cible « %s » possède à la fois des entrées : et ::"
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
-msgstr "la cible « %s » apparaît plus d'une fois dans la même règle."
+msgstr "la cible « %s » apparaît plus d'une fois dans la même règle."
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
-msgstr "avertissement : surchargement de la recette pour la cible « %s »"
+msgstr "avertissement : surchargement de la recette pour la cible « %s »"
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
-msgstr "avertissement : ancienne recette ignorée pour la cible « %s »"
+msgstr "avertissement : ancienne recette ignorée pour la cible « %s »"
-#: read.c:2223
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
-msgstr "*** mélange de règles implicites et normales : syntaxe obsolète"
+msgstr "*** mélange de règles implicites et normales : syntaxe obsolète"
+
+#: src/read.c:2271
+#, fuzzy, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "avertissement : surchargement de la recette pour la cible « %s »"
-#: read.c:2542
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr ""
-"AVERTISSEMENT : caractère NUL détecté ; le reste de la ligne est ignoré"
+"AVERTISSEMENT : caractère NUL détecté ; le reste de la ligne est ignoré"
-#: remake.c:226
+#: src/remake.c:226
#, c-format
msgid "Nothing to be done for '%s'."
-msgstr "rien à faire pour « %s »."
+msgstr "rien à faire pour « %s »."
-#: remake.c:227
+#: src/remake.c:227
#, c-format
msgid "'%s' is up to date."
-msgstr "« %s » est à jour."
+msgstr "« %s » est à jour."
-#: remake.c:323
+#: src/remake.c:323
#, c-format
msgid "Pruning file '%s'.\n"
-msgstr "Élagage du fichier « %s ».\n"
+msgstr "Élagage du fichier « %s ».\n"
-#: remake.c:406
+#: src/remake.c:389
#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr ""
-"%s Aucune règle pour fabriquer la cible « %s », nécessaire pour « %s »%s"
+"%s Aucune règle pour fabriquer la cible « %s », nécessaire pour « %s »%s"
-#: remake.c:416
+#: src/remake.c:399
#, c-format
msgid "%sNo rule to make target '%s'%s"
-msgstr "%sAucune règle pour fabriquer la cible « %s »%s"
+msgstr "%sAucune règle pour fabriquer la cible « %s »%s"
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
-msgstr "Étude du fichier cible « %s ».\n"
+msgstr "Étude du fichier cible « %s ».\n"
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
-msgstr "Tentative récente échouée de mettre à jour le fichier « %s ».\n"
+msgstr "Tentative récente échouée de mettre à jour le fichier « %s ».\n"
-#: remake.c:461
+#: src/remake.c:444
#, c-format
msgid "File '%s' was considered already.\n"
-msgstr "Le fichier « %s » a déjà été étudié.\n"
+msgstr "Le fichier « %s » a déjà été étudié.\n"
-#: remake.c:471
+#: src/remake.c:454
#, c-format
msgid "Still updating file '%s'.\n"
-msgstr "Mise à jour du fichier « %s » en cours.\n"
+msgstr "Mise à jour du fichier « %s » en cours.\n"
-#: remake.c:474
+#: src/remake.c:457
#, c-format
msgid "Finished updating file '%s'.\n"
-msgstr "Fin de la mise à jour du fichier « %s ».\n"
+msgstr "Fin de la mise à jour du fichier « %s ».\n"
-#: remake.c:503
+#: src/remake.c:486
#, c-format
msgid "File '%s' does not exist.\n"
-msgstr "Le fichier « %s » n'existe pas.\n"
+msgstr "Le fichier « %s » n'existe pas.\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
msgstr ""
-"*** Avertissement : le fichier .LOW_RESOLUTION_TIME « %s » a un horodatage à "
-"haute résolution"
+"*** Avertissement : le fichier .LOW_RESOLUTION_TIME « %s » a un horodatage à "
+"haute résolution"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
-msgstr "Règle implicite trouvée pour « %s ».\n"
+msgstr "Règle implicite trouvée pour « %s ».\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
-msgstr "Pas de règle implicite trouvée pour « %s ».\n"
+msgstr "Pas de règle implicite trouvée pour « %s ».\n"
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
-msgstr "Utilisation de la recette par défaut pour « %s ».\n"
+msgstr "Utilisation de la recette par défaut pour « %s ».\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
-msgstr "Dépendance circulaire %s <- %s abandonnée."
+msgstr "Dépendance circulaire %s <- %s abandonnée."
-#: remake.c:691
+#: src/remake.c:674
#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
-msgstr "Fin des dépendances du fichier cible « %s ».\n"
+msgstr "Fin des dépendances du fichier cible « %s ».\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
-msgstr "Les dépendances de « %s » sont en cours de fabrication.\n"
+msgstr "Les dépendances de « %s » sont en cours de fabrication.\n"
-#: remake.c:711
+#: src/remake.c:694
#, c-format
msgid "Giving up on target file '%s'.\n"
-msgstr "Abandon du fichier cible « %s ».\n"
+msgstr "Abandon du fichier cible « %s ».\n"
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
-msgstr "La cible « %s » n'a pas été refabriquée à cause d'erreurs."
+msgstr "La cible « %s » n'a pas été refabriquée à cause d'erreurs."
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
-msgstr "La dépendance « %s » ne commande que la cible « %s ».\n"
+msgstr "La dépendance « %s » ne commande que la cible « %s ».\n"
-#: remake.c:773
+#: src/remake.c:756
#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
-msgstr "La dépendance « %s » de la cible « %s » n'existe pas.\n"
+msgstr "La dépendance « %s » de la cible « %s » n'existe pas.\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
-msgstr "La dépendance « %s » est plus récente que la cible « %s ».\n"
+msgstr "La dépendance « %s » est plus récente que la cible « %s ».\n"
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
-msgstr "uLa dépendance « %s » est plus ancienne que la cible « %s ».\n"
+msgstr "uLa dépendance « %s » est plus ancienne que la cible « %s ».\n"
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
-msgstr "La cible « %s » a un deux-points double et n'a pas de dépendance.\n"
+msgstr "La cible « %s » a un deux-points double et n'a pas de dépendance.\n"
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
-msgstr "Pas de recette pour « %s » et aucune dépendance n'a changé.\n"
+msgstr "Pas de recette pour « %s » et aucune dépendance n'a changé.\n"
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
-msgstr "Fabrication de « %s » à cause de l'indicateur « always-make ».\n"
+msgstr "Fabrication de « %s » à cause de l'indicateur « always-make ».\n"
-#: remake.c:819
+#: src/remake.c:802
#, c-format
msgid "No need to remake target '%s'"
-msgstr "Inutile de refabriquer la cible « %s »"
+msgstr "Inutile de refabriquer la cible « %s »"
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
-msgstr " ; utilisation du nom VPATH « %s »"
+msgstr " ; utilisation du nom VPATH « %s »"
-#: remake.c:841
+#: src/remake.c:824
#, c-format
msgid "Must remake target '%s'.\n"
-msgstr "Il faut refabriquer la cible « %s ».\n"
+msgstr "Il faut refabriquer la cible « %s ».\n"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
-msgstr " On ignore le nom VPATH « %s ».\n"
+msgstr " On ignore le nom VPATH « %s ».\n"
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
-msgstr "La recette de « %s » est en cours d'exécution.\n"
+msgstr "La recette de « %s » est en cours d'exécution.\n"
-#: remake.c:863
+#: src/remake.c:846
#, c-format
msgid "Failed to remake target file '%s'.\n"
-msgstr "Échec de refabrication du fichier cible « %s ».\n"
+msgstr "Échec de refabrication du fichier cible « %s ».\n"
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
-msgstr "Refabrication réussie du fichier cible « %s ».\n"
+msgstr "Refabrication réussie du fichier cible « %s ».\n"
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
-msgstr "Le fichier cible « %s » a besoin d'être refabriqué avec l'option -q.\n"
+msgstr "Le fichier cible « %s » a besoin d'être refabriqué avec l'option -q.\n"
-#: remake.c:1064
+#: src/remake.c:1047
#, c-format
msgid "Using default commands for '%s'.\n"
-msgstr "Utilisation des commandes par défaut pour « %s ».\n"
-
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr ""
-"Avertissement : le fichier « %s » a une date de modification dans le futur"
+msgstr "Utilisation des commandes par défaut pour « %s ».\n"
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr ""
-"Avertissement : le fichier « %s » a une date de modification %s s dans le "
+"Avertissement : le fichier « %s » a une date de modification %s s dans le "
"futur"
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
-msgstr "l'élément « %s » de .LIBPATTERNS n'est pas un motif"
+msgstr "l'élément « %s » de .LIBPATTERNS n'est pas un motif"
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
-msgstr "« customs » n'exportera pas : %s\n"
+msgstr "« customs » n'exportera pas : %s\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
msgstr ""
"\n"
-"# Règles implicites"
+"# Règles implicites"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
msgstr ""
"\n"
-"# Pas de règle implicite."
+"# Pas de règle implicite."
-#: rule.c:514
-#, c-format
+#: src/rule.c:548
+#, fuzzy, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
-"# %u règles implicites, %u"
+"# %u règles implicites, %u"
-#: rule.c:523
-msgid " terminal."
-msgstr " terminal."
-
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
-msgstr "ANOMALIE : num_pattern_rules est faux ! %u != %u"
+msgstr "ANOMALIE : num_pattern_rules est faux ! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "signal inconnu"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Raccroche"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "Interrompt"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Quitte"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "Instruction non admise"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
-msgstr "Point de trace/arrêt"
+msgstr "Point de trace/arrêt"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
-msgstr "Annulé"
+msgstr "Annulé"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "Appel IOT"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "Appel EMT"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "Exception en virgule flottante"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
-msgstr "Tué"
+msgstr "Tué"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "Erreur de bus"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Erreur de segmentation"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
-msgstr "Mauvais appel système"
+msgstr "Mauvais appel système"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
-msgstr "Tube cassé"
+msgstr "Tube cassé"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Alarme"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
-msgstr "Terminé"
+msgstr "Terminé"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "Signal utilisateur 1"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "Signal utilisateur 2"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
-msgstr "Processus fils terminé"
+msgstr "Processus fils terminé"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Coupure d'alimentation"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
-msgstr "Arrêté"
+msgstr "Arrêté"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
-msgstr "Arrêté (entrée tty)"
+msgstr "Arrêté (entrée tty)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
-msgstr "Arrêté (sortie tty)"
+msgstr "Arrêté (sortie tty)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
-msgstr "Arrêté (signal)"
+msgstr "Arrêté (signal)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
-msgstr "Limite du temps CPU dépassée"
+msgstr "Limite du temps CPU dépassée"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
-msgstr "Limite de taille de fichier dépassée"
+msgstr "Limite de taille de fichier dépassée"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
-msgstr "Compteur virtuel expiré"
+msgstr "Compteur virtuel expiré"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
-msgstr "Compteur de profiling expiré"
+msgstr "Compteur de profiling expiré"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
-msgstr "Fenêtre modifiée"
+msgstr "Fenêtre modifiée"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Reprise"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "Condition d'E/S urgente"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "E/S possible"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "Ressource perdue"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Signal de danger"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Demande d'informations"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "Coprocesseur en virgule flottante non disponible"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
@@ -2022,7 +2070,7 @@ msgstr ""
"\n"
"%s pas de tampons strcache\n"
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -2030,84 +2078,84 @@ msgid ""
"B\n"
msgstr ""
"\n"
-"%s strcache utilisé : %lu (%lu) / chaînes = %lu / espace = %lu o / moy = %lu "
+"%s strcache utilisé : %lu (%lu) / chaînes = %lu / espace = %lu o / moy = %lu "
"o\n"
-#: strcache.c:308
-#, c-format
+#: src/strcache.c:308
+#, fuzzy, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
-"%s tampon courant : taille = %hu o / utilisé = %hu o / nombre = %hu / moy = "
+"%s tampon courant : taille = %hu o / utilisé = %hu o / nombre = %hu / moy = "
"%hu o\n"
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
-msgstr "%s autre utilisé : total = %lu o / nombre = %lu / moy = %lu o\n"
+msgstr "%s autre utilisé : total = %lu o / nombre = %lu / moy = %lu o\n"
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
msgstr ""
-"%s autre libre : total = %lu o / max = %lu o / min = %lu o / moy = %hu o\n"
+"%s autre libre : total = %lu o / max = %lu o / min = %lu o / moy = %hu o\n"
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
msgstr ""
"\n"
-"%s performance strcache : lookups = %lu / accès = %lu%%\n"
+"%s performance strcache : lookups = %lu / accès = %lu%%\n"
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
msgstr ""
-"# stats des tables de hachage :\n"
+"# stats des tables de hachage :\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "automatique"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
-msgstr "défaut"
+msgstr "défaut"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "environnement"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "makefile"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "environnement avec l'option -e"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "ligne de commande"
-#: variable.c:1647
+#: src/variable.c:1671
msgid "'override' directive"
-msgstr "directive « override »"
+msgstr "directive « override »"
-#: variable.c:1658
+#: src/variable.c:1682
#, c-format
msgid " (from '%s', line %lu)"
-msgstr " (depuis « %s », ligne %lu)"
+msgstr " (depuis « %s », ligne %lu)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
-msgstr "# stats des tables de hachage de la variable « set » :\n"
+msgstr "# stats des tables de hachage de la variable « set » :\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2115,74 +2163,74 @@ msgstr ""
"\n"
"# Variables\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
msgstr ""
"\n"
-"# Valeurs de variable spécifiques au motif"
+"# Valeurs de variable spécifiques au motif"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
msgstr ""
"\n"
-"# pas de valeurs de variable spécifiques au motif"
+"# pas de valeurs de variable spécifiques au motif"
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
"# %u pattern-specific variable values"
msgstr ""
"\n"
-"# %u valeurs de variable spécifiques au motif"
+"# %u valeurs de variable spécifiques au motif"
-#: variable.h:224
+#: src/variable.h:229
#, c-format
msgid "warning: undefined variable '%.*s'"
-msgstr "avertissement : variable « %.*s » indéfinie"
+msgstr "avertissement : variable « %.*s » indéfinie"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
-msgstr "sys$search() a échoué avec %d\n"
+msgstr "sys$search() a échoué avec %d\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr ""
-"-warning, vous pourriez avoir besoin de réactiver le traitement de CTRL-Y "
+"-attention, vous pourriez avoir besoin de réactiver le traitement de CTRL-Y "
"par DCL.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "COMMANDE CD INTERNE %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
-msgstr ""
+msgstr "DCL : %s\n"
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
-msgstr "Sortie ajoutée à %s\n"
+msgstr "Sortie ajoutée à %s\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr "Ajoute %.*s et nettoie\n"
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
-msgstr "Exécution de %s à la place\n"
+msgstr "Exécution de %s à la place\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2190,72 +2238,97 @@ msgstr ""
"\n"
"# Chemins de recherche VPATH\n"
-#: vpath.c:620
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
-msgstr "# Aucun chemin de recherche « vpath »."
+msgstr "# Aucun chemin de recherche « vpath »."
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
"# %u 'vpath' search paths.\n"
msgstr ""
"\n"
-"# %u chemins de recherche « vpath ».\n"
+"# %u chemins de recherche « vpath ».\n"
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
msgstr ""
"\n"
-"# Aucun chemin de recherche général (variable « VPATH »)."
+"# Aucun chemin de recherche général (variable « VPATH »)."
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
"# "
msgstr ""
"\n"
-"# Chemin de recherche général (variable « VPATH ») :\n"
+"# Chemin de recherche général (variable « VPATH ») :\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
-msgstr "Nombre de clients jobserver limités à %d\n"
+msgstr "Nombre de clients jobserver limités à %d\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
-msgstr "création de la sémaphore du jobserver : (erreur %ld : %s)"
+msgstr "création de la sémaphore du jobserver : (erreur %ld : %s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr ""
-"erreur interne : impossible d'ouvrir la sémaphore « %s » du jobserver : "
-"(erreur %ld : %s) "
+"erreur interne : impossible d'ouvrir la sémaphore « %s » du jobserver : "
+"(erreur %ld : %s) "
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
-msgstr "client Jobserver (semaphore %s)\n"
+msgstr "client jobserver (semaphore %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
-msgstr "libération de la sémaphore jobserver : erreur (%ld : %s)"
+msgstr "libération de la sémaphore jobserver : erreur (%ld : %s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
-msgstr "attente de la sémaphore ou du processus fils : (erreur %ld : %s)"
+msgstr "attente de la sémaphore ou du processus fils : (erreur %ld : %s)"
+
+#~ msgid "%s: %s: Command not found\n"
+#~ msgstr "%s : %s : commande introuvable\n"
+
+#~ msgid "%s[%u]: %s: Command not found\n"
+#~ msgstr "%s[%u] : %s : commande introuvable\n"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s : programme Shell introuvable"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s s'arrête pendant 30 secondes..."
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "sleep(30) terminé. On continue.\n"
+
+#~ msgid "Unknown error %d"
+#~ msgstr "Erreur inconnue %d"
+
+#~ msgid "Warning: File '%s' has modification time in the future"
+#~ msgstr ""
+#~ "Avertissement : le fichier « %s » a une date de modification dans le futur"
+
+#~ msgid " terminal."
+#~ msgstr " terminal."
#~ msgid "%s: recipe for target '%s' failed"
-#~ msgstr "%s : la recette pour la cible « %s » a échoué"
+#~ msgstr "%s : la recette pour la cible « %s » a échoué"
#~ msgid "%s[%s] Error 0x%x%s"
#~ msgstr "%s[%s] Erreur 0x%x%s"
@@ -2264,13 +2337,13 @@ msgstr "attente de la sémaphore ou du processus fils : (erreur %ld : %s)"
#~ msgstr "%s[%s] %s%s%s"
#~ msgid "dup jobserver"
-#~ msgstr "duplication du serveur de tâches"
+#~ msgstr "duplication du serveur de tâches"
#~ msgid "Warning: Empty redirection\n"
-#~ msgstr "AVERTISSEMENT : redirection vide\n"
+#~ msgstr "AVERTISSEMENT : redirection vide\n"
#~ msgid "internal error: '%s' command_state"
-#~ msgstr "erreur interne : « %s » command_state"
+#~ msgstr "erreur interne : « %s » command_state"
#~ msgid "BUILTIN [%s][%s]\n"
#~ msgstr "COMMANDE INTERNE [%s][%s]\n"
@@ -2279,61 +2352,61 @@ msgstr "attente de la sémaphore ou du processus fils : (erreur %ld : %s)"
#~ msgstr "COMMANDE ECHO INTERNE %s->%s\n"
#~ msgid "Unknown builtin command '%s'\n"
-#~ msgstr "Commande interne inconnue « %s »\n"
+#~ msgstr "Commande interne inconnue « %s »\n"
#~ msgid "Builtin command is unknown or unsupported in .ONESHELL: '%s'\n"
#~ msgstr ""
-#~ "Commande interne inconnue ou non prise en charge par .ONESHELL : « %s »\n"
+#~ "Commande interne inconnue ou non prise en charge par .ONESHELL : « %s »\n"
#~ msgid "Error, empty command\n"
#~ msgstr "Erreur, commande vide\n"
#~ msgid "Redirected input from %s\n"
-#~ msgstr "Entrée redirigée depuis %s\n"
+#~ msgstr "Entrée redirigée depuis %s\n"
#~ msgid "Redirected error to %s\n"
-#~ msgstr "Erreur redirigée vers %s\n"
+#~ msgstr "Erreur redirigée vers %s\n"
#~ msgid "Redirected output to %s\n"
-#~ msgstr "Sortie redirigée vers %s\n"
+#~ msgstr "Sortie redirigée vers %s\n"
#~ msgid "Error spawning, %d\n"
#~ msgstr "Erreur de lancement, %d\n"
#~ msgid "internal error: multiple --sync-mutex options"
-#~ msgstr "erreur interne : options --sync-mutex multiples"
+#~ msgstr "erreur interne : options --sync-mutex multiples"
#~ msgid "internal error: multiple --jobserver-fds options"
-#~ msgstr "erreur interne : options --jobserver-fds multiples"
+#~ msgstr "erreur interne : options --jobserver-fds multiples"
#~ msgid "virtual memory exhausted"
-#~ msgstr "mémoire virtuelle épuisée"
+#~ msgstr "mémoire virtuelle épuisée"
#~ msgid "write error"
-#~ msgstr "erreur d'écriture"
+#~ msgstr "erreur d'écriture"
#~ msgid "BUILTIN RM %s\n"
#~ msgstr "COMMANDE RM INTERNE %s\n"
#~ msgid "# Invalid value in `update_status' member!"
-#~ msgstr "# Valeur non valable dans le membre « update_status » !"
+#~ msgstr "# Valeur non valable dans le membre « update_status » !"
#~ msgid "*** [%s] Error 0x%x (ignored)"
-#~ msgstr "*** [%s] Erreur 0x%x (ignorée)"
+#~ msgstr "*** [%s] Erreur 0x%x (ignorée)"
#~ msgid "[%s] Error %d (ignored)"
-#~ msgstr "[%s] Erreur %d (ignorée)"
+#~ msgstr "[%s] Erreur %d (ignorée)"
#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
#~ msgstr ""
-#~ "Invocation de recette de %s:%lu pour mettre à jour la cible « %s ».\n"
+#~ "Invocation de recette de %s:%lu pour mettre à jour la cible « %s ».\n"
#~ msgid "Invoking builtin recipe to update target `%s'.\n"
#~ msgstr ""
-#~ "Invocation de la recette incorporée pour mettre à jour la cible « %s ».\n"
+#~ "Invocation de la recette incorporée pour mettre à jour la cible « %s ».\n"
#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
-#~ msgstr "%s nombre de tampons strcache : %d (* %d B/buffer = %d B)\n"
+#~ msgstr "%s nombre de tampons strcache : %d (* %d B/buffer = %d B)\n"
#~ msgid ""
#~ "\n"
@@ -2341,7 +2414,7 @@ msgstr "attente de la sémaphore ou du processus fils : (erreur %ld : %s)"
#~ "# "
#~ msgstr ""
#~ "\n"
-#~ "# stats des tables de hachage strcache :\n"
+#~ "# stats des tables de hachage strcache :\n"
#~ "# "
#~ msgid "process_easy() failed failed to launch process (e=%ld)\n"
@@ -2352,42 +2425,42 @@ msgstr "attente de la sémaphore ou du processus fils : (erreur %ld : %s)"
#~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n"
#~ "%sPARTICULAR PURPOSE.\n"
#~ msgstr ""
-#~ "%sCeci est un logiciel libre ; consultez le code source pour connaître "
+#~ "%sCeci est un logiciel libre ; consultez le code source pour connaître "
#~ "les conditions de copie.\n"
#~ "%sIl n'y a PAS de garantie ; ni pour une utilisation COMMERCIALE ni pour\n"
-#~ "%sune ADÉQUATION À UN BESOIN PARTICULIER.\n"
+#~ "%sune ADÉQUATION À UN BESOIN PARTICULIER.\n"
#~ msgid "extraneous `endef'"
-#~ msgstr "« endef » superflu"
+#~ msgstr "« endef » superflu"
#~ msgid "empty `override' directive"
-#~ msgstr "directive « override » vide"
+#~ msgstr "directive « override » vide"
#~ msgid "invalid `override' directive"
-#~ msgstr "directive « override » incorrecte"
+#~ msgstr "directive « override » incorrecte"
#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
#~ msgstr "-warning, CTRL-Y va laisser des sous-processsus dans la nature.\n"
#~ msgid "Do not specify -j or --jobs if sh.exe is not available."
-#~ msgstr "Ne pas spécifier -j ou --jobs si sh.exe n'est pas disponible."
+#~ msgstr "Ne pas spécifier -j ou --jobs si sh.exe n'est pas disponible."
#~ msgid "Resetting make for single job mode."
-#~ msgstr "Réinitialisation de make en mode de traitement simple des tâches."
+#~ msgstr "Réinitialisation de make en mode de traitement simple des tâches."
#~ msgid "Syntax error, still inside '\"'\n"
-#~ msgstr "Erreur de syntaxe, toujours à l'intérieur de « \" »\n"
+#~ msgstr "Erreur de syntaxe, toujours à l'intérieur de « \" »\n"
#~ msgid "Got a SIGCHLD; %u unreaped children.\n"
#~ msgstr ""
-#~ "Réception du signal SIGCHLD ; %u processus fils dont le statut de\n"
-#~ "sortie n'a pas été récupé.\n"
+#~ "Réception du signal SIGCHLD ; %u processus fils dont le statut de\n"
+#~ "sortie n'a pas été récupé.\n"
#~ msgid "no file name for `%sinclude'"
-#~ msgstr "pas de nom de fichier pour « %sinclude »"
+#~ msgstr "pas de nom de fichier pour « %sinclude »"
#~ msgid "target `%s' leaves prerequisite pattern empty"
-#~ msgstr "la cible « %s » a laissé un schéma de dépendance vide"
+#~ msgstr "la cible « %s » a laissé un schéma de dépendance vide"
#~ msgid ""
#~ "\n"
@@ -2409,20 +2482,20 @@ msgstr "attente de la sémaphore ou du processus fils : (erreur %ld : %s)"
#~ "table.\n"
#~ msgid "DIRECTORY"
-#~ msgstr "RÉPERTOIRE"
+#~ msgstr "RÉPERTOIRE"
#~ msgid "Change to DIRECTORY before doing anything"
-#~ msgstr "Changer de RÉPERTOIRE avant de faire quoi que ce soit"
+#~ msgstr "Changer de RÉPERTOIRE avant de faire quoi que ce soit"
#~ msgid "FLAGS"
#~ msgstr "FANIONS"
#~ msgid "Suspend process to allow a debugger to attach"
-#~ msgstr "Suspension de processus pour permettre au déboggeur de se rattacher"
+#~ msgstr "Suspension de processus pour permettre au déboggeur de se rattacher"
#~ msgid "Environment variables override makefiles"
#~ msgstr ""
-#~ "Les variables d'environnement écrasent celles définies dans les makefiles"
+#~ "Les variables d'environnement écrasent celles définies dans les makefiles"
#~ msgid "FILE"
#~ msgstr "FICHIER"
@@ -2434,22 +2507,22 @@ msgstr "attente de la sémaphore ou du processus fils : (erreur %ld : %s)"
#~ msgstr "Recherche les makefiles inclus dans DIRECTORY"
#~ msgid "Don't start multiple jobs unless load is below N"
-#~ msgstr "N'exécute pas de tâches multiples si la charge dépasse N"
+#~ msgstr "N'exécute pas de tâches multiples si la charge dépasse N"
#~ msgid "Don't actually run any commands; just print them"
-#~ msgstr "N'exécute pas les commandes ; elles sont juste affichées"
+#~ msgstr "N'exécute pas les commandes ; elles sont juste affichées"
#~ msgid "Consider FILE to be very old and don't remake it"
-#~ msgstr "Considère FILE comme étant très vieux et ne le refabrique pas"
+#~ msgstr "Considère FILE comme étant très vieux et ne le refabrique pas"
#~ msgid "Don't echo commands"
#~ msgstr "N'affiche pas les commandes"
#~ msgid "Turns off -k"
-#~ msgstr "Désactive -k"
+#~ msgstr "Désactive -k"
#~ msgid "Consider FILE to be infinitely new"
-#~ msgstr "Considère FILE comme étant infiniment récent"
+#~ msgstr "Considère FILE comme étant infiniment récent"
#~ msgid "Entering"
#~ msgstr "Entre dans"
@@ -2472,7 +2545,7 @@ msgstr "attente de la sémaphore ou du processus fils : (erreur %ld : %s)"
#~ msgstr "Erreur dans lbr$ini_control, %d\n"
#~ msgid "Error looking up module %s in library %s, %d\n"
-#~ msgstr "Erreur en recherchant le module %s dans la bibliothèque %s, %d\n"
+#~ msgstr "Erreur en recherchant le module %s dans la bibliothèque %s, %d\n"
#~ msgid "Error getting module info, %d\n"
#~ msgstr "Erreur lors de l'obtention des informations du module, %d\n"
@@ -2484,46 +2557,46 @@ msgstr "attente de la sémaphore ou du processus fils : (erreur %ld : %s)"
#~ msgstr " non"
#~ msgid "# Last modified %.24s (%0lx)\n"
-#~ msgstr "# Dernière modification %.24s (%0lx)\n"
+#~ msgstr "# Dernière modification %.24s (%0lx)\n"
#~ msgid "undefined"
-#~ msgstr "indéfini"
+#~ msgstr "indéfini"
#~ msgid "file"
#~ msgstr "fichier"
#~ msgid "environment override"
-#~ msgstr "écrasement par l'environnement"
+#~ msgstr "écrasement par l'environnement"
#~ msgid "override"
-#~ msgstr "écrasement"
+#~ msgstr "écrasement"
#~ msgid "the `word' function takes a one-origin index argument"
-#~ msgstr "la fonction `word' prend un argument d'index à une seule origine"
+#~ msgstr "la fonction `word' prend un argument d'index à une seule origine"
#~ msgid "implicit"
-#~ msgstr "dépendance implicite"
+#~ msgstr "dépendance implicite"
#~ msgid "rule"
-#~ msgstr "règle de dépendance"
+#~ msgstr "règle de dépendance"
#~ msgid "Trying %s dependency `%s'.\n"
#~ msgstr "Essai de la %s `%s'.\n"
#~ msgid "Found dependency as `%s'.%s\n"
-#~ msgstr "Dépendance trouvée en tant que `%s'.%s\n"
+#~ msgstr "Dépendance trouvée en tant que `%s'.%s\n"
#~ msgid "intermediate"
-#~ msgstr "intermédiaire"
+#~ msgstr "intermédiaire"
#~ msgid "Unknown%s job %d"
-#~ msgstr "Tâche%s inconnue %d"
+#~ msgstr "Tâche%s inconnue %d"
#~ msgid " remote"
#~ msgstr " distante"
#~ msgid "%s finished."
-#~ msgstr "%s terminée."
+#~ msgstr "%s terminée."
#~ msgid "losing"
#~ msgstr "perdant"
@@ -2547,16 +2620,16 @@ msgstr "attente de la sémaphore ou du processus fils : (erreur %ld : %s)"
#~ msgstr "enfant"
#~ msgid "Dependency `%s' does not exist.\n"
-#~ msgstr "La dépendance `%s' n'existe pas.\n"
+#~ msgstr "La dépendance `%s' n'existe pas.\n"
#~ msgid "newer"
-#~ msgstr "plus récente"
+#~ msgstr "plus récente"
#~ msgid "older"
#~ msgstr "plus ancienne"
#~ msgid "exporting: Couldn't create return socket."
-#~ msgstr "exportation : N'a pas pu créer la socket de retour."
+#~ msgstr "exportation : N'a pas pu créer la socket de retour."
#~ msgid "exporting: "
#~ msgstr "exportation : "
@@ -2565,7 +2638,7 @@ msgstr "attente de la sémaphore ou du processus fils : (erreur %ld : %s)"
#~ msgstr "exportation : %s"
#~ msgid "Job exported to %s ID %u\n"
-#~ msgstr "Tâche exportée vers %s ID %u\n"
+#~ msgstr "Tâche exportée vers %s ID %u\n"
#~ msgid "Error getting load average"
#~ msgstr "Erreur lors de l'obtention de la charge moyenne"
@@ -2580,7 +2653,7 @@ msgstr "attente de la sémaphore ou du processus fils : (erreur %ld : %s)"
#~ msgstr "15 minutes : %f "
#~ msgid "digits occur in two different argv-elements.\n"
-#~ msgstr "des chiffres apparaissent dans deux éléments différents de argv.\n"
+#~ msgstr "des chiffres apparaissent dans deux éléments différents de argv.\n"
#~ msgid "option %c\n"
#~ msgstr "option %c\n"
@@ -2595,10 +2668,10 @@ msgstr "attente de la sémaphore ou du processus fils : (erreur %ld : %s)"
#~ msgstr "option c ayant pour valeur `%s'\n"
#~ msgid "?? getopt returned character code 0%o ??\n"
-#~ msgstr "?? getopt a renvoyé le caractère de code 0%o ??\n"
+#~ msgstr "?? getopt a renvoyé le caractère de code 0%o ??\n"
#~ msgid "non-option ARGV-elements: "
-#~ msgstr "éléments de ARGV qui ne sont pas des options : "
+#~ msgstr "éléments de ARGV qui ne sont pas des options : "
#~ msgid "option d with value `%s'\n"
#~ msgstr "option d ayant pour valeur `%s'\n"
diff --git a/po/ga.gmo b/po/ga.gmo
index 69c0096..c6dbd0f 100644
--- a/po/ga.gmo
+++ b/po/ga.gmo
Binary files differ
diff --git a/po/ga.po b/po/ga.po
index 4310213..473b3c3 100644
--- a/po/ga.po
+++ b/po/ga.po
@@ -1,132 +1,132 @@
# Irish translations for make.
# Copyright (C) 2005 Free Software Foundation, Inc.
# This file is distributed under the same license as the make package.
-# Kevin Patrick Scannell <scannell@SLU.EDU>, 2005.
+# Kevin Patrick Scannell <kscanne@gmail.com>, 2005, 2017.
#
msgid ""
msgstr ""
-"Project-Id-Version: make 3.81\n"
+"Project-Id-Version: make 4.2.1\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
-"PO-Revision-Date: 2006-04-22 16:02-0500\n"
-"Last-Translator: Kevin Patrick Scannell <scannell@SLU.EDU>\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2017-01-09 16:02-0500\n"
+"Last-Translator: Kevin Patrick Scannell <kscanne@gmail.com>\n"
"Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
"Language: ga\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
-#: ar.c:46
-#, fuzzy, c-format
+#: src/ar.c:46
+#, c-format
msgid "attempt to use unsupported feature: '%s'"
-msgstr "rinneadh iarracht ar ghné gan tacaíocht a úsáid: `%s'"
+msgstr "rinneadh iarracht ar ghné gan tacaíocht a úsáid: '%s'"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
-msgstr "ní féidir ball cartlainne a `touch'áil ar VMS"
+msgstr "ní féidir 'touch' a dhéanamh ar bhall de chartlann ar VMS"
-#: ar.c:147
-#, fuzzy, c-format
+#: src/ar.c:147
+#, c-format
msgid "touch: Archive '%s' does not exist"
-msgstr "touch: Níl an chartlann `%s' ann"
+msgstr "touch: Níl an chartlann '%s' ann"
-#: ar.c:150
-#, fuzzy, c-format
+#: src/ar.c:150
+#, c-format
msgid "touch: '%s' is not a valid archive"
-msgstr "touch: Níl `%s' ina cartlann bhailí"
+msgstr "touch: Níl '%s' ina cartlann bhailí"
-#: ar.c:157
-#, fuzzy, c-format
+#: src/ar.c:157
+#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
-msgstr "touch: Níl a leithéid de bhall `%s' i `%s'"
+msgstr "touch: Níl a leithéid de bhall '%s' i '%s'"
-#: ar.c:164
-#, fuzzy, c-format
+#: src/ar.c:164
+#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
-msgstr "touch: Droch-chód aisfhillidh ó ar_member_touch ar `%s'"
+msgstr "touch: Tháinig droch-chód ar ais ó ar_member_touch ar '%s'"
-#: arscan.c:130
-#, fuzzy, c-format
+#: src/arscan.c:130
+#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr ""
-"níorbh fhéidir le lbr$set_module an t-eolas modúil a bhaint amach, stádas = "
-"%d"
+"níorbh fhéidir le lbr$set_module eolas faoin mhodúl a fháil, stádas = %d"
-#: arscan.c:236
-#, fuzzy, c-format
+#: src/arscan.c:236
+#, c-format
msgid "lbr$ini_control() failed with status = %d"
-msgstr "theip ar lbr$ini_control le stádas = %d"
+msgstr "theip ar lbr$ini_control le stádas = %d"
-#: arscan.c:261
-#, fuzzy, c-format
+#: src/arscan.c:261
+#, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr ""
-"ní féidir leabharlann `%s' a oscailt chun cuardach a dhéanamh ar an mball `"
-"%s'"
+"ní féidir leabharlann '%s' a oscailt chun cuardach a dhéanamh ar stádas "
+"baill %d"
-#: arscan.c:965
-#, fuzzy, c-format
+#: src/arscan.c:944
+#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
-msgstr "Ball `%s'%s: %ld beart ag %ld (%ld).\n"
+msgstr "Ball '%s'%s: %ld beart ag %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
-msgstr " (is féidir go bhfuil an t-ainm teasctha)"
+msgstr " (seans go dteascfar an t-ainm)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
-msgstr " Dáta %s"
+msgstr " Dáta %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
-msgstr " uid = %d, gid = %d, mód = 0%o.\n"
+msgstr " uid = %d, gid = %d, mód = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
-msgstr ""
+msgstr "An iomarca línte san oideas (%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** Briseadh.\n"
-#: commands.c:627
-#, fuzzy, c-format
+#: src/commands.c:628
+#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
-msgstr "*** [%s] Is féidir gur ball bréige é `%s'; ní scriosadh"
+msgstr "*** [%s] Seans gur ball bréige é '%s'; níor scriosadh é"
-#: commands.c:631
-#, fuzzy, c-format
+#: src/commands.c:632
+#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
-msgstr "*** Is féidir gur ball bréige é `%s'; ní scriosadh"
+msgstr "*** Seans gur ball bréige é '%s'; níor scriosadh é"
-#: commands.c:645
-#, fuzzy, c-format
+#: src/commands.c:646
+#, c-format
msgid "*** [%s] Deleting file '%s'"
-msgstr "*** [%s] Comhad `%s' á scriosadh"
+msgstr "*** [%s] Comhad '%s' á scriosadh"
-#: commands.c:647
-#, fuzzy, c-format
+#: src/commands.c:648
+#, c-format
msgid "*** Deleting file '%s'"
-msgstr "*** Comhad `%s' á scriosadh"
+msgstr "*** Comhad '%s' á scriosadh"
-#: commands.c:683
-#, fuzzy
+#: src/commands.c:684
msgid "# recipe to execute"
-msgstr "# orduithe le rith"
+msgstr "# oideas le rith"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (insuite):"
-#: commands.c:688
-#, fuzzy, c-format
+#: src/commands.c:689
+#, c-format
msgid " (from '%s', line %lu):\n"
-msgstr " (ó `%s', líne %lu):\n"
+msgstr " (ó '%s', líne %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -134,229 +134,221 @@ msgstr ""
"\n"
"# Comhadlanna\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
-msgstr "# %s: níorbh fhéidir é a stat.\n"
+msgstr "# %s: níorbh fhéidir é a stat.\n"
-#: dir.c:1085
-#, fuzzy
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
-msgstr "# %s (eochair %s, am-m %d): ní féidir é a oscailt.\n"
+msgstr "# %s (eochair %s, mtime %I64u): níorbh fhéidir é a oscailt.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
-msgstr "# %s (gléas %d, i-nód [%d,%d,%d]): ní féidir é a oscailt.\n"
+msgstr "# %s (gléas %d, i-nód [%d,%d,%d]): níorbh fhéidir é a oscailt.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
-msgstr "# %s (gléas %ld, i-nód %ld): níorbh fhéidir é a oscailt.\n"
+msgstr "# %s (gléas %ld, i-nód %ld): níorbh fhéidir é a oscailt.\n"
-#: dir.c:1122
-#, fuzzy
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
-msgstr "# %s (eochair %s, am-m %d): "
+msgstr "# %s (eochair %s, mtime %I64u): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
-msgstr "# %s (gléas %d, i-nód [%d,%d,%d]): "
+msgstr "# %s (gléas %d, i-nód [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
-msgstr "# %s (gléas %ld, i-nód %ld): "
+msgstr "# %s (gléas %ld, i-nód %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
-msgstr "Ná Déan"
+msgstr "Níl"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " comhad, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
-msgstr "níl"
+msgstr "níl"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
-msgstr " rudaí neamhfhéideartha"
+msgstr " rudaí neamhfhéideartha"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
-msgstr " go dtí seo."
+msgstr " go dtí seo."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
-msgstr " rudaí neamhfhéideartha i %lu comhadlann.\n"
+msgstr " rudaí neamhfhéideartha i %lu comhadlann.\n"
-#: expand.c:125
-#, fuzzy, c-format
+#: src/expand.c:125
+#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
-msgstr "Déanann an athróg athchúrsach `%s' tagairt dó féin (sa deireadh)"
+msgstr "Déanann an athróg athchúrsach '%s' tagairt di féin (ar deireadh)"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
-msgstr "tagairt athróige gan chríochnú"
+msgstr "tagairt d'athróg gan chríochnú"
-#: file.c:278
-#, fuzzy, c-format
+#: src/file.c:278
+#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
-msgstr "Sonraíodh orduithe le haghaidh comhaid `%s' ag %s:%lu,"
+msgstr "Sonraíodh oideas le haghaidh comhaid '%s' ag %s:%lu,"
-#: file.c:283
-#, fuzzy, c-format
+#: src/file.c:283
+#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
-msgstr ""
-"Aimsíodh orduithe le haghaidh `%s' trí chuardach ar rialacha intuigthe,"
+msgstr "Aimsíodh oideas le haghaidh '%s' trí chuardach ar rialacha intuigthe,"
-#: file.c:287
-#, fuzzy, c-format
+#: src/file.c:287
+#, c-format
msgid "but '%s' is now considered the same file as '%s'."
-msgstr "ach anois is ionann iad na comhaid `%s' agus `%s'."
+msgstr "ach anois is ionann iad na comhaid '%s' agus '%s'."
-#: file.c:290
-#, fuzzy, c-format
+#: src/file.c:290
+#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr ""
-"Déanfar neamhshuim ar orduithe le haghaidh `%s'; úsáidfear na cinn le "
-"haghaidh `%s' ina n-ionad."
+"Déanfar neamhshuim ar an oideas le haghaidh '%s'; úsáidfear an ceann le "
+"haghaidh '%s' ina ionad."
-#: file.c:310
-#, fuzzy, c-format
+#: src/file.c:310
+#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr ""
-"ní féidir idirstad aonair `%s' a athainmnigh le hidirstad dúbailte `%s'"
+"ní féidir idirstad aonair '%s' a athainmnigh le hidirstad dúbailte '%s'"
-#: file.c:316
-#, fuzzy, c-format
+#: src/file.c:316
+#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
-msgstr "ní féidir idirstad dúbailte `%s' a athainmniú le hidirstad aonair `%s'"
+msgstr "ní féidir idirstad dúbailte '%s' a athainmniú le hidirstad aonair '%s'"
-#: file.c:408
-#, fuzzy, c-format
+#: src/file.c:408
+#, c-format
msgid "*** Deleting intermediate file '%s'"
-msgstr "*** Comhad idirmheánach `%s' á scriosadh"
+msgstr "*** Comhad idirmheánach '%s' á scriosadh"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
-msgstr "Comhaid idirmheánacha á mbaint...\n"
+msgstr "Comhaid idirmheánacha á mbaint...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "An t-am anois"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
-msgstr "%s: Stampa ama as raon; %s á úsáid ina ionad"
+msgstr "%s: Stampa ama as raon; %s á úsáid ina ionad"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
-msgstr "# Ní sprioc é:"
+msgstr "# Ní sprioc é:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
-msgstr "# Comhad luachmhar (réamhriachtanas de .PRECIOUS)."
+msgstr "# Comhad luachmhar (réamhriachtanas de .PRECIOUS)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
-msgstr "# Sprioc bhréige (réamhriachtanas de .PHONY)."
+msgstr "# Sprioc bhréige (réamhriachtanas de .PHONY)."
-#: file.c:971
-#, fuzzy
+#: src/file.c:1025
msgid "# Command line target."
-msgstr "# Sprioc líne na n-orduithe."
+msgstr "# Sprioc líne na n-orduithe."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
-msgstr "# Makefile réamhshocraithe, nó ó MAKEFILES, nó -include/sinclude."
+msgstr "# Makefile réamhshocraithe, nó ó MAKEFILES, nó -include/sinclude."
-#: file.c:975
-#, fuzzy
+#: src/file.c:1029
msgid "# Builtin rule"
-msgstr ""
-"\n"
-"# Níl aon riail intuigthe."
+msgstr "# Riail insuite"
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# Rinneadh cuardach ar rialacha intuigthe."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
-msgstr "# Ní dhearna cuardach ar rialacha intuigthe."
+msgstr "# Ní dhearnadh cuardach ar rialacha intuigthe."
-#: file.c:980
-#, fuzzy, c-format
+#: src/file.c:1034
+#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
-msgstr "# Stoc patrúin intuigthe/statach: `%s'\n"
+msgstr "# Stoc patrúin intuigthe/statach: '%s'\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
-msgstr "# Tá an comhad ina réamhriachtanas idirmheánach."
+msgstr "# Tá an comhad ina réamhriachtanas idirmheánach."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
-msgstr "# Déantar fosta:"
+msgstr "# Déanann sé freisin:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
-msgstr "# Níor seiceáladh an t-am mionathraithe riamh."
+msgstr "# Níor seiceáladh an t-am mionathraithe riamh."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
-msgstr "# Níl a leithéid de chomhad ann."
+msgstr "# Níl a leithéid de chomhad ann."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
-msgstr "# Is cianaosta an comhad seo."
+msgstr "# Tá an comhad an-aosta."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# Athraithe %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
-msgstr "# Nuashonraíodh an comhad."
+msgstr "# Nuashonraíodh an comhad."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
-msgstr "# Níor nuashonraíodh an comhad."
+msgstr "# Níor nuashonraíodh an comhad."
-#: file.c:1008
-#, fuzzy
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
-msgstr "# Tá orduithe ann atá ag rith faoi láthair (IS FABHT É SEO)."
+msgstr "# Oideas á rith faoi láthair (IS FABHT É SEO)."
-#: file.c:1011
-#, fuzzy
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
-msgstr "# Tá orduithe spleáchais ag rith (IS FABHT É SEO)."
+msgstr "# Oideas spleáchais á rith (IS FABHT É SEO)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
-msgstr "# D'éirigh leis an nuashonrú."
+msgstr "# D'éirigh leis an nuashonrú."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
-msgstr "# Tá gá le nuashonrú (-q ceaptha)."
+msgstr "# Tá gá le nuashonrú (-q sainithe)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
-msgstr "# Theip ar nuashonrú."
+msgstr "# Theip ar an nuashonrú."
-#: file.c:1032
-#, fuzzy
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
-msgstr "# Luach neamhbhailí sa bhall `command_state'!"
+msgstr "# Luach neamhbhailí sa bhall 'command_state'!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -364,564 +356,554 @@ msgstr ""
"\n"
"# Comhaid"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
"# "
msgstr ""
"\n"
-"# comhaid hais-tábla stait:\n"
+"# comhaid hais-tábla stait:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
-msgstr ""
+msgstr "%s: Níl réimse '%s' i dtaisce: %s"
-#: function.c:790
-#, fuzzy
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
-msgstr "tá an chéad argóint neamhuimhriúil leis an fheidhm `word'"
+msgstr "neamhuimhriúil an chéad argóint le feidhm 'word'"
-#: function.c:795
-#, fuzzy
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
-msgstr "caithfidh an chéad argóint leis an fheidhm `word' a bheith deimhneach"
+msgstr "caithfidh an chéad argóint le feidhm 'word' a bheith deimhneach"
-#: function.c:815
-#, fuzzy
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
-msgstr "is neamhuimhriúil í an chéad argóint leis an fheidhm `wordlist'"
+msgstr "neamhuimhriúil an chéad argóint le feidhm 'wordlist'"
-#: function.c:817
-#, fuzzy
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
-msgstr "is neamhuimhriúil í an dara hargóint leis an fheidhm `wordlist'"
+msgstr "neamhuimhriúil an dara hargóint le feidhm 'wordlist'"
-#: function.c:1525
-#, fuzzy, c-format
+#: src/function.c:1533
+#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "create_child_process: theip ar DuplicateHandle(In) (e=%ld)\n"
+msgstr "windows32_openpipe: theip ar DuplicateHandle(In) (e=%ld)\n"
-#: function.c:1549
-#, fuzzy, c-format
+#: src/function.c:1557
+#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr "create_child_process: theip ar DuplicateHandle(Earr) (e=%ld)\n"
+msgstr "windows32_openpipe: theip ar DuplicateHandle(Earr) (e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "Theip ar CreatePipe() (e=%ld)\n"
-#: function.c:1564
-#, fuzzy
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
-msgstr "windows32_openpipe (): theip ar process_init_fd()\n"
+msgstr "windows32_openpipe(): theip ar process_init_fd()\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
-msgstr "Baisc-chomhad sealadach %s á ghlanadh\n"
+msgstr "Baisc-chomhad sealadach %s á ghlanadh\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
-msgstr ""
+msgstr "comhad: ainm comhaid ar iarraidh"
-#: function.c:2219 function.c:2250
-#, fuzzy, c-format
+#: src/function.c:2234 src/function.c:2265
+#, c-format
msgid "open: %s: %s"
-msgstr "%s: %s"
+msgstr "oscailt: %s: %s"
-#: function.c:2227
-#, fuzzy, c-format
+#: src/function.c:2242
+#, c-format
msgid "write: %s: %s"
-msgstr "earráid sa scríobh: %s"
+msgstr "scríobh: %s: %s"
-#: function.c:2230 function.c:2267
-#, fuzzy, c-format
+#: src/function.c:2245 src/function.c:2282
+#, c-format
msgid "close: %s: %s"
-msgstr "%s%s: %s"
+msgstr "dúnadh: %s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
-msgstr ""
+msgstr "comhad: an iomarca argóintí"
-#: function.c:2262
-#, fuzzy, c-format
+#: src/function.c:2277
+#, c-format
msgid "read: %s: %s"
-msgstr "%s: %s"
+msgstr "léamh: %s: %s"
-#: function.c:2275
-#, fuzzy, c-format
+#: src/function.c:2290
+#, c-format
msgid "file: invalid file operation: %s"
-msgstr "%s: rogha neamhbhailí -- %c\n"
+msgstr "comhad: oibríocht neamhbhailí ar chomhad: %s"
-#: function.c:2390
-#, fuzzy, c-format
+#: src/function.c:2405
+#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
-msgstr "easpa argóintí (%d) d'fheidhm `%s'"
+msgstr "easpa argóintí (%d) ar fheidhm '%s'"
-#: function.c:2402
-#, fuzzy, c-format
+#: src/function.c:2417
+#, c-format
msgid "unimplemented on this platform: function '%s'"
-msgstr "níl an fheidhm `%s' ar fáil ar an chóras seo"
+msgstr "níl feidhm '%s' ar fáil ar an chóras seo"
-#: function.c:2466
-#, fuzzy, c-format
+#: src/function.c:2483
+#, c-format
msgid "unterminated call to function '%s': missing '%c'"
-msgstr "glao ar fheidhm `%s' gan chríochnú: `%c' ar iarraidh"
+msgstr "glao ar fheidhm '%s' gan chríochnú: '%c' ar iarraidh"
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
-msgstr ""
+msgstr "Tá ainm na feidhme folamh"
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
-msgstr ""
+msgstr "Tá ainm na feidhme neamhbhailí: %s"
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
-msgstr ""
+msgstr "Tá ainm na feidhme rófhada: %s"
-#: function.c:2657
-#, fuzzy, c-format
+#: src/function.c:2674
+#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
-msgstr "easpa argóintí (%d) d'fheidhm `%s'"
+msgstr "Ãosmhéid argóintí neamhbhailí (%u) d'fheidhm %s"
-#: function.c:2660
-#, fuzzy, c-format
+#: src/function.c:2677
+#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
-msgstr "easpa argóintí (%d) d'fheidhm `%s'"
+msgstr "Uasmhéid argóintí neamhbhailí (%u) d'fheidhm %s"
-#: getopt.c:659
-#, fuzzy, c-format
+#: src/getopt.c:659
+#, c-format
msgid "%s: option '%s' is ambiguous\n"
-msgstr "%s: Tá an rogha `%s' débhríoch\n"
+msgstr "%s: Tá an rogha '%s' débhríoch\n"
-#: getopt.c:683
-#, fuzzy, c-format
+#: src/getopt.c:683
+#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
-msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha `--%s'\n"
+msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha '--%s'\n"
-#: getopt.c:688
-#, fuzzy, c-format
+#: src/getopt.c:688
+#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha `%c%s'\n"
+msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha '%c%s'\n"
-#: getopt.c:705 getopt.c:878
-#, fuzzy, c-format
+#: src/getopt.c:705 src/getopt.c:878
+#, c-format
msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: tá argóint de dhíth i ndiaidh na rogha `%s'\n"
+msgstr "%s: tá argóint de dhíth i ndiaidh na rogha '%s'\n"
-#: getopt.c:734
-#, fuzzy, c-format
+#: src/getopt.c:734
+#, c-format
msgid "%s: unrecognized option '--%s'\n"
-msgstr "%s: rogha anaithnid `--%s'\n"
+msgstr "%s: rogha anaithnid '--%s'\n"
-#: getopt.c:738
-#, fuzzy, c-format
+#: src/getopt.c:738
+#, c-format
msgid "%s: unrecognized option '%c%s'\n"
-msgstr "%s: rogha anaithnid `%c%s'\n"
+msgstr "%s: rogha anaithnid '%c%s'\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: rogha neamhcheadaithe -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
-msgstr "%s: rogha neamhbhailí -- %c\n"
+msgstr "%s: rogha neamhbhailí -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: tá argóint de dhíth i ndiaidh na rogha -- %c\n"
+msgstr "%s: tá argóint de dhíth i ndiaidh na rogha -- %c\n"
-#: getopt.c:844
-#, fuzzy, c-format
+#: src/getopt.c:844
+#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
-msgstr "%s: Tá an rogha `-W %s' débhríoch\n"
+msgstr "%s: Tá an rogha '-W %s' débhríoch\n"
-#: getopt.c:862
-#, fuzzy, c-format
+#: src/getopt.c:862
+#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha `-W %s'\n"
+msgstr "%s: ní cheadaítear argóint i ndiaidh na rogha '-W %s'\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
-msgstr ""
+msgstr "guile: '%s' á leathnú\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
-msgstr ""
+msgstr "guile: '%s' á luacháil\n"
-#: hash.c:49
-#, fuzzy, c-format
-msgid "can't allocate %lu bytes for hash table: memory exhausted"
-msgstr "ní féidir %ld beart a dháileadh le haghaidh hais-tábla: cuimhne ídithe"
-
-#: hash.c:280
+#: src/hash.c:50
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "Lód=%ld/%ld=%.0f%%, "
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
+msgstr "ní féidir %lu beart a dháileadh le haghaidh hais-tábla: cuimhne ídithe"
-#: hash.c:282
-#, c-format
-msgid "Rehash=%d, "
-msgstr "Ath-haiseáil=%d, "
+#: src/hash.c:280
+#, fuzzy, c-format
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "Lód=%ld/%ld=%.0f%%, "
-#: hash.c:283
-#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "Tuairteanna haiseála=%ld/%ld=%.0f%%"
+#: src/hash.c:282
+#, fuzzy, c-format
+msgid "Rehash=%u, "
+msgstr "Ath-haiseáil=%d, "
-#: implicit.c:38
+#: src/hash.c:283
#, fuzzy, c-format
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "Tuairteanna haiseála=%ld/%ld=%.0f%%"
+
+#: src/implicit.c:38
+#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
-msgstr "Ag déanamh cuardach ar riail intuigthe le haghaidh `%s'.\n"
+msgstr "Ag lorg riail intuigthe le haghaidh '%s'.\n"
-#: implicit.c:54
-#, fuzzy, c-format
+#: src/implicit.c:54
+#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
-msgstr ""
-"Ag déanamh cuardach ar riail intuigthe le haghaidh bhall cartlainne `%s'.\n"
-
-#: implicit.c:311
-msgid "Avoiding implicit rule recursion.\n"
-msgstr "Athchúrsáil de bharr rialacha intuigthe á seachaint.\n"
+msgstr "Ag lorg riail intuigthe le haghaidh bhall cartlainne '%s'.\n"
-#: implicit.c:486
+#: src/implicit.c:311
#, c-format
-msgid "Stem too long: '%.*s'.\n"
-msgstr ""
+msgid "Avoiding implicit rule recursion.\n"
+msgstr "Athchúrsáil de bharr rialacha intuigthe á seachaint.\n"
-#: implicit.c:491
+#: src/implicit.c:484
#, fuzzy, c-format
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "Stoc rófhada: '%.*s'.\n"
+
+#: src/implicit.c:490
+#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
-msgstr "Ag baint triail as riail phatrúin le stoc `%.*s'.\n"
+msgstr "Ag baint triail as riail phatrúin le stoc '%.*s'.\n"
-#: implicit.c:697
-#, fuzzy, c-format
+#: src/implicit.c:717
+#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
-msgstr "Réamhriachtanas neamhfhéideartha rialach `%s' á dhiúltú.\n"
+msgstr "Réamhriachtanas neamhfhéideartha rialach '%s' á dhiúltú.\n"
-#: implicit.c:698
-#, fuzzy, c-format
+#: src/implicit.c:718
+#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
-msgstr "Réamhriachtanas intuigthe neamhfhéideartha `%s' á dhiúltú.\n"
+msgstr "Réamhriachtanas intuigthe neamhfhéideartha '%s' á dhiúltú.\n"
-#: implicit.c:711
-#, fuzzy, c-format
+#: src/implicit.c:732
+#, c-format
msgid "Trying rule prerequisite '%s'.\n"
-msgstr "Ag baint triail as an réamhriachtanas rialach `%s'.\n"
+msgstr "Ag baint triail as réamhriachtanas rialach '%s'.\n"
-#: implicit.c:712
-#, fuzzy, c-format
+#: src/implicit.c:733
+#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
-msgstr "Ag baint triail as an réamhriachtanas intuigthe `%s'.\n"
+msgstr "Ag baint triail as réamhriachtanas intuigthe '%s'.\n"
-#: implicit.c:751
-#, fuzzy, c-format
+#: src/implicit.c:772
+#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
-msgstr "Aimsíodh réamhriachtanas `%s' mar VPATH `%s'\n"
+msgstr "Aimsíodh réamhriachtanas '%s' mar VPATH '%s'\n"
-#: implicit.c:765
-#, fuzzy, c-format
+#: src/implicit.c:786
+#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
-msgstr "Ag déanamh cuardach ar riail le comhad idirmheánach `%s'.\n"
+msgstr "Ag lorg riail le comhad idirmheánach '%s'.\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
-msgstr "Ní féidir comhad sealadach a chruthú\n"
+msgstr "Ní féidir comhad sealadach a chruthú\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
-msgstr " (córdhumpa)"
+msgstr " (córdhumpa)"
-#: job.c:490
-#, fuzzy
+#: src/job.c:553
msgid " (ignored)"
-msgstr "[%s] Earráid %d (rinneadh neamhshuim)"
+msgstr " (rinneadh neamhshuim air)"
-#: job.c:494 job.c:1828
-#, fuzzy
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
-msgstr " (insuite):"
+msgstr "<insuite>"
-#: job.c:510
-#, fuzzy, c-format
+#: src/job.c:573
+#, c-format
msgid "%s[%s: %s] Error %d%s"
-msgstr "*** [%s] Earráid %d"
+msgstr "%s[%s: %s] Earráid %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
-msgstr "*** Ag fanacht le jabanna neamhchríochnaithe..."
+msgstr "*** Ag fanacht le jabanna neamhchríochnaithe..."
-#: job.c:629
-#, fuzzy, c-format
+#: src/job.c:704
+#, c-format
msgid "Live child %p (%s) PID %s %s\n"
-msgstr "Mac beo 0x%08lx (%s) PID %ld %s\n"
+msgstr "Mac beo %p (%s) PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
-msgstr " (cianda)"
+msgstr " (i gcéin)"
-#: job.c:831
-#, fuzzy, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Mac caillteach á bhaint: 0x%08lx PID %ld %s\n"
-
-#: job.c:832
-#, fuzzy, c-format
+#: src/job.c:898
+#, c-format
msgid "Reaping winning child %p PID %s %s\n"
-msgstr "Mac buaiteach á bhaint: 0x%08lx PID %ld %s\n"
+msgstr "Mac a bhuaigh á bhaint: %p PID %s %s\n"
+
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Mac a chaill á bhaint: %p PID %s %s\n"
-#: job.c:839
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
-msgstr "Baisc-chomhad sealadach %s á ghlanadh\n"
+msgstr "Baisc-chomhad sealadach %s á ghlanadh\n"
-#: job.c:845
-#, fuzzy, c-format
+#: src/job.c:956
+#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
-msgstr "Baisc-chomhad sealadach %s á ghlanadh\n"
+msgstr "Níorbh fhéidir baisc-chomhad sealadach %s a ghlanadh (%d)\n"
-#: job.c:951
-#, fuzzy, c-format
+#: src/job.c:1071
+#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
-msgstr "Mac 0x%08lx PID %ld%s á dhealú ón slabhra.\n"
+msgstr "Mac %p PID %s%s á bhaint ón slabhra.\n"
-#: job.c:1006
-#, fuzzy, c-format
+#: src/job.c:1120
+#, c-format
msgid "Released token for child %p (%s).\n"
-msgstr "Saoradh ceadchomhartha le haghaidh mac 0x%08lx (%s).\n"
+msgstr "Saoradh ceadchomhartha le haghaidh mac %p (%s).\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
-msgstr "theip ar process_easy(); níor tosaíodh próiseas (e=%ld)\n"
+msgstr "theip ar process_easy(); níor tosaíodh próiseas (e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
"Counted %d args in failed launch\n"
msgstr ""
"\n"
-"%d argóint sa tosú theipthe\n"
+"%d argóint sa tosú teipthe\n"
-#: job.c:1581
-#, fuzzy, c-format
+#: src/job.c:1642
+#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
-msgstr "Ag cur mac 0x%08lx (%s) PID %ld%s ar an slabhra.\n"
+msgstr "Mac %p (%s) PID %s%s á chur ar an slabhra.\n"
-#: job.c:1811
-#, fuzzy, c-format
+#: src/job.c:1875
+#, c-format
msgid "Obtained token for child %p (%s).\n"
-msgstr "Fuarthas ceadchomhartha le haghaidh mac 0x%08lx (%s).\n"
+msgstr "Fuarthas ceadchomhartha le haghaidh mac %p (%s).\n"
-#: job.c:1838
-#, fuzzy, c-format
+#: src/job.c:1902
+#, c-format
msgid "%s: target '%s' does not exist"
-msgstr "touch: Níl an chartlann `%s' ann"
+msgstr "%s: níl sprioc '%s' ann"
-#: job.c:1841
-#, fuzzy, c-format
+#: src/job.c:1905
+#, c-format
msgid "%s: update target '%s' due to: %s"
-msgstr ""
-"%sNíl aon riail chun an sprioc `%s' a dhéanamh, riachtanach le haghaidh `"
-"%s'%s"
+msgstr "%s: nuashonrú sprioc '%s' mar gheall ar: %s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
-msgstr "ní féidir srianta lóid a chur i bhfeidhm ar an chóras oibriúcháin seo"
+msgstr "ní féidir srianta lóid a chur i bhfeidhm ar an chóras oibriúcháin seo"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
-msgstr "ní féidir srian lóid a chur i bhfeidhm: "
+msgstr "ní féidir srian lóid a chur i bhfeidhm: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
-msgstr "níl aon hanla comhaid le fáil: níorbh fhéidir stdin a chóipeáil\n"
+msgstr "níl aon hanla comhaid le fáil: níorbh fhéidir stdin a chóipeáil\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
-msgstr "níl aon hanla comhaid le fáil: níorbh fhéidir stdout a chóipeáil\n"
+msgstr "níl aon hanla comhaid le fáil: níorbh fhéidir stdout a chóipeáil\n"
-#: job.c:2074
-#, fuzzy
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
-msgstr "níl aon hanla comhaid le fáil: níorbh fhéidir stdin a chóipeáil\n"
+msgstr "níl aon hanla comhaid le fáil: níorbh fhéidir stderr a chóipeáil\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
-msgstr "Níorbh fhéidir stdin a athchóiriú\n"
+msgstr "Níorbh fhéidir stdin a athchóiriú\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
-msgstr "Níorbh fhéidir stdout a athchóiriú\n"
+msgstr "Níorbh fhéidir stdout a athchóiriú\n"
-#: job.c:2105
-#, fuzzy
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
-msgstr "Níorbh fhéidir stdin a athchóiriú\n"
+msgstr "Níorbh fhéidir stderr a athchóiriú\n"
-#: job.c:2234
-#, fuzzy, c-format
+#: src/job.c:2520
+#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
-msgstr "ghin make mac le pid %ld, ag feitheamh le pid %ld fós\n"
-
-#: job.c:2275
-#, fuzzy, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: Ní bhfuarthas an t-ordú"
-
-#: job.c:2277
-#, fuzzy, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s: Ní bhfuarthas an t-ordú"
+msgstr "bhain make mac le PID %s, ag feitheamh le PID %s fós\n"
-#: job.c:2337
+#: src/job.c:2623
#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: Ní bhfuarthas an clár blaoisce"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
-msgstr "spawnvpe: is féidir gur ídithe í cuimhne na timpeallachta"
+msgstr "spawnvpe: seans nach bhfuil aon spás fágtha sa timpeallacht"
-#: job.c:2584
-#, fuzzy, c-format
+#: src/job.c:2862
+#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
-msgstr "Athraíodh $SHELL (ba `%s' é, agus is `%s' é anois)\n"
+msgstr "Athraíodh $SHELL (ba '%s' é, ach is '%s' é anois)\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
-msgstr "Baisc-chomhad sealadach %s á chruthú\n"
+msgstr "Baisc-chomhad sealadach %s á chruthú\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
msgstr ""
+"Inneachar an bhaisc-chomhaid:\n"
+"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
"\t%s\n"
msgstr ""
+"Inneachar an bhaisc-chomhaid:%s\n"
+"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr ""
-"%s (líne %d) Droch-chomhthéacs blaoisce (!unixy && !batch_mode_shell)\n"
-
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr ""
+"%s (líne %d) Droch-chomhthéacs blaoisce (!unixy && !batch_mode_shell)\n"
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
-msgstr ""
+msgstr "Níorbh fhéidir an tábla siombailí comhchoiteann a oscailt: %s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
-msgstr ""
+msgstr "Níl an réad lódáilte %s comhoiriúnach leis an GPL"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
-msgstr ""
+msgstr "Níorbh fhéidir siombail %s a lódáil ó %s: %s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
-msgstr ""
+msgstr "Tá ainm na siombaile le lódáil folamh: %s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
-msgstr ""
+msgstr "Siombail %s á lódáil ó %s\n"
-#: load.c:256
-#, fuzzy
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
-msgstr "Níl jabanna parailéalacha (-j) ar fáil ar an gcóras seo."
+msgstr "Níl an oibríocht 'load' ar fáil ar an gcóras seo."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "Roghanna:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
-msgstr " -b, -m Déan neamhshuim (comhoiriúnacht)\n"
+msgstr " -b, -m Déan neamhshuim (comhoiriúnacht)\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
-msgstr " -B, --always-make Déan gach sprioc, gan choinníollacha.\n"
+msgstr " -B, --always-make Déan gach sprioc, gan choinníollacha.\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
msgstr ""
" -C COMHADLANN, --directory=COMHADLANN\n"
-" Téigh go COMHADLANN roimh dhéanamh aon rud.\n"
+" Téigh go COMHADLANN roimh dhéanamh aon rud.\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
-msgstr " -d Taispeáin go leor eolas dífhabhtaithe.\n"
+msgstr " -d Taispeáin go leor eolas dífhabhtaithe.\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
-" --debug[=BRATACHA] Taispeáin eolas fabhtaithe de chineálacha "
-"éagsúla.\n"
+" --debug[=BRATACHA] Taispeáin eolas fabhtaithe de chineálacha "
+"éagsúla.\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
msgstr ""
" -e, --environment-overrides\n"
-" Sáraíonn athróga timpeallachta makefileanna.\n"
+" Sáraíonn athróga timpeallachta makefileanna.\n"
-#: main.c:353
+#: src/main.c:350
+#, fuzzy
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
+" --eval=TEAGHRÃN Luacháil TEAGHRÃN mar ráiteas makefile.\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
msgstr ""
" -f COMHAD, --file=COMHAD, --makefile=COMHAD\n"
-" Léigh COMHAD mar makefile.\n"
+" Léigh COMHAD mar makefile.\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
-msgstr " -h, --help Taispeáin an chabhair seo agus scoir.\n"
+msgstr " -h, --help Taispeáin an chabhair seo agus scoir.\n"
-#: main.c:360
-#, fuzzy
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
-msgstr ""
-" -i, --ignore-errors Déan neamhshuim ar earráidí ó orduithe.\n"
+msgstr " -i, --ignore-errors Déan neamhshuim ar earráidí ó oidis.\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
@@ -930,170 +912,177 @@ msgstr ""
" Cuardaigh i gCOMHADLANN ar makefileanna "
"breise.\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
msgstr ""
-" -j [N], --jobs[=N] Ceadaigh N jab le chéile; éigríoch mura "
+" -j [N], --jobs[=N] Ceadaigh N jab le chéile; éigríoch mura "
"gceaptar arg.\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
-" -k, --keep-going Lean ar aghaidh fiú nach féidir sprioc a "
-"dhéanamh.\n"
+" -k, --keep-going Lean ar aghaidh fiú nach féidir sprioc a "
+"dhéanamh.\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
"N.\n"
msgstr ""
" -l [N], --load-average[=N], --max-load[=N]\n"
-" Ná tosaigh jabanna iomadúla mura bhfuil an lód "
-"níos lú ná N.\n"
+" Ná tosaigh jabanna iomadúla mura bhfuil an lód "
+"níos lú ná N.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
msgstr ""
-" -L, --check-symlink-times Úsáid an t-am modhnaithe is déanaí, ar an "
+" -L, --check-symlink-times Úsáid an t-am modhnaithe is déanaí, ar an "
"nasc\n"
-" siombalach nó ar an sprioc.\n"
+" siombalach nó ar an sprioc.\n"
-#: main.c:374
-#, fuzzy
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
"them.\n"
msgstr ""
" -n, --just-print, --dry-run, --recon\n"
-" Ná rith aon ordú; taispeáin torthaí mar dhea "
-"amháin.\n"
+" Ná rith aon oideas; taispeáin na orduithe "
+"amháin.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
"it.\n"
msgstr ""
" -o COMHAD, --old-file=COMHAD, --assume-old=COMHAD\n"
-" Caith le COMHAD mar cheann cianaosta; ná "
-"hathdhéan é.\n"
+" Caith le COMHAD mar cheann cianaosta; ná "
+"hathdhéan é.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
msgstr ""
+" -O[CINEÃL], --output-sync[=CINEÃL]\n"
+" Sioncronaigh aschur ó jabanna comhthreomhara "
+"de réir CINEÃL.\n"
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr ""
-" -p, --print-data-base Taispeáin an bunachar sonraí inmheánach.\n"
+" -p, --print-data-base Taispeáin an bunachar sonraí inmheánach.\n"
-#: main.c:385
-#, fuzzy
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
msgstr ""
-" -q, --question Ná rith aon ordú; stádas scortha = 0 mura gá "
-"le nuashonrú.\n"
+" -q, --question Ná rith aon oideas; stádas scortha = 0 má tá "
+"sé cothrom le dáta.\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr ""
-" -r, --no-builtin-rules Díchumasaigh na rialacha intuigthe insuite.\n"
+" -r, --no-builtin-rules Díchumasaigh na rialacha intuigthe insuite.\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
-msgstr " -R, --no-builtin-variables Díchumasaigh na hathróga insuite.\n"
+msgstr " -R, --no-builtin-variables Díchumasaigh na hathróga insuite.\n"
-#: main.c:391
-#, fuzzy
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
-msgstr " -s, --silent, --quiet Ná déan macalla ar orduithe.\n"
+msgstr " -s, --silent, --quiet Ná déan macalla ar orduithe.\n"
+
+#: src/main.c:390
+#, fuzzy
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" -q, --question Ná rith aon oideas; stádas scortha = 0 má tá "
+"sé cothrom le dáta.\n"
-#: main.c:393
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
msgstr ""
" -S, --no-keep-going, --stop\n"
-" Múch -k.\n"
+" Múch -k.\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
" -t, --touch Teagmhaigh spriocanna in ionad iad a "
-"athdhéanamh.\n"
+"athdhéanamh.\n"
-#: main.c:398
-#, fuzzy
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
-msgstr " -d Taispeáin go leor eolas dífhabhtaithe.\n"
+msgstr " --trace Taispeáin faisnéis dífhabhtaithe.\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr ""
-" -v, --version Taispeáin eolas faoin leagan agus scoir.\n"
+" -v, --version Taispeáin eolas faoin leagan agus scoir.\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
-msgstr " -w, --print-directory Taispeáin an chomhadlann reatha.\n"
+msgstr " -w, --print-directory Taispeáin an chomhadlann reatha.\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
msgstr ""
-" --no-print-directory Múch -w, fiú má tá sé i bhfeidhm go "
+" --no-print-directory Múch -w, fiú má tá sé i bhfeidhm go "
"hintuigthe.\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
msgstr ""
" -W COMHAD, --what-if=COMHAD, --new-file=COMHAD, --assume-new=COMHAD\n"
-" Caith le COMHAD mar cheann úrnua (go "
-"héigríoch).\n"
+" Caith le COMHAD mar cheann úrnua (go "
+"héigríoch).\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
msgstr ""
-" --warn-undefined-variables Tabhair rabhadh má dhéantar tagairt d'athróg "
-"gan sainmhíniú.\n"
+" --warn-undefined-variables Tabhair rabhadh má dhéantar tagairt d'athróg "
+"gan sainmhíniú.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
-msgstr "ní féidir teaghrán folamh a úsáid mar ainm comhaid"
+msgstr "ní féidir teaghrán folamh a úsáid mar ainm comhaid"
-#: main.c:766
-#, fuzzy, c-format
+#: src/main.c:754
+#, c-format
msgid "unknown debug level specification '%s'"
-msgstr "sonrú anaithnid `%s' ar an leibhéal dífhabhtaithe"
+msgstr "leibhéal dífhabhtaithe anaithnid '%s'"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
-msgstr ""
+msgstr "cineál anaithnid '%s' le haghaidh output-sync"
-#: main.c:861
-#, fuzzy, c-format
+#: src/main.c:849
+#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
-msgstr "%s: Fuarthas idirbhriseadh/eisceacht (cód = 0x%lx, seoladh = 0x%lx)\n"
+msgstr "%s: Fuarthas idirbhriseadh/eisceacht (cód = 0x%lx, seoladh = 0x%p)\n"
-#: main.c:868
-#, fuzzy, c-format
+#: src/main.c:856
+#, c-format
msgid ""
"\n"
"Unhandled exception filter called from program %s\n"
@@ -1102,187 +1091,190 @@ msgid ""
"ExceptionAddress = 0x%p\n"
msgstr ""
"\n"
-"Glaodh scagaire eisceachta gan láimhseáil ón chlár %s\n"
-"CódEisceachta = %lx\n"
+"Cuireadh glaoch ar scagaire eisceachta gan láimhseáil ón chlár %s\n"
+"CódEisceachta = %lx\n"
"BratachaEisceachta = %lx\n"
-"SeoladhEisceachta = %lx\n"
+"SeoladhEisceachta = 0x%p\n"
-#: main.c:876
-#, fuzzy, c-format
+#: src/main.c:864
+#, c-format
msgid "Access violation: write operation at address 0x%p\n"
-msgstr "Sárú rochtana: oibríocht scríofa ag seoladh %lx\n"
+msgstr "Sárú cearta rochtana: oibríocht scríofa ag seoladh 0x%p\n"
-#: main.c:877
-#, fuzzy, c-format
+#: src/main.c:865
+#, c-format
msgid "Access violation: read operation at address 0x%p\n"
-msgstr "Sárú rochtana: oibríocht léimh ag seoladh %lx\n"
+msgstr "Sárú cearta rochtana: oibríocht léimh ag seoladh 0x%p\n"
-#: main.c:953 main.c:968
-#, fuzzy, c-format
+#: src/main.c:941 src/main.c:956
+#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
-msgstr "tá find_and_set_shell ag socrú default_shell = %s\n"
-
-#: main.c:1021
-#, fuzzy, c-format
-msgid "find_and_set_shell() path search set default_shell = %s\n"
-msgstr "shocraigh find_and_set_shell conair chuardaigh default_shell = %s\n"
+msgstr "tá find_and_set_shell() ag socrú default_shell = %s\n"
-#: main.c:1538
+#: src/main.c:1009
#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "cuirfear %s ar fionraí ar feadh tréimhse 30 soicind..."
+msgid "find_and_set_shell() path search set default_shell = %s\n"
+msgstr "shocraigh find_and_set_shell() conair chuardaigh default_shell = %s\n"
-#: main.c:1540
+#: src/main.c:1609
#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "sleep(30) críochnaithe. Ag gabháil ar aghaidh.\n"
-
-#: main.c:1627
-#, fuzzy
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
-"rabhadh: níl jabfhreastalaí ar fáil: ag baint úsáid as -j1. Cuir `+' leis "
-"an máthair-riail."
+"rabhadh: níl an jabfhreastalaí ar fáil: ag úsáid -j1. Cuir '+' leis an "
+"máthair-riail."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
-msgstr "rabhadh: -jN fórsáilte i bhfo-make: mód jabfhreastalaí á dhíchumasú."
+#: src/main.c:1617
+#, fuzzy, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
+msgstr "rabhadh: -jN fórsáilte i bhfo-make: mód jabfhreastalaí á dhíchumasú."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
-msgstr "Sonraíodh Makefile ón ionchur caighdeánach faoi dhó."
+msgstr "Sonraíodh Makefile ón ionchur caighdeánach faoi dhó."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (comhad sealadach)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (comhad sealadach)"
-#: main.c:2048
+#: src/main.c:2004
+#, fuzzy, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr "rabhadh: -jN fórsáilte i bhfo-make: mód jabfhreastalaí á dhíchumasú."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
-msgstr "Níl jabanna parailéalacha (-j) ar fáil ar an gcóras seo."
+msgstr "Níl jabanna parailéalacha (-j) ar fáil ar an gcóras seo."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
-msgstr "Á athshocrú le haghaidh jabanna aonair (-j1)."
+msgstr "à athshocrú le haghaidh jabanna aonair (-j1)."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
-msgstr "ní thacaítear le naisc shiombalacha: -L á dhíchumasú."
+msgstr "ní thacaítear le naisc shiombalacha: -L á dhíchumasú."
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
-msgstr "Makefileanna á nuashonrú....\n"
+msgstr "Makefileanna á nuashonrú....\n"
-#: main.c:2195
-#, fuzzy, c-format
+#: src/main.c:2226
+#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
-msgstr "is féidir go lúbfar an Makefile `%s'; ní athdhéanfar é.\n"
+msgstr "Seans go lúbfar an Makefile '%s'; ní athdhéanfar é.\n"
-#: main.c:2279
-#, fuzzy, c-format
+#: src/main.c:2303
+#, c-format
msgid "Failed to remake makefile '%s'."
-msgstr "Theip ar athdhéanamh an makefile `%s'."
+msgstr "Níorbh fhéidir makefile '%s' a athdhéanamh."
-#: main.c:2299
-#, fuzzy, c-format
+#: src/main.c:2323
+#, c-format
msgid "Included makefile '%s' was not found."
-msgstr "Níor aimsíodh an makefile `%s' san áireamh."
+msgstr "Níor aimsíodh makefile '%s' atá san áireamh."
-#: main.c:2304
-#, fuzzy, c-format
+#: src/main.c:2328
+#, c-format
msgid "Makefile '%s' was not found"
-msgstr "Níor aimsíodh an makefile `%s'"
+msgstr "Níor aimsíodh makefile '%s'"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
-msgstr "Níorbh fhéidir an chomhadlann oibre a athrú ar ais."
+msgstr "Níorbh fhéidir filleadh ar an gcomhadlann roimhe seo."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
-msgstr "Á rith arís[%u]:"
+msgstr "à rith arís[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (comhad sealadach): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
-msgstr "tá níos mó ná aon sprioc amháin i .DEFAULT_GOAL"
+msgstr "tá níos mó ná aon sprioc amháin i .DEFAULT_GOAL"
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Níor sonraíodh aon sprioc agus níor aimsíodh aon makefile"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
-msgstr "Níl aon sprioc ann"
+msgstr "Níl aon sprioc ann"
+
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Níor sonraíodh aon sprioc agus níor aimsíodh aon makefile"
-#: main.c:2555
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
-msgstr "Cinn sprice á nuashonrú....\n"
+msgstr "Cinn sprice á nuashonrú....\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
-msgstr "rabhadh: Clog ar sceabha. Is féidir go bhfuil an tógáil neamhiomlán."
+msgstr "rabhadh: Clog ar sceabha. Seans nár chríochnaigh an tógáil."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
-msgstr "Úsáid: %s [roghanna] [sprioc] ...\n"
+msgstr "Úsáid: %s [roghanna] [sprioc] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
"This program built for %s\n"
msgstr ""
"\n"
-"Tógadh an clár seo le haghaidh %s\n"
+"Tógadh an clár seo le haghaidh %s\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
"This program built for %s (%s)\n"
msgstr ""
"\n"
-"Tógadh an clár seo le haghaidh %s (%s)\n"
+"Tógadh an clár seo le haghaidh %s (%s)\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
-msgstr "Seol tuairiscí fabhtanna chuig <bug-make@gnu.org>\n"
+msgstr "Seol tuairiscí fabhtanna chuig <bug-make@gnu.org>\n"
-#: main.c:2870
-#, fuzzy, c-format
+#: src/main.c:2901
+#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
-msgstr "caithfidh tú teaghrán nach folamh a thabhairt mar argóint le `-%c'"
+msgstr "caithfidh tú teaghrán neamhfholamh a thabhairt mar argóint le '%s%s'"
-#: main.c:2934
-#, fuzzy, c-format
+#: src/main.c:2965
+#, c-format
msgid "the '-%c' option requires a positive integer argument"
-msgstr "caithfidh tú slánuimhir dheimhneach a thabhairt mar argóint le `-%c'"
+msgstr "caithfidh tú slánuimhir dheimhneach a thabhairt mar argóint le '-%c'"
-#: main.c:3332
-#, fuzzy, c-format
+#: src/main.c:3363
+#, c-format
msgid "%sBuilt for %s\n"
-msgstr ""
-"\n"
-"%sTógadh an clár seo le haghaidh %s\n"
+msgstr "%sTógadh an clár seo le haghaidh %s\n"
-#: main.c:3334
-#, fuzzy, c-format
+#: src/main.c:3365
+#, c-format
msgid "%sBuilt for %s (%s)\n"
-msgstr ""
-"\n"
-"%sTógadh an clár seo le haghaidh %s (%s)\n"
+msgstr "%sTógadh an clár seo le haghaidh %s (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1290,534 +1282,556 @@ msgid ""
"%sThis is free software: you are free to change and redistribute it.\n"
"%sThere is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
+"%sCeadúnas GPLv3+: GNU GPL leagan 3 nó níos déanaí <http://gnu.org/licenses/"
+"gpl.html>\n"
+"%sIs saorbhogearra é seo: ceadaítear duit é a athrú agus a athdháileadh.\n"
+"%sNíl baránta AR BITH ann, an oiread atá ceadaithe de réir dlí.\n"
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
"# Make data base, printed on %s"
msgstr ""
"\n"
-"# Bunachar sonraí Make, priontáilte ar %s"
+"# Bunachar sonraí Make, priontáilte ar %s"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
"# Finished Make data base on %s\n"
msgstr ""
"\n"
-"# Críochnaíodh an bunachar sonraí Make seo ar %s\n"
+"# Críochnaíodh an bunachar sonraí Make seo ar %s\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Earráid anaithnid %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
-msgstr "%s: úsáideoir %lu (fíor %lu), grúpa %lu (fíor %lu)\n"
+msgstr "%s: úsáideoir %lu (fíor %lu), grúpa %lu (fíor %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
-msgstr "Rochtain túsaithe"
+msgstr "Rochtain túsaithe"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
-msgstr "Rochtain úsáideora"
+msgstr "Rochtain úsáideora"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "Rochtain make"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "Rochtain mic"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: Ag dul isteach i gcomhadlann anaithnid\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: Ag dul amach as comhadlann anaithnid\n"
-#: output.c:109
-#, fuzzy, c-format
+#: src/output.c:102
+#, c-format
msgid "%s: Entering directory '%s'\n"
-msgstr "%s: Ag dul isteach sa chomhadlann `%s'\n"
+msgstr "%s: Ag dul isteach i gcomhadlann '%s'\n"
-#: output.c:111
-#, fuzzy, c-format
+#: src/output.c:104
+#, c-format
msgid "%s: Leaving directory '%s'\n"
-msgstr "%s: Ag dul amach as an gcomhadlann `%s'\n"
+msgstr "%s: Ag dul amach as comhadlann '%s'\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: Ag dul isteach i gcomhadlann anaithnid\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: Ag dul amach as comhadlann anaithnid\n"
-#: output.c:120
-#, fuzzy, c-format
+#: src/output.c:113
+#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
-msgstr "%s[%u]: Ag dul isteach sa chomhadlann `%s'\n"
+msgstr "%s[%u]: Ag dul isteach i gcomhadlann '%s'\n"
-#: output.c:122
-#, fuzzy, c-format
+#: src/output.c:115
+#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
-msgstr "%s[%u]: Ag dul amach as an gcomhadlann `%s'\n"
+msgstr "%s[%u]: Ag dul amach as comhadlann '%s'\n"
-#: output.c:495 output.c:497
-#, fuzzy
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
-msgstr "earráid sa scríobh: %s"
+msgstr "earráid scríofa: stdout"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". Stop.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr "níl -O[CINEÃL] (--output-sync[=CINEÃL]) ar fáil sa leagan seo."
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
-msgstr "píopa na jabanna á chruthú"
+msgstr "píopa na jabanna á chruthú"
-#: posixos.c:72 posixos.c:227
-#, fuzzy
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
-msgstr "píopa na jabanna á chruthú"
+msgstr "píopa na jabanna á chóipeáil"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
-msgstr "píopa an jabfhreastalaí á thúsú"
+msgstr "píopa an jabfhreastalaí á thúsú"
-#: posixos.c:90
-#, fuzzy, c-format
+#: src/posixos.c:119
+#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
-msgstr "earráid inmheánach: teaghrán neamhbhailí --jobserver-fds `%s'"
+msgstr "earráid inmheánach: teaghrán neamhbhailí --jobserver-auth '%s'"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
-msgstr ""
+msgstr "Cliant jabfhreastalaí (fds %d,%d)\n"
-#: posixos.c:109
-#, fuzzy
+#: src/posixos.c:138
msgid "jobserver pipeline"
-msgstr "píopa an jabfhreastalaí á thúsú"
+msgstr "píblíne an jabfhreastalaí"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
-msgstr "scríobh jabfhreastalaí"
+msgstr "scríobh jabfhreastalaí"
-#: posixos.c:268
-#, fuzzy
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr ""
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
-msgstr "léadh píopa na jabanna"
+msgstr "pselect píopa na jabanna"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
-msgstr "léadh píopa na jabanna"
+msgstr "léadh píopa na jabanna"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
-msgstr "Makefileanna á léamh...\n"
+msgstr "Makefile-anna á léamh...\n"
-#: read.c:329
-#, fuzzy, c-format
+#: src/read.c:336
+#, c-format
msgid "Reading makefile '%s'"
-msgstr "Makefile `%s' á léamh"
+msgstr "Makefile '%s' á léamh"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
-msgstr " (gan ceann sprice réamhshocraithe)"
+msgstr " (gan ceann sprice réamhshocraithe)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (conair chuardaigh)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (is cuma)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
-msgstr " (ná fairsing ~)"
+msgstr " (ná leathnaigh ~)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
-msgstr ""
+msgstr "Ag dul thar BOM UTF-8 i Makefile '%s'\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
-msgstr ""
+msgstr "Ag dul thar BOM UTF-8 i maolán Makefile\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
-msgstr "comhréir neamhbhailí i gcoinníollach"
+msgstr "comhréir neamhbhailí i gcoinníollach"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
-msgstr ""
+msgstr "%s: theip ar lódáil"
-#: read.c:985
-#, fuzzy
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
-msgstr "tá orduithe ann roimh an chéad sprioc"
+msgstr "tosaíonn an t-oideas roimh an chéad sprioc"
-#: read.c:1034
-#, fuzzy
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
-msgstr "riail ar iarraidh roimh orduithe"
+msgstr "riail ar iarraidh roimh an oideas"
-#: read.c:1124
-#, fuzzy
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
-msgstr " (Ar mhian leat TÁB in ionad ocht spás?)"
+msgstr "deighilteoir ar iarraidh (ar mhian leat TÃB in ionad ocht spás?)"
-#: read.c:1126
-#, fuzzy
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
-msgstr "deighilteoir%s ar iarraidh"
+msgstr "deighilteoir ar iarraidh"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
-msgstr "patrún sprice ar iarraidh"
+msgstr "patrún sprice ar iarraidh"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
-msgstr "patrúin iomadúla sprice"
+msgstr "ilphatrúin sprice"
-#: read.c:1268
-#, fuzzy, c-format
+#: src/read.c:1289
+#, c-format
msgid "target pattern contains no '%%'"
-msgstr "níl aon `%%' sa phatrún sprice"
+msgstr "níl aon '%%' sa phatrún sprice"
-#: read.c:1390
-#, fuzzy
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
-msgstr "`endif' ar iarraidh"
+msgstr "'endif' ar iarraidh"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
-msgstr "ainm folamh athróige"
+msgstr "ainm folamh athróige"
-#: read.c:1463
-#, fuzzy
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
-msgstr "Téacs gan mhaith i ndiaidh treorach `endef'"
+msgstr "téacs breise i ndiaidh treorach 'define'"
-#: read.c:1488
-#, fuzzy
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
-msgstr "`endef' ar iarraidh, `define' gan chríochnú"
+msgstr "'endef' ar iarraidh, 'define' gan chríochnú"
-#: read.c:1516
-#, fuzzy
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
-msgstr "Téacs gan mhaith i ndiaidh treorach `endef'"
+msgstr "téacs breise i ndiaidh treorach 'endef'"
-#: read.c:1588
-#, fuzzy, c-format
+#: src/read.c:1603
+#, c-format
msgid "extraneous text after '%s' directive"
-msgstr "Téacs gan mhaith i ndiaidh treorach `%s'"
+msgstr "téacs breise i ndiaidh treorach '%s'"
-#: read.c:1589
-#, fuzzy, c-format
+#: src/read.c:1604
+#, c-format
msgid "extraneous '%s'"
-msgstr "`%s' breise"
+msgstr "'%s' breise"
-#: read.c:1617
-#, fuzzy
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
-msgstr "ní cheadaítear ach aon `else' amháin le gach coinníollach"
+msgstr "ní cheadaítear ach aon 'else' amháin le gach ráiteas coinníollach"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
-msgstr "Is míchumtha é an sainmhíniú athróige (le haghaidh aon sprioc amháin)"
+msgstr "Is míchumtha é an sainmhíniú athróige (le haghaidh aon sprioc amháin)"
-#: read.c:1950
-#, fuzzy
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
-msgstr "ní féidir réamhriachtanais a shonrú i scripteanna ordaithe"
+msgstr "ní féidir réamhriachtanais a shonrú in oidis"
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr ""
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
-msgstr "rialacha intuigthe agus rialacha statacha measctha le chéile"
+msgstr "rialacha intuigthe agus rialacha statacha measctha le chéile"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
-msgstr "rialacha intuigthe agus gnáthrialacha measctha le chéile"
+msgstr "rialacha intuigthe agus gnáthrialacha measctha le chéile"
-#: read.c:2085
-#, fuzzy, c-format
+#: src/read.c:2107
+#, c-format
msgid "target '%s' doesn't match the target pattern"
-msgstr "níl an sprioc `%s' comhoiriúnach leis an phatrún sprice"
+msgstr "níl sprioc '%s' comhoiriúnach leis an bpatrún sprice"
-#: read.c:2100 read.c:2146
-#, fuzzy, c-format
+#: src/read.c:2122 src/read.c:2168
+#, c-format
msgid "target file '%s' has both : and :: entries"
-msgstr "tá iontrálacha : agus :: araon ann don chomhad sprice `%s'"
+msgstr "tá iontrálacha : agus :: sa chomhad sprice '%s'"
-#: read.c:2106
-#, fuzzy, c-format
+#: src/read.c:2128
+#, c-format
msgid "target '%s' given more than once in the same rule"
-msgstr "tá an sprioc `%s' i riail amháin níos mó ná uair amháin."
+msgstr "tá an sprioc '%s' ann níos mó ná uair amháin sa riail chéanna"
-#: read.c:2116
-#, fuzzy, c-format
+#: src/read.c:2138
+#, c-format
msgid "warning: overriding recipe for target '%s'"
-msgstr "rabhadh: ag sárú na n-orduithe le haghaidh na sprice `%s'"
+msgstr "rabhadh: oideas le haghaidh sprioc '%s' á shárú"
-#: read.c:2119
-#, fuzzy, c-format
+#: src/read.c:2141
+#, c-format
msgid "warning: ignoring old recipe for target '%s'"
-msgstr ""
-"rabhadh: ag déanamh neamhshuim ar sheanorduithe le haghaidh sprice `%s'"
+msgstr "rabhadh: ag déanamh neamhshuim ar sheanoideas le haghaidh sprioc '%s'"
-#: read.c:2223
-#, fuzzy
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
-msgstr "rialacha intuigthe agus gnáthrialacha measctha le chéile"
+msgstr ""
+"*** rialacha intuigthe agus gnáthrialacha measctha le chéile: comhréir dulta "
+"i léig"
+
+#: src/read.c:2271
+#, fuzzy, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "rabhadh: oideas le haghaidh sprioc '%s' á shárú"
-#: read.c:2542
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr ""
-"rabhadh: chonacthas carachtar NUL; ag déanamh neamhshuim ar an chuid eile "
-"den líne"
+"rabhadh: chonacthas carachtar NUL; ag déanamh neamhshuim ar an chuid eile "
+"den líne"
-#: remake.c:226
-#, fuzzy, c-format
+#: src/remake.c:226
+#, c-format
msgid "Nothing to be done for '%s'."
-msgstr "Níl faic le déanamh i gcomhair `%s'."
+msgstr "Níl faic le déanamh i gcomhair '%s'."
-#: remake.c:227
-#, fuzzy, c-format
+#: src/remake.c:227
+#, c-format
msgid "'%s' is up to date."
-msgstr "Níl gá le `%s' a nuashonrú."
+msgstr "Tá '%s' cothrom le dáta."
-#: remake.c:323
-#, fuzzy, c-format
+#: src/remake.c:323
+#, c-format
msgid "Pruning file '%s'.\n"
-msgstr "Comhad `%s' á bhearradh.\n"
+msgstr "Comhad '%s' á bhearradh.\n"
-#: remake.c:406
-#, fuzzy, c-format
+#: src/remake.c:389
+#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
-msgstr ""
-"%sNíl aon riail chun an sprioc `%s' a dhéanamh, riachtanach le haghaidh `"
-"%s'%s"
+msgstr "%sNíl aon riail chun sprioc '%s' a dhéanamh, rud a theastaíonn '%s'%s"
-#: remake.c:416
-#, fuzzy, c-format
+#: src/remake.c:399
+#, c-format
msgid "%sNo rule to make target '%s'%s"
-msgstr "%sNíl aon riail chun an sprioc `%s' a dhéanamh%s"
+msgstr "%sNíl aon riail chun sprioc '%s' a dhéanamh%s"
-#: remake.c:442
-#, fuzzy, c-format
+#: src/remake.c:425
+#, c-format
msgid "Considering target file '%s'.\n"
-msgstr "Comhad sprice `%s' idir lámha.\n"
+msgstr "Comhad sprice '%s' á scrúdú.\n"
-#: remake.c:449
-#, fuzzy, c-format
+#: src/remake.c:432
+#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr ""
-"Rinneadh iarracht ar an chomhad `%s' a nuashonrú le déanaí, agus theip air.\n"
+"Rinneadh iarracht comhad '%s' a nuashonrú le déanaí, ach theip ar an "
+"iarracht.\n"
-#: remake.c:461
-#, fuzzy, c-format
+#: src/remake.c:444
+#, c-format
msgid "File '%s' was considered already.\n"
-msgstr "Rinneadh scrúdú ar an chomhad `%s' cheana.\n"
+msgstr "Rinneadh scrúdú ar chomhad '%s' cheana.\n"
-#: remake.c:471
-#, fuzzy, c-format
+#: src/remake.c:454
+#, c-format
msgid "Still updating file '%s'.\n"
-msgstr "Comhad `%s' á nuashonrú fós.\n"
+msgstr "Comhad '%s' á nuashonrú fós.\n"
-#: remake.c:474
-#, fuzzy, c-format
+#: src/remake.c:457
+#, c-format
msgid "Finished updating file '%s'.\n"
-msgstr "Nuashonraíodh an comhad `%s'.\n"
+msgstr "Nuashonraíodh comhad '%s'.\n"
-#: remake.c:503
-#, fuzzy, c-format
+#: src/remake.c:486
+#, c-format
msgid "File '%s' does not exist.\n"
-msgstr "Níl a leithéid de chomhad `%s' ann.\n"
+msgstr "Níl comhad '%s' ann.\n"
-#: remake.c:511
-#, fuzzy, c-format
+#: src/remake.c:494
+#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
-msgstr ""
-"*** Warning: comhad .LOW_RESOLUTION_TIME `%s' le stampa ama ardtaifeach"
+msgstr "*** Rabhadh: Stampa ama ardtaifidh ar comhad .LOW_RESOLUTION_TIME `%s'"
-#: remake.c:524 remake.c:1056
-#, fuzzy, c-format
+#: src/remake.c:507 src/remake.c:1039
+#, c-format
msgid "Found an implicit rule for '%s'.\n"
-msgstr "Aimsíodh riail intuigthe le haghaidh `%s'.\n"
+msgstr "Aimsíodh riail intuigthe le haghaidh '%s'.\n"
-#: remake.c:526 remake.c:1058
-#, fuzzy, c-format
+#: src/remake.c:509 src/remake.c:1041
+#, c-format
msgid "No implicit rule found for '%s'.\n"
-msgstr "Níor aimsíodh aon riail intuigthe le haghaidh `%s'.\n"
+msgstr "Níor aimsíodh aon riail intuigthe le haghaidh '%s'.\n"
-#: remake.c:532
-#, fuzzy, c-format
+#: src/remake.c:515
+#, c-format
msgid "Using default recipe for '%s'.\n"
-msgstr "Ag baint úsáid as orduithe réamhshocraithe le haghaidh `%s'.\n"
+msgstr "Ag baint úsáid as oideas réamhshocraithe le haghaidh '%s'.\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
-msgstr "Tréigeadh an spleáchas ciorclach %s <- %s."
+msgstr "Tréigeadh an spleáchas ciorclach %s <- %s."
-#: remake.c:691
-#, fuzzy, c-format
+#: src/remake.c:674
+#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
-msgstr "Críochnaíodh na réamhriachtanais den chomhad sprice `%s'.\n"
+msgstr "Críochnaíodh na réamhriachtanais den chomhad sprice `%s'.\n"
-#: remake.c:697
-#, fuzzy, c-format
+#: src/remake.c:680
+#, c-format
msgid "The prerequisites of '%s' are being made.\n"
-msgstr "Réamhriachtanais de `%s' á ndéanamh anois.\n"
+msgstr "Réamhriachtanais '%s' á ndéanamh anois.\n"
-#: remake.c:711
-#, fuzzy, c-format
+#: src/remake.c:694
+#, c-format
msgid "Giving up on target file '%s'.\n"
-msgstr "Ag tréigean an chomhaid sprice `%s'.\n"
+msgstr "Comhad sprice '%s' á thréigean.\n"
-#: remake.c:716
-#, fuzzy, c-format
+#: src/remake.c:699
+#, c-format
msgid "Target '%s' not remade because of errors."
-msgstr "Ní dhearna an sprioc `%s' arís ós rud é go bhfuil earráidí ann."
+msgstr "Ní dhearna an sprioc '%s' arís mar gheall ar earráidí."
-#: remake.c:768
-#, fuzzy, c-format
+#: src/remake.c:751
+#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
-msgstr ""
-"Sonraíonn an réamhriachtanas `%s' ord rite amháin le haghaidh sprice `%s'.\n"
+msgstr "Is réamhriachtanas ord-amháin é '%s' le haghaidh sprice '%s'.\n"
-#: remake.c:773
-#, fuzzy, c-format
+#: src/remake.c:756
+#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
-msgstr "Níl an réamhriachtanas `%s' den sprioc `%s' ann.\n"
+msgstr "Níl réamhriachtanas '%s' den sprioc '%s' ann.\n"
-#: remake.c:778
-#, fuzzy, c-format
+#: src/remake.c:761
+#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
-msgstr "Tá an réamhriachtanas `%s' níos nuaí ná an sprioc `%s'.\n"
+msgstr "Tá réamhriachtanas '%s' níos nuaí ná sprioc '%s'.\n"
-#: remake.c:781
-#, fuzzy, c-format
+#: src/remake.c:764
+#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
-msgstr "Tá an réamhriachtanas `%s' níos sine ná an sprioc `%s'.\n"
+msgstr "Tá réamhriachtanas '%s' níos sine ná sprioc '%s'.\n"
-#: remake.c:799
-#, fuzzy, c-format
+#: src/remake.c:782
+#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
-msgstr "Tá dhá idirstad ag an sprioc `%s' agus níl aon réamhriachtanas aice.\n"
+msgstr "Is sprioc le dhá idirstad é '%s' agus níl aon réamhriachtanas aice.\n"
-#: remake.c:806
-#, fuzzy, c-format
+#: src/remake.c:789
+#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr ""
-"Níl aon ordú le haghaidh `%s' agus níor athraigh aon réamhriachtanas.\n"
+"Níl aon oideas ann le haghaidh '%s' agus níor athraigh aon réamhriachtanas.\n"
-#: remake.c:811
-#, fuzzy, c-format
+#: src/remake.c:794
+#, c-format
msgid "Making '%s' due to always-make flag.\n"
-msgstr "`%s' á dhéanamh de bharr bratach --always-make.\n"
+msgstr "'%s' á dhéanamh mar gheall ar bhratach --always-make.\n"
-#: remake.c:819
-#, fuzzy, c-format
+#: src/remake.c:802
+#, c-format
msgid "No need to remake target '%s'"
-msgstr "Níl gá leis an sprioc `%s' a athdhéanamh"
+msgstr "Ní gá an sprioc '%s' a athdhéanamh"
-#: remake.c:821
-#, fuzzy, c-format
+#: src/remake.c:804
+#, c-format
msgid "; using VPATH name '%s'"
-msgstr "; ag baint úsáid as ainm VPATH `%s'"
+msgstr "; ag baint úsáid as ainm VPATH '%s'"
-#: remake.c:841
-#, fuzzy, c-format
+#: src/remake.c:824
+#, c-format
msgid "Must remake target '%s'.\n"
-msgstr "Caithfidh an sprioc `%s' a athdhéanamh.\n"
+msgstr "Caithfidh an sprioc '%s' a athdhéanamh.\n"
-#: remake.c:847
-#, fuzzy, c-format
+#: src/remake.c:830
+#, c-format
msgid " Ignoring VPATH name '%s'.\n"
-msgstr " Ag déanamh neamhshuim ar ainm VPATH `%s'.\n"
+msgstr " Ag déanamh neamhshuim ar ainm VPATH '%s'.\n"
-#: remake.c:856
-#, fuzzy, c-format
+#: src/remake.c:839
+#, c-format
msgid "Recipe of '%s' is being run.\n"
-msgstr "Orduithe de `%s' á rith.\n"
+msgstr "Oideas le haghaidh '%s' á rith.\n"
-#: remake.c:863
-#, fuzzy, c-format
+#: src/remake.c:846
+#, c-format
msgid "Failed to remake target file '%s'.\n"
-msgstr "Theip ar athdhéanamh an sprioc-chomhaid `%s'.\n"
+msgstr "Níorbh fhéidir an comhad sprice '%s' a athdhéanamh.\n"
-#: remake.c:866
-#, fuzzy, c-format
+#: src/remake.c:849
+#, c-format
msgid "Successfully remade target file '%s'.\n"
-msgstr "D'éirigh le hathdhéanamh an sprioc-chomhaid `%s'.\n"
+msgstr "D'éirigh linn an comhad sprice '%s' a athdhéanamh.\n"
-#: remake.c:869
-#, fuzzy, c-format
+#: src/remake.c:852
+#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
-msgstr "Tá gá leis an chomhad sprice `%s' a athdhéanamh leis an rogha -q.\n"
+msgstr "Ní mór comhad sprice '%s' a athdhéanamh le rogha -q.\n"
-#: remake.c:1064
-#, fuzzy, c-format
+#: src/remake.c:1047
+#, c-format
msgid "Using default commands for '%s'.\n"
-msgstr "Ag baint úsáid as orduithe réamhshocraithe le haghaidh `%s'.\n"
+msgstr "Ag baint úsáid as orduithe réamhshocraithe le haghaidh '%s'.\n"
-#: remake.c:1430
-#, fuzzy, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "Rabhadh: Tá an t-am mionathraithe den chomhad `%s' sa todhchaí"
-
-#: remake.c:1444
-#, fuzzy, c-format
+#: src/remake.c:1422
+#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
-msgstr ""
-"Rabhadh: Tá an t-am mionathraithe den chomhad `%s' %.2g soicind sa todhchaí"
+msgstr "Rabhadh: Tá am athraithe an chomhaid '%s' %s soicind sa todhchaí"
-#: remake.c:1647
-#, fuzzy, c-format
+#: src/remake.c:1662
+#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
-msgstr "Níl eilimint .LIBPATTERNS `%s' ina patrún"
+msgstr "Ní patrún é eilimint .LIBPATTERNS '%s'"
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
-msgstr "Ní easpórtálfar Customs: %s\n"
+msgstr "Ní easpórtálfar Customs: %s\n"
+
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
-#: rule.c:496
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -1825,455 +1839,481 @@ msgstr ""
"\n"
"# Rialacha Intuigthe"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
msgstr ""
"\n"
-"# Níl aon riail intuigthe."
+"# Níl aon riail intuigthe."
-#: rule.c:514
-#, c-format
+#: src/rule.c:548
+#, fuzzy, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
"# %u riail intuigthe, %u"
-#: rule.c:523
-msgid " terminal."
-msgstr " teirminéal."
-
-#: rule.c:531
-#, fuzzy, c-format
+#: src/rule.c:557
+#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
-msgstr "FABHT: num_pattern_rules mícheart! %u != %u"
+msgstr "FABHT: num_pattern_rules mícheart! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "comhartha anaithnid"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Croch suas"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "Idirbhriseadh"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Scoir"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "Treoir Neamhcheadaithe"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "Rianaigh/brisphointe"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Tobscortha"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "Gaiste IOT"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "Gaiste EMT"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
-msgstr "Eisceacht snámhphointe"
+msgstr "Eisceacht snámhphointe"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Maraithe"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
-msgstr "Busearráid"
+msgstr "Busearráid"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Fabht deighilte"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
-msgstr "Drochghlao ar an gcóras"
+msgstr "Drochghlao ar an gcóras"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
-msgstr "Píopa briste"
+msgstr "Píopa briste"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
-msgstr "Clog aláraim"
+msgstr "Clog aláraim"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "Scortha"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "Comhartha saincheaptha 1"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "Comhartha saincheaptha 2"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
-msgstr "Scoir an mhacphróiseas"
+msgstr "Scoir an mhacphróiseas"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Cliseadh cumhachta"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Stoptha"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Stoptha (ionchur tty)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Stoptha (aschur tty)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Stoptha (comhartha)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
-msgstr "Teorainn ama LAP sáraithe"
+msgstr "Teorainn ama LAP sáraithe"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
-msgstr "Uasmhéid na gcomhad sáraithe"
+msgstr "Uasmhéid na gcomhad sáraithe"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
-msgstr "Am fíorúil caite"
+msgstr "Am fíorúil caite"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
-msgstr "Am próifíle caite"
+msgstr "Am próifíle caite"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
-msgstr "Athraíodh an fhuinneog"
+msgstr "Athraíodh an fhuinneog"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Leanta"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
-msgstr "Staid phráinneach A/I"
+msgstr "Staid phráinneach A/I"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
-msgstr "A/I indéanta"
+msgstr "A/I indéanta"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "Acmhainn caillte"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Comhartha guaise"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Iarratas ar eolas"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
-msgstr "Níl comhphróiseálaí snámhphointe ar fáil"
+msgstr "Níl comhphróiseálaí snámhphointe ar fáil"
-#: strcache.c:274
-#, fuzzy, c-format
+#: src/strcache.c:274
+#, c-format
msgid ""
"\n"
"%s No strcache buffers\n"
-msgstr "%s líon na maolán strcache: %d\n"
+msgstr ""
+"\n"
+"%s Gan maoláin strcache\n"
-#: strcache.c:304
-#, fuzzy, c-format
+#: src/strcache.c:304
+#, c-format
msgid ""
"\n"
"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
"B\n"
-msgstr "%s strcache saor: iomlán = %d / uas = %d / íos = %d / meán = %d\n"
+msgstr ""
+"\n"
+"%s maolán strcache: %lu (%lu) / teaghráin = %lu / stóras = %lu B / meán = "
+"%lu B\n"
-#: strcache.c:308
-#, c-format
+#: src/strcache.c:308
+#, fuzzy, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
+"%s maolán reatha: méid = %hu B / úsáidte = %hu B / líon = %hu / meán = %hu "
+"B\n"
-#: strcache.c:319
-#, fuzzy, c-format
+#: src/strcache.c:319
+#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
-msgstr "%s méid strcache: iomlán = %d / uas = %d / íos = %d / meán = %d\n"
+msgstr "%s eile úsáidte: iomlán = %lu B / líon = %lu / meán = %lu B\n"
-#: strcache.c:322
-#, fuzzy, c-format
+#: src/strcache.c:322
+#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
-msgstr "%s strcache saor: iomlán = %d / uas = %d / íos = %d / meán = %d\n"
+msgstr ""
+"%s eile saor: iomlán = %lu B / uas = %lu B / íos = %lu B / meán = %hu B\n"
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
msgstr ""
+"\n"
+"%s feidhmíocht strcache: cuardaigh = %lu / ráta aimsithe = %lu%%\n"
-#: strcache.c:328
-#, fuzzy
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
msgstr ""
-"\n"
-"# comhaid hais-tábla stait:\n"
+"# staitisticí an hais-tábla:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
-msgstr "uathoibríoch"
+msgstr "uathoibríoch"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
-msgstr "réamhshocraithe"
+msgstr "réamhshocraithe"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "timpeallacht"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "makefile"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "timpeallacht le -e"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
-msgstr "líne na n-orduithe"
+msgstr "líne na n-orduithe"
-#: variable.c:1647
-#, fuzzy
+#: src/variable.c:1671
msgid "'override' directive"
-msgstr "treoir `override'"
+msgstr "treoir 'override'"
-#: variable.c:1658
-#, fuzzy, c-format
+#: src/variable.c:1682
+#, c-format
msgid " (from '%s', line %lu)"
-msgstr " (ó `%s', líne %lu)"
+msgstr " (ó '%s', líne %lu)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
-msgstr "# athróg tacar hais-tábla stait:\n"
+msgstr "# athróg tacar hais-tábla stait:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
msgstr ""
"\n"
-"# Athróga\n"
+"# Athróga\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
msgstr ""
"\n"
-"# Luachanna Athróige sainiúil don phatrún"
+"# Luachanna Athróige sainiúil don phatrún"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
msgstr ""
"\n"
-"# Níl aon luach athróige atá sainiúil don phatrún."
+"# Níl aon luach athróige atá sainiúil don phatrún."
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
"# %u pattern-specific variable values"
msgstr ""
"\n"
-"# %u luach athróige atá sainiúil don phatrún"
+"# %u luach athróige atá sainiúil don phatrún"
-#: variable.h:224
-#, fuzzy, c-format
+#: src/variable.h:229
+#, c-format
msgid "warning: undefined variable '%.*s'"
-msgstr "rabhadh: athróg gan sainmhíniú: `%.*s'"
+msgstr "rabhadh: athróg gan sainmhíniú '%.*s'"
-#: vmsfunctions.c:91
-#, fuzzy, c-format
+#: src/vmsfunctions.c:91
+#, c-format
msgid "sys$search() failed with %d\n"
-msgstr "Theip ar sys$cuardach le %d\n"
+msgstr "Theip ar sys$search() le stádas %d\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr ""
-"-rabhadh, is féidir gur gá duit ionramháil CTRL-Y a athchumasú ó DCL.\n"
+"-rabhadh, is féidir gur gá duit ionramháil CTRL-Y a athchumasú ó DCL.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "CD INSUITE %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
-msgstr ""
+msgstr "DCL: %s\n"
-#: vmsjobs.c:1288
-#, fuzzy, c-format
+#: src/vmsjobs.c:1284
+#, c-format
msgid "Append output to %s\n"
-msgstr "Atreoraíodh aschur go %s\n"
+msgstr "Iarcheangail aschur le %s\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
-msgstr ""
+msgstr "Iarcheangal %.*s agus glanadh\n"
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
-msgstr "%s á rith ina áit\n"
+msgstr "%s á rith ina áit\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
msgstr ""
"\n"
-"# VPATH Conairí Cuardaigh\n"
+"# VPATH Conairí Cuardaigh\n"
-#: vpath.c:620
-#, fuzzy
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
-msgstr "# Níl aon chonair chuardaigh `vpath'."
+msgstr "# Níl aon chonair chuardaigh 'vpath' ann."
-#: vpath.c:622
-#, fuzzy, c-format
+#: src/vpath.c:622
+#, c-format
msgid ""
"\n"
"# %u 'vpath' search paths.\n"
msgstr ""
"\n"
-"# %u conair chuardaigh `vpath'.\n"
+"# %u conair chuardaigh 'vpath'.\n"
-#: vpath.c:625
-#, fuzzy
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
msgstr ""
"\n"
-"# Níl aon chonair ghinearálta cuardaigh (athróg `VPATH')."
+"# Níl aon chonair ghinearálta chuardaigh (athróg 'VPATH') ann."
-#: vpath.c:631
-#, fuzzy
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
"# "
msgstr ""
"\n"
-"# Conair ghinearálta cuardaigh (athróg `VPATH'):\n"
+"# Conair ghinearálta chuardaigh (athróg 'VPATH'):\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
-msgstr ""
+msgstr "Sliotáin an jabfhreastalaí teoranta do %d\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
-msgstr ""
+msgstr "séamafór an jabfhreastalaí á chruthú: (Earráid %ld: %s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr ""
+"earráid inmheánach: níorbh fhéidir séamafór an jabfhreastalaí '%s' a "
+"oscailt: (Earráid %ld: %s)"
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
-msgstr ""
+msgstr "Cliant an jabfhreastalaí (séamafór %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
-msgstr ""
+msgstr "séamafór an jabfhreastalaí a fhuascailt: (Earráid %ld: %s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
-msgstr ""
+msgstr "séamafóir nó feitheamh le macphróiseas: (Earráid %ld: %s)"
+
+#~ msgid "%s: %s: Command not found\n"
+#~ msgstr "%s: %s: Ordú gan aimsiú\n"
+
+#~ msgid "%s[%u]: %s: Command not found\n"
+#~ msgstr "%s[%u]: %s: Ordú gan aimsiú\n"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s: Clár blaoisce gan aimsiú"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "cuirfear %s ar fionraí ar feadh tréimhse 30 soicind..."
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "sleep(30) críochnaithe. Ag leanúint ar aghaidh.\n"
+
+#~ msgid "Unknown error %d"
+#~ msgstr "Earráid anaithnid %d"
+
+#~ msgid "Warning: File '%s' has modification time in the future"
+#~ msgstr "Rabhadh: Sa todhchaí am athraithe an chomhaid '%s'"
+
+#~ msgid " terminal."
+#~ msgstr " teirminéal."
#~ msgid "# Invalid value in `update_status' member!"
-#~ msgstr "# Luach neamhbhailí sa bhall `update_status'!"
+#~ msgstr "# Luach neamhbhailí sa bhall `update_status'!"
#~ msgid "*** [%s] Error 0x%x (ignored)"
-#~ msgstr "*** [%s] Earráid 0x%x (rinneadh neamhshuim air)"
+#~ msgstr "*** [%s] Earráid 0x%x (rinneadh neamhshuim air)"
#~ msgid "*** [%s] Error 0x%x"
-#~ msgstr "*** [%s] Earráid 0x%x"
+#~ msgstr "*** [%s] Earráid 0x%x"
#~ msgid "process_easy() failed failed to launch process (e=%ld)\n"
-#~ msgstr "theip ar process_easy(); níor tosaíodh próiseas (e=%ld)\n"
+#~ msgstr "theip ar process_easy(); níor tosaíodh próiseas (e=%ld)\n"
#~ msgid "internal error: multiple --jobserver-fds options"
-#~ msgstr "earráid inmheánach: roghanna --jobserver-fds iomadúla"
+#~ msgstr "earráid inmheánach: roghanna --jobserver-fds iomadúla"
#~ msgid "dup jobserver"
-#~ msgstr "jabfhreastalaí dup"
+#~ msgstr "jabfhreastalaí dup"
#~ msgid ""
#~ "%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"
#~ msgstr ""
-#~ "%sIs saorbhogearra an ríomhchlár seo; féach ar an bhunchód le haghaidh\n"
-#~ "%scoinníollacha cóipeála. Níl baránta ar bith ann; go fiú níl baránta "
+#~ "%sIs saorbhogearra an ríomhchlár seo; féach ar an bhunchód le haghaidh\n"
+#~ "%scoinníollacha cóipeála. Níl baránta ar bith ann; go fiú níl baránta "
#~ "ann\n"
-#~ "%sd'INDÍOLTACHT nó FEILIÚNACHT D'FHEIDHM AR LEITH.\n"
+#~ "%sd'INDÃOLTACHT nó FEILIÚNACHT D'FHEIDHM AR LEITH.\n"
#~ msgid "virtual memory exhausted"
-#~ msgstr "cuimhne fhíorúil ídithe"
+#~ msgstr "cuimhne fhíorúil ídithe"
#~ msgid "write error"
-#~ msgstr "earráid sa scríobh"
+#~ msgstr "earráid sa scríobh"
#~ msgid "extraneous `endef'"
#~ msgstr "`endef' breise"
@@ -2282,23 +2322,23 @@ msgstr ""
#~ msgstr "treoir `override' folamh"
#~ msgid "invalid `override' directive"
-#~ msgstr "treoir neamhbhailí `override'"
+#~ msgstr "treoir neamhbhailí `override'"
#~ msgid ""
#~ "\n"
#~ "%s # of strings in strcache: %d\n"
#~ msgstr ""
#~ "\n"
-#~ "%s líon na dteaghrán i strcache: %d\n"
+#~ "%s líon na dteaghrán i strcache: %d\n"
#~ msgid "Warning: Empty redirection\n"
-#~ msgstr "Rabhadh: Atreorú folamh\n"
+#~ msgstr "Rabhadh: Atreorú folamh\n"
#~ msgid "internal error: `%s' command_state"
-#~ msgstr "earráid inmheánach: `%s' command_state"
+#~ msgstr "earráid inmheánach: `%s' command_state"
#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-#~ msgstr "-rabhadh, fágfaidh CTRL-Y fo-phróisis gan ghlanadh.\n"
+#~ msgstr "-rabhadh, fágfaidh CTRL-Y fo-phróisis gan ghlanadh.\n"
#~ msgid "BUILTIN [%s][%s]\n"
#~ msgstr "INSUITE [%s][%s]\n"
@@ -2307,16 +2347,16 @@ msgstr ""
#~ msgstr "RM INSUITE %s\n"
#~ msgid "Unknown builtin command '%s'\n"
-#~ msgstr "Ordú anaithnid insuite '%s'\n"
+#~ msgstr "Ordú anaithnid insuite '%s'\n"
#~ msgid "Error, empty command\n"
-#~ msgstr "Earráid, ordú folamh\n"
+#~ msgstr "Earráid, ordú folamh\n"
#~ msgid "Redirected input from %s\n"
-#~ msgstr "Atreoraíodh ionchur ó %s\n"
+#~ msgstr "Atreoraíodh ionchur ó %s\n"
#~ msgid "Redirected error to %s\n"
-#~ msgstr "Atreoraíodh earráidí go %s\n"
+#~ msgstr "Atreoraíodh earráidí go %s\n"
#~ msgid "Error spawning, %d\n"
-#~ msgstr "Earráid le linn sceitheadh, %d\n"
+#~ msgstr "Earráid le linn sceitheadh, %d\n"
diff --git a/po/gl.gmo b/po/gl.gmo
index 71567d0..5f703ee 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index 04a9d58..52b0ede 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: make 3.82\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
"PO-Revision-Date: 2012-11-12 16:40+0100\n"
"Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
"Language-Team: Galician <proxecto@trasno.net>\n"
@@ -21,116 +21,118 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ar.c:46
+#: src/ar.c:46
#, fuzzy, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "tentouse usar unha característica non admitida: «%s»"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "a operación de tocar un membro do arquivo non está dispoñíbel en VMS"
-#: ar.c:147
+#: src/ar.c:147
#, fuzzy, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "touch: O arquivo «%s» non existe"
-#: ar.c:150
+#: src/ar.c:150
#, fuzzy, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "touch: «%s» non é un arquivo válido"
-#: ar.c:157
+#: src/ar.c:157
#, fuzzy, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "touch: O membro «%s» non existe en «%s»"
-#: ar.c:164
+#: src/ar.c:164
#, fuzzy, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr "touch: Código de retorno incorrecto de ar_member_touch en «%s»"
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr ""
"a chamada a lbr$set_module() fallou ao extraer a información do módulo, "
"estado = %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "a chamada a lbr$ini_control() fallou con estado = %d"
-#: arscan.c:261
+#: src/arscan.c:261
#, fuzzy, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr "non é posíbel abrir a biblioteca «%s» para buscar o membro «%s»"
-#: arscan.c:965
+#: src/arscan.c:944
#, fuzzy, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr "Membro «%s»%s: %ld bytes en %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (o nome pode quedar truncado)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Data %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, modo = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr ""
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** Interrompido.\n"
-#: commands.c:627
+#: src/commands.c:628
#, fuzzy, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr "*** [%s] O membro do arquivo «%s» pode non ser correcto; non eliminado"
-#: commands.c:631
+#: src/commands.c:632
#, fuzzy, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr "*** O membro do arquivo «%s» pode non ser correcto; non eliminado"
-#: commands.c:645
+#: src/commands.c:646
#, fuzzy, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] Eliminando o ficheiro «%s»"
-#: commands.c:647
+#: src/commands.c:648
#, fuzzy, c-format
msgid "*** Deleting file '%s'"
msgstr "*** Eliminando o ficheiro «%s»"
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
msgstr ""
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (incorporadas):"
-#: commands.c:688
+#: src/commands.c:689
#, fuzzy, c-format
msgid " (from '%s', line %lu):\n"
msgstr " (desde «%s», liña %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -138,222 +140,224 @@ msgstr ""
"\n"
"# Directorios\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: non foi posíbel facer a operación de stat.\n"
-#: dir.c:1085
+#: src/dir.c:1089
#, fuzzy
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
msgstr "# %s (clave %s, mtime %d): non foi posíbel abrir.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr "# %s (dispositivo %d, inodo [%d,%d,%d]): non foi posíbel abrir.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr "# %s (dispositivo %ld, inodo %ld): non foi posíbel abrir.\n"
-#: dir.c:1122
+#: src/dir.c:1126
#, fuzzy
msgid "# %s (key %s, mtime %I64u): "
msgstr "# %s (clave %s, mtime %d): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (dispositivo %d, inodo [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (dispositivo %ld, inodo %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "Non"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " ficheiros, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "non"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " imposíbeis"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " ata aquí."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " imposíbeis en %lu directorios.\n"
-#: expand.c:125
+#: src/expand.c:125
#, fuzzy, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr "A variábel recursiva «%s» fai referencia a si mesma (ao final)"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "referencia a variábel non rematada"
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr ""
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr ""
-#: file.c:287
+#: src/file.c:287
#, fuzzy, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr "pero agora considérase que «%s» é o mesmo ficheiro que «%s»."
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr ""
-#: file.c:310
+#: src/file.c:310
#, fuzzy, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr "non é posíbel renomear «%s» con dous puntos a «%s» con catro puntos"
-#: file.c:316
+#: src/file.c:316
#, fuzzy, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr "non é posíbel renomear «%s» con catro puntos a «%s» con dous puntos"
-#: file.c:408
+#: src/file.c:408
#, fuzzy, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "*** Eliminando o ficheiro intermedio «%s»"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "Retirando os ficheiros intermedios...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "Hora actual"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: Marca de tempo fóra de rango; substituíndo %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# Non é un obxectivo:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# Ficheiro precioso (prerrequisito de .PRECIOUS)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# Obxectivo falso (prerrequisito de .PHONY)."
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# Obxectivo da liña de ordes."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr "# Un ficheiro de make por defecto, MAKEFILES, ou -include/sinclude."
-#: file.c:975
+#: src/file.c:1029
#, fuzzy
msgid "# Builtin rule"
msgstr ""
"\n"
"# Non hai regras implícitas."
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# Fíxose a busca de regras implícitas."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# Non se fixo a busca de regras implícitas."
-#: file.c:980
+#: src/file.c:1034
#, fuzzy, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr "# Raíz do patrón implícito/estático: «%s»\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr "# O ficheiro é un prerrequisito intermedio."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# Tamén se fai:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# Nunca se comprobou o tempo de modificación."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# O ficheiro non existe."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# O ficheiro é moi antigo."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# Última modificación: %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# O ficheiro foi actualizado."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# O ficheiro non foi actualizado."
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr ""
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr ""
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# Actualizado con éxito."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# Ten que ser actualizado (-q está definido)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# Produciuse un erro ao actualizar."
-#: file.c:1032
+#: src/file.c:1086
#, fuzzy
msgid "# Invalid value in 'command_state' member!"
msgstr "# Valor non válido no membro «command_state»!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -361,7 +365,7 @@ msgstr ""
"\n"
"# Ficheiros"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -371,338 +375,345 @@ msgstr ""
"# estatísticas da táboa hash de ficheiros:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr ""
-#: function.c:790
+#: src/function.c:794
#, fuzzy
msgid "non-numeric first argument to 'word' function"
msgstr "primeiro argumento da función «word» non numérico"
-#: function.c:795
-#, fuzzy
+#: src/function.c:799
+#, fuzzy, c-format
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:815
+#: src/function.c:819
#, fuzzy
msgid "non-numeric first argument to 'wordlist' function"
msgstr "primeiro argumento da función «wordlist» non numérico"
-#: function.c:817
+#: src/function.c:821
#, fuzzy
msgid "non-numeric second argument to 'wordlist' function"
msgstr "segundo argumento da función «wordlist» non numérico"
-#: function.c:1525
+#: src/function.c:1533
#, fuzzy, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "windows32_openpipe(): a chamada a DuplicateHandle(In) fallou (e=%ld)\n"
-#: function.c:1549
+#: src/function.c:1557
#, fuzzy, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr ""
"windows32_open_pipe(): a chamada a DuplicateHandle(Err) fallou (e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "A chamada a CreatePipe() fallou (e=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe(): a chamada a process_init_fd() fallou\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "Limpando o ficheiro de lotes temporal %s\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr ""
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, fuzzy, c-format
msgid "open: %s: %s"
msgstr "%s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, fuzzy, c-format
msgid "write: %s: %s"
msgstr "erro de escritura: %s"
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, fuzzy, c-format
msgid "close: %s: %s"
msgstr "%s%s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr ""
-#: function.c:2262
+#: src/function.c:2277
#, fuzzy, c-format
msgid "read: %s: %s"
msgstr "%s: %s"
-#: function.c:2275
+#: src/function.c:2290
#, fuzzy, c-format
msgid "file: invalid file operation: %s"
msgstr "%s: opción incorrecta -- %c\n"
-#: function.c:2390
+#: src/function.c:2405
#, fuzzy, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr "número de argumentos insuficiente (%d) na chamada á función «%s»"
-#: function.c:2402
+#: src/function.c:2417
#, fuzzy, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "non implementada nesta plataforma: función «%s»"
-#: function.c:2466
+#: src/function.c:2483
#, fuzzy, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr "chamada á función «%s» non rematada: falta «%c»"
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr ""
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr ""
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr ""
-#: function.c:2657
+#: src/function.c:2674
#, fuzzy, c-format
msgid "Invalid minimum argument count (%u) for function %s"
msgstr "número de argumentos insuficiente (%d) na chamada á función «%s»"
-#: function.c:2660
+#: src/function.c:2677
#, fuzzy, c-format
msgid "Invalid maximum argument count (%u) for function %s"
msgstr "número de argumentos insuficiente (%d) na chamada á función «%s»"
-#: getopt.c:659
+#: src/getopt.c:659
#, fuzzy, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: a opción «%s» é ambigua\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, fuzzy, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: a opción «--%s» non permite ningún argumento\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, fuzzy, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: a opción «%c%s» non permite ningún argumento\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, fuzzy, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: a opción «%s» require un argumento\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, fuzzy, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: opción «--%s» non recoñecida\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, fuzzy, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: opción «%c%s» non recoñecida\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: opción inaceptábel -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: opción incorrecta -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: a opción require un argumento -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, fuzzy, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: a opción «-W %s» é ambigua\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, fuzzy, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: a opción «-W %s» non permite ningún argumento\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr ""
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr ""
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr "non se poden reservar %lu bytes para a táboa hash: memoria esgotada"
-#: hash.c:280
-#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
+#: src/hash.c:280
+#, fuzzy, c-format
+msgid "Load=%lu/%lu=%.0f%%, "
msgstr "Carga=%ld/%ld=%.0f%%, "
-#: hash.c:282
-#, c-format
-msgid "Rehash=%d, "
+#: src/hash.c:282
+#, fuzzy, c-format
+msgid "Rehash=%u, "
msgstr "Rehash=%d, "
-#: hash.c:283
-#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
+#: src/hash.c:283
+#, fuzzy, c-format
+msgid "Collisions=%lu/%lu=%.0f%%"
msgstr "Colisións=%ld/%ld=%.0f%%"
-#: implicit.c:38
+#: src/implicit.c:38
#, fuzzy, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr "Buscando unha regra implícita para «%s».\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, fuzzy, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr "Buscando unha regra implícita membro do arquivo para «%s».\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr "Evitando a recursión de regras implícitas.\n"
-#: implicit.c:486
+#: src/implicit.c:484
#, c-format
-msgid "Stem too long: '%.*s'.\n"
+msgid "Stem too long: '%s%.*s'.\n"
msgstr ""
-#: implicit.c:491
+#: src/implicit.c:490
#, fuzzy, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr "Probando a regra de patrón con raíz «%.*s».\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, fuzzy, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr "Rexeitando o prerrequisito imposíbel «%s».\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, fuzzy, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr "Rexeitando o prerrequisito implícito imposíbel «%s».\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, fuzzy, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr "Probando o prerrequisito «%s».\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, fuzzy, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr "Probando o prerrequisito implícito «%s».\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, fuzzy, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr "Atopouse a o prerrequisito «%s» como VPATH «%s»\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, fuzzy, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr "Buscando unha regra co ficheiro intermedio «%s».\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr "Non foi posíbel crear un ficheiro temporal\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (memoria envorcada)"
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr " (ignorado)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
#, fuzzy
msgid "<builtin>"
msgstr " (incorporadas):"
-#: job.c:510
+#: src/job.c:573
#, fuzzy, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "*** [%s] Erro %d"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** Agardando por traballos non rematados...."
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "Proceso fillo vivo %p (%s) PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (remoto)"
-#: job.c:831
-#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Colleitando o proceso fillo perdedor %p PID %s %s\n"
-
-#: job.c:832
+#: src/job.c:898
#, c-format
msgid "Reaping winning child %p PID %s %s\n"
msgstr "Colleitando o proceso fillo gañador %p PID %s %s\n"
-#: job.c:839
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Colleitando o proceso fillo perdedor %p PID %s %s\n"
+
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "Limpando o ficheiro de lotes temporal %s\n"
-#: job.c:845
+#: src/job.c:956
#, fuzzy, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr "Limpando o ficheiro de lotes temporal %s\n"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr "Retirando o proceso fillo %p PID %s%s da cadea.\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr "Liberouse un elemento para o proceso fillo %p (%s).\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "produciuse un erro ao iniciar process_easy() o proceso (e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -711,161 +722,151 @@ msgstr ""
"\n"
"Contáronse %d argumentos no inicio que fallou\n"
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr "Poñendo o proceso fillo %p (%s) PID %s%s na cadea.\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "Obtívose un elemento para o proceso fillo %p (%s).\n"
-#: job.c:1838
+#: src/job.c:1902
#, fuzzy, c-format
msgid "%s: target '%s' does not exist"
msgstr "touch: O arquivo «%s» non existe"
-#: job.c:1841
+#: src/job.c:1905
#, fuzzy, c-format
msgid "%s: update target '%s' due to: %s"
msgstr "%sNon hai unha regra para facer o obxectivo «%s», que precisa «%s»%s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr "non é posíbel impoñer límites de carga neste sistema operativo"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "non é posíbel impoñer un límite de carga: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr ""
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr ""
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr ""
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr ""
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr ""
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr ""
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr ""
"make colleitou un proceso fillo de pid %s, aínda se agarda polo pid %s\n"
-#: job.c:2275
-#, fuzzy, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: Orde non atopada"
-
-#: job.c:2277
-#, fuzzy, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s: Orde non atopada"
-
-#: job.c:2337
+#: src/job.c:2623
#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: Programa para o intérprete de ordes non atopado"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr ""
-#: job.c:2584
+#: src/job.c:2862
#, fuzzy, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "O valor de $SHELL cambiou (antes era «%s», agora é «%s»)\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr "Creando un ficheiro por lotes temporal %s\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
msgstr ""
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
"\t%s\n"
msgstr ""
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr ""
"%s (liña %d) Contexto do intérprete de ordes incorrecto (!unixy && !"
"batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr ""
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr ""
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr ""
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr ""
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr ""
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr ""
-#: load.c:256
-#, fuzzy
+#: src/load.c:256
+#, fuzzy, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr "Non se admiten os traballos en paralelo (-j) nesta plataforma."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "Opcións:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr " -b, -m Ignorado por compatibilidade.\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr ""
" -B, --always-make Facer todos os obxectivos incondicionalmente.\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
@@ -873,19 +874,19 @@ msgstr ""
" -C DIRECTORIO, --directory=DIRECTORIO\n"
" Cambiar ao DIRECTORIO antes de facer nada.\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr ""
" -d Mostrar moita información de depuración.\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
" --debug[=MODIFICADORES] Mostrar varios tipos de información de "
"depuración.\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
@@ -894,12 +895,12 @@ msgstr ""
" As variábei de ambiente substitúen aos "
"makefiles.\n"
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -907,15 +908,15 @@ msgstr ""
" -f FICHEIRO, --file=FICHEIRO, --makefile=FICHEIRO\n"
" Ler o FICHEIRO como makefile.\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help Mostrar esta mensaxe e saír.\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr ""
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
@@ -924,7 +925,7 @@ msgstr ""
" Buscar os makefiles incluídos\n"
" no DIRECTORIO.\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
@@ -932,14 +933,14 @@ msgstr ""
" -j [N], --jobs[=N] Permitir N traballos á vez; infinitos sen\n"
" un argumento.\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
" -k, --keep-going Continuar cando no se poidan facer\n"
" algúns obxectivos.\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
@@ -949,13 +950,13 @@ msgstr ""
" Non iniciar varios traballos con carga\n"
" superior a N.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
msgstr ""
-#: main.c:374
+#: src/main.c:371
#, fuzzy
msgid ""
" -n, --just-print, --dry-run, --recon\n"
@@ -965,7 +966,7 @@ msgstr ""
" -n, --just-print, --dry-run, --recon\n"
" Non executar ningún comando; só amosalos.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
@@ -975,39 +976,43 @@ msgstr ""
" Tratar o FICHEIRO como moi antigo e non "
"refacelo.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
msgstr ""
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr ""
" -p, --print-data-base Mostrar a base de datos interna de make.\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
msgstr ""
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr ""
" -r, --no-builtin-rules Desactivar as regras implícitas incorporadas.\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr ""
" -R, --no-builtin-variables Desactivar os valores das variábeis "
"incorporadas.\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr ""
-#: main.c:393
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
@@ -1015,28 +1020,28 @@ msgstr ""
" -S, --no-keep-going, --stop\n"
" Desactiva -k.\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
" -t, --touch Tocar os obxectivos no canto de os refacer.\n"
-#: main.c:398
+#: src/main.c:397
#, fuzzy
msgid " --trace Print tracing information.\n"
msgstr ""
" -d Mostrar moita información de depuración.\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr ""
" -v, --version Mostrar o número de versión de make e saír.\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory Mostrar o directorio actual.\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
@@ -1044,7 +1049,7 @@ msgstr ""
" --no-print-directory Desactivar -w, incluso se se activou\n"
" implicitamente.\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1053,7 +1058,7 @@ msgstr ""
"new=FICHEIRO\n"
" Tratar o FICHEIRO como infinitamente novo.\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
@@ -1061,27 +1066,28 @@ msgstr ""
" --warn-undefined-variables Avisar cando se faga referencia a\n"
" unha variábel non definida.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "a cadea baleira non é válida como nome de ficheiro"
-#: main.c:766
+#: src/main.c:754
#, fuzzy, c-format
msgid "unknown debug level specification '%s'"
msgstr "especificación de nivel de depuración descoñecido «%s»"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr ""
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr ""
"%s: Atrapouse unha Interrupción/Excepción (código = 0x%lx, enderezo = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1096,138 +1102,146 @@ msgstr ""
"ExceptionFlags = %lx\n"
"ExceptionAddress = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "Violación de acceso: operación de escritura no enderezo 0x%p\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "Violación de acceso: operación de lectura no enderezo 0x%p\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell() definindo default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr "A busca de rutas de find_and_set_shell() define default_shell = %s\n"
-#: main.c:1538
-#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s está suspendido durante 30 segundos..."
-
-#: main.c:1540
-#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "rematouse sleep(30). Continuando.\n"
-
-#: main.c:1627
-#, fuzzy
+#: src/main.c:1609
+#, fuzzy, c-format
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
"aviso: o servidor de traballos non está dispoñíbel: usando -j1. Engada «+» á "
"regra do make pai."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
+#: src/main.c:1617
+#, fuzzy, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
msgstr ""
"aviso: -jN forzado no submake: desactivando o modo de servidor de traballos."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr "O ficheiro de make da entrada estándar especificouse dúas veces."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (ficheiro temporal)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (ficheiro temporal)"
-#: main.c:2048
+#: src/main.c:2004
+#, fuzzy, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr ""
+"aviso: -jN forzado no submake: desactivando o modo de servidor de traballos."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr "Non se admiten os traballos en paralelo (-j) nesta plataforma."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "Reiniciando para entrar no modo de traballo único (-j1)."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr ""
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "Actualizando os ficheiros de make....\n"
-#: main.c:2195
+#: src/main.c:2226
#, fuzzy, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr "O ficheiro de make «%s» podería causar un bucle; non se refai.\n"
-#: main.c:2279
+#: src/main.c:2303
#, fuzzy, c-format
msgid "Failed to remake makefile '%s'."
msgstr "Produciuse un erro ao refacer o ficheiro de make «%s»."
-#: main.c:2299
+#: src/main.c:2323
#, fuzzy, c-format
msgid "Included makefile '%s' was not found."
msgstr "Non se atopou o ficheiro de make incluído «%s»."
-#: main.c:2304
+#: src/main.c:2328
#, fuzzy, c-format
msgid "Makefile '%s' was not found"
msgstr "Non se atopou o ficheiro de make «%s»"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "Non foi posíbel volver ao directorio orixinal."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "Re-executando[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (ficheiro temporal)"
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ""
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Non se especificaron obxectivos e non se atopou un ficheiro de make"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "Non hai obxectivos"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Non se especificaron obxectivos e non se atopou un ficheiro de make"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "Actualizando os obxectivos meta....\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr ""
"aviso: Detectáronse inconsistencias de reloxo. A operación pode quedar "
"incompleta."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "Uso: %s [opcións] [obxectivo] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1236,7 +1250,7 @@ msgstr ""
"\n"
"Este programa compilou para %s\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1245,34 +1259,34 @@ msgstr ""
"\n"
"Este programa compilou para %s (%s)\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr ""
"Envíe informes de fallo no programa a <bug-make@gnu.org>.\n"
"Envíe informes de fallo na tradución a <proxecto@trasno.net>.\n"
-#: main.c:2870
+#: src/main.c:2901
#, fuzzy, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "a opción «%s%s» require un argumento de cadea non baleira"
-#: main.c:2934
+#: src/main.c:2965
#, fuzzy, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "a opción «-%c» require un argumento integral positivo"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%sCompilado para %s\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%sCompilado para %s (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1285,7 +1299,7 @@ msgstr ""
"%sIsto é software libre: pode modificalo e redistribuílo.\n"
"%sNon hai NINGUNHA GARANTÃA, ata onde o permita a lei.\n"
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1294,7 +1308,7 @@ msgstr ""
"\n"
"# Base de datos de Make, imprimida en %s"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1303,357 +1317,384 @@ msgstr ""
"\n"
"# Base de datos de Make rematada en %s\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Erro %d descoñecido"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: usuario %lu (real %lu), grupo %lu (real %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "Acceso inicializado"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr "Acceso de usuario"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "Acceso de make"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "Acceso de fillo"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: Entrando nun directorio descoñecido\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: Saíndo dun directorio descoñecido\n"
-#: output.c:109
+#: src/output.c:102
#, fuzzy, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "%s: Entrando no directorio «%s»\n"
-#: output.c:111
+#: src/output.c:104
#, fuzzy, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "%s: Saíndo do directorio «%s»\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: Entrando nun directorio descoñecido\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: Saíndo dun directorio descoñecido\n"
-#: output.c:120
+#: src/output.c:113
#, fuzzy, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr "%s[%u]: Entrando no directorio «%s»\n"
-#: output.c:122
+#: src/output.c:115
#, fuzzy, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "%s[%u]: Saíndo do directorio «%s»\n"
-#: output.c:495 output.c:497
-#, fuzzy
+#: src/output.c:442 src/output.c:444
+#, fuzzy, c-format
msgid "write error: stdout"
msgstr "erro de escritura: %s"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". Detido.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "creando a canalización de traballos"
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
#, fuzzy
msgid "duping jobs pipe"
msgstr "creando a canalización de traballos"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr "inicializar a canalización do servidor de traballos"
-#: posixos.c:90
+#: src/posixos.c:119
#, fuzzy, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr "erro interno: cadea --jobserver-fds non válida «%s»"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr ""
-#: posixos.c:109
+#: src/posixos.c:138
#, fuzzy
msgid "jobserver pipeline"
msgstr "inicializar a canalización do servidor de traballos"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr ""
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr ""
+
+#: src/posixos.c:303
#, fuzzy
msgid "pselect jobs pipe"
msgstr "lectura da canalización de traballos"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "lectura da canalización de traballos"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "Lendo os ficheiros de make...\n"
-#: read.c:329
+#: src/read.c:336
#, fuzzy, c-format
msgid "Reading makefile '%s'"
msgstr "Lendo o ficheiro de make «%s»"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (non hai unha meta por defecto)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (ruta de busca)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (non importa)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (non hai expansión de ~)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr ""
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr ""
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "sintaxe non válida no condicional"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr ""
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
msgstr ""
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
msgstr ""
-#: read.c:1124
-#, fuzzy
+#: src/read.c:1136
+#, fuzzy, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr " (quixo dicir TAB no canto de 8 espazos?)"
-#: read.c:1126
-#, fuzzy
+#: src/read.c:1138
+#, fuzzy, c-format
msgid "missing separator"
msgstr "falta un separador%s"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "falta un patrón obxectivo"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "patróns de obxectivo múltiples"
-#: read.c:1268
+#: src/read.c:1289
#, fuzzy, c-format
msgid "target pattern contains no '%%'"
msgstr "o patrón obxectivo non contén «%%»"
-#: read.c:1390
-#, fuzzy
+#: src/read.c:1404
+#, fuzzy, c-format
msgid "missing 'endif'"
msgstr "falta «endif»"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "nome de variábel baleiro"
-#: read.c:1463
-#, fuzzy
+#: src/read.c:1478
+#, fuzzy, c-format
msgid "extraneous text after 'define' directive"
msgstr "texto superfluo trala directiva «define»"
-#: read.c:1488
-#, fuzzy
+#: src/read.c:1503
+#, fuzzy, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "falta «endef», «define» sen rematar"
-#: read.c:1516
-#, fuzzy
+#: src/read.c:1531
+#, fuzzy, c-format
msgid "extraneous text after 'endef' directive"
msgstr "Texto superfluo trala directiva «endef»"
-#: read.c:1588
+#: src/read.c:1603
#, fuzzy, c-format
msgid "extraneous text after '%s' directive"
msgstr "Texto superfluo trala directiva «%s»"
-#: read.c:1589
+#: src/read.c:1604
#, fuzzy, c-format
msgid "extraneous '%s'"
msgstr "«%s» superfluo"
-#: read.c:1617
-#, fuzzy
+#: src/read.c:1632
+#, fuzzy, c-format
msgid "only one 'else' per conditional"
msgstr "só un «else» por condicional"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr "Definición dunha variábel por obxectivo mal formada"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr ""
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr ""
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr "regras de patrón implícitas e estáticas mesturadas"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "regras implícitas e normais mesturadas"
-#: read.c:2085
+#: src/read.c:2107
#, fuzzy, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr "o obxectivo «%s» non coincide co patrón do obxectivo"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, fuzzy, c-format
msgid "target file '%s' has both : and :: entries"
msgstr "o ficheiro obxectivo «%s» ten entradas : e ::"
-#: read.c:2106
+#: src/read.c:2128
#, fuzzy, 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:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr ""
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr ""
-#: read.c:2223
-#, fuzzy
+#: src/read.c:2254
+#, fuzzy, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr "regras implícitas e normais mesturadas"
-#: read.c:2542
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr ""
+
+#: src/read.c:2636
+#, c-format
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:226
+#: src/remake.c:226
#, fuzzy, c-format
msgid "Nothing to be done for '%s'."
msgstr "Non hai nada que facer para «%s»"
-#: remake.c:227
+#: src/remake.c:227
#, fuzzy, c-format
msgid "'%s' is up to date."
msgstr "«%s» está actualizado."
-#: remake.c:323
+#: src/remake.c:323
#, fuzzy, c-format
msgid "Pruning file '%s'.\n"
msgstr "Podando o ficheiro «%s».\n"
-#: remake.c:406
+#: src/remake.c:389
#, fuzzy, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr "%sNon hai unha regra para facer o obxectivo «%s», que precisa «%s»%s"
-#: remake.c:416
+#: src/remake.c:399
#, fuzzy, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%sNon hai unha regra para facer o obxectivo «%s»%s"
-#: remake.c:442
+#: src/remake.c:425
#, fuzzy, c-format
msgid "Considering target file '%s'.\n"
msgstr "Considerando o ficheiro obxectivo «%s».\n"
-#: remake.c:449
+#: src/remake.c:432
#, fuzzy, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr ""
"Hai pouco probouse a actualizar o ficheiro «%s» e non foi posíbel facelo.\n"
-#: remake.c:461
+#: src/remake.c:444
#, fuzzy, c-format
msgid "File '%s' was considered already.\n"
msgstr "O ficheiro «%s» xa fora considerado.\n"
-#: remake.c:471
+#: src/remake.c:454
#, fuzzy, c-format
msgid "Still updating file '%s'.\n"
msgstr "Aínda se está actualizando o ficheiro «%s».\n"
-#: remake.c:474
+#: src/remake.c:457
#, fuzzy, c-format
msgid "Finished updating file '%s'.\n"
msgstr "Rematouse de actualizar o ficheiro «%s».\n"
-#: remake.c:503
+#: src/remake.c:486
#, fuzzy, c-format
msgid "File '%s' does not exist.\n"
msgstr "O ficheiro «%s» non existe.\n"
-#: remake.c:511
+#: src/remake.c:494
#, fuzzy, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
@@ -1661,147 +1702,147 @@ msgstr ""
"*** Aviso: o ficheiro «%s» de .LOW_RESOLUTION_TIME ten unha marca de tempo "
"de alta resolución"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, fuzzy, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr "Atopouse unha regra implícita de «%s».\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, fuzzy, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr "Non se atopou unha regra implícita para «%s».\n"
-#: remake.c:532
+#: src/remake.c:515
#, fuzzy, c-format
msgid "Using default recipe for '%s'.\n"
msgstr "Usando as ordes por defecto para «%s».\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "A dependencia circular %s <- %s foi eliminada."
-#: remake.c:691
+#: src/remake.c:674
#, fuzzy, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr "Rematáronse os prerrequisitos do ficheiro obxectivo «%s».\n"
-#: remake.c:697
+#: src/remake.c:680
#, fuzzy, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr "Están a se facer os prerrequisitos de «%s».\n"
-#: remake.c:711
+#: src/remake.c:694
#, fuzzy, c-format
msgid "Giving up on target file '%s'.\n"
msgstr "Abandonando no ficheiro obxectivo «%s».\n"
-#: remake.c:716
+#: src/remake.c:699
#, fuzzy, c-format
msgid "Target '%s' not remade because of errors."
msgstr "Non se refai o obxectivo «%s» a causa dos erros."
-#: remake.c:768
+#: src/remake.c:751
#, fuzzy, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr "O prerrequisito «%s» é só-orde para o obxectivo «%s».\n"
-#: remake.c:773
+#: src/remake.c:756
#, fuzzy, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr "O prerrequisito «%s» do obxectivo «%s» non existe.\n"
-#: remake.c:778
+#: src/remake.c:761
#, fuzzy, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr "O prerrequisito «%s» é máis novo que o obxectivo «%s».\n"
-#: remake.c:781
+#: src/remake.c:764
#, fuzzy, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr "O prerrequisito «%s» é máis vello que o obxectivo «%s».\n"
-#: remake.c:799
+#: src/remake.c:782
#, fuzzy, 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:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr ""
-#: remake.c:811
+#: src/remake.c:794
#, fuzzy, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr "Facendo «%s» debido á marca de sempre-facer.\n"
-#: remake.c:819
+#: src/remake.c:802
#, fuzzy, c-format
msgid "No need to remake target '%s'"
msgstr "Non é preciso refacer o obxectivo «%s»"
-#: remake.c:821
+#: src/remake.c:804
#, fuzzy, c-format
msgid "; using VPATH name '%s'"
msgstr "; usando o nome de VPATH «%s»"
-#: remake.c:841
+#: src/remake.c:824
#, fuzzy, c-format
msgid "Must remake target '%s'.\n"
msgstr "Debe refacerse o obxectivo «%s».\n"
-#: remake.c:847
+#: src/remake.c:830
#, fuzzy, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr " Ignorando o nome VPATH «%s».\n"
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr ""
-#: remake.c:863
+#: src/remake.c:846
#, fuzzy, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr "Produciuse un erro ao refacer o ficheiro obxectivo «%s».\n"
-#: remake.c:866
+#: src/remake.c:849
#, fuzzy, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr "O ficheiro obxectivo «%s» foi feito de novo con éxito.\n"
-#: remake.c:869
+#: src/remake.c:852
#, fuzzy, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr "O ficheiro obxectivo «%s» precisa refacerse con -q.\n"
-#: remake.c:1064
+#: src/remake.c:1047
#, fuzzy, c-format
msgid "Using default commands for '%s'.\n"
msgstr "Usando as ordes por defecto para «%s».\n"
-#: remake.c:1430
-#, fuzzy, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "Aviso: O ficheiro «%s» ten un tempo de modificación no futuro"
-
-#: remake.c:1444
+#: src/remake.c:1422
#, fuzzy, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr "Aviso: O ficheiro «%s» ten un tempo de modificación %s seg no futuro"
-#: remake.c:1647
+#: src/remake.c:1662
#, fuzzy, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr "O elemento de .LIBPATTERNS «%s» non é un patrón"
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr "A Aduana non exporta: %s\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -1809,7 +1850,7 @@ msgstr ""
"\n"
"# Regras implícitas"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1817,188 +1858,184 @@ msgstr ""
"\n"
"# Non hai regras implícitas."
-#: rule.c:514
-#, c-format
+#: src/rule.c:548
+#, fuzzy, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
"# %u regras implícitas, %u"
-#: rule.c:523
-msgid " terminal."
-msgstr " terminal."
-
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "FALLO: num_pattern_rules é incorrecto! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "sinal descoñecido"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Colgar"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "Interrompido"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Saír"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "Instrución inaceptábel"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "Trampa de trazado/punto de detención"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Abortado"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "Trampa de IOT"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "Trampa EMT"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "Excepción de coma flotante"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Matado"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "Erro do bus"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Fallo de segmento"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "Chamada ao sistema incorrecta"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "Canalización rota"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Temporizador"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "Terminado"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "Sinal definido polo usuario 1"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "Sinal definido polo usuario 2"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "O proceso fillo saíu"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Fallo de subministración eléctrica"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Detido"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Detido (entrada de consola)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Detido (saída de consola)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Detido (sinal)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "Excedeuse o límite de tempo de CPU"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "Excedeuse o límite de tamaño do ficheiro"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "Temporizador virtual esgotado"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr ""
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "A xanela cambiou"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Continuado"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "Condición de E/S urxente"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "A E/S é posíbel"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "Recurso perdido"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Sinal de perigo"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Petición de información"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "O coprocesador de coma flotante non está dispoñíbel"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
"%s No strcache buffers\n"
msgstr ""
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -2006,31 +2043,31 @@ msgid ""
"B\n"
msgstr ""
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr ""
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
msgstr ""
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
msgstr ""
-#: strcache.c:328
+#: src/strcache.c:328
#, fuzzy
msgid ""
"# hash-table stats:\n"
@@ -2040,45 +2077,45 @@ msgstr ""
"# estatísticas da táboa hash de ficheiros:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "automático"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "por defecto"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "ambiente"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "ficheiro de make"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "ambiente baixo -e"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "liña de ordes"
-#: variable.c:1647
+#: src/variable.c:1671
#, fuzzy
msgid "'override' directive"
msgstr "directiva «override»"
-#: variable.c:1658
+#: src/variable.c:1682
#, fuzzy, c-format
msgid " (from '%s', line %lu)"
msgstr " (desde «%s», liña %lu)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr "# estatísticas da táboa hash de conxunto de variábeis:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2086,7 +2123,7 @@ msgstr ""
"\n"
"# Variábeis\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
@@ -2094,7 +2131,7 @@ msgstr ""
"\n"
"# Valores de variábeis específicas do patrón"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2102,7 +2139,7 @@ msgstr ""
"\n"
"# Non hai valores específicos do patrón."
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
@@ -2111,47 +2148,47 @@ msgstr ""
"\n"
"# %u valores de variábeis específicos do patrón"
-#: variable.h:224
+#: src/variable.h:229
#, fuzzy, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "aviso: variábel non definida «%.*s»"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr "a chamada a sys$search() fallou con %d\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr "-aviso, pode que teña que reactivar o manexo de CTRL-Y desde o DCL.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "BUILTIN CD %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr ""
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr ""
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr ""
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "Executando %s no canto\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2159,12 +2196,12 @@ msgstr ""
"\n"
"# Rutas de busca VPATH\n"
-#: vpath.c:620
+#: src/vpath.c:620
#, fuzzy
msgid "# No 'vpath' search paths."
msgstr "# Non hai rutas de busca «vpath»"
-#: vpath.c:622
+#: src/vpath.c:622
#, fuzzy, c-format
msgid ""
"\n"
@@ -2173,7 +2210,7 @@ msgstr ""
"\n"
"# %u rutas de busca «vpath».\n"
-#: vpath.c:625
+#: src/vpath.c:625
#, fuzzy
msgid ""
"\n"
@@ -2182,7 +2219,7 @@ msgstr ""
"\n"
"# Non hai unha ruta de busca xeral (variábel «VPATH»)."
-#: vpath.c:631
+#: src/vpath.c:631
#, fuzzy
msgid ""
"\n"
@@ -2193,33 +2230,33 @@ msgstr ""
"# Ruta de busca xeral (variábel «VPATH»):\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr ""
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr ""
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr ""
@@ -2236,18 +2273,39 @@ msgstr ""
#~ msgid "[%s] Error %d (ignored)"
#~ msgstr "[%s] Erro %d (ignorado)"
+#~ msgid "%s: Command not found"
+#~ msgstr "%s: Orde non atopada"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s: Programa para o intérprete de ordes non atopado"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s está suspendido durante 30 segundos..."
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "rematouse sleep(30). Continuando.\n"
+
#~ msgid "internal error: multiple --jobserver-fds options"
#~ msgstr "erro interno: opcións --jobserver-fds múltiples"
#~ msgid "dup jobserver"
#~ msgstr "dup jobserver"
+#~ msgid "Unknown error %d"
+#~ msgstr "Erro %d descoñecido"
+
#~ msgid "virtual memory exhausted"
#~ msgstr "memoria virtual esgotada"
#~ msgid "write error"
#~ msgstr "erro de escritura"
+#~ msgid "Warning: File `%s' has modification time in the future"
+#~ msgstr "Aviso: O ficheiro «%s» ten un tempo de modificación no futuro"
+
+#~ msgid " terminal."
+#~ msgstr " terminal."
+
#~ msgid ""
#~ "\n"
#~ "# strcache hash-table stats:\n"
diff --git a/po/he.gmo b/po/he.gmo
index 125c7a4..2ec63ad 100644
--- a/po/he.gmo
+++ b/po/he.gmo
Binary files differ
diff --git a/po/he.po b/po/he.po
index 6dcc6a0..bee859a 100644
--- a/po/he.po
+++ b/po/he.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: make 3.79.1\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
"PO-Revision-Date: 2002-03-30 21:33+0300\n"
"Last-Translator: Eli Zaretskii <eliz@gnu.org>\n"
"Language-Team: Hebrew <eliz@gnu.org>\n"
@@ -14,96 +14,98 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
-#: ar.c:46
+#: src/ar.c:46
#, fuzzy, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "úëîúð äððéàù `%s' äðåëúá ùåîéù ïåéñð"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "VMS úëøòîá ïåéëøàá øáà ìù äòù/êéøàú éåðéùá äëéîú ïéà"
-#: ar.c:147
+#: src/ar.c:147
#, fuzzy, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "íéé÷ åðéà `%s' ïåéëøà õáå÷ :touch"
-#: ar.c:150
+#: src/ar.c:150
#, fuzzy, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "ïé÷ú ïåéëøà õáå÷ åðéà `%s' :touch"
-#: ar.c:157
+#: src/ar.c:157
#, fuzzy, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "`%s' øáà ìéëî åðéà `%s' ïåéëøà :touch"
-#: ar.c:164
+#: src/ar.c:164
#, fuzzy, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr "`%s' øåáò ïé÷ú-àì ãå÷ äøéæçä ar_member_touch :touch"
-#: arscan.c:130
+#: src/arscan.c:130
#, fuzzy, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr "%d ñåèèñ ,lib$rset_module é\"ò ìåãåî ìò òãéî úôéìùá ïåìùë"
-#: arscan.c:236
+#: src/arscan.c:236
#, fuzzy, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "%d ñåèèñ íò ìùëð lbr$ini_control"
-#: arscan.c:261
+#: src/arscan.c:261
#, fuzzy, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr "(`%s' äéøôñ) `%s' øáà øåáò äéøôñ úçéúôá äì÷ú"
# These are not translated, since they belong to a test program.
-#: arscan.c:965
+#: src/arscan.c:944
#, fuzzy, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr "Member `%s'%s: %ld bytes at %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (name might be truncated)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Date %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, mode = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr ""
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** Break. ***\n"
-#: commands.c:627
+#: src/commands.c:628
#, fuzzy, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr "*** [%s] ÷çîéé àì ;ïé÷ú-éúìá úåéäì ìåìò `%s' ïåéëøà øáà ***"
-#: commands.c:631
+#: src/commands.c:632
#, fuzzy, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr "*** ÷çîéé àì ;ïé÷ú-éúìá úåéäì ìåìò `%s' ïåéëøà øáà ***"
-#: commands.c:645
+#: src/commands.c:646
#, fuzzy, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] `%s' õáå÷ ÷çåî ***"
-#: commands.c:647
+#: src/commands.c:648
#, fuzzy, c-format
msgid "*** Deleting file '%s'"
msgstr "*** `%s' õáå÷ ÷çåî ***"
@@ -111,21 +113,21 @@ msgstr "*** `%s' õáå÷ ÷çåî ***"
# I decided to retain the English text of what Make prints under -p,
# since it is notoriously hard to get right in right-to-left languages,
# and because its primary use is for programmers who write Makefiles.
-#: commands.c:683
+#: src/commands.c:684
#, fuzzy
msgid "# recipe to execute"
msgstr "# commands to execute"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (built-in):"
-#: commands.c:688
+#: src/commands.c:689
#, fuzzy, c-format
msgid " (from '%s', line %lu):\n"
msgstr " (from `%s', line %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -133,228 +135,229 @@ msgstr ""
"\n"
"# Directories\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: could not be stat'd.\n"
-#: dir.c:1085
+#: src/dir.c:1089
#, fuzzy
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
msgstr "# %s (key %s, mtime %d): could not be opened.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr "# %s (device %ld, inode %ld): could not be opened.\n"
-#: dir.c:1122
+#: src/dir.c:1126
#, fuzzy
msgid "# %s (key %s, mtime %I64u): "
msgstr "# %s (key %s, mtime %d): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (device %d, inode [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (device %ld, inode %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "No"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " files, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "no"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " impossibilities"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " so far."
-#: dir.c:1167
+#: src/dir.c:1171
#, fuzzy, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " impossibilities in %u directories.\n"
-#: expand.c:125
+#: src/expand.c:125
#, fuzzy, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr "(øáã ìù åôåñá) åîöòì äééðôäì íøåâ `%s' éáéñøå÷ø äðúùî"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "äëìäë úîééúñî äðéà äðúùîì äééðôä"
-#: file.c:278
+#: src/file.c:278
#, fuzzy, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr ",`%s' õáå÷ øåáò úåãå÷ô åðúéð %s õáå÷á %lu äøåùá"
-#: file.c:283
+#: src/file.c:283
#, fuzzy, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr ",íéùøåôî-éúìá íéììëá ùåôéç é\"ò åàöîð `%s' õáå÷ øåáò úåãå÷ô"
-#: file.c:287
+#: src/file.c:287
#, fuzzy, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr ".õáå÷ åúåàì äúò íéáùçð `%s' ïäå `%s' ïä íìåàå"
-#: file.c:290
+#: src/file.c:290
#, fuzzy, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr ".`%s' øåáò åìà ìò úåôéãò `%s' øåáò úåãå÷ô"
-#: file.c:310
+#: src/file.c:310
#, fuzzy, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr "`%s' íéããåá íééúåãå÷ðî `%s' íéìåôë íééúåãå÷ðì êåôäì ïúéð àì"
-#: file.c:316
+#: src/file.c:316
#, fuzzy, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr "`%s' íéìåôë íééúåãå÷ðî `%s' íéããåá íééúåãå÷ðì êåôäì ïúéð àì"
-#: file.c:408
+#: src/file.c:408
#, fuzzy, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "*** `%s' íééðéá õáå÷ ÷çåî ***"
-#: file.c:412
-#, fuzzy
+#: src/file.c:412
+#, fuzzy, c-format
msgid "Removing intermediate files...\n"
msgstr "*** `%s' íééðéá õáå÷ ÷çåî ***"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "úëøòî ïåòù"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "øúåîä íåçúì õåçî äðéäù ,%s ìù ïîæä úîéúç úà %s-á óéìçî"
# See the comment above about translations of text printed under -p.
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# Not a target:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# Precious file (prerequisite of .PRECIOUS)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# Phony target (prerequisite of .PHONY)."
-#: file.c:971
+#: src/file.c:1025
#, fuzzy
msgid "# Command line target."
msgstr "# Command-line target."
-#: file.c:973
+#: src/file.c:1027
#, fuzzy
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr "# A default or MAKEFILES makefile."
-#: file.c:975
+#: src/file.c:1029
#, fuzzy
msgid "# Builtin rule"
msgstr ""
"\n"
"# No implicit rules."
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# Implicit rule search has been done."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# Implicit rule search has not been done."
-#: file.c:980
+#: src/file.c:1034
#, fuzzy, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr "# Implicit/static pattern stem: `%s'\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr "# File is an intermediate prerequisite."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# Also makes:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# Modification time never checked."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# File does not exist."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# File is very old."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# Last modified %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# File has been updated."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# File has not been updated."
-#: file.c:1008
+#: src/file.c:1062
#, fuzzy
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# Commands currently running (THIS IS A BUG)."
-#: file.c:1011
+#: src/file.c:1065
#, fuzzy
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr "# Dependencies commands running (THIS IS A BUG)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# Successfully updated."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# Needs to be updated (-q is set)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# Failed to be updated."
-#: file.c:1032
+#: src/file.c:1086
#, fuzzy
msgid "# Invalid value in 'command_state' member!"
msgstr "# Invalid value in `command_state' member!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -362,347 +365,353 @@ msgstr ""
"\n"
"# Files"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
"# "
msgstr ""
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr ""
-#: function.c:790
+#: src/function.c:794
#, fuzzy
msgid "non-numeric first argument to 'word' function"
msgstr "øôñî åðéà `word' úééö÷ðåôì ïåùàø èðîåâøà"
-#: function.c:795
-#, fuzzy
+#: src/function.c:799
+#, fuzzy, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr "éáåéç úåéäì áééç `word' úééö÷ðåôì ïåùàø èðîåâøà"
-#: function.c:815
+#: src/function.c:819
#, fuzzy
msgid "non-numeric first argument to 'wordlist' function"
msgstr "øôñî åðéà `wordlist' úééö÷ðåôì ïåùàø èðîåâøà"
-#: function.c:817
+#: src/function.c:821
#, fuzzy
msgid "non-numeric second argument to 'wordlist' function"
msgstr "øôñî åðéà `wordlist' úééö÷ðåôì éðù èðîåâøà"
-#: function.c:1525
+#: src/function.c:1533
#, fuzzy, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "create_child_process: DuplicateHandle(In) failed (e=%d)\n"
-#: function.c:1549
+#: src/function.c:1557
#, fuzzy, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr "create_child_process: DuplicateHandle(Err) failed (e=%d)\n"
-#: function.c:1556
+#: src/function.c:1564
#, fuzzy, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "CreatePipe() failed (e=%d)\n"
-#: function.c:1564
-#, fuzzy
+#: src/function.c:1572
+#, fuzzy, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe (): process_init_fd() failed\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr ""
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
msgstr ""
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
msgstr ""
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, c-format
msgid "close: %s: %s"
msgstr ""
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr ""
-#: function.c:2262
+#: src/function.c:2277
#, c-format
msgid "read: %s: %s"
msgstr ""
-#: function.c:2275
+#: src/function.c:2290
#, fuzzy, c-format
msgid "file: invalid file operation: %s"
msgstr "%s úéðëú øåáò éåâù ïééôàî -- %c\n"
-#: function.c:2390
+#: src/function.c:2405
#, fuzzy, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr "÷ôñî åðéàù (%d) íéèðîåâøà øôñî íò äàø÷ð `%s' äéö÷ðåô"
-#: function.c:2402
+#: src/function.c:2417
#, fuzzy, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "åæ úëøòîá úùîåîî äðéà `%s' äéö÷ðåô"
-#: function.c:2466
+#: src/function.c:2483
#, fuzzy, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr "`%s' äéö÷ðåôì äàéø÷á `%c' øñç"
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr ""
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr ""
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr ""
-#: function.c:2657
+#: src/function.c:2674
#, fuzzy, c-format
msgid "Invalid minimum argument count (%u) for function %s"
msgstr "÷ôñî åðéàù (%d) íéèðîåâøà øôñî íò äàø÷ð `%s' äéö÷ðåô"
-#: function.c:2660
+#: src/function.c:2677
#, fuzzy, c-format
msgid "Invalid maximum argument count (%u) for function %s"
msgstr "÷ôñî åðéàù (%d) íéèðîåâøà øôñî íò äàø÷ð `%s' äéö÷ðåô"
-#: getopt.c:659
+#: src/getopt.c:659
#, fuzzy, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `%s' ïééôàî\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, fuzzy, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `--%s' ïééôàî\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, fuzzy, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `%c%s' ïééôàî\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, fuzzy, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s úéðëú øåáò èðîåâøà áééçî `%s' ïééôàî\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, fuzzy, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s úéðëú øåáò `--%s' ääåæî-éúìá ïééôàî\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, fuzzy, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s úéðëú øåáò `%c%s' ääåæî-éúìá ïééôàî\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: é÷åç-éúìá ïééôàî -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s úéðëú øåáò éåâù ïééôàî -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: èðîåâøà áééçî ïééôàî -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, fuzzy, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s úéðëú øåáò éòîùî-ãç åðéà `-W %s' ïééôàî\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, fuzzy, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s úéðëú øåáò èðîåâøà ìá÷î åðéà `-W %s' ïééôàî\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr ""
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr ""
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr ""
-#: hash.c:280
+#: src/hash.c:280
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
+msgid "Load=%lu/%lu=%.0f%%, "
msgstr ""
-#: hash.c:282
+#: src/hash.c:282
#, c-format
-msgid "Rehash=%d, "
+msgid "Rehash=%u, "
msgstr ""
-#: hash.c:283
+#: src/hash.c:283
#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
+msgid "Collisions=%lu/%lu=%.0f%%"
msgstr ""
-#: implicit.c:38
+#: src/implicit.c:38
#, fuzzy, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr ".`%s' øåáò ùøåôî-éúìá ììë ùôçî\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, fuzzy, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr ".`%s' øåáò ïåéëøà éøáàì ùøåôî-éúìá ììë ùôçî\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr ".úùøåôî-éúìá äéñøå÷øî òðîð\n"
-#: implicit.c:486
+#: src/implicit.c:484
#, c-format
-msgid "Stem too long: '%.*s'.\n"
+msgid "Stem too long: '%s%.*s'.\n"
msgstr ""
-#: implicit.c:491
+#: src/implicit.c:490
#, fuzzy, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr ".`%.*s' ùøåù íò úéðáú ììë äñðî\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, fuzzy, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr ".úéøùôà-éúìá äðéäù íåùî `%s' íã÷ úùéøã äçåã\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, fuzzy, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr ".úéøùôà-éúìá äðéäù íåùî `%s' úùøåôî-éúìá íã÷ úùéøã äçåã\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, fuzzy, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr ".`%s' íã÷ úùéøã ììë äñðî\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, fuzzy, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr ".`%s' úùøåôî-éúìá íã÷ úùéøã äñðî\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, fuzzy, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr "`%s' íã÷ úùéøãë VPATH `%s' éúàöî\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, fuzzy, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr ".`%s' éðîæ õáå÷ íò ììë ùôçî\n"
-#: job.c:363
+#: src/job.c:370
#, fuzzy
msgid "Cannot create a temporary file\n"
msgstr "fwrite (temporary file)"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (core õáå÷á íùøð ïåøëæä ïëåú)"
-#: job.c:490
+#: src/job.c:553
#, fuzzy
msgid " (ignored)"
msgstr "[%s] %d äì÷úî éúîìòúä"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
#, fuzzy
msgid "<builtin>"
msgstr " (built-in):"
-#: job.c:510
+#: src/job.c:573
#, fuzzy, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "*** [%s] %d äì÷ú"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** ...åîééúñð íøèù úåãåáòì ïéúîî"
-#: job.c:629
+#: src/job.c:704
#, fuzzy, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "äöø 0x%08lx (%s) PID=%ld %s úá-úéðëú\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr "(ú÷çåøî)"
-#: job.c:831
-#, fuzzy, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "äìùëðù 0x%08lx PID=%ld %s úá-úéðëú óñåà\n"
-
-#: job.c:832
+#: src/job.c:898
#, fuzzy, c-format
msgid "Reaping winning child %p PID %s %s\n"
msgstr "äçéìöäù 0x%08lx PID=%ld %s úá-úéðëú óñåà\n"
-#: job.c:839
+#: src/job.c:899
+#, fuzzy, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "äìùëðù 0x%08lx PID=%ld %s úá-úéðëú óñåà\n"
+
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n"
-#: job.c:845
+#: src/job.c:956
#, fuzzy, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr "`%s' éðîæ batch õáå÷ ÷ìñî\n"
-#: job.c:951
+#: src/job.c:1071
#, fuzzy, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr ".úåãåáò úøùøùî 0x%08lx PID=%ld %s úá-úéðëú ÷éçøî\n"
-#: job.c:1006
+#: src/job.c:1120
#, fuzzy, c-format
msgid "Released token for child %p (%s).\n"
msgstr ".øøçåù 0x%08lx (%s) úá-úéðëú øåáò ïåîéñàä\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, fuzzy, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "(e=%d) úéðëú-úú øåâéùá ìùëð process_easy()\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -711,345 +720,340 @@ msgstr ""
"\n"
"ìùëðù øåâéùá åðîð íéèðîåâøà %d\n"
-#: job.c:1581
+#: src/job.c:1642
#, fuzzy, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr ".úåãåáò úøùøùì 0x%08lx (%s) PID=%ld %s úá-úéðëú óøöî\n"
-#: job.c:1811
+#: src/job.c:1875
#, fuzzy, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr ".0x%08lx (%s) úá-úéðëú øåáò ïåîéñà ìá÷úä\n"
-#: job.c:1838
+#: src/job.c:1902
#, fuzzy, c-format
msgid "%s: target '%s' does not exist"
msgstr "íéé÷ åðéà `%s' ïåéëøà õáå÷ :touch"
-#: job.c:1841
+#: src/job.c:1905
#, fuzzy, c-format
msgid "%s: update target '%s' due to: %s"
msgstr "%säúééðáì íéììë ïéà êà ,`%s' úùøåã `%s'%s äøèî"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr "åæ úëøòîá ñîåò úåìáâî úåôëì ïúéð àì"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "cannot enforce load limit: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr ""
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr ""
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr ""
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr ""
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr ""
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr ""
-#: job.c:2234
+#: src/job.c:2520
#, fuzzy, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr "äôñàð pid %d úá-úéðëú ,pid %d-ì äëçî ïééãò\n"
-#: job.c:2275
-#, fuzzy, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "äàöîð àì åæ äãå÷ô :%s"
-
-#: job.c:2277
-#, fuzzy, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "äàöîð àì åæ äãå÷ô :%s"
-
-#: job.c:2337
+#: src/job.c:2623
#, c-format
-msgid "%s: Shell program not found"
-msgstr "äàöîð àì shell úãå÷ô :%s"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr ""
-#: job.c:2584
+#: src/job.c:2862
#, fuzzy, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "(`%s' äéä íãå÷ ,`%s' åéùëò) äðúùä $SHELL ìù åëøò"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr "`%s' éðîæ batch õáå÷ øöåé\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
msgstr ""
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
"\t%s\n"
msgstr ""
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr ""
"(!unixy && !batch_mode_shell) shell-mode úòéá÷á äì÷ú :%s õáå÷ ìù %d äøåù\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr ""
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr ""
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr ""
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr ""
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr ""
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr ""
-#: load.c:256
-#, fuzzy
+#: src/load.c:256
+#, fuzzy, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr ".åæ úëøòîá êîúð åðéà (-j) éìéá÷î òåöéá"
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr " :íéðééôàî\n"
-#: main.c:339
+#: src/main.c:336
#, fuzzy
msgid " -b, -m Ignored for compatibility.\n"
msgstr "úåîéàú ïòîì èîùåî"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr ""
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
msgstr ""
-#: main.c:346
+#: src/main.c:343
#, fuzzy
msgid " -d Print lots of debugging information.\n"
msgstr "úåàéâù éåôéð úáåèì òãéî ìù òôù âöä"
-#: main.c:348
+#: src/main.c:345
#, fuzzy
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr "úåàéâù éåôéð úáåèì òãéî ìù íéðåù íéâåñ âöä"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
msgstr ""
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
msgstr ""
-#: main.c:358
+#: src/main.c:355
#, fuzzy
msgid " -h, --help Print this message and exit.\n"
msgstr "úéðëúäî àöå äæ äøæò êñî âöä"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr ""
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
msgstr ""
-#: main.c:365
+#: src/main.c:362
#, fuzzy
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
msgstr "äìáâî ïéà èðîåâøà àìì ;úéðîæ-åá úåãåáò N-î øúåé àì"
-#: main.c:367
+#: src/main.c:364
#, fuzzy
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr "äéðáì úåðúéð ïðéà úåøèîäî äîë íà åìéôà êùîä"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
"N.\n"
msgstr ""
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
msgstr ""
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
"them.\n"
msgstr ""
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
"it.\n"
msgstr ""
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
msgstr ""
-#: main.c:383
+#: src/main.c:380
#, fuzzy
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr "Make ìù éîéðô íéðåúð ñéñá âöä"
-#: main.c:385
+#: src/main.c:382
#, fuzzy
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
msgstr "úðëãåòî äøèî íàá øîåà äàéöé ãå÷ ;úåãå÷ô õéøú ìà"
-#: main.c:387
+#: src/main.c:384
#, fuzzy
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr "íéùøåôî-éúìá íéðáåî íéììë ìøèð"
-#: main.c:389
+#: src/main.c:386
#, fuzzy
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr "íéðúùî ìù úåðáåî úåøãâä ìøèð"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr ""
-#: main.c:393
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
msgstr ""
-#: main.c:396
+#: src/main.c:395
#, fuzzy
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr "ïúåðáì íå÷îá úåøèî ìù ïîæ úîéúç ïëãò"
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
msgstr ""
-#: main.c:400
+#: src/main.c:399
#, fuzzy
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr "úéðëúäî àöå Make ìù àñøéâ øôñî âöä"
-#: main.c:402
+#: src/main.c:401
#, fuzzy
msgid " -w, --print-directory Print the current directory.\n"
msgstr "úéçëåð äé÷éú íù âöä"
-#: main.c:404
+#: src/main.c:403
#, fuzzy
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
msgstr "ùøåôîá ïéåö àåä íà åìéôà -w ìèá"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
msgstr ""
-#: main.c:409
+#: src/main.c:408
#, fuzzy
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
msgstr "øãâåä àìù äðúùîì äééðôä äø÷îá äøäæà âöä"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "õáå÷ íùë úìá÷úî äðéà ä÷éø úæåøçî"
-#: main.c:766
+#: src/main.c:754
#, fuzzy, c-format
msgid "unknown debug level specification '%s'"
msgstr "úåàéâù éåôéðì òãéî ìù `%s' øëåî-éúìá ïééôàî"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr ""
-#: main.c:861
+#: src/main.c:849
#, fuzzy, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr "%s úéðëúá (code = 0x%x, addr = 0x%x) äâéøç åà ä÷éñô\n"
-#: main.c:868
+#: src/main.c:856
#, fuzzy, c-format
msgid ""
"\n"
@@ -1064,177 +1068,182 @@ msgstr ""
"ExceptionFlags = %x\n"
"ExceptionAddress = %x\n"
-#: main.c:876
+#: src/main.c:864
#, fuzzy, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "%x úáåúëì äáéúë :ïåøëæì äùéâ úì÷ú\n"
-#: main.c:877
+#: src/main.c:865
#, fuzzy, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "%x úáåúëî äàéø÷ :ïåøëæì äùéâ úì÷ú\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, fuzzy, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell setting default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, fuzzy, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr "find_and_set_shell path search set default_shell = %s\n"
-#: main.c:1538
-#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr ".úåéðù 30 ìù %s úééäùä"
-
-# Pay attention: this is written to the _right_ of the previous string,
-# but should look like a single sentence together with it.
-#: main.c:1540
-#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr " äîééúñð\n"
-
-#: main.c:1627
-#, fuzzy
+#: src/main.c:1609
+#, fuzzy, c-format
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
".Make ìù áàä ììëì `+' óñåä .-j1-á ùåîéù äùòéé ;ïéîæ åðéà jobserver :äøäæà"
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
+#: src/main.c:1617
+#, fuzzy, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
msgstr "jobserver ïôåà ìèáî ;-jN áééçî Make-úú :äøäæà"
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr ".úçà íòôî øúåé ïúéð éð÷ú èì÷ õåøòî Makefile"
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (temporary file)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (temporary file)"
-#: main.c:2048
+#: src/main.c:2004
+#, fuzzy, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr "jobserver ïôåà ìèáî ;-jN áééçî Make-úú :äøäæà"
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr ".åæ úëøòîá êîúð åðéà (-j) éìéá÷î òåöéá"
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr ".(-j1) éúøãñ ïôåàá åòöåáé úåãå÷ô"
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr ""
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "...makefile éöá÷ ïëãòî\n"
-#: main.c:2195
+#: src/main.c:2226
#, fuzzy, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr ".ùãçî åøöééìî òðîð ;úéôåñðéà äàìåì øåöéì ìåìò `%s' Makefile\n"
-#: main.c:2279
+#: src/main.c:2303
#, fuzzy, c-format
msgid "Failed to remake makefile '%s'."
msgstr ".`%s' makefile ìù ùãçî-äøéöéá äì÷ú"
-#: main.c:2299
+#: src/main.c:2323
#, fuzzy, c-format
msgid "Included makefile '%s' was not found."
msgstr ".àöîð àì `%s' ììëåî makefile"
-#: main.c:2304
+#: src/main.c:2328
#, fuzzy, c-format
msgid "Makefile '%s' was not found"
msgstr "àöîð àì `%s' Makefile"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr ".úéøå÷îä äé÷éúì øåæçì ïúéð àì"
-#: main.c:2380
+#: src/main.c:2402
#, fuzzy, c-format
msgid "Re-executing[%u]:"
msgstr "Re-executing:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (temporary file): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ""
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "makefile éöá÷ åàöîð àìå úåøèî ïåéö ïéà"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "úåøèî ïéà"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "makefile éöá÷ åàöîð àìå úåøèî ïåéö ïéà"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "...ãòé úåøèî ïëãòî\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr ".äîìù àì úåéäì äìåìò äéðáä .ïåòù úùéìâ äúìâúð :úåøéäæ"
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "%s [íéðééôàî] [äøèî] ... :ùåîéù ïôåà\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
"This program built for %s\n"
msgstr ""
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
"This program built for %s (%s)\n"
msgstr ""
-#: main.c:2784
+#: src/main.c:2815
#, fuzzy, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr ""
"\n"
".<bug-make@gnu.org>-ì äì÷ú éçååéã çåìùì àð\n"
-#: main.c:2870
+#: src/main.c:2901
#, fuzzy, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "éáåéçå íìù èðîåâøà áééçî `-%c' ïééôàî"
-#: main.c:2934
+#: src/main.c:2965
#, fuzzy, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "éáåéçå íìù èðîåâøà áééçî `-%c' ïééôàî"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr ""
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr ""
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1243,7 +1252,7 @@ msgid ""
"%sThere is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1252,7 +1261,7 @@ msgstr ""
"\n"
"# Make data base, printed on %s"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1261,507 +1270,532 @@ msgstr ""
"\n"
"# Finished Make data base on %s\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Unknown error %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, fuzzy, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s access: user %lu (real %lu), group %lu (real %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
#, fuzzy
msgid "Initialized access"
msgstr "Initialized"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr ""
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr ""
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr ""
-#: output.c:104
+#: src/output.c:97
#, fuzzy, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "an unknown directory"
-#: output.c:106
+#: src/output.c:99
#, fuzzy, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "an unknown directory"
-#: output.c:109
+#: src/output.c:102
#, fuzzy, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "directory `%s'\n"
-#: output.c:111
+#: src/output.c:104
#, fuzzy, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "directory `%s'\n"
-#: output.c:115
+#: src/output.c:108
#, fuzzy, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "an unknown directory"
-#: output.c:117
+#: src/output.c:110
#, fuzzy, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "an unknown directory"
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr ""
-#: output.c:122
+#: src/output.c:115
#, fuzzy, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "directory `%s'\n"
-#: output.c:495 output.c:497
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
msgstr ""
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". Stop.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr ""
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr ""
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "creating jobs pipe"
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
#, fuzzy
msgid "duping jobs pipe"
msgstr "creating jobs pipe"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr "init jobserver pipe"
-#: posixos.c:90
+#: src/posixos.c:119
#, fuzzy, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr "--jobserver-fds ïééôàîá `%s' äéåâù úæåøçî :úéîéðô äðëú úì÷ú"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr ""
-#: posixos.c:109
+#: src/posixos.c:138
#, fuzzy
msgid "jobserver pipeline"
msgstr "init jobserver pipe"
# Here and elsewhere leading strings passed to perror are not translated,
# since they will be followed by an error message in English.
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr "write jobserver"
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr ""
+
+#: src/posixos.c:303
#, fuzzy
msgid "pselect jobs pipe"
msgstr "read jobs pipe"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "read jobs pipe"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "...makefile éöá÷ àøå÷\n"
-#: read.c:329
+#: src/read.c:336
#, fuzzy, c-format
msgid "Reading makefile '%s'"
msgstr "Reading makefile `%s'"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (no default goal)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (search path)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (don't care)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (no ~ expansion)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr ""
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr ""
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "éàðú ìù éåâù øéáçú"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr ""
-#: read.c:985
-#, fuzzy
+#: src/read.c:986
+#, fuzzy, c-format
msgid "recipe commences before first target"
msgstr "äðåùàø äøèî éðôì úåìéçúî úåãå÷ô"
-#: read.c:1034
-#, fuzzy
+#: src/read.c:1035
+#, fuzzy, c-format
msgid "missing rule before recipe"
msgstr "ïäéðôì ììë àìì úåãå÷ô"
-#: read.c:1124
-#, fuzzy
+#: src/read.c:1136
+#, fuzzy, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr "(?íéçååø 8 íå÷îá TAB-ì úðååëúä íàä) "
-#: read.c:1126
-#, fuzzy
+#: src/read.c:1138
+#, fuzzy, c-format
msgid "missing separator"
msgstr "%sãéøôî øñç"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "äøèî úéðáú ïéà"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "úåáåøî äøèî úåéðáú"
-#: read.c:1268
+#: src/read.c:1289
#, fuzzy, c-format
msgid "target pattern contains no '%%'"
msgstr "`%%' àìì äøèî úéðáú"
-#: read.c:1390
-#, fuzzy
+#: src/read.c:1404
+#, fuzzy, c-format
msgid "missing 'endif'"
msgstr "øñç `endif'"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "÷éø äðúùî íù"
-#: read.c:1463
-#, fuzzy
+#: src/read.c:1478
+#, fuzzy, c-format
msgid "extraneous text after 'define' directive"
msgstr "`endef' úàøåä éøçà øúåéî èñ÷è"
-#: read.c:1488
-#, fuzzy
+#: src/read.c:1503
+#, fuzzy, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "íåéñ àìì `define' úàøåä ,øñç `endef'"
-#: read.c:1516
-#, fuzzy
+#: src/read.c:1531
+#, fuzzy, c-format
msgid "extraneous text after 'endef' directive"
msgstr "`endef' úàøåä éøçà øúåéî èñ÷è"
-#: read.c:1588
+#: src/read.c:1603
#, fuzzy, c-format
msgid "extraneous text after '%s' directive"
msgstr "`%s' úàøåä éøçà øúåéî èñ÷è"
-#: read.c:1589
+#: src/read.c:1604
#, fuzzy, c-format
msgid "extraneous '%s'"
msgstr "øúåéî `%s'"
-#: read.c:1617
-#, fuzzy
+#: src/read.c:1632
+#, fuzzy, c-format
msgid "only one 'else' per conditional"
msgstr "éàðú ìëì ãéçé `else' ÷ø øúåî"
-#: read.c:1892
-#, fuzzy
+#: src/read.c:1908
+#, fuzzy, c-format
msgid "Malformed target-specific variable definition"
msgstr "äøèîì éôéöôñ äðúùî ìù äéåâù äøãâä"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr ""
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr ""
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr "íéùøåôî-éúìáå íééèèñ úéðáú éììë ìù áåáøò"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "íéùøåôî-éúìáå íéìéâø íéììë ìù áåáøò"
-#: read.c:2085
+#: src/read.c:2107
#, fuzzy, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr "ãòéä úéðáú úà úîàåú äðéà `%s' äøèî"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, fuzzy, c-format
msgid "target file '%s' has both : and :: entries"
msgstr ":: ïäå : âåñî ïä íéììë ùé `%s' äøèî õáå÷ì"
-#: read.c:2106
+#: src/read.c:2128
#, fuzzy, c-format
msgid "target '%s' given more than once in the same rule"
msgstr ".ììë åúåàá úçà íòôî øúåé äòéôåî `%s' äøèî"
-#: read.c:2116
+#: src/read.c:2138
#, fuzzy, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr "`%s' äøèî øåáò úåãå÷ô ñøåã :úåøéäæ"
-#: read.c:2119
+#: src/read.c:2141
#, fuzzy, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr "`%s' äøèî øåáò úåîãå÷ úåãå÷ôî íìòúî :úåøéäæ"
-#: read.c:2223
-#, fuzzy
+#: src/read.c:2254
+#, fuzzy, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr "íéùøåôî-éúìáå íéìéâø íéììë ìù áåáøò"
-#: read.c:2542
+#: src/read.c:2271
+#, fuzzy, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "`%s' äøèî øåáò úåãå÷ô ñøåã :úåøéäæ"
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr "äçðæð äøåùä úøúé ;NUL åú éúùâô :äøäæà"
-#: remake.c:226
+#: src/remake.c:226
#, fuzzy, c-format
msgid "Nothing to be done for '%s'."
msgstr ".`%s øåáò úåùòì äî ïéà"
-#: remake.c:227
+#: src/remake.c:227
#, fuzzy, c-format
msgid "'%s' is up to date."
msgstr ".éðëãò øáë `%s'"
-#: remake.c:323
+#: src/remake.c:323
#, fuzzy, c-format
msgid "Pruning file '%s'.\n"
msgstr ".`%s' øåáò úåéåìú óøâ õö÷î\n"
-#: remake.c:406
+#: src/remake.c:389
#, fuzzy, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr "%säúééðáì íéììë ïéà êà ,`%s' úùøåã `%s'%s äøèî"
-#: remake.c:416
+#: src/remake.c:399
#, fuzzy, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%s`%s'%s äøèî úééðáì íéììë ïéà"
-#: remake.c:442
+#: src/remake.c:425
#, fuzzy, c-format
msgid "Considering target file '%s'.\n"
msgstr ".`%s' äøèî õáå÷ ïçåá\n"
-#: remake.c:449
+#: src/remake.c:432
#, fuzzy, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr ".`%s' õáå÷ ïåëãòá éúìùëðå éúéñéð ïîæî àì\n"
-#: remake.c:461
+#: src/remake.c:444
#, fuzzy, c-format
msgid "File '%s' was considered already.\n"
msgstr ".ïë-éðôì ïçáð øáë `%s' õáå÷\n"
-#: remake.c:471
+#: src/remake.c:454
#, fuzzy, c-format
msgid "Still updating file '%s'.\n"
msgstr ".`%s' õáå÷ ïëãòî ïééãò\n"
-#: remake.c:474
+#: src/remake.c:457
#, fuzzy, c-format
msgid "Finished updating file '%s'.\n"
msgstr ".`%s' õáå÷ ïëãòì éúîééñ\n"
-#: remake.c:503
+#: src/remake.c:486
#, fuzzy, c-format
msgid "File '%s' does not exist.\n"
msgstr ".íéé÷ åðéà `%s' õáå÷\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
msgstr ""
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, fuzzy, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr ".`%s' øåáò ùøåôî-éúìá ììë éúàöî\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, fuzzy, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr ".`%s' øåáò íéùøåôî-éúìá íéììë åàöîð àì\n"
-#: remake.c:532
+#: src/remake.c:515
#, fuzzy, c-format
msgid "Using default recipe for '%s'.\n"
msgstr ".`%s' øåáò ìãçî úøéøá úåãå÷ôá ùîúùî\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr ".%s <- %s úéìâòî ìåìú èéîùî"
-#: remake.c:691
+#: src/remake.c:674
#, fuzzy, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr ".`%s' äøèî õáå÷ ìù íã÷-úåùéøã íò éúîééñ\n"
-#: remake.c:697
+#: src/remake.c:680
#, fuzzy, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr ".äéðáá `%s' ìù íã÷ä úåùéøã\n"
-#: remake.c:711
+#: src/remake.c:694
#, fuzzy, c-format
msgid "Giving up on target file '%s'.\n"
msgstr ".`%s' äøèî õáå÷ éáâì íééãé éúîøä\n"
-#: remake.c:716
+#: src/remake.c:699
#, fuzzy, c-format
msgid "Target '%s' not remade because of errors."
msgstr ".úåàéâù á÷ò ùãçî äúðáð àì `%s' äøèî"
-#: remake.c:768
+#: src/remake.c:751
#, fuzzy, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr ".`%s' íã÷ä úùéøãî äùãç `%s' äøèî\n"
-#: remake.c:773
+#: src/remake.c:756
#, fuzzy, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr ".íéé÷ åðéàù `%s' éàðúë úùøåã `%s' äøèî\n"
-#: remake.c:778
+#: src/remake.c:761
#, fuzzy, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr ".`%s' íã÷ä úùéøãî äðùé `%s' äøèî\n"
-#: remake.c:781
+#: src/remake.c:764
#, fuzzy, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr ".`%s' íã÷ä úùéøãî äùãç `%s' äøèî\n"
-#: remake.c:799
+#: src/remake.c:782
#, fuzzy, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr ".íã÷ úåùéøã àììå íéìåôë íééúåãå÷ð íò äðéä `%s' äøèî\n"
-#: remake.c:806
+#: src/remake.c:789
#, fuzzy, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr ".äùòîì äúðúùä àì íã÷ úùéøã óàå `%s' øåáò úåãå÷ô ïéà\n"
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr ""
-#: remake.c:819
+#: src/remake.c:802
#, fuzzy, c-format
msgid "No need to remake target '%s'"
msgstr "`%s' äøèî ùãçî úåðáì êøåö ïéà"
-#: remake.c:821
+#: src/remake.c:804
#, fuzzy, c-format
msgid "; using VPATH name '%s'"
msgstr " (`%s' :VPATH õáå÷ íù)"
-#: remake.c:841
+#: src/remake.c:824
#, fuzzy, c-format
msgid "Must remake target '%s'.\n"
msgstr ".`%s' äøèî ùãçî úåðáì áééç\n"
-#: remake.c:847
+#: src/remake.c:830
#, fuzzy, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr " .`%s' VPATH íùî íìòúî\n"
-#: remake.c:856
+#: src/remake.c:839
#, fuzzy, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr ".`%s' øåáò úåãå÷ô õéøî\n"
-#: remake.c:863
+#: src/remake.c:846
#, fuzzy, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr ".ùãçî `%s' úåðáì ïåéñð ìùëð\n"
-#: remake.c:866
+#: src/remake.c:849
#, fuzzy, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr ".`%s' ùãçî úééðáá äçìöä\n"
-#: remake.c:869
+#: src/remake.c:852
#, fuzzy, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr ".-q íò úåðáéäì êéøö `%s' äøèî õáå÷\n"
-#: remake.c:1064
+#: src/remake.c:1047
#, fuzzy, c-format
msgid "Using default commands for '%s'.\n"
msgstr ".`%s' øåáò ìãçî úøéøá úåãå÷ôá ùîúùî\n"
-#: remake.c:1430
-#, fuzzy, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "*** `%s' õáå÷ øåáò (%s > %s) ãéúòá åðéä ïåøçà éåðéù ïîæ :äøäæà ***"
-
-#: remake.c:1444
+#: src/remake.c:1422
#, fuzzy, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr "*** `%s' õáå÷ øåáò (%s > %s) ãéúòá åðéä ïåøçà éåðéù ïîæ :äøäæà ***"
-#: remake.c:1647
+#: src/remake.c:1662
#, fuzzy, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr "úéðáú åðéà .LIBPATTERNS ìù `%s' èðîìà"
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr "%s àöééî åðéà Customs\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
#, fuzzy
msgid ""
"\n"
@@ -1770,7 +1804,7 @@ msgstr ""
"\n"
"# No implicit rules."
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1778,189 +1812,185 @@ msgstr ""
"\n"
"# No implicit rules."
-#: rule.c:514
-#, c-format
+#: src/rule.c:548
+#, fuzzy, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
"# %u implicit rules, %u"
-#: rule.c:523
-msgid " terminal."
-msgstr " terminal."
-
-#: rule.c:531
+#: src/rule.c:557
#, fuzzy, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "BUG: num_pattern_rules wrong! %u != %u"
# It's no use to try to translate the signal names.
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "unknown signal"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Hangup"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "Interrupt"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Quit"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "Illegal Instruction"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "Trace/breakpoint trap"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Aborted"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "IOT trap"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "EMT trap"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "Floating point exception"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Killed"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "Bus error"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Segmentation fault"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "Bad system call"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "Broken pipe"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Alarm clock"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "Terminated"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "User defined signal 1"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "User defined signal 2"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "Child exited"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Power failure"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Stopped"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Stopped (tty input)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Stopped (tty output)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Stopped (signal)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "CPU time limit exceeded"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "File size limit exceeded"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "Virtual timer expired"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "Profiling timer expired"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "Window changed"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Continued"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "Urgent I/O condition"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "I/O possible"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "Resource lost"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Danger signal"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Information request"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "Floating point co-processor not available"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
"%s No strcache buffers\n"
msgstr ""
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -1968,77 +1998,77 @@ msgid ""
"B\n"
msgstr ""
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr ""
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
msgstr ""
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
msgstr ""
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
msgstr ""
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "automatic"
# These are printed under -p, so they are left in English.
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "default"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "environment"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "makefile"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "environment under -e"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "command line"
-#: variable.c:1647
+#: src/variable.c:1671
#, fuzzy
msgid "'override' directive"
msgstr "`override' directive"
-#: variable.c:1658
+#: src/variable.c:1682
#, fuzzy, c-format
msgid " (from '%s', line %lu)"
msgstr " (from `%s', line %lu):\n"
-#: variable.c:1721
+#: src/variable.c:1745
#, fuzzy
msgid "# variable set hash-table stats:\n"
msgstr "# %u variables in %u hash buckets.\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2046,7 +2076,7 @@ msgstr ""
"\n"
"# Variables\n"
-#: variable.c:1736
+#: src/variable.c:1760
#, fuzzy
msgid ""
"\n"
@@ -2055,7 +2085,7 @@ msgstr ""
"\n"
"# Pattern-specific variable values"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2063,7 +2093,7 @@ msgstr ""
"\n"
"# No pattern-specific variable values."
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
@@ -2072,47 +2102,47 @@ msgstr ""
"\n"
"# %u pattern-specific variable values"
-#: variable.h:224
+#: src/variable.h:229
#, fuzzy, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "`%.*s' øãâåî-éúìá äðúùî :úåøéäæ"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, fuzzy, c-format
msgid "sys$search() failed with %d\n"
msgstr "%d íò ìùëð sys$search\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr ".DCL-î CTRL-Y-á ìåôéè øåùôéàá êøåö úåéäì ìåìò :úåøéäæ\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "BUILTIN CD %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr ""
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, fuzzy, c-format
msgid "Append output to %s\n"
msgstr "%s-ì èìô úééðôä\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr ""
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "%s õéøî úàæ íå÷îá\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2120,12 +2150,12 @@ msgstr ""
"\n"
"# VPATH Search Paths\n"
-#: vpath.c:620
+#: src/vpath.c:620
#, fuzzy
msgid "# No 'vpath' search paths."
msgstr "# No `vpath' search paths."
-#: vpath.c:622
+#: src/vpath.c:622
#, fuzzy, c-format
msgid ""
"\n"
@@ -2134,7 +2164,7 @@ msgstr ""
"\n"
"# %u `vpath' search paths.\n"
-#: vpath.c:625
+#: src/vpath.c:625
#, fuzzy
msgid ""
"\n"
@@ -2143,7 +2173,7 @@ msgstr ""
"\n"
"# No general (`VPATH' variable) search path."
-#: vpath.c:631
+#: src/vpath.c:631
#, fuzzy
msgid ""
"\n"
@@ -2154,33 +2184,33 @@ msgstr ""
"# General (`VPATH' variable) search path:\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr ""
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr ""
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr ""
@@ -2247,6 +2277,12 @@ msgstr ""
#~ msgid "Error spawning, %d\n"
#~ msgstr "%d :úá-úéðëú úìòôäá äì÷ú\n"
+#~ msgid "%s: Command not found"
+#~ msgstr "äàöîð àì åæ äãå÷ô :%s"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "äàöîð àì shell úãå÷ô :%s"
+
#~ msgid "DIRECTORY"
#~ msgstr "DIRECTORY"
@@ -2292,6 +2328,14 @@ msgstr ""
#~ msgid "Consider FILE to be infinitely new"
#~ msgstr "øùôàù ùãç éëä äéä FILE åìéàë âäð"
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr ".úåéðù 30 ìù %s úééäùä"
+
+# Pay attention: this is written to the _right_ of the previous string,
+# but should look like a single sentence together with it.
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr " äîééúñð\n"
+
#~ msgid "Do not specify -j or --jobs if sh.exe is not available."
#~ msgstr ".ïéîæ åðéà sh.exe íà --jobs åà -j-á êåîúì ïúéð àì"
@@ -2333,6 +2377,9 @@ msgstr ""
#~ msgid "Leaving"
#~ msgstr "Leaving"
+#~ msgid "Unknown error %d"
+#~ msgstr "Unknown error %d"
+
#~ msgid "virtual memory exhausted"
#~ msgstr "éìàåèøéåä ïåøëæä øîâð"
@@ -2351,6 +2398,9 @@ msgstr ""
#~ msgid "target `%s' leaves prerequisite pattern empty"
#~ msgstr "ä÷éø íã÷ä úùéøã úéðáú úà äøéàùî `%s' äøèî"
+#~ msgid " terminal."
+#~ msgstr " terminal."
+
#~ msgid "# No variables."
#~ msgstr "# No variables."
diff --git a/po/hr.gmo b/po/hr.gmo
index a761ba2..2379f8f 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index 68a082d..b43c9d1 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -1,154 +1,136 @@
-# Translation of make to Croatian.
+# Translation of CNU make messages to Croatian.
# Copyright © 2016 Free Software Foundation, Inc.
# This file is distributed under the same license as the make package.
-# directive → direktiva (ne prevoditi kao „naredba“)
-# hash → hash (ostaviti engl.)
-# chain → lanac
-# jobserver → poslužitelj poslova, djelitelj zadataka
-# make (verb) → napraviti, praviti, proizvesti
-# make (imenica) → (program „make“ (ne sklanjati)
-# makefile → makefile (ne prevoditi, ali možda sklanjati ili, budući da je makefile datoteka, uvijek pisati ‘makefile’ datoteka)
-# archive member → pripadnik (arhive), a to je obiÄno datoteka, direktorij..
-# C structure member → Älan
-# pattern → uzorak
-# prerequisite → preduvjet
-# child (process) → potomak, ptomaÄki proces
-# parent (process) → predak, predaÄki proces
-# reap child → poÄisti potomka
-# # recipe → recept
-# target → cilj
-# token → token (ne prevoditi)
-# pipe → cijev (možda je bolje „kanal“)
-# pipeline → cjevovod (možda je bolje „kanal“)
+#
# Hrvoje Niksic <hniksic@xemacs.org>, 2002.
# Tomislav Krznar <tomislav.krznar@gmail.com>, 2012.
-# Božidar Putanec <bozidarp@yahoo.com>, 2016.
+# Božidar Putanec <bozidarp@yahoo.com>, 2016, 2018, 2019, 2020.
msgid ""
msgstr ""
-"Project-Id-Version: make 4.2\n"
+"Project-Id-Version: make 4.2.93\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
-"PO-Revision-Date: 2016-05-22 22:37-0700\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2020-01-06 11:39-0800\n"
"Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
"Language-Team: Croatian <lokalizacija@linux.hr>\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Lokalize 2.0\n"
+"X-Generator: Lokalize 19.04.3\n"
-#: ar.c:46
+#: src/ar.c:46
#, c-format
msgid "attempt to use unsupported feature: '%s'"
-msgstr "pokuÅ¡aj upotrebe ne podržane znaÄajke ‘%s’"
+msgstr "pokuÅ¡aj upotrebe nepodržane znaÄajke „%s“"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr ""
-"U VMS sustavu nije moguće ‘touch’ (ažurirati vrijeme modifikacije i "
-"pristupa\n"
-"datoteci) pripadnika (member) arhive"
+"u VMS sustavu nije moguće „touch“ (promijeniti vrijeme modifikacije)\n"
+"Älana arhive"
-#: ar.c:147
+#: src/ar.c:147
#, c-format
msgid "touch: Archive '%s' does not exist"
-msgstr "‘touch’: Arhiva ‘%s’ ne postoji"
+msgstr "touch: arhiva „%s“ ne postoji"
-#: ar.c:150
+#: src/ar.c:150
#, c-format
msgid "touch: '%s' is not a valid archive"
-msgstr "‘touch’: ‘%s’ nije valjana arhiva"
+msgstr "touch: „%s“ nije valjana arhiva"
-#: ar.c:157
+#: src/ar.c:157
#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
-msgstr "‘touch’: Pripadnik arhive ‘%s’ ne postoji u arhivi ‘%s’"
+msgstr "touch: Älan arhive „%s“ ne postoji u arhivi „%s“"
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
-msgstr "‘touch’: LoÅ¡ povratni kÈd iz ‘ar_member_touch’ na ‘%s’"
+msgstr "touch: ar_member_touch() na „%s“ nije uspjela"
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
-msgstr "lbr$set_module() neuspjelo izvući obavijesti o modulu, status = %d"
+msgstr "lbr$set_module() nije uspjela izvući obavijesti o modulu, status = %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
-msgstr "lbr$ini_control() nije uspio sa statusom = %d"
+msgstr "lbr$ini_control() nije uspjela, status = %d"
-#: arscan.c:261
+#: src/arscan.c:261
#, c-format
msgid "unable to open library '%s' to lookup member status %d"
-msgstr ""
-"nemoguće je otvoriti biblioteku ‘%s’ radi uvida u status pripadnika ‘%d’"
+msgstr "nemoguće je otvoriti biblioteku „%s“ radi uvida u status Älana %d"
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
-msgstr "Pripadnik arhive ‘%s’%s: %ld bajtova na adresi %ld (%ld).\n"
+msgstr "Član arhive „%s“%s: %ld bajtova na adresi %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
-msgstr " (ime je možda podrezano)"
+msgstr " (može biti da je skraćeno)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Datum %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
-msgstr " uid = %d, gid = %d, mod = 0%o.\n"
+msgstr " uid = %d, gid = %d, mÈd = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
-msgstr "Recept ima previše redova (%ud)"
+msgstr "Recept ima previše redaka (%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** Prekid.\n"
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
-msgstr "*** [%s] Pripadnik arhive ‘%s’ je možda lažan; nije izbrisan"
+msgstr "*** [%s] Član arhive „%s“ je možda lažan; nije izbrisani"
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
-msgstr "*** Pripadnik arhive ‘%s’ je možda lažan; nije izbrisan"
+msgstr "*** Član arhive „%s“ je možda lažan; nije izbrisani"
-#: commands.c:645
+#: src/commands.c:646
#, c-format
msgid "*** [%s] Deleting file '%s'"
-msgstr "*** [%s] Brišem datoteku ‘%s’"
+msgstr "*** [%s] Briše se datoteka „%s“"
-#: commands.c:647
+#: src/commands.c:648
#, c-format
msgid "*** Deleting file '%s'"
-msgstr "*** Brišem datoteku ‘%s’"
+msgstr "*** Briše se datoteka „%s“"
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
-msgstr "# recept koji treba primijeniti"
+msgstr "# pokrenuti recept"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (ugrađeno):"
-#: commands.c:688
+#: src/commands.c:689
#, c-format
msgid " (from '%s', line %lu):\n"
-msgstr " (iz ‘%s’, redak %lu):\n"
+msgstr " (iz „%s“, redak %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -156,225 +138,225 @@ msgstr ""
"\n"
"# Direktoriji\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
-msgstr "# %s: nemoguće ga je ‘stat’ (oÄitati mu status).\n"
+msgstr "# nije bilo moguće dobiti status od %s.\n"
-#: dir.c:1085
-#, fuzzy
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
msgstr ""
-"# %s (kljuÄ %s, mtime (vrijeme zadnje izmjene) %ull): nije se mogao "
-"otvoriti.\n"
+"# %s (kljuÄ %s, vrijeme zadnje izmjene %I64u): nije bilo moguće otvoriti.\n"
# inode > index in a table of contents or an inode in a Unix-like file system > iÄvor
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
-msgstr "# %s (uređaj %d, inode [%d,%d,%d]): nije moguće otvoriti.\n"
+msgstr "# %s (uređaj %d, inode [%d,%d,%d]): nije bilo moguće otvoriti.\n"
# An inode is a data structure on a filesystem on Linux and other Unix-like operating systems that stores all the information about a file except its name and its actual data.
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
-msgstr "# %s (uređaj %ld, inode %ld): nije moguće otvoriti.\n"
+msgstr "# %s (uređaj %ld, inode %ld): nije bilo moguće otvoriti.\n"
-#: dir.c:1122
-#, fuzzy
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
-msgstr "# %s (kljuÄ %s, mtime (vrijeme zadnje izmjene) %ull): "
+msgstr "# %s (kljuÄ %s, vrijeme zadnje izmjene %I64u): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (uređaj %d, inode [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (uređaj %ld, inode %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "Ne"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " datoteke, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "ne"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " nemogućnosti"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " do sada."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " nemogućnosti u %lu direktorija.\n"
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
-msgstr "Rekurzivna varijabla ‘%s’ ukazuje na samu sebe (u konaÄnici)"
+msgstr "Rekurzivna varijabla „%s“ ukazuje na samu sebe (u konaÄnici)"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "nedovršena referencija na varijablu"
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
-msgstr "Recept za datoteku ‘%s’ bio je naveden u %s:%lu,"
+msgstr "Recept za datoteku „%s“ bio je naveden u %s:%lu,"
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
-msgstr "Recept za datoteku ‘%s’ bio je nađen pretragom po implicitnom pravilu,"
+msgstr "Recept za datoteku „%s“ je pronađen u implicitnim pravilima,"
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
-msgstr "ali ‘%s’ se sada smatra istom datotekom kao i ‘%s’."
+msgstr "ali „%s“ se sada smatra istom datotekom kao i „%s“."
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
-msgstr "Recept za ‘%s’ će se zanemariti u korist onog za ‘%s’."
+msgstr "Recept za „%s“ će se ignorirati a koristit će se „%s“."
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr ""
-"‘%s’ s jednom dvotoÄkom ne može se preimenovati u ‘%s’ s dvije dvotoÄke"
+"ne može se preimenovati „%s“ s jednom dvotoÄkom u „%s“ s dvije dvotoÄke"
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr ""
-"‘%s’ s dvije dvotoÄke ne može se preimenovati u ‘%s’ s jednom dvotoÄkom"
+"ne može se preimenovati „%s“ s dvije dvotoÄke u „%s“ s jednom dvotoÄkom"
-#: file.c:408
+#: src/file.c:408
#, c-format
msgid "*** Deleting intermediate file '%s'"
-msgstr "*** Brisanje prijelazne datoteke ‘%s’"
+msgstr "*** Briše se privremena posredna datoteka „%s“"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
-msgstr "Uklanjanje prijelaznih datoteka...\n"
+msgstr "Uklanjanju se privremene posredne datoteke...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "TrenutaÄno vrijeme"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
-msgstr "%s: Vremenska oznaka je izvan granica; zamjenjuje se s %s"
+msgstr "%s: Vremenski žig je izvan granica raspona; zamjenjuje se s %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# Nije cilj (target):"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
-msgstr "# Vrijedna datoteka (preduvjet za .PRECIOUS)."
+msgstr "# Vrijedna (precious) datoteka (preduvjet za .PRECIOUS)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
-msgstr "# Lažni cilj (target) (preduvjet za .PHONY)."
+msgstr "# Lažni (phony) cilj (preduvjet za .PHONY)."
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# Cilj naredbenog retka."
# Zadan > standardni
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
-msgstr "# Standardni MAKEFILES, ili ‘-include/sinclude’ makefile."
+msgstr "# Zadani Makefile, MAKEFILES, ili include/sinclude-makefile"
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
msgstr "# Ugrađeno pravilo"
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
-msgstr "# Pretraživanje po implicitnom pravilu je izvršeno."
+msgstr "# Provedeno je pretraživanje pomoću implicitnih pravila."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
-msgstr "# Pretraživanje po implicitnom pravilu nije izvršeno."
+msgstr "# Nije provedeno pretraživanje pomoću implicitnih pravila."
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
-msgstr "# Korijen implicitnog ili statiÄkog uzorka: ‘%s’\n"
+msgstr "# Implicitni ili statiÄki korijen uzorka: „%s“\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
-msgstr "# Datoteka je prijelazni preduvjet."
+msgstr "# Datoteka je privremeni posredni preduvjet."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# Također napravi:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
-msgstr "# Vrijeme zadnje izmjene nikad nije provjereno."
+msgstr "# Nikad nije provjereno vrijeme zadnje izmjene"
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# Datoteka ne postoji."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# Datoteka je vrlo stara."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
-msgstr "# Zadnja promjena %s\n"
+msgstr "# Vrijeme zadnje promjene %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# Datoteka je bila ažurirana."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# Datoteka nije bila ažurirana."
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
-msgstr "# Recept koji se trenutaÄno izvrÅ¡ava (OVO JE BUG)."
+msgstr "# Recept koji se još uvijek izvršava (OVO JE PROGRAMSKA GREŠKA)."
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
-msgstr "# Recept o ovisnostima koji se upravo izvršava (OVO JE BUG)."
+msgstr ""
+"# Recept za ovisnosti koji se još uvijek izvršava (OVO JE PROGRAMSKA GREŠKA)"
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
-msgstr "# Uspješno ažuriran."
+msgstr "# Uspješno ažurirano."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
-msgstr "# Ažuriranje je potrebno (opcija -q je dana)."
+msgstr "# Ažuriranje je nužno (opcija -q je dana)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# Ažuriranje nije uspjelo."
-#: file.c:1032
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
-msgstr "# Neispravna vrijednost u ‘command_state’ Älanu!"
+msgstr "# Nevaljana vrijednost u command_state Älanu!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -382,7 +364,7 @@ msgstr ""
"\n"
"# Datoteke"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -392,740 +374,735 @@ msgstr ""
"# status datoteka hash-tablice:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
-msgstr "%s: Polja ‘%s’ nema u međuspremniku (nije ‘cached’): %s"
+msgstr "%s: Polja „%s“ nema u predmemoriji (nije cached): %s"
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
-msgstr "prvi argument funkcije ‘word’ nije broj"
+msgstr "prvi argument funkcije „word“ nije broj"
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
-msgstr "prvi argument funkcije ‘word’ mora biti veći od 0"
+msgstr "prvi argument funkcije „word“ mora biti veći od 0"
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
-msgstr "prvi argument funkcije ‘wordlist’ nije broj"
+msgstr "prvi argument funkcije „wordlist“ nije broj"
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
-msgstr "drugi argument funkcije ‘wordlist’ nije broj"
+msgstr "drugi argument funkcije „wordlist“ nije broj"
-#: function.c:1525
+#: src/function.c:1533
#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
-msgstr ""
-"windows32_openpipe: DuplicateHandle(In) neuspjeÅ¡na, kÈd greÅ¡ke (e=%ld)\n"
+msgstr "windows32_openpipe: DuplicateHandle(In) nije uspješna (e=%ld)\n"
-#: function.c:1549
+#: src/function.c:1557
#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr ""
-"windows32_open_pipe: DuplicateHandle(Err) neuspjeÅ¡na, kÈd greÅ¡ke (e=%ld)\n"
+msgstr "windows32_open_pipe: DuplicateHandle(Err) nije uspješna (e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
-msgstr "CreatePipe() neuspjeÅ¡na, neuspjeÅ¡na, kÈd greÅ¡ke (e=%ld)\n"
+msgstr "CreatePipe() nije uspješna (e=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
-msgstr "windows32_openpipe(): process_init_fd() neuspješna\n"
+msgstr "windows32_openpipe(): process_init_fd() nije uspješna\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
-msgstr "ÄŒistim privremenu naredbenu (batch) datoteku %s.\n"
+msgstr "Izbrisana je privremena (batch) datoteka %s.\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
-msgstr "datoteka: nedostaje naziv datoteke"
+msgstr "datoteka: nema imena datoteke"
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
msgstr "open(): %s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
msgstr "write(): %s: %s"
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, c-format
msgid "close: %s: %s"
msgstr "close(): %s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr "datoteka: previše argumenata"
-#: function.c:2262
+#: src/function.c:2277
#, c-format
msgid "read: %s: %s"
msgstr "read(): %s: %s"
-#: function.c:2275
+#: src/function.c:2290
#, c-format
msgid "file: invalid file operation: %s"
-msgstr "datoteka: neispravna datoteÄna operacija: %s"
+msgstr "datoteka: nevaljana operacija na datoteci: %s"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
-msgstr "nedovoljan broj argumenata (samo %d) za funkciju ‘%s’"
+msgstr "nedovoljan broj argumenata (%d) za funkciju „%s“"
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
-msgstr "nije implementirano na ovoj platformi: funkcija ‘%s’"
+msgstr "nije implementirana na ovoj platformi: funkcija „%s“"
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
-msgstr "nedovršeni poziv funkciji ‘%s’: nedostaje ‘%c’"
+msgstr "nedovršeni poziv funkciji „%s“: nedostaje %c"
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr "Prazno ime funkcije"
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
-msgstr "Neispravan naziv funkcije: %s"
+msgstr "Nevaljani naziv funkcije: %s"
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr "Naziv funkcije je predugaÄak: %s"
-#: function.c:2657
+#: src/function.c:2674
#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
-msgstr "Neispravan minimalni broj argumenata (%u) za funkciju %s"
+msgstr "Nevaljani minimalni broj argumenata (%u) za funkciju %s"
-#: function.c:2660
+#: src/function.c:2677
#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
-msgstr "Neispravan maksimalni broj argumenata (%u) za funkciju %s"
+msgstr "Nevaljani maksimalni broj argumenata (%u) za funkciju %s"
-#: getopt.c:659
+#: src/getopt.c:659
#, c-format
msgid "%s: option '%s' is ambiguous\n"
-msgstr "%s: opcija ‘%s’ nije jednoznaÄna\n"
+msgstr "%s: opcija „%s“ je dvosmislena\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
-msgstr "%s: opcija ‘--%s’ ne dopušta argument\n"
+msgstr "%s: opcija „--%s“ ne dopušta argument\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr "%s: opcija ‘%c%s’ ne dopušta argument\n"
+msgstr "%s: opcija „%c%s“ ne dopušta argument\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, c-format
msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: opcija ‘%s’ zahtijeva argument\n"
+msgstr "%s: opcija „%s“ zahtijeva argument\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, c-format
msgid "%s: unrecognized option '--%s'\n"
-msgstr "%s: nepoznata opcija ‘--%s’\n"
+msgstr "%s: neprepoznata opcija „--%s“\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
-msgstr "%s: nepoznata opcija ‘%c%s’\n"
+msgstr "%s: neprepoznata opcija „%c%s“\n"
# * 1003.2 specifies the format of this message. */
# fprintf (stderr, _("%s: illegal option -- %c\n"),
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
-msgstr "%s: ilegalna opcija -- %c\n"
+msgstr "%s: nepropisna opcija -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
-msgstr "%s: neispravna opcija -- %c\n"
+msgstr "%s: nevaljana opcija -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: opcija zahtijeva argument -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
-msgstr "%s: opcija ‘-W %s’ nije jednoznaÄna\n"
+msgstr "%s: opcija „-W %s“ je dvosmislena\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr "%s: opcija ‘-W %s’ ne dopušta argument\n"
+msgstr "%s: opcija „-W %s“ ne dopušta argument\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
-msgstr "‘guile’: Proširuje se '%s'\n"
+msgstr "guile: Proširuje se „%s“\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
-msgstr "‘guile’: Ocjenjuje se '%s'\n"
+msgstr "guile: Procjena „%s“\n"
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
-msgstr "ne mogu dodijeliti %lu bajtova za hash-tablicu: nema dovoljno memorije"
+msgstr "ne može dodijeliti %lu bajtova za hash-tablicu: nema dovoljno memorije"
-#: hash.c:280
+#: src/hash.c:280
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "Opterećenje=%ld/%ld=%.0f%%, "
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "Opterećenje=%lu/%lu=%.0f%%, "
-#: hash.c:282
+#: src/hash.c:282
#, c-format
-msgid "Rehash=%d, "
-msgstr "(Preraditi) Rehash=%d, "
+msgid "Rehash=%u, "
+msgstr "Rehash=%u, "
# možda bi bolje bilo > Kontradikcije
-#: hash.c:283
+#: src/hash.c:283
#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "Sudari=%ld/%ld=%.0f%%"
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "Sudari=%lu/%lu=%.0f%%"
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
-msgstr "Potraga za implicitnim pravilom za ‘%s’.\n"
+msgstr "Potraga za implicitnim pravilom za „%s“.\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
-msgstr "Traži se implicitno pravilo za pripadnika arhive za ‘%s’\n"
+msgstr "Traži se implicitno pravilo za Älana arhive za „%s“\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
-msgstr "Izbjegavanje rekurzije implicitnog pravila.\n"
+msgstr "SprjeÄavanje rekurzije implicitnog pravila.\n"
-#: implicit.c:486
+#: src/implicit.c:484
#, c-format
-msgid "Stem too long: '%.*s'.\n"
-msgstr "Korijen je predugaÄak: ‘%.*s’.\n"
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "Predugi korijen uzorka: „%s%.*s“.\n"
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
-msgstr "Pokušaj primijene pravila s korijenom ‘%.*s’.\n"
+msgstr "Isprobava se pravilo s korijenom uzorka „%.*s“.\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
-msgstr "Odbacivanje nemogućeg preduvjeta pravila ‘%s’.\n"
+msgstr "Odbija se nemogući preduvjet pravila „%s“.\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
-msgstr "Odbacivanje nemogućeg implicitnog preduvjeta ‘%s’.\n"
+msgstr "Odbija se nemogući implicitni preduvjet „%s“.\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
-msgstr "Pokušaj primjene pravila preduvjeta ‘%s’.\n"
+msgstr "Isprobava se pravilo preduvjeta „%s“.\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
-msgstr "Pokušaj primjene implicitnog preduvjeta ‘%s’.\n"
+msgstr "Isprobava se implicitni preduvjet „%s“.\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
-msgstr "Nađen preduvjet ‘%s’ kao VPATH ‘%s’\n"
+msgstr "Nađeni preduvjet „%s“ kao VPATH „%s“\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
-msgstr "Potraga za pravilom s prijelaznom datotekom ‘%s’.\n"
+msgstr "Potraga za pravilom s privremenom posrednom datotekom „%s“.\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
-msgstr "Nemoguće je napraviti privremenu datoteku\n"
+msgstr "Ne može se stvoriti privremena datoteka\n"
# A core dump is a file of a computer's documented memory of when a program or computer crashed.
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
-msgstr " (napravljen ispis memorije)"
+msgstr " (**krah**: stanje memorije je dokumentirano!)"
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
-msgstr " (zanemareno)"
+msgstr " (ignorira se)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
msgstr "<ugrađeno>"
-#: job.c:510
+#: src/job.c:573
#, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "%s[%s: %s] Greška %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
-msgstr "*** Čekanje na završetak nedovršenih poslova...."
+msgstr "*** Čeka se na nedovršene poslove...."
# child > dijete > potomak; pridjev potamaÄki
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
-msgstr "Aktivni potomaÄki proces %p (%s) PID %s %s\n"
+msgstr "Živi potomak (nedovršeni dijete-proces) %p (%s) PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
-msgstr " (udaljen)"
+msgstr " (udaljeno)"
+
+#: src/job.c:898
+#, c-format
+msgid "Reaping winning child %p PID %s %s\n"
+msgstr "Čišćenje iza uspješnog potomka (dijete-procesa) %p PID %s %s\n"
# reap (in cs) > To terminate a child process that has previously exited, thereby removing it from the process table
# Until a child process is reaped, it may be listed in the process table as a zombie or defunct process.
-#: job.c:831
+#: src/job.c:899
#, c-format
msgid "Reaping losing child %p PID %s %s\n"
-msgstr "PoÄišćen je neuspjeÅ¡no zavrÅ¡eni potomaÄki proces %p PID %s %s\n"
-
-#: job.c:832
-#, c-format
-msgid "Reaping winning child %p PID %s %s\n"
-msgstr "PoÄišćen je uspjeÅ¡no zavrÅ¡eni potomaÄki proces %p PID %s %s\n"
+msgstr "Čišćenje iza neuspješnoga potomka (dijete-procesa) %p PID %s %s\n"
# batch file > naredbena datoteka sustava (skript datoteka)
-#: job.c:839
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
-msgstr "ÄŒistim privremenu naredbenu (batch) datoteku %s\n"
+msgstr "Čišćenje iza privremene (batch) datoteke %s\n"
-#: job.c:845
+#: src/job.c:956
#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
-msgstr ""
-"Čišćenje privremene naredbene (batch) datoteke %s nije uspjelo, greška (%d)\n"
+msgstr "Čišćenje iza privremene (batch) datoteke %s nije uspjelo (%d)\n"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
-msgstr "Potomak %p PID %s%s uklonjen je iz lanca.\n"
+msgstr "Potomak (dijete-proces) %p PID %s%s je uklonjen iz lanca.\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
-msgstr "Oslobođen je token za potomka %p (%s).\n"
+msgstr "Oslobođen je token za potomka (dijete-procesa) %p (%s).\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
-msgstr "process_easy() nije uspio pokrenuti proces (e=%ld)\n"
+msgstr "process_easy() nije uspjela pokrenuti proces (e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
"Counted %d args in failed launch\n"
msgstr ""
"\n"
-"Prilikom neuspjelog starta izbrojeno je %d argumenata\n"
+"%d argumenata izbrojeno je pri neuspjelom pokretanju\n"
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
-msgstr "Dodavanje potomka %p (%s) PID %s%s u lanac potomaka.\n"
+msgstr "Umetanje potomka (dijete-procesa) %p (%s) PID %s%s u lanac.\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
-msgstr "Dobiven token za potomka %p (%s).\n"
+msgstr "Dobiveni je token za potomka (dijete-procesa) %p (%s).\n"
-#: job.c:1838
+#: src/job.c:1902
#, c-format
msgid "%s: target '%s' does not exist"
-msgstr "%s: cilj '%s' ne postoji"
+msgstr "%s: cilj „%s“ ne postoji"
-#: job.c:1841
+#: src/job.c:1905
#, c-format
msgid "%s: update target '%s' due to: %s"
-msgstr "%s: ažuriraj cilj '%s' zbog: %s"
+msgstr "%s: ažurira cilj „%s“ za potrebe: %s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
-msgstr "ovaj operativni sustav ne dopuÅ¡ta ograniÄenje opterećenja"
+msgstr "ne mogu se nametnuti granice opterećenja na ovom operacijskom sustavu"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
-msgstr "nemoguće je ograniÄiti opterećenje: "
+msgstr "ne može nametnuti granice opterećenja: "
# In Unix and related computer operating systems, a file descriptor is an abstract indicator (handle) used to access a file
# stdin > standardni ulaz
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr ""
-"nema viÅ¡e datoteÄnih deskriptora: ‘stdin’ (standardni ulaz)\n"
-"ne može se duplicirati\n"
+"nema viÅ¡e datoteÄnih kvaÄica: nije se mogao duplicirati standardni ulaz\n"
# stdout > standardni izlaz
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr ""
-"nema viÅ¡e datoteÄnih deskriptora: ‘stdout’ (standardni izlaz)\n"
-"se ne može kopirati\n"
+"nema viÅ¡e datoteÄnih kvaÄica: nije se mogao duplicirati standardni izlaz\n"
# stderr > standard error
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr ""
-"nema viÅ¡e datoteÄnih deskriptora: ‘stderr’ (standardna greÅ¡ka)\n"
-"se ne može kopirati\n"
+"nema viÅ¡e datoteÄnih kvaÄica: nije se mogao duplicirati\n"
+"standardni izlaz za greške\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
-msgstr "‘stdin’ (stadardni ulaz) se ne može obnoviti\n"
+msgstr "Nije moguće obnoviti standardni ulaz\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
-msgstr "standardni izlaz ‘stdout’ se ne može obnoviti\n"
+msgstr "Nije moguće obnoviti standardni izlaz\n"
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
-msgstr "‘stderr’ (standardna greška) se ne može obnoviti\n"
+msgstr "Nije moguće obnoviti standardni izlaz greški\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr ""
-"‘make’ je poÄistio potomaÄki proces pid %s, ali joÅ¡ uvijek Äeka na pid %s\n"
-
-#: job.c:2275
-#, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: %s: Naredba nije pronađena\n"
+"make je poÄistio potomka (dijete-proces) PID %s, ali joÅ¡ uvijek Äeka na PID "
+"%s\n"
-#: job.c:2277
+#: src/job.c:2623
#, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s[%u]: %s: Naredba nije pronađena\n"
-
-#: job.c:2337
-#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: Ljuskin (shell) program nije pronađen"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
-msgstr "‘spawnvpe’: u programskom okružju možda nema dovoljno mjesta"
+msgstr "spawnvpe: može biti da u okolini nema dovoljno prostora"
-#: job.c:2584
+#: src/job.c:2862
#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
-msgstr "Varijabla $SHELL se promijenila (prije ‘%s’, sada ‘%s’)\n"
+msgstr "Varijabla $SHELL se promijenila (prije „%s“, sada „%s“)\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
-msgstr "Stvaram privremenu naredbenu (batch) datoteku %s\n"
+msgstr "Stvara se privremena (batch) datoteka %s\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
msgstr ""
-"Sadržaj naredbene (batch) datoteke:\n"
+"Sadržaj (batch) datoteke:\n"
"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
"\t%s\n"
msgstr ""
-"Sadržaj naredbene (batch) datoteke:%s\n"
+"Sadržaj (batch) datoteke:%s\n"
"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
-msgstr ""
-"%s (redak %d) Loš ljuskin (shell) kontekst (!unixy && !batch_mode_shell)\n"
+msgstr "%s (redak %d) Loši kontekst ljuske (!unixy && !batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr "Opcija -O[TYPE] (--output-sync[=TYPE]) nije ugrađena u ovaj program."
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr "Otvaranje globalne tablice simbola nije uspjelo: %s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr "UÄitani objekt %s nema deklaraciju da je kompatibilan s GPL-om"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
-msgstr "UÄitavanje simbola %s nije uspjelo iz %s: %s"
+msgstr "Simbol %s iz %s nije uspjelo uÄitati: %s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
-msgstr "Ime simbola kojeg treba uÄitati je prazno: %s"
+msgstr "Prazno ime simbola za uÄitati: %s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
-msgstr "UÄitavanje simbola %s iz %s\n"
+msgstr "UÄitava se simbol %s iz %s\n"
-#: load.c:256
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
-msgstr "Operacija ‘load’ nije podržana na ovoj platformi."
+msgstr "Operacija load nije podržana na ovoj platformi."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "Opcije:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
-msgstr " -b, -m Zanemarena zbog kompatibilnosti.\n"
+msgstr " -b, -m ignorira se zbog kompatibilnosti\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
-msgstr ""
-" -B, --always-make Bezuvjetno izradi sve ciljeve (targets).\n"
+msgstr " -B, --always-make bezuvjetno napravi sve ciljeve\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
msgstr ""
" -C DIREKTORIJ, --directory=DIREKTORIJ\n"
-" PrijeÄ‘i u DIREKTORIJ prije poÄetka rada.\n"
+" prije poÄetka rada prijeÄ‘e u DIREKTORIJ\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
-msgstr " -d Ispiši puno podataka za debugiranje.\n"
+msgstr " -d ispisuje puno podataka za debugiranje\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
-" --debug[=ZASTAVICE] Ispiši razne vrste informacija za "
-"debugiranje.\n"
+" --debug[=ZASTAVICE] ispisuje razne vrste informacija za "
+"debugiranje\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
msgstr ""
" -e, --environment-overrides\n"
-" Varijable okružja imaju prednost\n"
-" (nadjaÄavaju ih) nad varijablama\n"
-" iz ‘makefile’ datoteka\n"
+" uÄini da „make“ rabi varijable okoline "
+"umjesto\n"
+" tih istih varijabli iz Makefiles\n"
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
-msgstr ""
-" --eval=NIZ NIZ tretiraj kao da je direktiva\n"
-" ‘makefile’ datoteke.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
+msgstr " -E STRING, --eval=STRING evaluira STRING kao Makefile direktivu\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
msgstr ""
" -f DATOTEKA, --file=DATOTEKA, --makefile=DATOTEKA\n"
-" UÄitaj DATOTEKU kao ‘makefile’ datoteku.\n"
+" Äita i koristi DATOTEKU kao Makefile\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
-msgstr " -h, --help prikaži ovu pomoć i iziđi.\n"
+msgstr " -h, --help ova pomoć\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
-msgstr " -i, --ignore-errors Zanemari greške u receptima.\n"
+msgstr " -i, --ignore-errors ignorira sve greške u receptima\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
msgstr ""
" -I DIREKTORIJ, --include-dir=DIREKTORIJ\n"
-" Traži ukljuÄene ‘makefiles’ u DIREKTORIJU.\n"
+" traži include-Makefiles u DIREKTORIJU\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
msgstr ""
-" -j [N], --jobs[=N] Dopusti N istovremenih poslova; bez argumenta\n"
-" nema ograniÄenja.\n"
+" -j [N], --jobs[=N] dopušta N istovremenih poslova; ako se "
+"izostavi\n"
+" argument N, nema ograniÄenja broju poslova\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
-" -k, --keep-going Nastavi s radom iako se neki ciljevi "
-"(targets)\n"
-" ne mogu izraditi.\n"
+" -k, --keep-going nastavlja raditi (iako se neki od ciljeva\n"
+" ne mogu napraviti).\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
"N.\n"
msgstr ""
" -l [N], --load-average[=N], --max-load[=N]\n"
-" Ne pokreći više poslova istovremeno, osim ako\n"
-" je opterećenje ispod N.\n"
+" ne pokreće više poslova istovremeno ako\n"
+" je opterećenje veće od N\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
msgstr ""
-" -L, --check-symlink-times Rabi najnovije vrijeme izmjene ‘mtime’ između\n"
-" simboliÄkih poveznica i cilja (target)\n"
+" -L, --check-symlink-times od simboliÄke veze i njezinoga cilja koristi\n"
+" se kasnije vrijeme izmjene (mtime)\n"
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
"them.\n"
msgstr ""
" -n, --just-print, --dry-run, --recon\n"
-" Ne izrađuj nijedan recept, samo ih ispiši.\n"
+" ne pokreće recepte već ih samo ispiše\n"
# remake > make (something) again or differently.
# remake > gl. prepraviti, preurediti / im. prepravak, prerada
# na nov naÄin, drugaÄije urediti, izmijeniti da na drugi naÄin služi svrsi; preureÄ‘enje, preureÄ‘en.
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
"it.\n"
msgstr ""
" -o DATOTEKA, --old-file=DATOTEKA, --assume-old=DATOTEKA\n"
-" Ne prerađuj DATOTEKU, jer je vrlo stara.\n"
+" ne obnavlja DATOTEKU jer je vrlo stara\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
msgstr ""
-" -O[TYPE], --output-sync[=TYPE]\n"
-" Sinkroniziraj izlaz paralelnih poslova po "
-"TYPE.\n"
+" -O[TYPE], --output-sync[=TIP]\n"
+" TIP sinkronizacije izlaznih paralelnih "
+"poslova\n"
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
-msgstr " -p, --print-data-base Ispiši ‘make’ internu bazu podataka.\n"
+msgstr ""
+" -p, --print-data-base ispiše internu bazu podataka „make“ programa\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
msgstr ""
-" -q, --question Ne izrađuj recepte; status izlaza pokazuje\n"
-" ako je sve ažurirano.\n"
+" -q, --question ne pokreće recepte; izlazni status pokaže\n"
+" jesu li aktualni\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
-msgstr " -r, --no-builtin-rules Onemogući ugrađena implicitna pravila.\n"
+msgstr " -r, --no-builtin-rules onemogući ugrađena implicitna pravila\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr ""
-" -R, --no-builtin-variables Onemogući ugrađene vrijednosti varijabli.\n"
+" -R, --no-builtin-variables onemogući ugrađene vrijednosti varijabli\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
-msgstr " -s, --silent, --quiet Ne ispisuj recepte.\n"
+msgstr " -s, --silent, --quiet ne ispisuje recepte\n"
+
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" --no-silent odjekuje recepte (poniÅ¡ti --silent naÄin)\n"
-#: main.c:393
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
msgstr ""
" -S, --no-keep-going, --stop\n"
-" IskljuÄi -k.\n"
+" ukida opciju -k\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
-" -t, --touch Umjesto prerade ciljeva (targets) samo ih "
-"takni\n"
-" (‘touch’: oznaÄi ih kao da su "
-"aktualizirani)\n"
+" -t, --touch „touch“ (ažurira vrijeme) ciljeve umjesto\n"
+" da ih iznova napravi\n"
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
-msgstr " -d Ispiši puno podataka za debugiranje.\n"
+msgstr ""
+" -d ispisuje informacije praćenja (tracing)\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
-msgstr ""
-" -v, --version IspiÅ¡i obavijesti o ‘make’ inaÄici i iziÄ‘i.\n"
+msgstr " -v, --version informacije o ovoj inaÄici programa\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
-msgstr " -w, --print-directory IspiÅ¡i trenutaÄni direktorij.\n"
+msgstr " -w, --print-directory ispiÅ¡e trenutaÄni direktorij\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
msgstr ""
-" --no-print-directory IskljuÄi -w, premda je implicitno ukljuÄen.\n"
+" --no-print-directory ukida opciju -w (Äak i ako je implicirana)\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
msgstr ""
" -W DATOTEKA, --what-if=DATOTEKA, --new-file=DATOTEKA, --assume-"
"new=DATOTEKA\n"
-" Smatraj da je DATOTEKA uvijek nova.\n"
+" smatra da je DATOTEKA zauvijek nova\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
msgstr ""
-" --warn-undefined-variables Upozori ako se spomene nedefinirana "
-"varijabla.\n"
+" --warn-undefined-variables upozori na referiranje nedefinirane varijable\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
-msgstr "prazan niz nije ispravan naziv datoteke"
+msgstr "prazni string nije valjano ime datoteke"
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
-msgstr "nepoznata specifikacija ‘%s’ razine debugiranja"
+msgstr "nepoznata specifikacija „%s“ za razinu dijagnostike"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
-msgstr "nepoznata vrsta ‘%s’ ‘output-sync’"
+msgstr "nepoznati tip sinkronizacije izlaza „%s“"
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
-msgstr "%s: Uhvaćen prekid ili iznimka (kÈd = 0x%lx, adresa = 0x%p)\n"
+msgstr "%s: Prekid/iznimka primljena (kÈd = 0x%lx, adresa = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1140,184 +1117,189 @@ msgstr ""
"ExceptionFlags = %lx\n"
"ExceptionAddress = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
-msgstr "Pristupni prekršaj: pokušaj pisanja na adresi 0x%p\n"
+msgstr "Povreda prava pristupa: operacija pisanja na adresi 0x%p\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
-msgstr "Pristupni prekrÅ¡aj: pokuÅ¡aj Äitanja na adresi 0x%p\n"
+msgstr "Povreda prava pristupa: operacija Äitanja na adresi 0x%p\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell() postavlja default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
-msgstr "find_and_set_shell() pretragom putanje postavlja default_shell = %s\n"
-
-#: main.c:1538
-#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s zaustavljen na 30 sekundi..."
-
-#: main.c:1540
-#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "završeno je 30 sekunda spavanja. Nastavlja se.\n"
+msgstr "find_and_set_shell() pretragom staze postavlja default_shell = %s\n"
# parent > roditelj > predak; pridjev predaÄki
-#: main.c:1627
+#: src/main.c:1609
+#, c-format
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
-"upozorenje: poslužitelj poslova je nedostupan: koristi se -j1.\n"
-"Dodajte ‘+’ predaÄkom (parent) ‘make’ pravilu."
+"upozorenje: jobserver nije dostupni: koristi se -j1.\n"
+"Dodajte „+“ make pravilu pretka (parent)"
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
-msgstr ""
-"upozorenje: -jN je prinudno zadan u ‘submake’:\n"
-"naÄin rada poslužitelja poslova je onemogućen."
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
+msgstr "upozorenje: -j%d je forsiran u submake: resetira mÈd jobservera."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
-msgstr "‘Makefile’ je dva puta naveden na standardnom ulazu."
+msgstr "Makefile je dva puta naveden na standardnom ulazu."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (privremena datoteka)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (privremena datoteka)"
-#: main.c:2048
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr "upozorenje: -j%d je forsiran u makefile: resetira mÈd jobservera."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr "Paralelni poslovi (-j) nisu podržani na ovoj platformi."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "Povratak na naÄin rada s jednim poslom (-j1)."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
-msgstr "SimboliÄke poveznice nisu podržane: onemogućuje se -L."
+msgstr "SimboliÄke veze nisu podržane: onemogućuje se -L."
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
-msgstr "Ažuriram ‘makefiles’....\n"
+msgstr "Ažuriraju se Makefiles....\n"
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
-msgstr "‘Makefile’ ‘%s’ bi mogao ući u petlju; neće se prerađivati.\n"
+msgstr "Makefile „%s“ bi mogao ući u petlju; neće se ponovno napraviti.\n"
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
-msgstr "Neuspjeh prerade datoteke ‘makefile’ ‘%s’."
+msgstr "Nije uspjelo ponovno napraviti Makefile „%s“."
-#: main.c:2299
+#: src/main.c:2323
#, c-format
msgid "Included makefile '%s' was not found."
-msgstr "UkljuÄena datoteka ‘makefile’ ‘%s’ nije pronaÄ‘ena."
+msgstr "„%s“ include-Makefile nije bio pronađen."
-#: main.c:2304
+#: src/main.c:2328
#, c-format
msgid "Makefile '%s' was not found"
-msgstr "Datoteka ‘makefile’ ‘%s’ nije pronađena"
+msgstr "Makefile „%s“ nije pronađen"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
-msgstr "Ne mogu se vratiti u poÄetni direktorij."
+msgstr "Ne bilo moguće vratiti se u izvorni direktorij."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "Ponovno izvršavanje[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (privremena datoteka): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
-msgstr ".DEFAULT_GOAL sadrži više od jednog cilja"
-
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Nijedan cilj nije naveden i nijedna ‘makefile’ datoteka nije pronađena"
+msgstr ".DEFAULT_GOAL sadrži više od jednoga cilja"
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "Nema ciljeva"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Nije navedeni nijedan cilj i nije pronađeni nijedan Makefile"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
-msgstr "Ciljevi (targets) za željeni rezultat (goal) se ažuriraju ....\n"
+msgstr "Ažuriraju se ciljevi....\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr ""
-"upozorenje: Otkriven je problem sa satom. Izrada možda nije kompletno "
-"dovršena."
+"upozorenje: Otkriveni je problem sa satom. Kompilacija možda nije kompletna."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "Uporaba: %s [opcije] [cilj] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
"This program built for %s\n"
msgstr ""
"\n"
-"Ovaj program je napravljen za %s\n"
+"Ovaj program je proizveden za %s\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
"This program built for %s (%s)\n"
msgstr ""
"\n"
-"Ovaj program je napravljen za %s (%s)\n"
+"Ovaj program je proizveden za %s (%s)\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr ""
"Greške (bugs) na engleskom javite na <bug-make@gnu.org>\n"
"Pogreške u prijevodu i vaše prijedloge javite na <lokalizacija@linux.hr>\n"
-#: main.c:2870
+#: src/main.c:2901
#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
-msgstr "opcija ‘%s%s’ zahtijeva kao argument niz koji nije prazan"
+msgstr "opcija %s%s zahtijeva neprazni string za argument"
-#: main.c:2934
+#: src/main.c:2965
#, c-format
msgid "the '-%c' option requires a positive integer argument"
-msgstr "opcija ‘-%c’ zahtijeva za argument pozitivan prirodni broj"
+msgstr "opcija -%c zahtijeva pozitivni cijeli broj za argument"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
-msgstr "%sNapravljen za %s\n"
+msgstr "%sProizvedeno za %s\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
-msgstr "%sNapravljen za %s (%s)\n"
+msgstr "%sProizvedeno za %s (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1326,541 +1308,573 @@ msgid ""
"%sThere is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
"%sLicencija GPLv3+: GNU GPL inaÄica 3 ili kasnija\n"
-" <http://gnu.org/licenses/gpl.html>\n"
-"%sOvo je slobodan softver: slobodno ga mijenjajte i dijelite.\n"
-"%sNEMA JAMSTVA, do granica dopuštenih zakonom.\n"
+"v. <http://gnu.org/licenses/gpl.html>\n"
+"%sOvo je slobodan softver: slobodno ga mijenjajte i distribuirajte.\n"
+"%sNEMA JAMSTVA do granica dopuštenih zakonom.\n"
"Pogreške u prijevodu i vaše prijedloge javite na <lokalizacija@linux.hr>\n"
"\n"
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
"# Make data base, printed on %s"
msgstr ""
"\n"
-"# ‘Make’ baza podataka, ispisana na %s"
+"# „Make“ baza podataka, ispisana na %s"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
"# Finished Make data base on %s\n"
msgstr ""
"\n"
-"# ‘Make’ baza podataka zgotovljena na %s\n"
-
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Nepoznata greška %d"
+"# Gotova „Make“ baza podataka je spremna na %s\n"
# Da prevedem ovo?
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
-msgstr "%s: korisnik %lu (zapravo %lu), grupa %lu (zapravo %lu)\n"
+msgstr "%s: korisnik %lu (stvarni %lu), grupa %lu (stvarna %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
-msgstr "Inicijaliziran pristup"
+msgstr "Pristup je iniciran"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
-msgstr "KorisniÄki pristup"
+msgstr "Pristup korisnikom"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
-msgstr "‘Make’ pristup"
+msgstr "Pristup make-om"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
-msgstr "PotomaÄki proces"
+msgstr "Pristup potomkom (dijete-proces)"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
-msgstr "%s: Ulazak u nepoznat direktorij\n"
+msgstr "%s: Unos nepoznatoga direktorija\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
-msgstr "%s: Izlazak iz nepoznatog direktorija\n"
+msgstr "%s: Nema nepoznatoga direktorija\n"
-#: output.c:109
+#: src/output.c:102
#, c-format
msgid "%s: Entering directory '%s'\n"
-msgstr "%s: Ulazak u direktorij ‘%s’\n"
+msgstr "%s: Ulazi se u direktorij „%s“\n"
-#: output.c:111
+#: src/output.c:104
#, c-format
msgid "%s: Leaving directory '%s'\n"
-msgstr "%s: Izlazak iz direktorija ‘%s’\n"
+msgstr "%s: Izlazi se iz direktorija „%s“\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "%s[%u]: Ulazak u nepoznat direktorij\n"
+msgstr "%s[%u]: Unos nepoznatoga direktorija\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
-msgstr "%s[%u]: Izlazak iz nepoznatog direktorija\n"
+msgstr "%s[%u]: Nema nepoznatoga direktorija\n"
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
-msgstr "%s[%u]: Ulazak u direktorij ‘%s’\n"
+msgstr "%s[%u]: Ulazi se u direktorij „%s“\n"
-#: output.c:122
+#: src/output.c:115
#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
-msgstr "%s[%u]: Izlazak iz direktorija ‘%s’\n"
+msgstr "%s[%u]: Izlazi se iz direktorija „%s“\n"
-#: output.c:495 output.c:497
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
-msgstr "greška pisanja: stdout (standardni izlaz)"
+msgstr "greška pisanja: standardni izlaz (stdout)"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
-msgstr ". Svršetak.\n"
+msgstr ". Zaustavljeno.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+"Opcija -O[TYPE] (--output-sync[=TYPE]) nije ugrađena u ovu kompilaciju."
+
# In computer science, an anonymous pipe is a simplex FIFO communication channel that may be used for one-way interprocess communication (IPC). An implementation is often integrated into the operating system's file IO subsystem.
-#: posixos.c:69
+#: src/posixos.c:90
msgid "creating jobs pipe"
-msgstr "kreiranje cijevi za poslove (jobs pipe)"
+msgstr "stvaranje cijevi za poslove"
# http://make.mad-scientist.net/papers/jobserver-implementation/
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
-msgstr "dupliciranje cijevi za poslove (jobs pipe)"
+msgstr "stvaranje kopije cijevi za poslove"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
-msgstr "inicijalizacija cijevi poslužitelja poslova (jobserver pipe)"
+msgstr "inicijalizacija cijevi jobservera"
-#: posixos.c:90
+#: src/posixos.c:119
#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
-msgstr "interna greška: neispravan niz ‘%s’ za --jobserver-auth"
+msgstr "**interna greška**: nevaljani string „%s“ za --jobserver-auth"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
-msgstr "Klijent poslužitelja poslova (fds %d,%d)\n"
+msgstr "Klijent jobservera (fds %d,%d)\n"
# In computing, a pipeline is a set of data processing elements connected in series, where the output of one element is the input of the next one.
-#: posixos.c:109
+#: src/posixos.c:138
msgid "jobserver pipeline"
-msgstr "cjevovod (pipeline) poslužitelja poslova"
+msgstr "cjevovod (pipeline) jobservera"
# Što bi ovdje trebalo ići?
-# bp: iz izvornog koda, možda ovo.
-#: posixos.c:154
+# bp: iz izvornog kÈda, možda ovo.
+#: src/posixos.c:186
msgid "write jobserver"
-msgstr "zapis poslužitelja poslova"
+msgstr "zapis jobservera"
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr "jobserver iskljuÄen"
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
-msgstr "‘pselect’ cijevi poslova (jobs pipe)"
+msgstr "pselect() cijevi poslova"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
-msgstr "Äitanje poslova s cijevi (jobs pipe)"
+msgstr "Äitanje iz cijevi poslova"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
-msgstr "Čitanje ‘makefiles’ datoteka...\n"
+msgstr "ÄŒitaju se Makefiles...\n"
-#: read.c:329
+#: src/read.c:336
#, c-format
msgid "Reading makefile '%s'"
-msgstr "Čitanje ‘makefile’ datoteke ‘%s’"
+msgstr "Čita se Makefile „%s“"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
-msgstr " (nema standardnog cilja)"
+msgstr " (nema zadanog cilja)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
-msgstr " (putanja pretraživanja)"
+msgstr " (staza pretraživanja)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (nije važno)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (bez proširivanja znaka ~)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
-msgstr "UTF-8 BOM u ‘makefile’ datoteci '%s' se preskaÄe\n"
+msgstr "PreskaÄe se UTF-8 BOM u Makefile „%s“\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
-msgstr "UTF-8 BOM u ‘makefile’ meÄ‘umemoriji se preskaÄe\n"
+msgstr "PreskaÄe se UTF-8 BOM u Makefile meÄ‘uspremniku\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
-msgstr "neispravna sintaksa u uvjetu"
+msgstr "nevaljana sintaksa u uvjetnom izrazu"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr "%s: uÄitavanje nije uspjelo"
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
-msgstr "recept poÄinje ispred prvog cilja"
+msgstr "recept zapoÄinje prije prvog cilja"
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
-msgstr "nedostaje pravilo ispred recepta"
+msgstr "nema pravila prije recepta"
-#: read.c:1124
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
-msgstr "nedostaje separator (Mislili ste TAB umjesto 8 razmaka?)"
+msgstr "nema separatora (Mislili ste TAB umjesto 8 razmaka?)"
# Grr, živjela engleska množina! I što sad da radim s onim %s-om?
-#: read.c:1126
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
-msgstr "nedostaje separator"
+msgstr "nema separatora"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
-msgstr "nedostaje uzorak za cilj"
+msgstr "nema uzorka za cilj"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
-msgstr "višestruki uzorci za cilj"
+msgstr "nekoliko uzoraka za cilj"
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
-msgstr "uzorak cilja ne sadrži ‘%%’"
+msgstr "uzorak cilja ne sadrži „%%“"
-#: read.c:1390
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
-msgstr "nedostaje ‘endif’"
+msgstr "nema „endif“"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "prazno ime varijable"
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
-msgstr "suvišan tekst nakon direktive ‘define’"
+msgstr "suvišni tekst nakon „define“ direktive"
-#: read.c:1488
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
-msgstr "nedostaje ‘endef’, nedovršen ‘define’"
+msgstr "nema „endef“, nedovršeni „define“"
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
-msgstr "suvišan tekst nakon direktive ‘endef’"
+msgstr "suvišni tekst nakon „endef“ direktive"
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
-msgstr "suvišan tekst nakon direktive ‘%s’"
+msgstr "suvišni tekst nakon „%s“ direktive"
-#: read.c:1589
+#: src/read.c:1604
#, c-format
msgid "extraneous '%s'"
-msgstr "suvišan ‘%s’"
+msgstr "suvišni „%s“"
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
-msgstr "samo jedan ‘else’ po uvjetu"
+msgstr "samo jedan „else“ po uvjetnom izrazu"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
-msgstr "Nepravilno formirana definicija varijable specifiÄne za cilj"
+msgstr "Deformirana definicija varijable specifiÄne za cilj"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
-msgstr "preduvjeti ne mogu biti definirani u receptima"
+msgstr "preduvjeti se ne mogu definirani u receptima"
+
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr "grupirani ciljevi moraju predati recept"
-#: read.c:2009
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
-msgstr "pomijeÅ¡ana su implicitna pravila i pravila sa statiÄkim uzorcima"
+msgstr "pomijeÅ¡ana su implicitna i statiÄka uzorak-pravila"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "pomiješana su implicitna i normalna pravila"
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
-msgstr "cilj ‘%s’ se ne podudara s uzorkom cilja"
+msgstr "cilj „%s“ se ne podudara s uzorkom cilja"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
-msgstr ""
-"u ciljnu datoteku ‘%s’ uneseni su (dvotoÄka) ‘:’ i (dvije dvotoÄke) ‘::’"
+msgstr "ciljna datoteka „%s“ sadrži „:“ i „::“"
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
-msgstr "cilj ‘%s’ je naveden više od jedanput u istom pravilu."
+msgstr "cilj „%s“ je naveden više od jedanput u istom pravilu"
# prebrisati> brišući ukloniti, brišući poništiti, prebrisati dio teksta, odbaciti
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
-msgstr "upozorenje: recept za cilj ‘%s’ se poništava i preformira"
+msgstr "upozorenje: ignorira se recept za cilj „%s“"
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
-msgstr "upozorenje: stari recept za cilj ‘%s’ se zanemaruje"
+msgstr "upozorenje: ignorira se stari recept za cilj „%s“"
-#: read.c:2223
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr ""
"*** pomiješana su implicitna i normalna pravila: to je zastarjela sintaksa"
-#: read.c:2542
+# prebrisati> brišući ukloniti, brišući poništiti, prebrisati dio teksta, odbaciti
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "upozorenje: ignorira se Älanstvo grupe za cilj „%s“"
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
-msgstr "upozorenje: proÄitan je NUL znak; ostatak retka se zanemaruje"
+msgstr "upozorenje: proÄitani je NUL znak; ostatak retka se ignorira"
-#: remake.c:226
+#: src/remake.c:226
#, c-format
msgid "Nothing to be done for '%s'."
-msgstr "Ništa za napraviti za ‘%s’."
+msgstr "Nema ništa za napraviti za „%s“."
-#: remake.c:227
+#: src/remake.c:227
#, c-format
msgid "'%s' is up to date."
-msgstr "‘%s’ je ažuriran."
+msgstr "„%s“ je ažurirani."
-#: remake.c:323
+#: src/remake.c:323
#, c-format
msgid "Pruning file '%s'.\n"
-msgstr "ProÄišćavanje datoteke ‘%s’.\n"
+msgstr "Čišćenje datoteke „%s“.\n"
-#: remake.c:406
+#: src/remake.c:389
#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
-msgstr "%sNema pravila za izradu cilja ‘%s’, potrebnog za ‘%s’%s"
+msgstr "%sNema pravila za izradu cilja „%s“ koji je potrebni za „%s“%s"
-#: remake.c:416
+#: src/remake.c:399
#, c-format
msgid "%sNo rule to make target '%s'%s"
-msgstr "%sNema pravila za izradu cilja ‘%s’%s"
+msgstr "%sNema pravila za izradu cilja „%s“%s"
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
-msgstr "Razmatranje ciljne datoteke ‘%s’.\n"
+msgstr "Razmatra se ciljna datoteka „%s“.\n"
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
-msgstr "Nedavni pokušaj ažuriranja datoteke ‘%s’ nije uspio.\n"
+msgstr "Nedavni pokušaj ažuriranja datoteke „%s“ nije uspio.\n"
-#: remake.c:461
+#: src/remake.c:444
#, c-format
msgid "File '%s' was considered already.\n"
-msgstr "Datoteka ‘%s’ je već bila razmatrana.\n"
+msgstr "Datoteka „%s“ je već bila razmatrana.\n"
-#: remake.c:471
+#: src/remake.c:454
#, c-format
msgid "Still updating file '%s'.\n"
-msgstr "Datoteka ‘%s’ se još uvijek ažurira.\n"
+msgstr "Datoteka „%s“ se još uvijek ažurira.\n"
-#: remake.c:474
+#: src/remake.c:457
#, c-format
msgid "Finished updating file '%s'.\n"
-msgstr "Ažuriranje datoteke ‘%s’ je završeno.\n"
+msgstr "Ažuriranje datoteke „%s“ je završeno.\n"
-#: remake.c:503
+#: src/remake.c:486
#, c-format
msgid "File '%s' does not exist.\n"
-msgstr "Datoteka ‘%s’ ne postoji.\n"
+msgstr "Datoteka „%s“ ne postoji.\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
msgstr ""
-"*** Upozorenje: .LOW_RESOLUTION_TIME datoteka ‘%s’ ima vremensku oznaku "
-"visoke toÄnosti"
+"*** Upozorenje: .LOW_RESOLUTION_TIME datoteka „%s“ ima\n"
+" vremensku oznaku visoke rezolucije"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
-msgstr "Pronađeno je implicitno pravilo za ‘%s’.\n"
+msgstr "Pronađeno je implicitno pravilo za „%s“.\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
-msgstr "Nijedno implicitno pravilo nije pronađeno za ‘%s’.\n"
+msgstr "Nijedno implicitno pravilo nije pronađeno za „%s“.\n"
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
-msgstr "Rabi se standardni recept za ‘%s’.\n"
+msgstr "Rabi se zadani recept za „%s“.\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "Kružna ovisnost %s <- %s je odbaÄena."
-#: remake.c:691
+#: src/remake.c:674
#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
-msgstr "Završeni su preduvjeti za ciljnu datoteku ‘%s’.\n"
+msgstr "Preduvjeti za ciljnu datoteku „%s“ su gotovi.\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
-msgstr "Preduvjeti za ‘%s’ se izrađuju.\n"
+msgstr "Preduvjeti za „%s“ se izrađuju.\n"
-#: remake.c:711
+#: src/remake.c:694
#, c-format
msgid "Giving up on target file '%s'.\n"
-msgstr "Odustajem od ciljne datoteke ‘%s’.\n"
+msgstr "Odustaje se od izrade ciljne datoteke „%s“.\n"
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
-msgstr "Cilj ‘%s’ nije prerađen (ponovno izrađen) zbog grešaka."
+msgstr "Cilj „%s“ nije bio zbog grešaka ponovno izrađen."
# Nisam siguran da sam ovo ispravno shvatio.
# bp: impose a specific ordering on the rules to be invoked without forcing the target to be updated if one of those rules is executed
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr ""
-"Preduvjet ‘%s’ je ‘order-only’ za cilj ‘%s’.\n"
-" ‘order-only’: ‘make’ neće preraditi (remake) „normalne“ recepte ako se "
-"izmjeni\n"
-" vremenska oznaka na ‘order-only’ cilju (target) (normalno, ‘make’ uvijek "
-"preradi\n"
-" (remake) recepte, kad god se izmjeni vremenska oznaka na bilo kojem "
-"objektu).\n"
+"Preduvjet „%s“ je order-only za cilj „%s“.\n"
+"order-only: make neće preraditi (remake) „normalne“ recepte ako se izmjeni\n"
+"vremenska oznaka na order-only cilju (normalno, make uvijek preradi\n"
+"recepte kad god se izmjeni vremenska oznaka na bilo kojem objektu).\n"
-#: remake.c:773
+#: src/remake.c:756
#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
-msgstr "Preduvjet ‘%s’ za cilj ‘%s’ ne postoji.\n"
+msgstr "Preduvjet „%s“ za cilj „%s“ ne postoji.\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
-msgstr "Preduvjet ‘%s’ je noviji (mlađi) nego od od njega ovisan cilj ‘%s’.\n"
+msgstr "Preduvjet „%s“ je noviji nego od od njega ovisni cilj „%s“.\n"
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
-msgstr "Preduvjet ‘%s’ je stariji nego od od njega ovisan cilj ‘%s’.\n"
+msgstr "Preduvjet „%s“ je stariji nego od od njega ovisni cilj „%s“.\n"
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
-msgstr "Cilj ‘%s’ je s dvotoÄkom i nema preduvjeta.\n"
+msgstr "Cilj „%s“ je s dvije dvotoÄke i nema preduvjeta.\n"
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr ""
-"Nema recepta za ‘%s’ i nijedan od preduvjeta zapravo nije promijenjen.\n"
+"Nema recepta za „%s“ i zapravo nijedan od preduvjeta nije promijenjen.\n"
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
-msgstr "‘%s’ se zbog zastavice ‘always-make’ ponovno izrađuje.\n"
+msgstr "„%s“ se zbog zastavice always-make ponovno izrađuje.\n"
-#: remake.c:819
+#: src/remake.c:802
#, c-format
msgid "No need to remake target '%s'"
-msgstr "Nema potrebe preraditi cilj ‘%s’"
+msgstr "Nema potrebe preraditi cilj „%s“"
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
-msgstr "; rabi se naziv ‘%s’ za VPATH"
+msgstr "; rabi se naziv „%s“ za VPATH"
-#: remake.c:841
+#: src/remake.c:824
#, c-format
msgid "Must remake target '%s'.\n"
-msgstr "Cilj ‘%s’ se mora preraditi.\n"
+msgstr "Cilj „%s“ se mora preraditi.\n"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
-msgstr " Zanemaruje se naziv ‘%s’ za VPATH.\n"
+msgstr " Zanemaruje se naziv „%s“ za VPATH.\n"
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
-msgstr "Recept za ‘%s’ se upravo primjenjuje.\n"
+msgstr "Recept za „%s“ se upravo izvršava.\n"
-#: remake.c:863
+#: src/remake.c:846
#, c-format
msgid "Failed to remake target file '%s'.\n"
-msgstr "Prerada (remake) ciljne datoteke ‘%s’ nije uspjela.\n"
+msgstr "Prerada ciljne datoteke „%s“ nije uspjela.\n"
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
-msgstr "Ciljna datoteka ‘%s’ je uspješno prerađena .\n"
+msgstr "Ciljna datoteka „%s“ je uspješno prerađena.\n"
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
-msgstr ""
-"Ciljnu datoteku ‘%s’ treba ponovno preraditi (remake) s opcijom ‘-q’.\n"
+msgstr "Ciljnu datoteku „%s“ treba ponovno preraditi s opcijom -q.\n"
-#: remake.c:1064
+#: src/remake.c:1047
#, c-format
msgid "Using default commands for '%s'.\n"
-msgstr "Rabe se standardne naredbe za ‘%s’.\n"
+msgstr "Rabe se zadane naredbe za „%s“.\n"
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr ""
-"Upozorenje: Vremenska oznaka modifikacije datoteke ‘%s’ je u budućnosti"
-
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr ""
-"Upozorenje: Vremenska oznaka modifikacije datoteke ‘%s’ je za %s s u "
-"budućnosti"
+"Upozorenje: Vremenska oznaka modifikacije datoteke „%s“ je za\n"
+" %s sekunda u budućnosti"
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
-msgstr ".LIBPATTERNS Älan ‘%s’ nije uzorak"
+msgstr ".LIBPATTERNS Älan „%s“ nije uzorak"
# Customs' is literal (a library name). See README.customs.
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
-msgstr "‘Customs’ nije eksportiran: %s\n"
+msgstr "Customs nije moguće eksportirati: %s\n"
+
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
-#: rule.c:496
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -1868,7 +1882,7 @@ msgstr ""
"\n"
"# Implicitna pravila"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1876,197 +1890,193 @@ msgstr ""
"\n"
"# Nema implicitnih pravila."
-#: rule.c:514
+#: src/rule.c:548
#, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
-"# %u implicitnih pravila, %u"
+"# %u implicitnih pravila, %u (%.1f%%) terminal"
-#: rule.c:523
-msgid " terminal."
-msgstr " terminal."
-
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
-msgstr "BUG: pogrešan ‘num_pattern_rules’! %u != %u"
+msgstr "BUG: pogrešna num_pattern_rules! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
-msgstr "nepoznat signal"
+msgstr "nepoznati signal"
# Keep signal names in sync with GNU libc translations.
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
-msgstr "Završetak (SIGHUP)"
+msgstr "Terminal zatvoren (SIGHUP)"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
-msgstr "Prekid (SIGINT)"
+msgstr "Prekini (SIGINT)"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
-msgstr "Kraj (SIGQUIT)"
+msgstr "Završi"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
-msgstr "Nedopuštena instrukcija (SIGILL)"
+msgstr "Nepropisna instrukcija"
# Breakpoint trap just means the processor has hit a breakpoint.Your process is running more than one thread.
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
-msgstr "Prekid na kontrolnoj toÄki (SIGTRAP)"
+msgstr "Trace/breakpoint (SIGTRAP)"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Prekid (SIGABRT)"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "IOT zamka (SIGIOT)"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "EMT zamka (SIGEMT)"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
-msgstr "Iznimka (operacije) s pomiÄnim zarezom/toÄkom (SIGFPE)"
+msgstr "Iznimka (broja) pomiÄnog zareza (SIGFPE)"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
-msgstr "Uklonjen (SIGKILL)"
+msgstr "Ubijen (SIGKILL)"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "SabirniÄka greÅ¡ka (SIGBUS)"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Segmentacijska greška (SIGSEGV)"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
-msgstr "Nepravilan poziv sustavu (SIGSYS)"
+msgstr "Loši sustavski poziv (SIGSYS)"
# a condition in programming (also known in POSIX as EPIPE error code and SIGPIPE signal), when a process requests an output to pipe or socket, which was closed by peer
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
-msgstr "Prekinuta cijev (pipe) (SIGPIPE)"
+msgstr "Prekinuta cijev (SIGPIPE)"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Budilica (SIGALRM)"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
-msgstr "Završen (SIGTERM)"
+msgstr "Završeno (SIGTERM)"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "Korisnikom definiran signal 1 (SIGUSR1)"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "Korisnikom definiran signal 2 (SIGUSR2)"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
-msgstr "Potomak je gotov (SIGCHLD)"
+msgstr "Potomak (child process) je završio (SIGCHLD)"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
-msgstr "Prekid napajanja (SIGPWR)"
+msgstr "Prekinuto napajanje (SIGPWR)"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
-msgstr "Zaustavljen (SIGTSTP)"
+msgstr "Zaustavljeno"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
-msgstr "Zaustavljen (tty ulaz) (SIGTTIN)"
+msgstr "Zaustavljeno (tty ulaz) (SIGTTIN)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
-msgstr "Zaustavljen (tty izlaz) (SIGTTOU)"
+msgstr "Zaustavljeno (tty izlaz) (SIGTTOU)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
-msgstr "Zaustavljen (signal) (SIGSTOP)"
+msgstr "Zaustavljeno (signal) (SIGSTOP)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
-msgstr "PremaÅ¡eno ograniÄenje procesorskog vremena (SIGXCPU)"
+msgstr "PrekoraÄeno je vremensko ograniÄenje procesora (SIGXCPU)"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
-msgstr "PrekoraÄena je dopuÅ¡tena veliÄina datoteke (SIGXFS2)"
+msgstr "PrekoraÄeno ograniÄenje veliÄine datoteke (SIGXFS2)"
# Kako prevesti "virtual timer"?
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
-msgstr "Virtualno vrijeme (odbrojavanje vremena) je isteklo (SIGVTALRM)"
+msgstr "Virtualni tajmer je istekao (SIGVTALRM)"
# Kako prevesti "profiling timer"?
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
-msgstr "Vrijeme (odbrojavanje vremena) za profiliranje je isteklo (SIGPROF)"
+msgstr "Isteklo je vrijeme za profiliranj (SIGPROF)"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
-msgstr "Prozor promijenjen (SIGWINCH)"
+msgstr "Promjena veliÄine prozora (SIGWINCH)"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
-msgstr "Nastavljen (SIGCONT)"
+msgstr "Nastavlja se (SIGCONT)"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
-msgstr "Hitna U/I situacija"
+msgstr "Hitno U/I stanje"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
-msgstr "U/I moguć (SIGURG)"
+msgstr "U/I je sada moguć"
# Jesu li ova dva signala vic ili Å¡to? U svakom sluÄaju, ovo su samo
# descriptioni. Za svaki sluÄaj, nisam ih dirao.
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
-msgstr "(SIGWIND) Prozor je izmijenjen"
+msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
-msgstr "(SIGPHONE) Promjena statusa tel. linije"
+msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
-msgstr "Resurs izgubljen (SIGLOST)"
+msgstr "Resurs je izgubljen (SIGLOST)"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Signal za opasnost (SIGDANGER)"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
-msgstr "Zahtjev za obavijestima (SIGINFO)"
+msgstr "Zahtjev za informacijom (SIGINFO)"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "Koprocesor za rad s pomiÄnim zarezom/toÄkom nije dostupan (SIGNOFP)"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
"%s No strcache buffers\n"
msgstr ""
"\n"
-"%s Nema međumemorija za ‘strcache’\n"
+"%s Nema međuspremnika za strcache\n"
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -2074,40 +2084,40 @@ msgid ""
"B\n"
msgstr ""
"\n"
-"%s ‘strcache’ međumemorije: %lu (%lu) / nizova = %lu\n"
-" / pohrana = %lu B / prosjek = %lu B\n"
+"%s strcache međuspremnici: %lu (%lu) / stringova = %lu\n"
+" pohrana = %lu B / prosjek = %lu B\n"
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
-"%s trenutaÄna meÄ‘umemorija: veliÄina = %hu B / upotreba = %hu B\n"
-" / broj = %hu / prosjek = %hu B\n"
+"%s trenutaÄni meÄ‘uspremnik: veliÄina = %hu B / koriÅ¡teno = %hu B\n"
+" broj = %hu / prosjek = %u B\n"
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
-msgstr "%s ostala upotreba: ukupno = %lu B / broj = %lu / prosjek = %lu B\n"
+msgstr "%s ostalo korišteno: ukupno = %lu B / broj = %lu / prosjek = %lu B\n"
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
msgstr ""
-"%s ostalo slobodno: ukupno = %lu B / max = %lu B / min = %lu B / prosjek = "
-"%hu B\n"
+"%s ostalo slobodno: ukupno = %lu B / max = %lu B / min = %lu B\n"
+" prosjek = %hu B\n"
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
msgstr ""
"\n"
-"%s ‘strcache’ uÄinkovitost: pretrage = %lu / postotak pogodaka = %lu%%\n"
+"%s strcache uÄinkovitost: pretraga = %lu / pogodaka = %lu%%\n"
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
@@ -2115,45 +2125,45 @@ msgstr ""
"# statistika hash-tablice:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "automatsko"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
-msgstr "standardno"
+msgstr "zadano"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
-msgstr "okružje"
+msgstr "okolina"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
-msgstr "makefile"
+msgstr "Makefile"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
-msgstr "okružje pod -e"
+msgstr "okolina pod -e"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "naredbeni redak"
-#: variable.c:1647
+#: src/variable.c:1671
msgid "'override' directive"
-msgstr "‘override’ direktiva"
+msgstr "„override“ direktiva"
-#: variable.c:1658
+#: src/variable.c:1682
#, c-format
msgid " (from '%s', line %lu)"
-msgstr " (iz ‘%s’, redak %lu)"
+msgstr " (iz „%s“, redak %lu)"
# https://en.wikipedia.org/wiki/Hash_table
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr "# statistika varijabli u hash-tablici:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2161,7 +2171,7 @@ msgstr ""
"\n"
"# Varijable\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
@@ -2169,7 +2179,7 @@ msgstr ""
"\n"
"# Vrijednosti varijabli specifiÄne za uzorke"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2177,132 +2187,157 @@ msgstr ""
"\n"
"# Nema vrijednosti varijabli specifiÄne za uzorke."
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
"# %u pattern-specific variable values"
msgstr ""
"\n"
-"# %u uzorcima specifiÄne vrijednosti varijabli"
+"# %u vrijednosti varijabli specifiÄne za uzorke"
-#: variable.h:224
+#: src/variable.h:229
#, c-format
msgid "warning: undefined variable '%.*s'"
-msgstr "upozorenje: nedefinirana varijabla ‘%.*s’"
+msgstr "upozorenje: nedefinirana varijabla %.*s"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
-msgstr "neuspješan sys$search() s greškom %d\n"
+msgstr "neuspješna sys$search() s greškom %d\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr ""
"-upozorenje, možda ćete morati ponovno omogućiti obrađivanje CTRL-Y iz DCL-"
"a.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
-msgstr "UGRAÄEN CD %s\n"
+msgstr "UGRAÄENI CD %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr "DCL: %s\n"
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr "Izlaz pripojen na kraj %s\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr "%.*s pripojiti i poÄistiti\n"
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
-msgstr "Izvršava se %s radije\n"
+msgstr "Umjesto toga izvršava se %s\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
msgstr ""
"\n"
-"# VPATH putanje za pretraživanje\n"
+"# VPATH staza za pretraživanje\n"
-#: vpath.c:620
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
-msgstr "# Nema ‘vpath’ putanja za pretraživanje."
+msgstr "# Nema „vpath“ staze za pretraživanje."
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
"# %u 'vpath' search paths.\n"
msgstr ""
"\n"
-"# %u ‘vpath’ putanje za pretraživanje.\n"
+"# %u „vpath“ staza za pretraživanje.\n"
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
msgstr ""
"\n"
-"# Nema općenite putanje za pretraživanje (varijabla ‘VPATH’)."
+"# Nema općenite („VPATH“ varijable) staze za pretraživanje."
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
"# "
msgstr ""
"\n"
-"# Općenita putanja za pretraživanje (varijabla ‘VPATH’):\n"
+"# Općenita („VPATH“ varijabla) staza za pretraživanje:\n"
"# "
-#: w32/w32os.c:46
+# If the ‘-j’ option is followed by an integer, this is the number of recipes to execute at once; this is called the number of job slots. If there is nothing looking like an integer after the ‘-j’ option, there is no limit on the number of job slots. The default number of job slots is one, which means serial execution (one thing at a time).
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
-msgstr ""
-"Broj vremenskih odsjeÄaka (slots) poslužitelja poslova je ograniÄen na %d\n"
+msgstr "Jobserver broj mjesta je ograniÄen na %d\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
-msgstr "kreiranje semafora poslužitelja poslova: (Greška %ld: %s)"
+msgstr "kreiranje semafora jobservera: (Greška %ld: %s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr ""
-"interna greška: semafor ‘%s’ poslužitelja poslova je nemoguće otvoriti:\n"
-"(Greska%ld: %s)"
+"**interna greška**: nije moguće otvoriti semafor\n"
+" jobservera „%s“: (Greška %ld: %s)"
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
-msgstr "Klijent poslužitelja poslova (semafor %s)\n"
+msgstr "Klijent jobservera (semafor %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
-msgstr "oslobađanje semafora poslužitelja poslova: (Greška %ld: %s)"
+msgstr "oslobađanje semafora jobservera: (Greška %ld: %s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
-msgstr "Äekanje na semafor ili potomaÄki proces (GreÅ¡ka %ld: %s)"
+msgstr "Äekanje na semafor ili na potomka (dijete-procesa): (GreÅ¡ka %ld: %s)"
+
+#~ msgid "%s: %s: Command not found\n"
+#~ msgstr "%s: %s: Naredba nije pronađena\n"
+
+#~ msgid "%s[%u]: %s: Command not found\n"
+#~ msgstr "%s[%u]: %s: Naredba nije pronađena\n"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s: Shell program (ljuska: interpreter komandi) nije pronađen"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s će spavati 30 sekundi..."
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "prošlo je 30 sekunda spavanja. Nastavlja se.\n"
+
+#~ msgid "Unknown error %d"
+#~ msgstr "Nepoznata greška %d"
+
+#~ msgid "Warning: File '%s' has modification time in the future"
+#~ msgstr ""
+#~ "Upozorenje: Vremenska oznaka modifikacije datoteke „%s“ je u budućnosti"
+
+#~ msgid " terminal."
+#~ msgstr " terminal."
#~ msgid "# Invalid value in `update_status' member!"
-#~ msgstr "# Neispravna vrijednost u elementu „update_statusâ€!"
+#~ msgstr "# Nevaljana vrijednost u elementu „update_statusâ€!"
#~ msgid "*** [%s] Error 0x%x (ignored)"
#~ msgstr "*** [%s] Greška 0x%x (zanemarena)"
@@ -2386,7 +2421,7 @@ msgstr "Äekanje na semafor ili potomaÄki proces (GreÅ¡ka %ld: %s)"
#~ msgstr "Nemojte koristiti -j ili --jobs ako sh.exe nije dostupan."
#~ msgid "Resetting make for single job mode."
-#~ msgstr "Resetiram make u mod jednog posla."
+#~ msgstr "Resetiram make u mÈd jednog posla."
#~ msgid ""
#~ "%sThis is free software; see the source for copying conditions.\n"
diff --git a/po/id.gmo b/po/id.gmo
index eb153a1..c66e931 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index f8c2cb1..f2d8702 100644
--- a/po/id.po
+++ b/po/id.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU make 4.0\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
"PO-Revision-Date: 2014-07-30 18:30+0700\n"
"Last-Translator: Arif E. Nugroho <arif_endro@yahoo.com>\n"
"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
@@ -15,113 +15,115 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
-#: ar.c:46
+#: src/ar.c:46
#, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "usaha untuk menggunakan layanan yang tidak didukung: '%s'"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "touch anggota archive tidak tersedia di VMS"
-#: ar.c:147
+#: src/ar.c:147
#, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "touch: Archive '%s' tidak ada"
-#: ar.c:150
+#: src/ar.c:150
#, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "touch: '%s' bukan archive yang valid"
-#: ar.c:157
+#: src/ar.c:157
#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "touch: Anggota '%s' tidak terdapat dalam '%s'"
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr "touch: Kode kembali tidak baik dari ar_member_touch pada '%s'"
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr "lbr$set_module() gagal untuk mengekstrak info module, status = %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "lbr$ini_control() gagal dengan status = %d"
-#: arscan.c:261
+#: src/arscan.c:261
#, fuzzy, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr "tidak dapat membuka perpustakaan '%s' untuk melihat anggota '%s'"
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr "Anggota '%s'%s: %ld bytes pada %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (nama mungkin akan di potong)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Tanggal %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, mode = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr "Recipe has too many lines (%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** Berhenti.\n"
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr "*** [%s] Anggota archive '%s' mungkin palsu: tidak dihapus"
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr "*** Anggota archive '%s' mungkin palsu; tidak dihapus"
-#: commands.c:645
+#: src/commands.c:646
#, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] Menghapus berkas '%s'"
-#: commands.c:647
+#: src/commands.c:648
#, c-format
msgid "*** Deleting file '%s'"
msgstr "*** Menghapus berkas '%s'"
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
msgstr "# perintah untuk dijalankan"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (bawaan):"
-#: commands.c:688
+#: src/commands.c:689
#, c-format
msgid " (from '%s', line %lu):\n"
msgstr " (dari '%s', baris %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -129,219 +131,221 @@ msgstr ""
"\n"
"# Direktori\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: tidak dapat melihat statistik.\n"
-#: dir.c:1085
+#: src/dir.c:1089
#, fuzzy
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
msgstr "# %s (kunci %s, mtime %d): tidak dapat dibuka.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr "# %s (perangkat %d, inode [%d,%d,%d]): tidak dapat dibuka.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr "# %s (perangkat %ld, inode %ld): tidak dapat dibuka.\n"
-#: dir.c:1122
+#: src/dir.c:1126
#, fuzzy
msgid "# %s (key %s, mtime %I64u): "
msgstr "# %s (kunci %s, mtime %d): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (perangkat %d, inode [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (perangkat %ld, inode %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "Tidak"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " berkas, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "tidak"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " tidak mungkin"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " sejauh ini."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " tidak mungkin dalam direktori %lu.\n"
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr "Variabel rekursif '%s' menunjuk pada dirinya sendiri"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "referensi variabel tidak diselesaikan"
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr "Perintah di spesifikasikan untuk berkas '%s' di %s:%lu,"
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr "Perintah untuk berkas '%s' ditemukan dalam pencarian aturan implisit,"
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr ""
"tetapi '%s' sekarang dipertimbangkan sebagai berkas yang sama dengan '%s'."
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr "Perintah untuk '%s' akan diabaikan untuk menghargai '%s'."
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr "tidak dapat mengubah nama dari kolon-tunggal '%s' ke kolon-ganda '%s'"
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr "tidak dapat mengubah nama kolon-ganda '%s' menjadi kolon-tunggal '%s'"
-#: file.c:408
+#: src/file.c:408
#, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "*** Menghapus berkas sementara '%s'"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "Menghapus berkas sementara...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "Waktu saat ini"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: Timestamp diluar jangkauan; digantikan dengan %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# Bukan sebuah target:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# Berkas sebelumnya (dibutuhkan oleh .PRECIOUS)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# Phony target (dibutuhkan oleh .PHONY)."
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# Baris perintah target."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr "# Merupakan baku, MAKEFILES atau -include/sinclude makefile."
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
msgstr "# Tidak ada aturan implisit."
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# Pencarian aturan implisit sudah selesai."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# Pencarian aturan implisit belum selesai."
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr "# Pola/implisit atau statis stem: '%s'\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr "# Berkas merupakan dibutuhkan untuk sementara."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# Juga membuat:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# Waktu ubah sudah diperiksa."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# Berkas tidak ada."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# Berkas sudah sangat tua."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# Terakhir dimodifikasi %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# Berkas sudah diperbarui."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# Berkas belum diperbarui."
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# Perintah sedang berjalan (INI MERUPAKAN SEBUAH BUG)."
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr "# Perintah ketergantungan sedang berjalan (INI MERUPAKAN SEBUAH BUG)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# Sukses memperbarui."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# Perlu untuk diupdate (-q diset)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# Gagal untuk mengupdate."
-#: file.c:1032
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
msgstr "# Nilai yang salah dalam anggota 'command_state' !"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -349,7 +353,7 @@ msgstr ""
"\n"
"# Berksa"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -359,334 +363,341 @@ msgstr ""
"# berkas statistik hash-table:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr "%s: Field '%s' not cached: %s"
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
msgstr "argumen pertama untuk fungsi 'word' bukan numerik"
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr "argumen pertama untuk fungsi 'word' harus lebih besar dari 0"
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
msgstr "argumen pertama untuk fungsi 'wordlist' bukan numerik"
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
msgstr "argumen kedua dari fungsi 'wordlist' bukan numerik"
-#: function.c:1525
+#: src/function.c:1533
#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "windows32_openpipe: DuplicateHandle(In) gagal (e=%ld)\n"
-#: function.c:1549
+#: src/function.c:1557
#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr "windows32_openpipe: DuplicateHandle(Err) gagal (e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "CreatePipe() gagal (e=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe(): process_init_fd() gagal\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "Membersihkan berkas batch sementara %s\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr ""
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
msgstr "open: %s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
msgstr "menulis: %s: %s"
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, fuzzy, c-format
msgid "close: %s: %s"
msgstr "open: %s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr ""
-#: function.c:2262
+#: src/function.c:2277
#, fuzzy, c-format
msgid "read: %s: %s"
msgstr "menulis: %s: %s"
-#: function.c:2275
+#: src/function.c:2290
#, fuzzy, c-format
msgid "file: invalid file operation: %s"
msgstr "Invalid file operation: %s"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr "Jumlah dari argumen (%d) untuk fungsi '%s' tidak mencukupi"
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "Tidak terimplementasi dalam platform ini: fungsi '%s'"
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr "fungsi '%s' tidak diselesaikan: hilang '%c'"
-#: function.c:2650
-#, fuzzy
+#: src/function.c:2667
+#, fuzzy, c-format
msgid "Empty function name"
msgstr "Empty function name\n"
-#: function.c:2652
+#: src/function.c:2669
#, fuzzy, c-format
msgid "Invalid function name: %s"
msgstr "Invalid function name: %s\n"
-#: function.c:2654
+#: src/function.c:2671
#, fuzzy, c-format
msgid "Function name too long: %s"
msgstr "Function name too long: %s\n"
-#: function.c:2657
+#: src/function.c:2674
#, fuzzy, c-format
msgid "Invalid minimum argument count (%u) for function %s"
msgstr "Jumlah dari argumen (%d) untuk fungsi %s tidak mencukupi\n"
-#: function.c:2660
+#: src/function.c:2677
#, fuzzy, c-format
msgid "Invalid maximum argument count (%u) for function %s"
msgstr "Jumlah dari argumen (%d) untuk fungsi %s tidak mencukupi\n"
-#: getopt.c:659
+#: src/getopt.c:659
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: opsi '%s' merupakan ambigu\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: opsi '--%s' tidak memperbolehkan argumen\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: opsi '%c%s' tidak memperbolehkan argumen\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: opsi '%s' membutuhkan sebuah argumen\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: opsi tidak dikenali '--%s'\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: opsi tidak dikenali '%c%s'\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: opsi tidak legal -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: opsi tidak valid -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: opsi membutuhkan sebuah argumen -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: opsi '-W %s' merupakan opsi ambigu\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: opsi '-W %s' tidak memperbolehkan sebuah argumen\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr "guile: Expanding '%s'\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr "guile: Evaluating '%s'\n"
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr ""
"tidak dapat mengalokasikan %lu bytes untuk tabel hash; kehabisan memory"
-#: hash.c:280
-#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
+#: src/hash.c:280
+#, fuzzy, c-format
+msgid "Load=%lu/%lu=%.0f%%, "
msgstr "Beban=%ld/%ld=%.0f%%, "
-#: hash.c:282
-#, c-format
-msgid "Rehash=%d, "
+#: src/hash.c:282
+#, fuzzy, c-format
+msgid "Rehash=%u, "
msgstr "Rehash=%d, "
-#: hash.c:283
-#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
+#: src/hash.c:283
+#, fuzzy, c-format
+msgid "Collisions=%lu/%lu=%.0f%%"
msgstr "Tabrakan=%ld/%ld=%.0f%%"
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr "Mencari aturan implisit untuk '%s'.\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr "Mencari aturan implisit untuk anggota-archive pada '%s'.\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr "Menghindari aturan implisit rekursi.\n"
-#: implicit.c:486
-#, c-format
-msgid "Stem too long: '%.*s'.\n"
+#: src/implicit.c:484
+#, fuzzy, c-format
+msgid "Stem too long: '%s%.*s'.\n"
msgstr "Stem too long: '%.*s'.\n"
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr "Mencoba aturan pola dengan stem '%.*s'.\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr "Menolak persyaratan aturan yang tidak mungkin '%s'.\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr "Menolak persyaratan implisit yang tidak mungkin '%s'.\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr "Mencoba persyaratan dari aturan '%s'.\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr "Mencoba persyaratan implisit '%s'.\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr "Menemukan persyaratan '%s' sebagai VPATH '%s'\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr "Mencari aturan dengan berkas sementara '%s'.\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr "Tidak dapat membuat berkas sementara\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (core di-dump)"
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr " (diabaikan)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
msgstr "<bawaan>"
-#: job.c:510
+#: src/job.c:573
#, fuzzy, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "%s[%s] Error %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** Menunggu pekerjaan yang belum selesai...."
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "Proses anak yang masih berjalan %p (%s) PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (remote)"
-#: job.c:831
-#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Reaping anak hilang %p PID %s %s\n"
-
-#: job.c:832
+#: src/job.c:898
#, c-format
msgid "Reaping winning child %p PID %s %s\n"
msgstr "Reaping winning child %p PID %s %s\n"
-#: job.c:839
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Reaping anak hilang %p PID %s %s\n"
+
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "Membersihkan berkas batch sementara %s\n"
-#: job.c:845
+#: src/job.c:956
#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr "Membersihkan berkas batch sementara %s failed (%d)\n"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr "Menghilangkan proses anak %p PID %s%s dari rantai.\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr "Melepaskan token dari proses anak %p (%s).\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "process_easy() gagal untuk menjalankan proses (e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -695,94 +706,88 @@ msgstr ""
"\n"
"Terhitung %d argumen gagal untuk dijalankan\n"
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr "Meletakkan proses anak %p (%s) PID %s%s pada rantai proses.\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "Memperoleh token untuk proses anak %p (%s).\n"
-#: job.c:1838
+#: src/job.c:1902
#, c-format
msgid "%s: target '%s' does not exist"
msgstr "%s: archive '%s' tidak ada"
-#: job.c:1841
+#: src/job.c:1905
#, c-format
msgid "%s: update target '%s' due to: %s"
msgstr ""
"%s: tidak terdapat aturan untuk membuat target '%s', dibutuhkan oleh %s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr "tidak dapat memaksa mencapai batas beban pada sistem operasi ini"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "tidak dapat memaksa mencapai batas beban: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr "tidak ada lagi file handles: tidak dapat menggandakan stdin\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr "tidak ada lagi file handles: tidak dapat menggandakan stdout\n"
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr "tidak ada lagi file handles: tidak dapat menggandakan stderr\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr "Tidak dapat mengembalikan stdin\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr "Tidak dapat mengembalikan stdout\n"
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr "Tidak dapat mengembalikan stderr\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr "make reaped child pid %s, tetap menunggu untuk pid %s\n"
-#: job.c:2275
-#, fuzzy, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: Perintah tidak ada"
-
-#: job.c:2277
-#, fuzzy, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s: Perintah tidak ada"
-
-#: job.c:2337
+#: src/job.c:2623
#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: Shell program tidak ditemukan"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr "spawnvpe: mungkin kehabisan ruang environment"
-#: job.c:2584
+#: src/job.c:2862
#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "$SHELL berubah (sebelumnya '%s', sekarang '%s')\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr "Membuat berkas batch sementara %s\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
@@ -790,7 +795,7 @@ msgstr ""
"Batch file contents:\n"
"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
@@ -799,59 +804,56 @@ msgstr ""
"Batch file contents:%s\n"
"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr "%s (baris %d) shell context tidak baik (!unixy && !batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr "Failed to open global symbol table: %s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr "Loaded object %s is not declared to be GPL compatible"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr "Failed to load symbol %s from %s: %s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr "Empty symbol name for load: %s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr "Loading symbol %s from %s\n"
-#: load.c:256
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr "Parallel jobs '-j' tidak didukung dalam platform ini."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "Opsi:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr " -b, -m Diabaikan untuk kompatibilitas.\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr ""
" -B, --always-make Membuat semua target secara tidak "
"kondisional.\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
@@ -859,17 +861,17 @@ msgstr ""
" -C DIRECTORI, --directory=DIREKTORI\n"
" Pindah ke DIREKTORI sebelum melakukan apapun.\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr " -d Menampilkan banyak informasi debug.\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
" --debug[=FLAGS] Menampilkan berbagai tipe informasi debug.\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
@@ -877,13 +879,14 @@ msgstr ""
" -e, --environment-overrides\n"
" Variabel lingkungan memaksa makefiles.\n"
-#: main.c:353
+#: src/main.c:350
+#, fuzzy
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
" --eval=STRING Evaluate STRING as a makefile statement.\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -891,17 +894,17 @@ msgstr ""
" -f BERKAS, --file=BERKAS, --makefile=BERKAS\n"
" Baca BERKAS sebagai sebuah makefile.\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help Tampilkan pesan ini dan keluar.\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr ""
" -i, --ignore-errors Abaikan kesalahan dari perintah yang "
"dijalankan.\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
@@ -910,7 +913,7 @@ msgstr ""
" Cari di DIREKTORI untuk makefile yang "
"disertakan.\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
@@ -918,13 +921,13 @@ msgstr ""
" -j [N], --jobs[=N] Ijinkan N kerja secara bersamaan. Kerja tidak "
"terhingga jika tidak diberikan argumen.\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
" -k, --keep-going Tetap jalan ketika target tidak dapat dibuat.\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
@@ -934,7 +937,7 @@ msgstr ""
" Jangan menjalankan multiple pekerjaan kecuali "
"beban dibawah N.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
@@ -942,7 +945,7 @@ msgstr ""
" -L, --check-symlink-times Gunakan waktu mtime terbaru diantara symlinks "
"dan target.\n"
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
@@ -952,7 +955,7 @@ msgstr ""
" Jangan menjalankan perintah apapun; tampilkan "
"saja apa yang akan dikerjakan.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
@@ -962,7 +965,7 @@ msgstr ""
" Pertimbangkan BERKAS sudah sangat tua dan "
"jangan membuatnya lagi.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
@@ -970,11 +973,11 @@ msgstr ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr " -p, --print-data-base Tampilkan basis data internal make.\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
@@ -982,21 +985,28 @@ msgstr ""
" -q, --question Tidak menjalankan perintah. Mengeluarkan "
"status saja dan mengatakan up to date.\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr ""
" -r, --no-builtin-rules Aturan implisit bawaan tidak digunakan.\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr ""
" -R, --no-builtin-variables Non-aktifkan konfigurasi variabel bawaan.\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr " -s, --silent, --quiet Jangan menampilkan perintah.\n"
-#: main.c:393
+#: src/main.c:390
+#, fuzzy
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" -q, --question Tidak menjalankan perintah. Mengeluarkan "
+"status saja dan mengatakan up to date.\n"
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
@@ -1004,26 +1014,26 @@ msgstr ""
" -S, --no-keep-going, --stop\n"
" Matikan opsi -k.\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
" -t, --touch Sentuh target dari pada membuat kembali.\n"
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
msgstr ""
" --trace Menampilkan banyak informasi debug.\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr " -v, --version Tampilkan versi dari make dan keluar.\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory Tampilkan directory saat ini.\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
@@ -1031,7 +1041,7 @@ msgstr ""
" --no-print-directory Matikan opsi -w, walaupun opsi ini diaktifkan "
"secara implisit.\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1040,7 +1050,7 @@ msgstr ""
" Pertimbangkan BERKAS sebagai sebuah berkas "
"baru.\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
@@ -1048,26 +1058,27 @@ msgstr ""
" --warn-undefined-variables Peringatkan akan adanya variabel yang tidak "
"terdefinisi yang direferensikan.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "`string' kosong tidak valid sebagai nama file"
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
msgstr "spesifikasi tingkat debug tidak diketahui '%s'"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr "unknown output-sync type '%s'"
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr "%s: Interupsi/Exception diterima (kode = 0x%lx, alamat = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1082,136 +1093,145 @@ msgstr ""
"ExceptionFlags = %lx\n"
"ExceptionAddress = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "Akses dilanggar: operasi tulis pada alamat 0x%p\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "Akses dilanggar: operasi baca pada alamat 0x%p\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell() diset pada default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr "find_and_set_shell() jalur pencarian di set pada default_shell = %s\n"
-#: main.c:1538
+#: src/main.c:1609
#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s dihentikan selama 30 detik..."
-
-#: main.c:1540
-#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "selesai tidur(30). Melanjutkan.\n"
-
-#: main.c:1627
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
"Peringatan: server pekerja tidak ada: menggunakan -j1. Tambahkan '+' pada "
"aturan make paling atas."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
+#: src/main.c:1617
+#, fuzzy, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
msgstr ""
"Peringatan: -jN dipaksakan dalam submake: non-aktifkan mode server pekerja."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr "Makefile dari standard input dispesifikasikan dua kali."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (berkas sementara)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (berkas sementara)"
-#: main.c:2048
+#: src/main.c:2004
+#, fuzzy, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr ""
+"Peringatan: -jN dipaksakan dalam submake: non-aktifkan mode server pekerja."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr "Parallel jobs (-j) tidak didukung dalam platform ini."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "Mereset kembali ke mode satu job (-j1)."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr "Symbolic links tidak didukung: menonaktifkan opsi -L."
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "Memperbarui makefiles....\n"
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr "Makefile '%s' mungkin berupa loop; tidak membuat lagi.\n"
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
msgstr "Gagal membuat lagi makefile '%s'."
-#: main.c:2299
+#: src/main.c:2323
#, c-format
msgid "Included makefile '%s' was not found."
msgstr "Makefile yang dimasukan '%s' tidak ditemukan."
-#: main.c:2304
+#: src/main.c:2328
#, c-format
msgid "Makefile '%s' was not found"
msgstr "Makefile '%s' tidak ditemukan"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "Tidak dapat kembali ke direktori asal."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "Menjalankan kembali[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (berkas sementara): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ".DEFAULT_GOAL berisi lebih dari satu target"
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Target tidak dispesifikasikan dan tidak ditemukan makefile"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "Tidak ada targets"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Target tidak dispesifikasikan dan tidak ditemukan makefile"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "Memperbarui tujuan target....\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr ""
"Peringatan: Clock skew terdeteksi. Pembuatan anda mungkin tidak sempurna"
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "Penggunaan: %s [opsi] [target] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1220,7 +1240,7 @@ msgstr ""
"\n"
"Program ini dibuat untuk %s\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1229,32 +1249,32 @@ msgstr ""
"\n"
"Program ini dibuat untuk %s (%s)\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr "Laporkan bugs kepada <bug-make@gnu.org>\n"
-#: main.c:2870
+#: src/main.c:2901
#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "opsi '%s%s' membutuhkan sebuah argument string yang tidak kosong"
-#: main.c:2934
+#: src/main.c:2965
#, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "opsi '-%c' membutuhkan sebuah argument `string' yang tidak kosong"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%sAplikasi ini dibuat untuk %s\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%sAplikasi ini dibuat untuk %s (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1267,7 +1287,7 @@ msgstr ""
"%sIni adalah aplikasi gratis: anda bebas untuk mengubah dan menyebarkannya.\n"
"%sTidak ada JAMINAN, sepanjang diperbolehkan oleh hukum.\n"
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1276,7 +1296,7 @@ msgstr ""
"\n"
"# Membuat basis data, ditampilkan %s"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1285,352 +1305,384 @@ msgstr ""
"\n"
"# Selesai membuat basis data %s\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Kesalahan tidak diketahui %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: pengguna %lu (ril %lu), grup %lu (ril %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "Akses terinisialisasi"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr "Akses pengguna"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "Buat akses"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "Akses anak"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: Memasuki sebuah direktori yang tidak diketahui\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: Meninggalkan sebuah direktori yang tidak diketahui\n"
-#: output.c:109
+#: src/output.c:102
#, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "%s: Memasuki direktori '%s'\n"
-#: output.c:111
+#: src/output.c:104
#, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "%s: Meninggalkan direktori '%s'\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: Memasuki sebuah direktori yang tidak diketahui\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: Meninggalkan sebuah direktori yang tidak diketahui\n"
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr "%s[%u]: Memasuki direktori '%s'\n"
-#: output.c:122
+#: src/output.c:115
#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "%s[%u]: Meninggalkan direktori '%s'\n"
-#: output.c:495 output.c:497
-#, fuzzy
+#: src/output.c:442 src/output.c:444
+#, fuzzy, c-format
msgid "write error: stdout"
msgstr "error menulis: %s"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". Berhenti.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "membuat pipa pekerjaan"
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
#, fuzzy
msgid "duping jobs pipe"
msgstr "membuat pipa pekerjaan"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr "inisiasi pipa server pekerja"
-#: posixos.c:90
+#: src/posixos.c:119
#, fuzzy, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr "internal error: tidak valid --jobserver-fds string '%s'"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr "Jobserver client (fds %d,%d)\n"
-#: posixos.c:109
+#: src/posixos.c:138
#, fuzzy
msgid "jobserver pipeline"
msgstr "inisiasi pipa server pekerja"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr "menulis jobserver"
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr ""
+
+#: src/posixos.c:303
#, fuzzy
msgid "pselect jobs pipe"
msgstr "membaca pipa pekerjaan"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "membaca pipa pekerjaan"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "Membaca makefiles...\n"
-#: read.c:329
+#: src/read.c:336
#, c-format
msgid "Reading makefile '%s'"
msgstr "Membaca makefile '%s'"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (tidak terdapat tujuan baku)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (jalur pencarian)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (tidak peduli)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (tidak terdapat ekspansi tilde ~)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr "Skipping UTF-8 BOM in makefile '%s'\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr "Skipping UTF-8 BOM in makefile buffer\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "sintak salah dalam kondisional"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr "%s: failed to load"
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
msgstr "perintah dijalankan sebelum target pertama"
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
msgstr "hilang aturan sebelum menjalankan perintah"
-#: read.c:1124
-#, fuzzy
+#: src/read.c:1136
+#, fuzzy, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr " (apakah yang anda maksud TAB dari pada 8 buah spasi?)"
-#: read.c:1126
-#, fuzzy
+#: src/read.c:1138
+#, fuzzy, c-format
msgid "missing separator"
msgstr "pemisah %s hilang"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "pola target hilang"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "pola target banyak"
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
msgstr "pola target tidak memiliki '%%'"
-#: read.c:1390
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
msgstr "hilang 'endif'"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "nama variabel kosong"
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
msgstr "Kelebihan text sesudah 'endef' directive"
-#: read.c:1488
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "hilang 'endef', tidak diselesaikan 'define'"
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
msgstr "kelebihan text sesudah 'endef' directive"
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
msgstr "kelebihan text sesudah '%s' directive"
-#: read.c:1589
+#: src/read.c:1604
#, c-format
msgid "extraneous '%s'"
msgstr "kelebihan '%s'"
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
msgstr "hanya satu 'else' dalam setiap kondisi"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr "Definisi variable target-specific memiliki format yang salah"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr "persyaratan tidak dapat didefinisikan dalam script perintah"
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr ""
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr "aturan pola implisit dan static tercampur"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "aturan implisit dan aturan normal tercampur"
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr "target '%s' tidak cocok dengan pola target"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
msgstr "target berkas '%s' keduanya memiliki masukan : dan ::"
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
msgstr "target '%s' memberikan lebih dari sekali dalam aturan sama."
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr "peringatan: memaksa perintah untuk target '%s'"
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr "peringatan: menghiraukan perintah lama untuk target '%s'"
-#: read.c:2223
-#, fuzzy
+#: src/read.c:2254
+#, fuzzy, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr "aturan implisit dan aturan normal tercampur"
-#: read.c:2542
+#: src/read.c:2271
+#, fuzzy, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "peringatan: memaksa perintah untuk target '%s'"
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr "peringatan: karakter NUL terlihat; baris selanjutnya dihiraukan"
-#: remake.c:226
+#: src/remake.c:226
#, c-format
msgid "Nothing to be done for '%s'."
msgstr "Tidak ada yang harus dilakukan untuk '%s'."
-#: remake.c:227
+#: src/remake.c:227
#, c-format
msgid "'%s' is up to date."
msgstr "'%s' sudah baru."
-#: remake.c:323
+#: src/remake.c:323
#, c-format
msgid "Pruning file '%s'.\n"
msgstr "Pruning file '%s'.\n"
-#: remake.c:406
+#: src/remake.c:389
#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr ""
"%sTidak terdapat aturan untuk membuat target '%s', dibutuhkan oleh '%s'%s"
-#: remake.c:416
+#: src/remake.c:399
#, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%sTidak terdapat aturan untuk membuat target '%s'%s"
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
msgstr "Mempertimbangkan berkas target '%s'.\n"
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr "Baru saja dicoba dan gagal untuk memperbarui berkas '%s'.\n"
-#: remake.c:461
+#: src/remake.c:444
#, c-format
msgid "File '%s' was considered already.\n"
msgstr "Berkas '%s' baru saja dipertimbangkan.\n"
-#: remake.c:471
+#: src/remake.c:454
#, c-format
msgid "Still updating file '%s'.\n"
msgstr "Sedang memperbarui berkas '%s'.\n"
-#: remake.c:474
+#: src/remake.c:457
#, c-format
msgid "Finished updating file '%s'.\n"
msgstr "Selesai memperbarui berkas '%s'.\n"
-#: remake.c:503
+#: src/remake.c:486
#, c-format
msgid "File '%s' does not exist.\n"
msgstr "Berkas '%s' tidak ada.\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
@@ -1638,147 +1690,147 @@ msgstr ""
"*** Peringatan: .LOW_RESOLUTION_TIME berkas '%s' memiliki sebuah penanda "
"waktu dengan resolusi tinggi"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr "Ditemukan sebuah aturan implisit untuk '%s'.\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr "Tidak terdapat aturan implisit untuk membuat '%s'.\n"
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
msgstr "Menggunakan perintah baku untuk '%s'.\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "Ketergantungan %s <- %s melingkar dijatuhkan."
-#: remake.c:691
+#: src/remake.c:674
#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr "Selesai melakukan semua persyaratan untuk berkas target '%s'.\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr "Persyaratan untuk membuat '%s' sedang dibuat.\n"
-#: remake.c:711
+#: src/remake.c:694
#, c-format
msgid "Giving up on target file '%s'.\n"
msgstr "Menyerah untuk membuat target berkas '%s'.\n"
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
msgstr "Target '%s' tidak dibuat lagi karena ada errors."
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr "Persyaratan untuk '%s' adalah order-only untuk target '%s'.\n"
-#: remake.c:773
+#: src/remake.c:756
#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr "Persyaratan untuk '%s' untuk target '%s' tidak ada.\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr "Persyaratan untuk '%s' lebih baru dari pada target '%s'.\n"
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr "Persyaratan untuk '%s' lebih tua dari pada target '%s'.\n"
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr "Target '%s' merupakan kolon-ganda dan tidak memiliki syarat.\n"
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr "Tidak ada perintah untuk '%s' dan persyaratan tidak berubah.\n"
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr "Membuat '%s' karena adanya tanda always-make.\n"
-#: remake.c:819
+#: src/remake.c:802
#, c-format
msgid "No need to remake target '%s'"
msgstr "Tidak perlu membuat lagi target '%s'"
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
msgstr "; menggunakan nama VPATH '%s'"
-#: remake.c:841
+#: src/remake.c:824
#, c-format
msgid "Must remake target '%s'.\n"
msgstr "Harus membuat lagi target '%s'.\n"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr " Mengabaikan nama VPATH '%s'.\n"
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr "Perintah dari '%s' sedang dijalankan.\n"
-#: remake.c:863
+#: src/remake.c:846
#, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr "Gagal membuat lagi target berkas '%s'.\n"
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr "Sukses membuat kembali target berkas '%s'.\n"
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr "Target berkas '%s' dibutuhkan untuk membuat kembali dengan opsi -q.\n"
-#: remake.c:1064
+#: src/remake.c:1047
#, c-format
msgid "Using default commands for '%s'.\n"
msgstr "Menggunakan perintah baku untuk '%s'.\n"
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "Peringatan: Berkas '%s' memiliki waktu modifikasi dimasa depan"
-
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr "Peringatan: Berkas '%s' memiliki waktu modifikasi %s s kedepan"
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr ".LIBPATTERNS elemen '%s' bukan merupakan sebuah pattern"
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr "Custom tidak akan men-export: %s\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -1786,7 +1838,7 @@ msgstr ""
"\n"
"# Aturan implisit."
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1794,181 +1846,177 @@ msgstr ""
"\n"
"# Tidak ada aturan implisit."
-#: rule.c:514
-#, c-format
+#: src/rule.c:548
+#, fuzzy, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
"# %u aturan implisit, %u"
-#: rule.c:523
-msgid " terminal."
-msgstr " terminal."
-
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "BUG: num_pattern_rules salah! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "sinyal tidak diketahui"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Hangup"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "Interupsi"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Berhenti"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "Instruksi Tidak Legal"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "Penangkap trace/breakpoint"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Dibatalkan"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "Penangkap IOT"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "Penangkap EMT"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "Eksepsi titik pecahan"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Terbunuh"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "Bus error"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Kesalahan segmentasi"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "Panggilan sistem buruk"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "Pipa rusak"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Alarm"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "Dimatikan"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "Sinyal definisi pengguna 1"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "Sinyal definisi pengguna 2"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "Proses anak berakhir"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Listrik bermasalah"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Dihentikkan"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Dihentikan (masukkan tty)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Dihentikan (keluaran tty)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Dihentikan (sinyal)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "Batas waktu CPU telah terlampaui"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "Batas maksimal ukuran berkas terlampaui"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "Pewaktu maya habis"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "Pewaktu profiling habis"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "Jendela berubah"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Dilanjutkan"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "Kondisi I/O penting"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "I/O mungkin"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "Resource hilang"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Sinyal bahaya"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Permintaan informasi"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "co-processor titik pecahan tidak tersedia"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
@@ -1977,7 +2025,7 @@ msgstr ""
"\n"
"%s # dari buffer strcache: \n"
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -1988,26 +2036,26 @@ msgstr ""
"%s strcache free: %lu total = (%lu) / mak = %lu / min = %lu / rata-rata = "
"%lu\n"
-#: strcache.c:308
-#, c-format
+#: src/strcache.c:308
+#, fuzzy, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr "besar %s strcache: total = %lu / count = %lu / rata-rata = %lu\n"
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
msgstr ""
"%s strcache free: total = %lu / mak = %lu / min = %lu / rata-rata = %hu\n"
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
@@ -2016,7 +2064,7 @@ msgstr ""
"\n"
"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
@@ -2024,44 +2072,44 @@ msgstr ""
"# berkas statistik hash-table:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "otomatis"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "baku"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "lingkungan"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "makefile"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "lingkungan dibawah opsi -e"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "baris perintah"
-#: variable.c:1647
+#: src/variable.c:1671
msgid "'override' directive"
msgstr "'override' direktif"
-#: variable.c:1658
+#: src/variable.c:1682
#, c-format
msgid " (from '%s', line %lu)"
msgstr " (dari '%s', baris %lu)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr "# statistik variable set hash-table:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2069,7 +2117,7 @@ msgstr ""
"\n"
"# Variabel\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
@@ -2077,7 +2125,7 @@ msgstr ""
"\n"
"# Nilai Variabel Pola-Spesifik"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2085,7 +2133,7 @@ msgstr ""
"\n"
"# Tidak terdapat nilai variabel pola-spesifik"
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
@@ -2094,48 +2142,48 @@ msgstr ""
"\n"
"# %u nilai variabel pola-spesifik"
-#: variable.h:224
+#: src/variable.h:229
#, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "peringatan: variabel '%.*s' tidak terdefinisi"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr "sys$search() gagal dengan kode %d\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr ""
"-warning, kamu mungkin telah mengaktifkan pengontrolan CTRL-Y dari DCL.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "BAWAAN CD %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr ""
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr "Meneruskan output ke %s\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr "Append %.*s and cleanup\n"
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "Menjalankan perintah %s\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2143,11 +2191,11 @@ msgstr ""
"\n"
"# VPATH Jalur Pencarian\n"
-#: vpath.c:620
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
msgstr "# Tidak ada 'vpath' dalam jalur pencarian."
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
@@ -2156,7 +2204,7 @@ msgstr ""
"\n"
"# %u 'vpath' jalur pencarian.\n"
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
@@ -2164,7 +2212,7 @@ msgstr ""
"\n"
"# Tidak ada ('VPATH' variabel) umum dalam jalur pencarian."
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
@@ -2174,34 +2222,34 @@ msgstr ""
"# Jalur pencarian umum untuk variabel 'VPATH':\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr "Jobserver slots limited to %d\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr "creating jobserver semaphore: (Error %ld: %s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr "Jobserver client (semaphore %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr "release jobserver semaphore: (Error %ld: %s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr "semaphore or child process wait: (Error %ld: %s)"
@@ -2215,21 +2263,42 @@ msgstr "semaphore or child process wait: (Error %ld: %s)"
#~ msgid "%s[%s] %s%s%s"
#~ msgstr "%s[%s] %s%s%s"
+#~ msgid "%s: Command not found"
+#~ msgstr "%s: Perintah tidak ada"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s: Shell program tidak ditemukan"
+
#~ msgid "internal error: multiple --sync-mutex options"
#~ msgstr "internal error: opsi --sync-mutex lebih dari satu"
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s dihentikan selama 30 detik..."
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "selesai tidur(30). Melanjutkan.\n"
+
#~ msgid "internal error: multiple --jobserver-fds options"
#~ msgstr "internal error: opsi --jobserver-fds lebih dari satu"
#~ msgid "dup jobserver"
#~ msgstr "dup server pekerja"
+#~ msgid "Unknown error %d"
+#~ msgstr "Kesalahan tidak diketahui %d"
+
#~ msgid "virtual memory exhausted"
#~ msgstr "Kehabisan memori maya"
#~ msgid "write error"
#~ msgstr "error menulis"
+#~ msgid "Warning: File '%s' has modification time in the future"
+#~ msgstr "Peringatan: Berkas '%s' memiliki waktu modifikasi dimasa depan"
+
+#~ msgid " terminal."
+#~ msgstr " terminal."
+
#~ msgid "Warning: Empty redirection\n"
#~ msgstr "Peringatan: redirection kosong\n"
diff --git a/po/it.gmo b/po/it.gmo
index b7e9a2d..7da528b 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 9a262a2..8b98395 100644
--- a/po/it.po
+++ b/po/it.po
@@ -1,132 +1,136 @@
# Italian messages for GNU make.
# Copyright (C) 2009 Free Software Foundation, Inc.
# This file is distributed under the same license as the make package.
-# Francesco Groccia <frgroccia@gmail.com>, 2010-2013.
+# Francesco Groccia <grocf@protonmail.ch>, 2010.
#
msgid ""
msgstr ""
-"Project-Id-Version: make 4.0\n"
+"Project-Id-Version: make 4.2.91\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
-"PO-Revision-Date: 2013-10-11 14:58+0200\n"
-"Last-Translator: Francesco Groccia <frgroccia@gmail.com>\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2019-11-13 10:20+0100\n"
+"Last-Translator: Francesco Groccia <grocf@protonmail.ch>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Editor: Vim with po plugin\n"
-#: ar.c:46
+#: src/ar.c:46
#, c-format
msgid "attempt to use unsupported feature: '%s'"
-msgstr "tentativo di usare una funzionalità non supportata: \"%s\""
+msgstr "tentativo di usare una funzionalità non supportata: «%s»"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "touch del membro di archivio non disponibile su VMS"
-#: ar.c:147
+#: src/ar.c:147
#, c-format
msgid "touch: Archive '%s' does not exist"
-msgstr "touch: l'archivio \"%s\" non esiste"
+msgstr "touch: l'archivio «%s» non esiste"
-#: ar.c:150
+#: src/ar.c:150
#, c-format
msgid "touch: '%s' is not a valid archive"
-msgstr "touch: \"%s\" non è un archivio valido"
+msgstr "touch: «%s» non è un archivio valido"
-#: ar.c:157
+#: src/ar.c:157
#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
-msgstr "touch: il membro \"%s\" non esiste in \"%s\""
+msgstr "touch: il membro «%s» non esiste in «%s»"
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
-msgstr "touch: codice di uscita errato da ar_member_touch su \"%s\""
+msgstr "touch: codice di uscita errato da ar_member_touch su «%s»"
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr ""
"lbr$set_module() non è riuscita a estrarre informazioni sul modulo, stato = "
"%d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "lbr$ini_control() non riuscita con lo stato = %d"
-#: arscan.c:261
-#, fuzzy, c-format
+#: src/arscan.c:261
+#, c-format
msgid "unable to open library '%s' to lookup member status %d"
-msgstr "impossibile aprire la libreria \"%s\" per cercare il membro \"%s\""
+msgstr ""
+"impossibile aprire la libreria «%s» per cercare lo stato del membro «%d»"
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
-msgstr "Membro \"%s\"%s: %ld byte a %ld (%ld).\n"
+msgstr "Membro «%s»%s: %ld byte a %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (il nome potrebbe essere troncato)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Data %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, modo = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr "Il set di istruzioni ha troppe righe (%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** Interruzione.\n"
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr ""
-"*** [%s] Il membro di archivio \"%s\" potrebbe essere inesistente; non "
+"*** [%s] Il membro di archivio «%s» potrebbe essere inesistente; non "
"eliminato"
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr ""
-"*** Il membro di archivio \"%s\" potrebbe essere inesistente; non eliminato"
+"*** Il membro di archivio «%s» potrebbe essere inesistente; non eliminato"
-#: commands.c:645
+#: src/commands.c:646
#, c-format
msgid "*** [%s] Deleting file '%s'"
-msgstr "*** [%s] Eliminazione del file \"%s\""
+msgstr "*** [%s] Eliminazione del file «%s»"
-#: commands.c:647
+#: src/commands.c:648
#, c-format
msgid "*** Deleting file '%s'"
-msgstr "*** Eliminazione del file \"%s\""
+msgstr "*** Eliminazione del file «%s»"
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
msgstr "# set di istruzioni da eseguire"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (comando interno):"
-#: commands.c:688
+#: src/commands.c:689
#, c-format
msgid " (from '%s', line %lu):\n"
-msgstr " (da \"%s\", riga %lu):\n"
+msgstr " (da «%s» riga %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -134,226 +138,225 @@ msgstr ""
"\n"
"# Directory\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: impossibile eseguire stat.\n"
-#: dir.c:1085
-#, fuzzy
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
-msgstr "# %s (key %s, mtime %d) non può essere aperto.\n"
+msgstr "# %s (key %s, mtime %I64u) non può essere aperto.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr "# %s (device %d, inode [%d,%d,%d]) non può essere aperto.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr "# %s (device %ld, inode %ld) non può essere aperto.\n"
-#: dir.c:1122
-#, fuzzy
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
-msgstr "# %s (key %s, mtime %d): "
+msgstr "# %s (key %s, mtime %I64u): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (device %d, inode [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (device %ld, inode %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "No"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " file, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "no"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " impossibilità"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " finora."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " impossibilità nelle directory %lu.\n"
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
-msgstr "La variabile ricorsiva \"%s\" si autoreferenzia (alla fine)"
+msgstr "La variabile ricorsiva «%s» si autoreferenzia (alla fine)"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "riferimento alla variabile non terminato"
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
-msgstr "È stato specificato un set di istruzioni per il file \"%s\" a %s:%lu,"
+msgstr "È stato specificato un set di istruzioni per il file «%s» a %s:%lu,"
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr ""
-"È stato trovato un set di istruzioni per il file \"%s\" mediante una regola "
-"di ricerca implicita,"
+"È stato trovato un set di istruzioni per il file «%s» mediante una regola di "
+"ricerca implicita,"
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
-msgstr "ma ora \"%s\" viene considerato lo stesso file di \"%s\"."
+msgstr "ma ora «%s» viene considerato lo stesso file di «%s»."
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr ""
-"Il set di istruzioni per \"%s\" verrà ignorato in favore di quello per \"%s"
-"\"."
+"Il set di istruzioni per «%s» verrà ignorato in favore di quello per «%s»."
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr ""
-"impossibile rinominare la regola \"due punti\" \"%s\" con la regola \"doppio "
-"due punti\" \"%s\""
+"impossibile rinominare la regola \"due punti\" «%s» con la regola \"doppio "
+"due punti\" «%s»"
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr ""
-"impossibile rinominare la regola \"doppio due punti\" \"%s\" con la regola "
-"\"due punti\" \"%s\""
+"impossibile rinominare la regola \"doppio due punti\" «%s» con la regola "
+"\"due punti\" «%s»"
-#: file.c:408
+#: src/file.c:408
#, c-format
msgid "*** Deleting intermediate file '%s'"
-msgstr "*** Eliminazione del file intermedio \"%s\""
+msgstr "*** Eliminazione del file intermedio «%s»"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "Rimozione dei file intermedi...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "Ora corrente"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: intervallo errato per la marcatura temporale; sostituzione di %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# Non è un obiettivo:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# File \"precious\" (prerequisito di .PRECIOUS)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# Obiettivo \"phony\" (prerequisito di .PHONY)."
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# Obiettivo a riga di comando."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr "# Un makefile predefinito, da MAKEFILES, o da -include/sinclude."
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
msgstr "# Regola incorporata"
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# Regola di ricerca implicita completata."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# Regola di ricerca implicita non completata."
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
-msgstr "# Stem implicito/statico del modello: \"%s\"\n"
+msgstr "# Stem implicito/statico del modello: «%s»\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr "# Il file è un prerequisito intermedio."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# Inoltre, genera:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# Ora di modifica mai controllata."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# Il file non esiste."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# Il file è molto vecchio."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# Ultima modifica %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# Il file è stato aggiornato."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# Il file non è stato aggiornato."
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# Set di istruzioni attualmente in esecuzione (QUESTO È UN BUG)."
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr "# Dipendenze del set di istruzioni in esecuzione (QUESTO È UN BUG)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# Aggiornato con successo."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# Richiede di essere aggiornato (-q è impostato)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# Aggiornamento non riuscito."
-#: file.c:1032
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
msgstr "# Valore illecito nel membro \"command_state\"!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -361,7 +364,7 @@ msgstr ""
"\n"
"# File"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -371,335 +374,341 @@ msgstr ""
"# statistiche tabella hash dei file:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
-msgstr "%s: Campo \"%s\" non memorizzato: %s"
+msgstr "%s: Campo «%s» non memorizzato: %s"
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
msgstr "primo argomento non numerico per la funzione \"word\""
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr "il primo argomento per la funzione \"word\" deve essere maggiore di 0"
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
msgstr "primo argomento non numerico per la funzione \"wordlist\""
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
msgstr "secondo argomento non numerico per la funzione \"wordlist\""
-#: function.c:1525
+#: src/function.c:1533
#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "windows32_openpipe: DuplicateHandle(In) non riuscita (e=%ld)\n"
-#: function.c:1549
+#: src/function.c:1557
#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr "windows32_open_pipe: DuplicateHandle(Err) non riuscita (e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "CreatePipe() non riuscita (e=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe(): process_init_fd() non riuscita\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "Pulitura del file batch temporaneo %s\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
-msgstr ""
+msgstr "file: file mancante"
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
msgstr "apertura: %s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
msgstr "scrittura: %s: %s"
-#: function.c:2230 function.c:2267
-#, fuzzy, c-format
+#: src/function.c:2245 src/function.c:2282
+#, c-format
msgid "close: %s: %s"
-msgstr "apertura: %s: %s"
+msgstr "chiusura: %s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
-msgstr ""
+msgstr "file: troppi argomenti"
-#: function.c:2262
-#, fuzzy, c-format
+#: src/function.c:2277
+#, c-format
msgid "read: %s: %s"
-msgstr "scrittura: %s: %s"
+msgstr "lettura: %s: %s"
-#: function.c:2275
-#, fuzzy, c-format
+#: src/function.c:2290
+#, c-format
msgid "file: invalid file operation: %s"
-msgstr "Operazione sui file non valida: %s"
+msgstr "file: operazione sui file non valida: %s"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
-msgstr "numero di argomenti non sufficienti (%d) per la funzione \"%s\""
+msgstr "numero di argomenti non sufficienti (%d) per la funzione «%s»"
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
-msgstr "non implementata su questa piattaforma: funzione \"%s\""
+msgstr "non implementata su questa piattaforma: funzione «%s»"
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
-msgstr "chiamata non terminata alla funzione \"%s\": \"%c\" mancante"
+msgstr "chiamata non terminata alla funzione «%s»: «%c» mancante"
-#: function.c:2650
-#, fuzzy
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
-msgstr "Nome della funzione vuoto\n"
+msgstr "Nome della funzione vuoto"
-#: function.c:2652
-#, fuzzy, c-format
+#: src/function.c:2669
+#, c-format
msgid "Invalid function name: %s"
-msgstr "Nome della funzione non valido: %s\n"
+msgstr "Nome della funzione non valido: %s"
-#: function.c:2654
-#, fuzzy, c-format
+#: src/function.c:2671
+#, c-format
msgid "Function name too long: %s"
-msgstr "Nome della funzione troppo lungo: %s\n"
+msgstr "Nome della funzione troppo lungo: %s"
-#: function.c:2657
-#, fuzzy, c-format
+#: src/function.c:2674
+#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
-msgstr "numero di argomenti non sufficienti (%d) per la funzione \"%s\"\n"
+msgstr "Numero di argomenti non sufficienti (%u) per la funzione %s"
-#: function.c:2660
-#, fuzzy, c-format
+#: src/function.c:2677
+#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
-msgstr "numero di argomenti non sufficienti (%d) per la funzione \"%s\"\n"
+msgstr "Numero massimo di argomenti non sufficienti (%u) per la funzione %s"
-#: getopt.c:659
+#: src/getopt.c:659
#, c-format
msgid "%s: option '%s' is ambiguous\n"
-msgstr "%s: l'opzione \"%s\" è ambigua\n"
+msgstr "%s: l'opzione «%s» è ambigua\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
-msgstr "%s: l'opzione \"--%s\" non ammette argomenti\n"
+msgstr "%s: l'opzione «--%s» non ammette argomenti\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr "%s: l'opzione \"%c%s\" non ammette argomenti\n"
+msgstr "%s: l'opzione «%c%s» non ammette argomenti\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, c-format
msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: l'opzione \"%s\" richiede un argomento\n"
+msgstr "%s: l'opzione «%s» richiede un argomento\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, c-format
msgid "%s: unrecognized option '--%s'\n"
-msgstr "%s: opzione \"--%s\" sconosciuta\n"
+msgstr "%s: opzione «--%s» sconosciuta\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
-msgstr "%s: opzione \"%c%s\" sconosciuta\n"
+msgstr "%s: opzione «%c%s» sconosciuta\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: opzione illecita -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: opzione illecita -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: l'opzione richiede un argomento -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
-msgstr "%s: l'opzione \"-W %s\" è ambigua\n"
+msgstr "%s: l'opzione «-W %s» è ambigua\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr "%s: l'opzione \"-W %s\" non ammette argomenti\n"
+msgstr "%s: l'opzione «-W %s» non ammette argomenti\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
-msgstr "guile: Espansione di \"%s\"\n"
+msgstr "guile: Espansione di «%s»\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
-msgstr "guile: Valutazione di \"%s\"\n"
+msgstr "guile: Valutazione di «%s»\n"
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr "impossibile allocare %lu byte per la tabella hash: memoria esaurita"
-#: hash.c:280
+#: src/hash.c:280
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "Carico=%ld/%ld=%.0f%%, "
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "Carico=%lu/%lu=%.0f%%, "
-#: hash.c:282
+#: src/hash.c:282
#, c-format
-msgid "Rehash=%d, "
-msgstr "Rehash=%d, "
+msgid "Rehash=%u, "
+msgstr "Rehash=%u, "
-#: hash.c:283
+#: src/hash.c:283
#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "Collisioni=%ld/%ld=%.0f%%"
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "Collisioni=%lu/%lu=%.0f%%"
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
-msgstr "Ricerca di una regola implicita per \"%s\".\n"
+msgstr "Ricerca di una regola implicita per «%s».\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
-msgstr ""
-"Ricerca di una regola implicita per il membro di archivio per \"%s\".\n"
+msgstr "Ricerca di una regola implicita per il membro di archivio per «%s».\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr "Evitata la ricorsione della regola implicita.\n"
-#: implicit.c:486
-#, c-format
-msgid "Stem too long: '%.*s'.\n"
-msgstr "Stem troppo lungo: \"%.*s\".\n"
+#: src/implicit.c:484
+#, fuzzy, c-format
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "Stem troppo lungo: «%.*s».\n"
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
-msgstr "Tentativo di usare la regola del modello con stem \"%.*s\".\n"
+msgstr "Tentativo di usare la regola del modello con stem «%.*s».\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
-msgstr "Prerequisito impossibile \"%s\" della regola rifiutato.\n"
+msgstr "Prerequisito impossibile «%s» della regola rifiutato.\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
-msgstr "Prerequisito implicito impossibile \"%s\" rifiutato.\n"
+msgstr "Prerequisito implicito impossibile «%s» rifiutato.\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
-msgstr "Tentativo di usare il prerequisito della regola \"%s\".\n"
+msgstr "Tentativo di usare il prerequisito della regola «%s».\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
-msgstr "Tentativo di usare il prerequisito implicito \"%s\".\n"
+msgstr "Tentativo di usare il prerequisito implicito «%s».\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
-msgstr "Trovato il prerequisito \"%s\" come VPATH \"%s\"\n"
+msgstr "Trovato il prerequisito «%s» come VPATH «%s»\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
-msgstr "Ricerca di una regola con il file intermedio \"%s\".\n"
+msgstr "Ricerca di una regola con il file intermedio «%s».\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr "Impossibile creare un file temporaneo\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (creato dump del core)"
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr " (ignorato)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
msgstr "<incorporato>"
-#: job.c:510
-#, fuzzy, c-format
+#: src/job.c:573
+#, c-format
msgid "%s[%s: %s] Error %d%s"
-msgstr "%s[%s] Errore %d%s"
+msgstr "%s[%s: %s] Errore %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** Attesa per i processi non terminati...."
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "Processo figlio vivo %p (%s) con PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (remoto)"
-#: job.c:831
-#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Interruzione del processo figlio perdente %p con PID %s %s\n"
-
-#: job.c:832
+#: src/job.c:898
#, c-format
msgid "Reaping winning child %p PID %s %s\n"
msgstr "Interruzione del processo figlio vincente %p con PID %s %s\n"
-#: job.c:839
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Interruzione del processo figlio perdente %p con PID %s %s\n"
+
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "Pulitura del file batch temporaneo %s\n"
-#: job.c:845
+#: src/job.c:956
#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr "Pulitura del file batch temporaneo %s non riuscita (%d)\n"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr ""
"Rimozione del processo figlio %p con PID %s%s dalla catena di esecuzione.\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr "Token rilasciato per il processo figlio %p (%s).\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "process_easy() non riuscita all'avvio del processo (e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -708,101 +717,95 @@ msgstr ""
"\n"
"Contati %d argomenti nell'avvio fallito\n"
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr ""
"Inserimento del processo figlio %p (%s) con PID %s%s nella catena di "
"esecuzione.\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "Token ottenuto per il processo figlio %p (%s).\n"
-#: job.c:1838
+#: src/job.c:1902
#, c-format
msgid "%s: target '%s' does not exist"
-msgstr "%s: l'obbiettivo \"%s\" non esiste"
+msgstr "%s: l'obbiettivo «%s» non esiste"
-#: job.c:1841
+#: src/job.c:1905
#, c-format
msgid "%s: update target '%s' due to: %s"
-msgstr "%s: aggiorna l'obbiettivo \"%s\" a causa di: %s"
+msgstr "%s: aggiorna l'obbiettivo «%s» a causa di: %s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr ""
"impossibile far rispettare i limiti di carico su questo sistema operativo"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "impossibile far rispettare il limite di carico: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr ""
"nessun'altra gestione del file: impossibile duplicare lo standard input\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr ""
"nessun'altra gestione del file: impossibile duplicare lo standard output\n"
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr ""
"nessun'altra gestione del file: impossibile duplicare lo standard error\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr "Impossibile ripristinare lo standard input\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr "Impossibile ripristinare lo standard output\n"
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr "Impossibile ripristinare lo standard error\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr ""
"make ha interrotto il processo figlio con pid %s, è ancora in attesa del "
"processo con pid %s\n"
-#: job.c:2275
-#, fuzzy, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: comando non trovato"
-
-#: job.c:2277
-#, fuzzy, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s: comando non trovato"
-
-#: job.c:2337
+#: src/job.c:2623
#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: shell non trovata"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr "spawnvpe: lo spazio dell'ambiente potrebbe essere esaurito"
-#: job.c:2584
+#: src/job.c:2862
#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
-msgstr "$SHELL cambiata (era \"%s\", adesso è \"%s\")\n"
+msgstr "$SHELL cambiata (era «%s», adesso è «%s»)\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr "Creazione del file batch temporaneo %s\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
@@ -810,7 +813,7 @@ msgstr ""
"Contenuti del file batch:\n"
"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
@@ -819,60 +822,57 @@ msgstr ""
"Contenuti del file batch:%s\n"
"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr ""
"%s (riga %d) contesto della shell errato (!unixy && !batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr "-O[TIPO] (--output-sync[=TIPO]) non è configurato per questa versione."
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr "Apertura della tabella dei simboli globale non riuscita: %s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr "L'oggetto caricato %s non è dichiarato compatibile con la licenza GPL"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr "Caricamento del simbolo %s da %s non riuscito: %s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr "Nome del simbolo vuoto per il caricamento: %s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr "Caricamento del simbolo %s da %s\n"
-#: load.c:256
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
-msgstr "L'operazione \"load\" non è supportata su questa piattaforma."
+msgstr "L'operazione «load» non è supportata su questa piattaforma."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "Opzioni:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr " -b, -m Ignorato per compatibilità.\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr ""
" -B, --always-make Genera tutti gli obiettivi "
"incondizionatamente.\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
@@ -881,17 +881,17 @@ msgstr ""
" Cambia DIRECTORY prima di fare qualunque "
"cosa.\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr " -d Mostra molte informazioni di debug.\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
" --debug[=FLAGS] Mostra diversi tipi di informazioni di debug.\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
@@ -900,13 +900,14 @@ msgstr ""
" Le variabili ambiente sovrascrivono i "
"makefile.\n"
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
-" --eval=TESTO Analizza STRINGA come estratta dal makefile.\n"
+" -E STRINGA, --eval=TESTO Analizza STRINGA come estratta dal "
+"makefile.\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -914,16 +915,16 @@ msgstr ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Legge FILE come un makefile.\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help Mostra questo messaggio ed esce.\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr ""
" -i, --ignore-errors Ignora gli errori dai set di istruzioni.\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
@@ -931,7 +932,7 @@ msgstr ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Cerca nella DIRECTORY per i makefile inclusi.\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
@@ -939,14 +940,14 @@ msgstr ""
" -j [N], --jobs[=N] Permette N processi alla volta; infiniti se "
"non viene specificato l'argomento.\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
" -k, --keep-going Continua l'esecuzione quando non è possibile "
"creare alcuni obiettivi.\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
@@ -956,7 +957,7 @@ msgstr ""
" Non avvia processi multipli a meno che il "
"carico di lavoro non sia sotto N.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
@@ -964,7 +965,7 @@ msgstr ""
" -L, --check-symlink-times Usa il più recente mtime tra i collegamenti "
"simbolici e l'obiettivo.\n"
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
@@ -974,7 +975,7 @@ msgstr ""
" Non esegue alcun set di istruzioni; lo stampa "
"solamente.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
@@ -984,7 +985,7 @@ msgstr ""
" Considera il FILE come molto vecchio e non "
"riesegue make.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
@@ -993,11 +994,11 @@ msgstr ""
" Sincronizza l'output dei processi paralleli "
"dal TIPO.\n"
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr " -p, --print-data-base Stampa il database interno di make.\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
@@ -1005,22 +1006,28 @@ msgstr ""
" -q, --question Non avvia alcun set di istruzioni; lo stato di "
"uscita indica se è aggiornato.\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr ""
" -r, --no-builtin-rules Disabilita le regole implicite interne.\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr ""
" -R, --no-builtin-variables Disabilita le impostazioni delle variabili "
"interne.\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr " -s, --silent, --quiet Non visualizza i set di istruzioni.\n"
-#: main.c:393
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" --no-silent Visualizza il set di istruzioni (Disabilita la "
+"modalità --silent).\n"
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
@@ -1029,27 +1036,27 @@ msgstr ""
" Disattiva l'opzione -k.\n"
# ## touch = in questo contesto è simile alla funzione del comando 'touch'
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
" -t, --touch Esegue il touch degli obiettivi invece di "
"ricrearli.\n"
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
msgstr " --trace Stampa informazioni di tracciamento.\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr ""
" -v, --version Stampa il numero di versione di make ed esce.\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory Stampa la directory corrente.\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
@@ -1057,7 +1064,7 @@ msgstr ""
" --no-print-directory Disattiva l'opzione -w, anche se era stata "
"attivata implicitamente.\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1065,7 +1072,7 @@ msgstr ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Considera il FILE come nuovo di zecca.\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
@@ -1073,27 +1080,28 @@ msgstr ""
" --warn-undefined-variables Avvisa quando viene referenziata una variabile "
"non definita.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "una stringa vuota non è valida come nome di file"
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
-msgstr "livello di debug specificato sconosciuto \"%s\""
+msgstr "livello di debug specificato sconosciuto «%s»"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
-msgstr "tipo di output-sync (sincronizzazione dell'output) sconosciuto \"%s\""
+msgstr "tipo di output-sync (sincronizzazione dell'output) sconosciuto «%s»"
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr ""
"%s: catturata una interruzione/eccezione (codice = 0x%lx, indirizzo = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1108,141 +1116,152 @@ msgstr ""
"ExceptionFlags = %lx\n"
"ExceptionAddress = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "Violazione accesso: operazione di scrittura all'indirizzo 0x%p\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "Violazione accesso: operazione di lettura all'indirizzo 0x%p\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell() impostazione default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr ""
"find_and_set_shell() impostazione del percorso di ricerca default_shell = "
"%s\n"
-#: main.c:1538
+#: src/main.c:1609
#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s viene sospeso per 30 secondi..."
-
-#: main.c:1540
-#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "sleep(30) eseguito. Continuazione.\n"
-
-#: main.c:1627
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
-"attenzione: jobserver non disponibile, viene usato -j1. Aggiungere \"+\" "
-"alla regola make superiore."
+"attenzione: jobserver non disponibile, viene usato -j1. Aggiungere «+» alla "
+"regola make superiore."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
msgstr ""
-"attenzione: -jN forzata nel submake: disattivazione della modalità jobserver."
+"attenzione: -j%d forzata nel submake: disattivazione della modalità "
+"jobserver."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr "Il Makefile dallo standard input è stato specificato due volte."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (file temporaneo)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (file temporaneo)"
-#: main.c:2048
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr ""
+"attenzione: -j%d forzata nel submake: disattivazione della modalità "
+"jobserver."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr "I processi paralleli (-j) non sono supportati su questa piattaforma."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "Reimpostazione alla modalità a singolo processo (-j1)."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr "Collegamenti simbolici non supportati: opzione -L disabilitata."
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "Aggiornamento dei makefile....\n"
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr ""
-"Il makefile \"%s\" potrebbe entrare in un ciclo all'infinito; make non "
+"Il makefile «%s» potrebbe entrare in un ciclo all'infinito; make non "
"rieseguito.\n"
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
-msgstr "Riesecuzione del makefile \"%s\" non riuscita."
+msgstr "Riesecuzione del makefile «%s» non riuscita."
-#: main.c:2299
+#: src/main.c:2323
#, c-format
msgid "Included makefile '%s' was not found."
-msgstr "Il makefile \"%s\" incluso non è stato trovato."
+msgstr "Il makefile «%s» incluso non è stato trovato."
-#: main.c:2304
+#: src/main.c:2328
#, c-format
msgid "Makefile '%s' was not found"
-msgstr "Il makefile \"%s\" non è stato trovato"
+msgstr "Il makefile «%s» non è stato trovato"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "Impossibile ritornare alla directory originale."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "Riesecuzione[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (file temporaneo): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ".DEFAULT_GOAL contiene più di un obiettivo"
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Nessun obiettivo specificato e nessun makefile trovato"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "Nessun obiettivo"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Nessun obiettivo specificato e nessun makefile trovato"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "Aggiornamento degli obiettivi....\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr ""
"attenzione: rilevato un tempo alterato. La creazione potrebbe essere "
"incompleta."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "Uso: %s [opzioni] [obiettivo] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1251,7 +1270,7 @@ msgstr ""
"\n"
"Questo programma è stato compilato per %s\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1260,32 +1279,32 @@ msgstr ""
"\n"
"Questo programma è stato compilato per %s (%s)\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr "Segnalare i bug a <bug-make@gnu.org>\n"
-#: main.c:2870
+#: src/main.c:2901
#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
-msgstr "l'opzione \"%s%s\" richiede un argomento stringa non vuoto"
+msgstr "l'opzione «%s%s» richiede un argomento stringa non vuoto"
-#: main.c:2934
+#: src/main.c:2965
#, c-format
msgid "the '-%c' option requires a positive integer argument"
-msgstr "l'opzione \"-%c\" richiede un argomento intero positivo"
+msgstr "l'opzione «-%c» richiede un argomento intero positivo"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%sCompilato per %s\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%sCompilato per %s (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1299,7 +1318,7 @@ msgstr ""
"ridistribuirlo.\n"
"%s Non c'è ALCUNA GARANZIA, per quanto consentito dalle vigenti normative.\n"
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1308,7 +1327,7 @@ msgstr ""
"\n"
"# Generazione del database delle informazioni, creato il %s"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1317,511 +1336,536 @@ msgstr ""
"\n"
"# Generazione del database completata il %s\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Errore %d sconosciuto"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: utente %lu (reale %lu), gruppo %lu (reale %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "Accesso inizializzato"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr "Accesso utente"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "Accesso make"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "Accesso processo figlio"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: ingresso in una directory sconosciuta\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: uscita dalla directory sconosciuta\n"
-#: output.c:109
+#: src/output.c:102
#, c-format
msgid "%s: Entering directory '%s'\n"
-msgstr "%s: ingresso nella directory \"%s\"\n"
+msgstr "%s: ingresso nella directory «%s»\n"
-#: output.c:111
+#: src/output.c:104
#, c-format
msgid "%s: Leaving directory '%s'\n"
-msgstr "%s: uscita dalla directory \"%s\"\n"
+msgstr "%s: uscita dalla directory «%s»\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: ingresso in una directory sconosciuta\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: uscita dalla directory sconosciuta\n"
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
-msgstr "%s[%u]: ingresso nella directory \"%s\"\n"
+msgstr "%s[%u]: ingresso nella directory «%s»\n"
-#: output.c:122
+#: src/output.c:115
#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
-msgstr "%s[%u]: uscita dalla directory \"%s\"\n"
+msgstr "%s[%u]: uscita dalla directory «%s»\n"
-#: output.c:495 output.c:497
-#, fuzzy
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
-msgstr "errore in scrittura: %s"
+msgstr "errore in scrittura: stdout"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". Arresto.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr "-O[TIPO] (--output-sync[=TIPO]) non è configurato per questa versione."
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "creazione della pipe dei processi"
-#: posixos.c:72 posixos.c:227
-#, fuzzy
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
-msgstr "creazione della pipe dei processi"
+msgstr "beffa della pipe dei processi"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr "inizializzazione nella pipe della modalità jobserver"
-#: posixos.c:90
-#, fuzzy, c-format
+#: src/posixos.c:119
+#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
-msgstr "errore interno: stringa illecita per --jobserver-fds \"%s\""
+msgstr "errore interno: stringa illecita per --jobserver-auth «%s»"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr "Client del jobserver (fds %d,%d)\n"
-#: posixos.c:109
-#, fuzzy
+#: src/posixos.c:138
msgid "jobserver pipeline"
-msgstr "inizializzazione nella pipe della modalità jobserver"
+msgstr "jobserver pipeline"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr "scrittura del jobserver"
-#: posixos.c:268
-#, fuzzy
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr "job server spento"
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
-msgstr "lettura della pipe dei processi"
+msgstr "pselect della pipe dei processi"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "lettura della pipe dei processi"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "Lettura dei makefile...\n"
-#: read.c:329
+#: src/read.c:336
#, c-format
msgid "Reading makefile '%s'"
-msgstr "Lettura del makefile \"%s\""
+msgstr "Lettura del makefile «%s»"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (nessun obiettivo predefinito)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (percorso di ricerca)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (ignora)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
-msgstr " (nessuna espansione per \"~\")"
+msgstr " (nessuna espansione per «~»)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
-msgstr "UTF-8 BOM nel makefile \"%s\" saltato\n"
+msgstr "UTF-8 BOM nel makefile «%s» saltato\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr "UTF-8 BOM nel makefile buffer saltato\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "sintassi illecita nel condizionale"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr "%s: caricamento non riuscito"
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
msgstr "il set di istruzioni inizia prima del primo obiettivo"
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
msgstr "regola mancante prima del set di istruzioni"
-#: read.c:1124
-#, fuzzy
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
-msgstr " (si intendeva TAB invece di 8 spazi?)"
+msgstr "separatore mancante (si intendeva TAB invece di 8 spazi?)"
-#: read.c:1126
-#, fuzzy
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
-msgstr "separatore %s mancante"
+msgstr "separatore mancante"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "modello mancante per l'obiettivo"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "modelli multipli per l'obiettivo"
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
-msgstr "il modello dell'obiettivo non contiene alcun \"%%\""
+msgstr "il modello dell'obiettivo non contiene alcun «%%»"
-#: read.c:1390
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
-msgstr "\"endif\" mancante"
+msgstr "«endif» mancante"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "nome vuoto della variabile"
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
-msgstr "testo non pertinente dopo la direttiva \"define\""
+msgstr "testo non pertinente dopo la direttiva «define»"
-#: read.c:1488
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
-msgstr "\"endef\" mancante, \"define\" non terminato"
+msgstr "«endef» mancante, «define» non terminato"
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
-msgstr "testo non pertinente dopo la direttiva \"endef\""
+msgstr "testo non pertinente dopo la direttiva «endef»"
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
-msgstr "testo non pertinente dopo la direttiva \"%s\""
+msgstr "testo non pertinente dopo la direttiva «%s»"
-#: read.c:1589
+#: src/read.c:1604
#, c-format
msgid "extraneous '%s'"
-msgstr "\"%s\" non pertinente"
+msgstr "«%s» non pertinente"
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
-msgstr "un solo \"else\" per condizionale"
+msgstr "un solo «else» per condizionale"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr "Definizione malformata della variabile specifica per l'obiettivo"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr "i prerequisiti non possono essere definiti nei set di istruzioni"
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr "gli obbiettivi raggruppati devono fornire un set di istruzioni"
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr "regole del modello implicite e statiche miste"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "regole implicite e normali miste"
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr ""
-"il \"%s\" dell'obiettivo non corrisponde al modello dell'obiettivo stesso"
+"il «%s» dell'obiettivo non corrisponde al modello dell'obiettivo stesso"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
-msgstr "Il file dell'obiettivo \"%s\" contiene sia : che ::"
+msgstr "il file dell'obiettivo «%s» contiene sia : che ::"
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
-msgstr ""
-"l'obiettivo \"%s\" è stato fornito più di una volta nella stessa regola"
+msgstr "l'obiettivo «%s» è stato fornito più di una volta nella stessa regola"
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
-msgstr ""
-"attenzione: sovrascrittura del set di istruzioni per l'obiettivo \"%s\""
+msgstr "attenzione: sovrascrittura del set di istruzioni per l'obiettivo «%s»"
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr ""
-"attenzione: ignorato il set di istruzioni obsoleto per l'obiettivo \"%s\""
+"attenzione: ignorato il set di istruzioni obsoleto per l'obiettivo «%s»"
-#: read.c:2223
-#, fuzzy
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
-msgstr "regole implicite e normali miste"
+msgstr "*** regole implicite e normali miste: sintassi deprecata"
+
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr ""
+"attenzione: sovrascrittura dell'appartenente al gruppo per l'obiettivo «%s»"
-#: read.c:2542
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr ""
"attenzione: è stato rilevato il carattere NUL; il resto della riga viene "
"ignorato"
-#: remake.c:226
+#: src/remake.c:226
#, c-format
msgid "Nothing to be done for '%s'."
-msgstr "Nessuna operazione da eseguire per \"%s\"."
+msgstr "Nessuna operazione da eseguire per «%s»."
-#: remake.c:227
+#: src/remake.c:227
#, c-format
msgid "'%s' is up to date."
-msgstr "\"%s\" è aggiornato."
+msgstr "«%s» è aggiornato."
-#: remake.c:323
+#: src/remake.c:323
#, c-format
msgid "Pruning file '%s'.\n"
-msgstr "Pulizia del file \"%s\".\n"
+msgstr "Pulizia del file «%s».\n"
-#: remake.c:406
+#: src/remake.c:389
#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
-msgstr ""
-"%s Nessuna regola per generare l'obiettivo \"%s\", necessario per \"%s\"%s"
+msgstr "%s Nessuna regola per generare l'obiettivo «%s», necessario per «%s»%s"
-#: remake.c:416
+#: src/remake.c:399
#, c-format
msgid "%sNo rule to make target '%s'%s"
-msgstr "%s Nessuna regola per generare l'obiettivo \"%s\"%s"
+msgstr "%s Nessuna regola per generare l'obiettivo «%s»%s"
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
-msgstr "Considerato il file obiettivo \"%s\".\n"
+msgstr "Considerato il file obiettivo «%s».\n"
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
-msgstr "Tentativo recente di aggiornamento del file \"%s\" non riuscito.\n"
+msgstr "Tentativo recente di aggiornamento del file «%s» non riuscito.\n"
-#: remake.c:461
+#: src/remake.c:444
#, c-format
msgid "File '%s' was considered already.\n"
-msgstr "Il file \"%s\" è già stato esaminato.\n"
+msgstr "Il file «%s» è già stato esaminato.\n"
-#: remake.c:471
+#: src/remake.c:454
#, c-format
msgid "Still updating file '%s'.\n"
-msgstr "L'aggiornamento del file \"%s\" è ancora in corso.\n"
+msgstr "L'aggiornamento del file «%s» è ancora in corso.\n"
-#: remake.c:474
+#: src/remake.c:457
#, c-format
msgid "Finished updating file '%s'.\n"
-msgstr "Aggiornamento del file \"%s\" terminato.\n"
+msgstr "Aggiornamento del file «%s» terminato.\n"
-#: remake.c:503
+#: src/remake.c:486
#, c-format
msgid "File '%s' does not exist.\n"
-msgstr "Il file \"%s\" non esiste.\n"
+msgstr "Il file «%s» non esiste.\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
msgstr ""
-"*** Attenzione: il file .LOW_RESOLUTION_TIME \"%s\" ha una marcatura "
-"temporale ad alta risoluzione"
+"*** Attenzione: il file .LOW_RESOLUTION_TIME «%s» ha una marcatura temporale "
+"ad alta risoluzione"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
-msgstr "Trovata una regola implicita per \"%s\".\n"
+msgstr "Trovata una regola implicita per «%s».\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
-msgstr "Nessuna regola implicita trovata per \"%s\".\n"
+msgstr "Nessuna regola implicita trovata per «%s».\n"
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
-msgstr "Uso del set di istruzioni predefinito per \"%s\".\n"
+msgstr "Uso del set di istruzioni predefinito per «%s».\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "Dipendenza circolare %s <- %s scartata."
-#: remake.c:691
+#: src/remake.c:674
#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
-msgstr "Prerequisiti del file obiettivo \"%s\" terminati.\n"
+msgstr "Prerequisiti del file obiettivo «%s» terminati.\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
-msgstr "Generazione dei prerequisiti di \"%s\" in corso.\n"
+msgstr "Generazione dei prerequisiti di «%s» in corso.\n"
-#: remake.c:711
+#: src/remake.c:694
#, c-format
msgid "Giving up on target file '%s'.\n"
-msgstr "Abbandono sul file obiettivo \"%s\".\n"
+msgstr "Abbandono sul file obiettivo «%s».\n"
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
-msgstr "L'obiettivo \"%s\" non è stato rigenerato a causa di errori."
+msgstr "L'obiettivo «%s» non è stato rigenerato a causa di errori."
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
-msgstr "Il prerequisito \"%s\" è solo per l'obiettivo \"%s\".\n"
+msgstr "Il prerequisito «%s» è solo per l'obiettivo «%s».\n"
-#: remake.c:773
+#: src/remake.c:756
#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
-msgstr "Il prerequisito \"%s\" dell'obiettivo \"%s\" non esiste.\n"
+msgstr "Il prerequisito «%s» dell'obiettivo «%s» non esiste.\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
-msgstr "Il prerequisito \"%s\" è più nuovo di quello dell'obiettivo \"%s\".\n"
+msgstr "Il prerequisito «%s» è più nuovo di quello dell'obiettivo «%s».\n"
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
-msgstr ""
-"Il prerequisito \"%s\" è più vecchio di quello dell'obiettivo \"%s\".\n"
+msgstr "Il prerequisito «%s» è più vecchio di quello dell'obiettivo «%s».\n"
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
-msgstr ""
-"L'obiettivo \"%s\" è \"doppio due punti\" e non ha alcun prerequisito.\n"
+msgstr "L'obiettivo «%s» è \"doppio due punti\" e non ha alcun prerequisito.\n"
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr ""
-"Nessun set di istruzioni per \"%s\" e nessun prerequisito effettivamente "
+"Nessun set di istruzioni per «%s» e nessun prerequisito effettivamente "
"cambiato.\n"
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
-msgstr "Generazione di \"%s\" a causa del flag \"always-make\".\n"
+msgstr "Generazione di «%s» a causa del flag \"always-make\".\n"
-#: remake.c:819
+#: src/remake.c:802
#, c-format
msgid "No need to remake target '%s'"
-msgstr "Non è necessario rigenerare l'obiettivo \"%s\""
+msgstr "Non è necessario rigenerare l'obiettivo «%s»"
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
-msgstr "; uso del nome VPATH \"%s\""
+msgstr "; uso del nome VPATH «%s»"
-#: remake.c:841
+#: src/remake.c:824
#, c-format
msgid "Must remake target '%s'.\n"
-msgstr "L'obiettivo \"%s\" deve essere rigenerato.\n"
+msgstr "L'obiettivo «%s» deve essere rigenerato.\n"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
-msgstr " nome VPATH \"%s\" ignorato.\n"
+msgstr " Nome VPATH «%s» ignorato.\n"
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
-msgstr "Esecuzione del set di istruzioni per \"%s\" in corso.\n"
+msgstr "Esecuzione del set di istruzioni per «%s» in corso.\n"
-#: remake.c:863
+#: src/remake.c:846
#, c-format
msgid "Failed to remake target file '%s'.\n"
-msgstr "Rigenerazione del file obiettivo \"%s\" non riuscita.\n"
+msgstr "Rigenerazione del file obiettivo «%s» non riuscita.\n"
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
-msgstr "File obiettivo \"%s\" rigenerato correttamente.\n"
+msgstr "File obiettivo «%s» rigenerato correttamente.\n"
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr ""
-"Il file obiettivo \"%s\" necessita di essere rigenerato con l'opzione -q.\n"
+"Il file obiettivo «%s» necessita di essere rigenerato con l'opzione -q.\n"
-#: remake.c:1064
+#: src/remake.c:1047
#, c-format
msgid "Using default commands for '%s'.\n"
-msgstr "Uso dei comandi predefiniti per \"%s\".\n"
-
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "Attenzione: il file \"%s\" ha un orario di modifica nel futuro"
+msgstr "Uso dei comandi predefiniti per «%s».\n"
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
-msgstr "Attenzione: il file \"%s\" ha un orario di modifica %s nel futuro"
+msgstr "Attenzione: il file «%s» ha un orario di modifica %s nel futuro"
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
-msgstr "l'elemento .LIBPATTERNS \"%s\" non è un modello"
+msgstr "l'elemento .LIBPATTERNS «%s» non è un modello"
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr "Le personalizzazioni non verranno esportate: %s\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -1829,7 +1873,7 @@ msgstr ""
"\n"
"# Regole implicite"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1837,181 +1881,177 @@ msgstr ""
"\n"
"# Regole non implicite."
-#: rule.c:514
+#: src/rule.c:548
#, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
-"# %u regole implicite, %u"
+"# %u regole implicite, %u (%.1f%%) terminale."
-#: rule.c:523
-msgid " terminal."
-msgstr " terminale."
-
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "BUG: num_pattern_rules è errato! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "segnale sconosciuto"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Chiusura"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "Interruzione"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Uscita (con core dump)"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "Istruzione illecita"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "Rilevato trace/breakpoint"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Annullato"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "Rilevato IOT"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "Rilevato EMT"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "Eccezione in virgola mobile"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Ucciso"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "Errore di bus"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Errore di segmentazione"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "Chiamata di sistema errata"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "Pipe interrotta"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Sveglia"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "Terminato"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "Segnale 1 definito dall'utente"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "Segnale 2 definito dall'utente"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "Processo figlio uscito"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Mancanza di alimentazione elettrica"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Fermato (da terminale)"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Fermato (input tty)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Fermato (output tty)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Fermato"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "Limite di tempo CPU superato"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "Superato il limite di dimensione file"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "Timer virtuale terminato"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "Timer di profiling terminato"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "Finestra modificata"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Continuato"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "Condizioni di I/O urgente"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "I/O consentito"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "Risorsa persa"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Segnale di pericolo"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Richiesta informazioni"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "Co-processore a virgola mobile non disponibile"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
@@ -2020,7 +2060,7 @@ msgstr ""
"\n"
"%s buffer strcache assenti\n"
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -2031,27 +2071,27 @@ msgstr ""
"%s buffer strcache: %lu (%lu) / stringhe = %lu / memorizzazione = %lu B / "
"media = %lu B\n"
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
-"%s buffer corrente: dimensione = %hu B / usato = %hu B / count = %hu / media "
-"= %hu B\n"
+"%s buffer corrente: dimensione = %hu B / usato = %hu B / numero = %hu / "
+"media = %u B\n"
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr "%s altra usata: totale = %lu B / count = %lu / media = %lu B\n"
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
msgstr ""
"%s altra libera: totale = %lu B / max = %lu B / min = %lu B / media = %hu B\n"
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
@@ -2060,7 +2100,7 @@ msgstr ""
"\n"
"%s prestazioni strcache: lookups = %lu / hit rate = %lu%%\n"
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
@@ -2068,44 +2108,44 @@ msgstr ""
"# statistiche della tabella hash:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "automatico"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "predefinito"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "ambiente"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "makefile"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "ambiente con l'opzione -e"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "riga di comando"
-#: variable.c:1647
+#: src/variable.c:1671
msgid "'override' directive"
msgstr "direttiva \"override\""
-#: variable.c:1658
+#: src/variable.c:1682
#, c-format
msgid " (from '%s', line %lu)"
-msgstr " (da \"%s\", riga %lu)"
+msgstr " (da «%s», riga %lu)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr "# statistiche tabella di hash del set di variabili:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2113,15 +2153,15 @@ msgstr ""
"\n"
"# Variabili\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
msgstr ""
"\n"
-"# Valori di variabile non specifici per il modello."
+"# Valori di variabile non specifici per il modello"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2129,58 +2169,58 @@ msgstr ""
"\n"
"# Nessun valore per la variabile \"pattern-specific\"."
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
"# %u pattern-specific variable values"
msgstr ""
"\n"
-"# %u valori di variabile specifici per il modello."
+"# %u valori di variabile specifici per il modello"
-#: variable.h:224
+#: src/variable.h:229
#, c-format
msgid "warning: undefined variable '%.*s'"
-msgstr "attenzione: variabile \"%.*s\" non definita"
+msgstr "attenzione: variabile «%.*s» non definita"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr "sys$search() non riuscita con %d\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr ""
"-attenzione, potrebbe essere necessario riabilitare la gestione di CTRL+Y da "
"DCL.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "CD INTERNO %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
-msgstr ""
+msgstr "DCL: %s\n"
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr "Accoda output a %s\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr "Accoda %.*s e pulisce\n"
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "Verrà invece eseguito %s\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2188,151 +2228,66 @@ msgstr ""
"\n"
"# Percorsi di ricerca VPATH\n"
-#: vpath.c:620
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
-msgstr "# Percorsi di ricerca \"vpath\" assenti."
+msgstr "# Non ci sono percorsi di ricerca 'vpath'."
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
"# %u 'vpath' search paths.\n"
msgstr ""
"\n"
-"# %u 'vpath' percorsi di ricerca.\n"
+"# percorsi di ricerca 'vpath' %u.\n"
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
msgstr ""
"\n"
-"# Percorso di ricerca non generale (variabile \"VPATH\")."
+"# Percorso di ricerca non generale (variabile «VPATH»)."
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
"# "
msgstr ""
"\n"
-"# Percorso di ricerca generale (variabile \"VPATH\"):\n"
+"# Percorso di ricerca generale (variabile «VPATH»):\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr "Slot del jobserver limitati a %d\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
-msgstr "Creazione del semaforo del jobserver: (Errore %ld: %s)"
+msgstr "creazione del semaforo del jobserver: (Errore %ld: %s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr ""
-"errore interno: impossibile aprire il semaforo del jobserver \"%s\": (Errore "
+"errore interno: impossibile aprire il semaforo del jobserver «%s»: (Errore "
"%ld: %s)"
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr "Client del jobserver (semaforo %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr "rilascio del semaforo del jobserver: (Errore %ld: %s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr "attendere semaforo o processo figlio (Errore %ld: %s)"
-
-#~ msgid "%s: recipe for target '%s' failed"
-#~ msgstr "%s: set di istruzioni per l'obiettivo \"%s\" non riuscito"
-
-#~ msgid "%s[%s] Error 0x%x%s"
-#~ msgstr "%s[%s] Errore 0x%x%s"
-
-#~ msgid "%s[%s] %s%s%s"
-#~ msgstr "%s[%s] %s%s%s"
-
-#~ msgid "internal error: multiple --sync-mutex options"
-#~ msgstr "errore interno: opzioni multiple per --sync-mutex"
-
-#~ msgid "internal error: multiple --jobserver-fds options"
-#~ msgstr "errore interno: opzioni multiple per --jobserver-fds"
-
-#~ msgid "dup jobserver"
-#~ msgstr "jobserver duplicato"
-
-#~ msgid "virtual memory exhausted"
-#~ msgstr "memoria virtuale esaurita"
-
-#~ msgid "write error"
-#~ msgstr "errore in scrittura"
-
-#~ msgid "Warning: Empty redirection\n"
-#~ msgstr "Attenzione: redirezione vuota\n"
-
-#~ msgid "internal error: '%s' command_state"
-#~ msgstr "errore interno: command_state \"%s\""
-
-#~ msgid "BUILTIN [%s][%s]\n"
-#~ msgstr "[%s] INTERNO [%s]\n"
-
-#~ msgid "BUILTIN RM %s\n"
-#~ msgstr "RM INTERNO %s\n"
-
-#~ msgid "Unknown builtin command '%s'\n"
-#~ msgstr "Comando interno \"%s\" sconosciuto\n"
-
-#~ msgid "Error, empty command\n"
-#~ msgstr "Errore, comando vuoto\n"
-
-#~ msgid "Redirected input from %s\n"
-#~ msgstr "Input rediretto da %s\n"
-
-#~ msgid "Redirected error to %s\n"
-#~ msgstr "Errore rediretto a %s\n"
-
-#~ msgid "Redirected output to %s\n"
-#~ msgstr "Output rediretto a %s\n"
-
-#~ msgid "Error spawning, %d\n"
-#~ msgstr "Errore nella generazione, %d\n"
-
-#~ msgid "# Invalid value in 'update_status' member!"
-#~ msgstr "# Valore illecito nel membro \"update_status\"!"
-
-#~ msgid "unknown trace mode '%s'"
-#~ msgstr "modo di tracciamento \"%s\" sconosciuto"
-
-#~ msgid "*** [%s] Error 0x%x (ignored)"
-#~ msgstr "*** [%s] Errore 0x%x (ignorato)"
-
-#~ msgid "Invoking recipe from %s:%lu to update target `%s'.\n"
-#~ msgstr ""
-#~ "Chiamata del set di istruzioni da %s:%lu per aggiornare l'obiettivo \"%s"
-#~ "\".\n"
-
-#~ msgid "Invoking builtin recipe to update target `%s'.\n"
-#~ msgstr ""
-#~ "Chiamata del set di istruzioni interno per aggiornare l'obiettivo \"%s"
-#~ "\".\n"
-
-#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
-#~ msgstr "%s # di buffer strcache: %d (* %d B/buffer = %d B)\n"
-
-#~ msgid ""
-#~ "\n"
-#~ "# strcache hash-table stats:\n"
-#~ "# "
-#~ msgstr ""
-#~ "\n"
-#~ "# statistiche tabella hash di strcache:\n"
-#~ "# "
diff --git a/po/ja.gmo b/po/ja.gmo
index a14961c..a9264d8 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index 1089c3f..8889d15 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -1,132 +1,133 @@
-# Japanese message catalog for make 4.2
+# Japanese message catalog for make
# Copyright (C) 2001 Free Software Foundation, Inc.
# This file is distributed under the same license as the make package.
# Daisuke Yamashita <yamad@mb.infoweb.ne.jp>, 2001.
# Thanks to NISHIJIMA Takanori
# GOTO Masanori <gotom@debian.or.jp>, 2003-2004.
-# Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>, 2011, 2014, 2016.
+# Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>, 2011, 2014, 2016, 2019, 2020.
#
msgid ""
msgstr ""
-"Project-Id-Version: make 4.2\n"
+"Project-Id-Version: make 4.2.93\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
-"PO-Revision-Date: 2016-05-24 22:45+0900\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2020-01-03 21:11+0900\n"
"Last-Translator: Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Basepath: /factory/ja-po/make/make-4.1.90\n"
-"X-Generator: Poedit 1.8.7.1\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 2.2.1\n"
-#: ar.c:46
+#: src/ar.c:46
#, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„機能を使ãŠã†ã¨ã—ã¦ã„ã¾ã™: '%s'"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "VMS ã§ã¯æ›¸åº«ã®ãƒ¡ãƒ³ãƒã‚’ touch ã™ã‚‹æ©Ÿèƒ½ãŒã‚ã‚Šã¾ã›ã‚“"
-#: ar.c:147
+#: src/ar.c:147
#, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "touch: 書庫 '%s' ãŒã‚ã‚Šã¾ã›ã‚“"
-#: ar.c:150
+#: src/ar.c:150
#, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "'%s' ã¯æœ‰åŠ¹ãªæ›¸åº«ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: ar.c:157
+#: src/ar.c:157
#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "touch: メンム'%s' 㯠'%s' 内ã«å­˜åœ¨ã—ã¾ã›ã‚“"
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr "touch: '%s' ã¸ã® ar_member_touch ã‹ã‚‰ç•°å¸¸ãªå€¤ãŒè¿”ã‚Šã¾ã—ãŸ"
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr "lbr$set_module() ãŒãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«æƒ…å ±ã®æŠ½å‡ºã«å¤±æ•—ã—ã¾ã—ãŸ. 状態 = %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "lbr$ini_control() ãŒå¤±æ•—ã—ã¾ã—ãŸ. 状態 = %d"
-#: arscan.c:261
+#: src/arscan.c:261
#, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr "ライブラリ '%s' ã‚’é–‹ã‘ãªã„ãŸã‚, メンãƒã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ %d ãŒæ¤œç´¢ã§ãã¾ã›ã‚“"
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr "メンム'%s'%s: %ld ãƒã‚¤ãƒˆ at %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (åå‰ãŒåˆ‡ã‚Šè©°ã‚られãŸã‹ã‚‚)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " 日付 %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, mode = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr "レシピã®è¡Œæ•°ãŒå¤šã™ãŽã¾ã™ (%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** 中断.\n"
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr "*** [%s] 書庫ã®ãƒ¡ãƒ³ãƒ '%s' ã¯å¤šåˆ†å½ç‰©ã§ã™ ― 削除ã—ã¾ã›ã‚“ã§ã—ãŸ"
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr "*** 書庫ã®ãƒ¡ãƒ³ãƒ '%s' ã¯å¤šåˆ†å½ç‰©ã§ã™ ― 削除ã—ã¾ã›ã‚“ã§ã—ãŸ"
-#: commands.c:645
+#: src/commands.c:646
#, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] ファイル '%s' を削除ã—ã¾ã™"
-#: commands.c:647
+#: src/commands.c:648
#, c-format
msgid "*** Deleting file '%s'"
msgstr "*** ファイル '%s' を削除ã—ã¾ã™"
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
msgstr "# 実行ã™ã‚‹ãƒ¬ã‚·ãƒ”"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (ビルトイン):"
-#: commands.c:688
+#: src/commands.c:689
#, c-format
msgid " (from '%s', line %lu):\n"
msgstr " (ファイル '%s', %lu 行目):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -134,218 +135,218 @@ msgstr ""
"\n"
"# ディレクトリ\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: 状態を調ã¹ã‚‰ã‚Œã¾ã›ã‚“ã§ã—ãŸ.\n"
-#: dir.c:1085
-#, fuzzy
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
-msgstr "# %s (key %s, mtime %ull): é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸ.\n"
+msgstr "# %s (key %s, mtime %I64u): é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸ.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr "# %s (device %d, inode [%d,%d,%d]): é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸ.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr "# %s (device %ld, inode %ld): é–‹ã‘ã¾ã›ã‚“ã§ã—ãŸ.\n"
-#: dir.c:1122
-#, fuzzy
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
-msgstr "# %s (key %s, mtime %ull): "
+msgstr "# %s (key %s, mtime %I64u): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (device %d, inode [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (device %ld, inode %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "0"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " 個ã®ãƒ•ã‚¡ã‚¤ãƒ«, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "0"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " 個ã®é©ç”¨ä¸èƒ½ãƒ•ã‚¡ã‚¤ãƒ«å"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " (ã“ã“ã¾ã§ã«)."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " 個ã®é©ç”¨ä¸èƒ½ãƒ•ã‚¡ã‚¤ãƒ«å (%lu 個ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå†…).\n"
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr "å†å¸°çš„変数 '%s' ãŒ(最終的ã«)ãれ自身をå‚ç…§ã—ã¦ã„ã¾ã™"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "終端ã®ãªã„変数å‚ç…§"
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr "ファイル '%s' ã®ãŸã‚ã®ã®ãƒ¬ã‚·ãƒ”㌠%s:%lu ã§æŒ‡å®šã•ã‚Œã¾ã—ãŸ,"
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr "ファイル '%s' ã®ãŸã‚ã®ãƒ¬ã‚·ãƒ”ãŒæš—黙ルールã®æŽ¢ç´¢ã§è¦‹ã¤ã‹ã‚Šã¾ã—ãŸ,"
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr "ã—ã‹ã—今㯠'%s' 㨠'%s' ã¯åŒã˜ãƒ•ã‚¡ã‚¤ãƒ«ã¨è¦‹ãªã•ã‚Œã¾ã™."
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr "'%s' ã®ãŸã‚ã®ãƒ¬ã‚·ãƒ”ã¯, '%s' ã®ãŸã‚ã®ã‚‚ã®ã‚’優先ã™ã‚‹ãŸã‚無視ã•ã‚Œã¾ã™."
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr "シングルコロン '%s' ã‹ã‚‰ãƒ€ãƒ–ルコロン '%s' ã«åå‰ã‚’変ãˆã‚‰ã‚Œã¾ã›ã‚“"
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr "ダブルコロン '%s' ã‹ã‚‰ã‚·ãƒ³ã‚°ãƒ«ã‚³ãƒ­ãƒ³ '%s' ã«åå‰ã‚’変ãˆã‚‰ã‚Œã¾ã›ã‚“"
-#: file.c:408
+#: src/file.c:408
#, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "*** 中間ファイル '%s' を削除ã—ã¾ã™"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "中間ファイルを削除ã—ã¦ã„ã¾ã™...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "ç¾åœ¨æ™‚刻"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: タイムスタンプãŒç¯„囲外ã§ã™ -- 代り㫠%s ã¨ã—ã¾ã™"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# ターゲットã§ã¯ã‚ã‚Šã¾ã›ã‚“:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# 特別扱ã„ã®ãƒ•ã‚¡ã‚¤ãƒ« (.PRECIOUS ã®å¿…è¦æ¡ä»¶)"
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# 疑似ターゲット (.PHONY ã®å¿…è¦æ¡ä»¶)"
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# コマンドラインターゲット."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr "# デフォルトã¾ãŸã¯ MAKEFILES, -include/sinclude Makefile."
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
msgstr "# ビルトインルール"
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# 暗黙ルールã®æŽ¢ç´¢ãŒè¡Œã‚ã‚Œã¾ã—ãŸ."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# 暗黙ルールã®æŽ¢ç´¢ã¯è¡Œã‚ã‚Œã¾ã›ã‚“ã§ã—ãŸ."
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr "# æš—é»™/é™çš„パターン語幹: '%s'\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr "# ファイルã¯ä¸­é–“å¿…è¦æ¡ä»¶ã§ã™."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# ã•ã‚‰ã« make:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# 修正時刻ãŒãƒã‚§ãƒƒã‚¯ã•ã‚Œã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# ファイルãŒå­˜åœ¨ã—ã¾ã›ã‚“."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# ファイルãŒéžå¸¸ã«å¤ã„ã§ã™."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# 最終修正 %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# ファイルã¯æ›´æ–°ã•ã‚Œã¦ã„ã¾ã™."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# ファイルã¯æ›´æ–°ã•ã‚Œã¦ã„ã¾ã›ã‚“."
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# レシピをç¾åœ¨å®Ÿè¡Œä¸­ã§ã™ (*ã“ã‚Œã¯ãƒã‚°ã§ã™*)."
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr "# ä¾å­˜é–¢ä¿‚レシピを実行中ã§ã™ (*ã“ã‚Œã¯ãƒã‚°ã§ã™*)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# æ›´æ–°ã«æˆåŠŸã—ã¾ã—ãŸ."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# æ›´æ–°ãŒå¿…è¦ã§ã™ (-q ãŒã‚»ãƒƒãƒˆã•ã‚Œã¦ã„ã¾ã™)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# æ›´æ–°ã«å¤±æ•—ã—ã¾ã—ãŸ."
-#: file.c:1032
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
msgstr "# 'command_state' メンãƒã«ç„¡åŠ¹ãªå€¤ã§ã™!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -353,7 +354,7 @@ msgstr ""
"\n"
"# ファイル"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -363,334 +364,342 @@ msgstr ""
"# ファイルãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ルã®çŠ¶æ…‹:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr "%s: フィールド '%s' ã¯ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã•ã‚Œã¦ã„ã¾ã›ã‚“: %s"
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
msgstr "éžæ•°å€¤ã®ç¬¬1引数㌠'word' 関数ã«ä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ"
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr "'word' 関数ã¸ã®ç¬¬1引数㯠0 より大ãããªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“"
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
msgstr "éžæ•°å€¤ã®ç¬¬1引数㌠'wordlist' 関数ã«ä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ"
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
msgstr "éžæ•°å€¤ã®ç¬¬2引数㌠'wordlist' 関数ã«ä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ"
-#: function.c:1525
+#: src/function.c:1533
#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "windows32_openpipe: DuplicateHandle(In) ãŒå¤±æ•— (e=%ld)\n"
-#: function.c:1549
+#: src/function.c:1557
#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr "windows32_openpipe: DuplicateHandle(Err) ãŒå¤±æ•— (e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "CreatePipe() ãŒå¤±æ•— (e=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe (): process_init_fd() ãŒå¤±æ•—\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "一時的ãªãƒãƒƒãƒãƒ•ã‚¡ã‚¤ãƒ« %s を消去ã—ã¾ã™\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr "file: ファイルåãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
msgstr "open: %s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
msgstr "write: %s: %s"
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, c-format
msgid "close: %s: %s"
msgstr "close: %s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr "file: 引数ãŒå¤šã™ãŽã¾ã™"
-#: function.c:2262
+#: src/function.c:2277
#, c-format
msgid "read: %s: %s"
msgstr "read: %s: %s"
-#: function.c:2275
+#: src/function.c:2290
#, c-format
msgid "file: invalid file operation: %s"
msgstr "file: 無効ãªãƒ•ã‚¡ã‚¤ãƒ«æ“作: %s"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr "引数ã®æ•°(%d)ãŒé–¢æ•° '%s' ã«ã¨ã£ã¦ä¸å分ã§ã™"
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "ã“ã®ãƒ—ラットフォームã§ã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“: 関数 '%s'"
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr "終端ãŒãªã„関数呼ã³å‡ºã— '%s': '%c' ãŒã‚ã‚Šã¾ã›ã‚“"
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr "空ã®é–¢æ•°å"
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr "無効ãªé–¢æ•°å: %s"
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr "関数åãŒé•·ã™ãŽã¾ã™: %s"
-#: function.c:2657
+#: src/function.c:2674
#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
msgstr "引数個数指定(最å°å€¤;%u)ãŒç„¡åŠ¹ã§ã™: 関数 %s"
-#: function.c:2660
+#: src/function.c:2677
#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
msgstr "引数個数指定(最大値;%u)ãŒç„¡åŠ¹ã§ã™: 関数 %s"
-#: getopt.c:659
+#: src/getopt.c:659
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: オプション '%s' ã¯çŸ­ã™ãŽã¦æ­£ã—ã判別ã§ãã¾ã›ã‚“\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: オプション '--%s' ã¯å¼•æ•°ã‚’å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: オプション '%c%s' ã¯å¼•æ•°ã‚’å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: オプション '%s' ã«ã¯å¼•æ•°ãŒ1ã¤å¿…è¦ã§ã™\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: オプション '--%s' ã‚’èªè­˜ã§ãã¾ã›ã‚“\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: オプション '%c%s' ã‚’èªè­˜ã§ãã¾ã›ã‚“\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: ä¸æ­£ãªã‚ªãƒ—ション ― %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: 無効ãªã‚ªãƒ—ション ― %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: オプションã«ã¯å¼•æ•°ãŒå¿…è¦ã§ã™ ― %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: オプション '-W %s' ã¯çŸ­ã™ãŽã¦æ­£ã—ã判別ã§ãã¾ã›ã‚“\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: オプション '-W %s' ã¯å¼•æ•°ã‚’å–ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr "guile: 展開中 '%s'\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr "guile: 評価中 '%s'\n"
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr ""
"ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ル用 %lu ãƒã‚¤ãƒˆã®å‰²ã‚Šå½“ã¦ã«å¤±æ•—ã—ã¾ã—ãŸ: メモリを使ã„æžœãŸã—ã¾ã—"
"ãŸ"
-#: hash.c:280
+#: src/hash.c:280
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "Load=%ld/%ld=%.0f%%, "
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "è² è·=%lu/%lu=%.0f%%, "
-#: hash.c:282
+#: src/hash.c:282
#, c-format
-msgid "Rehash=%d, "
-msgstr "Rehash=%d, "
+msgid "Rehash=%u, "
+msgstr "å†ãƒãƒƒã‚·ãƒ¥=%u, "
-#: hash.c:283
+#: src/hash.c:283
#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "Collisions=%ld/%ld=%.0f%%"
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "è¡çª=%lu/%lu=%.0f%%"
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr "'%s' ã®ãŸã‚ã®æš—黙ルールを探ã—ã¾ã™.\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr "'%s' ã®ãŸã‚ã®æ›¸åº«ãƒ¡ãƒ³ãƒæš—黙ルールを探ã—ã¾ã™.\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr "暗黙ルールã®å†å¸°ã‚’回é¿ã—ã¾ã™.\n"
-#: implicit.c:486
+#: src/implicit.c:484
#, c-format
-msgid "Stem too long: '%.*s'.\n"
-msgstr "語幹ãŒé•·ã™ãŽã¾ã™: '%.*s'.\n"
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "語幹ãŒé•·ã™ãŽã¾ã™: '%s%.*s'.\n"
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr "語幹 '%.*s' ã¨ã®ãƒ‘ターンルールを試ã—ã¾ã™.\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr "é©ç”¨ä¸èƒ½ãªãƒ«ãƒ¼ãƒ«ã®å¿…è¦æ¡ä»¶ '%s' ã‚’å´ä¸‹ã—ã¾ã™.\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr "é©ç”¨ä¸èƒ½ãªæš—é»™ã®å¿…è¦æ¡ä»¶ '%s' ã‚’å´ä¸‹ã—ã¾ã™.\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr "ルールã®å¿…è¦æ¡ä»¶ '%s' を試ã—ã¾ã™.\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr "æš—é»™ã®å¿…è¦æ¡ä»¶ '%s' を試ã—ã¾ã™.\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr "VPATH '%2$s' ã¨ã—ã¦å¿…è¦æ¡ä»¶ '%1$s' を見ã¤ã‘ã¾ã—ãŸ\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr "中間ファイル '%s' ã®ãƒ«ãƒ¼ãƒ«ã‚’探ã—ã¾ã™.\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr "一時ファイルを作æˆã§ãã¾ã›ã‚“\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (コアダンプã—ã¾ã—ãŸ)"
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr " (無視ã•ã‚Œã¾ã—ãŸ)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
msgstr "<ビルトイン>"
-#: job.c:510
+#: src/job.c:573
#, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "%s[%s: %s] エラー %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** 未完了ã®ã‚¸ãƒ§ãƒ–ã‚’å¾…ã£ã¦ã„ã¾ã™...."
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "生存å­ãƒ—ロセス %p (%s) PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (リモート)"
-#: job.c:831
-#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "失敗ã—ãŸå­ãƒ—ロセス %p PID %s %s を回åŽã—ã¾ã™\n"
-
-#: job.c:832
+#: src/job.c:898
#, c-format
msgid "Reaping winning child %p PID %s %s\n"
msgstr "æˆåŠŸã—ãŸå­ãƒ—ロセス %p PID %s %s を回åŽã—ã¾ã™\n"
-#: job.c:839
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "失敗ã—ãŸå­ãƒ—ロセス %p PID %s %s を回åŽã—ã¾ã™\n"
+
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "一時的ãªãƒãƒƒãƒãƒ•ã‚¡ã‚¤ãƒ« %s を消去ã—ã¾ã™\n"
-#: job.c:845
+#: src/job.c:956
#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr "一時的ãªãƒãƒƒãƒãƒ•ã‚¡ã‚¤ãƒ« %s ã®æ¶ˆåŽ»ã«å¤±æ•—ã—ã¾ã—ãŸ(%d)\n"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr "ãƒã‚§ã‚¤ãƒ³ã‹ã‚‰å­ãƒ—ロセス %p PID %s%s を削除ã—ã¾ã™.\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr "å­ãƒ—ロセス %p (%s) ã®å°ã‚’解放ã—ã¾ã—ãŸ.\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "process_easy() ãŒå¤±æ•—ã—プロセスãŒèµ·å‹•ã§ãã¾ã›ã‚“ã§ã—㟠(e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -699,93 +708,87 @@ msgstr ""
"\n"
"èµ·å‹•ã®å¤±æ•—㧠%d 個ã®å¼•æ•°ãŒã‚«ã‚¦ãƒ³ãƒˆã•ã‚Œã¾ã—ãŸ\n"
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr "ãƒã‚§ã‚¤ãƒ³ã«å­ãƒ—ロセス %p (%s) PID %s%s ã‚’å–ã‚Šè¾¼ã¿ã¾ã—ãŸ.\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "å­ãƒ—ロセス %p (%s) ã«å°ã‚’ã¤ã‘ã¾ã—ãŸ.\n"
-#: job.c:1838
+#: src/job.c:1902
#, c-format
msgid "%s: target '%s' does not exist"
msgstr "%s: ターゲット '%s' ãŒå­˜åœ¨ã—ã¾ã›ã‚“"
-#: job.c:1841
+#: src/job.c:1905
#, c-format
msgid "%s: update target '%s' due to: %s"
msgstr "%s: ターゲット '%s' ã‚’ %s ã®ãŸã‚ã«æ›´æ–°ã—ã¾ã™"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr "ã“ã®ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ ã§ã¯ã‚·ã‚¹ãƒ†ãƒ è² è·åˆ¶é™ã‚’加ãˆã‚‰ã‚Œã¾ã›ã‚“"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "システム負è·åˆ¶é™ã‚’課ã™ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr "ファイルãƒãƒ³ãƒ‰ãƒ«ã‚’使ã„å°½ãã—ã¾ã—ãŸ: 標準入力を複製ã§ãã¾ã›ã‚“\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr "ファイルãƒãƒ³ãƒ‰ãƒ«ã‚’使ã„å°½ãã—ã¾ã—ãŸ: 標準出力を複製ã§ãã¾ã›ã‚“\n"
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr "ファイルãƒãƒ³ãƒ‰ãƒ«ã‚’使ã„å°½ãã—ã¾ã—ãŸ: 標準エラー出力を複製ã§ãã¾ã›ã‚“\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr "標準入力を復元ã§ãã¾ã›ã‚“ã§ã—ãŸ\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr "標準出力を復元ã§ãã¾ã›ã‚“ã§ã—ãŸ\n"
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr "標準エラー出力を復元ã§ãã¾ã›ã‚“ã§ã—ãŸ\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr "make 㯠pid %s ã®å­ãƒ—ロセスを回åŽã—, pid %s ã‚’å¾…ã¡ç¶šã‘ã¾ã™\n"
-#: job.c:2275
-#, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: %s: コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ\n"
-
-#: job.c:2277
+#: src/job.c:2623
#, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s[%u]: %s: コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ\n"
-
-#: job.c:2337
-#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: シェルプログラムãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr "spawnvpe:環境設定ã®ãŸã‚ã®ãƒ¡ãƒ¢ãƒªã‚’使ã„å°½ãã™ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
-#: job.c:2584
+#: src/job.c:2862
#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "$SHELL ãŒå¤‰æ›´ã•ã‚Œã¾ã—㟠(å‰ã¯ '%s', 今㯠'%s')\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr "一時的ãªãƒãƒƒãƒãƒ•ã‚¡ã‚¤ãƒ« %s を作æˆã—ã¾ã™\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
@@ -793,7 +796,7 @@ msgstr ""
"ãƒãƒƒãƒãƒ•ã‚¡ã‚¤ãƒ«ã®å†…容:\n"
"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
@@ -802,57 +805,54 @@ msgstr ""
"ãƒãƒƒãƒãƒ•ã‚¡ã‚¤ãƒ«ã®å†…容 :%s\n"
"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr "%s (%d 行目) ä¸æ­£ãªã‚·ã‚§ãƒ«ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆ (!unixy && !batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr "ã“ã®ãƒ“ルドã§ã¯ -O[TYPE] (--output-sync[=TYPE]) ãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“."
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr "グローãƒãƒ«ã‚·ãƒ³ãƒœãƒ«ãƒ†ãƒ¼ãƒ–ルを開ãã“ã¨ãŒã§ãã¾ã›ã‚“: %s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr "読ã¿è¾¼ã‚“ã ã‚ªãƒ–ジェクト %s 㯠GPL互æ›ã®å®£è¨€ãŒãªã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr "シンボル %s ã‚’ %s ã‹ã‚‰èª­ã¿è¾¼ã‚€ã®ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr "空ã®ã‚·ãƒ³ãƒœãƒ«åを読ã¿è¾¼ã‚‚ã†ã¨ã—ã¦ã„ã¾ã™: %s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr "シンボル %s ã‚’ %s ã‹ã‚‰èª­ã¿è¾¼ã‚“ã§ã„ã¾ã™\n"
-#: load.c:256
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr "'load' 命令ã¯ã“ã®ãƒ—ラットフォームã§ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "オプション:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr " -b, -m 互æ›æ€§ã®ãŸã‚ã®ã‚‚ã®ã§, 無視ã•ã‚Œã‚‹.\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr " -B, --always-make ç„¡æ¡ä»¶ã«å…¨ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’ make ã™ã‚‹.\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
@@ -861,16 +861,16 @@ msgstr ""
" make 開始å‰ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª DIRECTORY ã¸ç§»å‹•ã™"
"ã‚‹.\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr " -d デãƒãƒƒã‚°æƒ…報を大é‡ã«è¡¨ç¤ºã™ã‚‹.\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr " --debug[=FLAGS] 様々ãªã‚¿ã‚¤ãƒ—ã®ãƒ‡ãƒãƒƒã‚°æƒ…報を表示ã™ã‚‹.\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
@@ -878,12 +878,12 @@ msgstr ""
" -e, --environment-overrides\n"
" 環境変数㌠makefile 中ã®è¨˜è¿°ã«å„ªå…ˆã™ã‚‹\n"
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
-msgstr " --eval=STRING STRING ã‚’ makefile ã®æ–‡ã¨ã—ã¦è©•ä¾¡ã™ã‚‹.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
+msgstr " -E STRING, --eval=STRING STRING ã‚’ makefile ã®æ–‡ã¨ã—ã¦è©•ä¾¡ã™ã‚‹.\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -891,15 +891,15 @@ msgstr ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" FILE ã‚’ makefile ã¨ã—ã¦èª­ã¿è¾¼ã‚€\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ã¦çµ‚了ã™ã‚‹.\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr " -i, --ignore-errors レシピã‹ã‚‰è¿”ã£ãŸã‚¨ãƒ©ãƒ¼ã‚’無視ã™ã‚‹.\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
@@ -909,7 +909,7 @@ msgstr ""
" インクルードã™ã‚‹ makefile を探索ã™ã‚‹ "
"DIRECTORY.\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
@@ -917,14 +917,14 @@ msgstr ""
" -j [N], --jobs[=N] 一度㫠N 個ã¾ã§ã®ã‚¸ãƒ§ãƒ–を許å¯; 無引数ã ã¨ã‚¸ãƒ§ãƒ–"
"数制é™ãªã—.\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
" -k, --keep-going ã‚るターゲット㌠make ã§ããªãã¦ã‚‚実行を続ã‘"
"ã‚‹.\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
@@ -934,7 +934,7 @@ msgstr ""
" è² è· ãŒ N 未満ã§ãªã„é™ã‚Šè¤‡æ•°ã®ã‚¸ãƒ§ãƒ–を開始ã—ãª"
"ã„.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
@@ -942,7 +942,7 @@ msgstr ""
" -L, --check-symlink-times シンボリックリンクã¨ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã®ä¸­ã§ä¸€ç•ªæ–°ã—ã„ "
"mtime を使ã†.\n"
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
@@ -951,7 +951,7 @@ msgstr ""
" -n, --just-print, --dry-run, --recon\n"
" レシピを実際ã«å®Ÿè¡Œã—ãªã„; 表示ã™ã‚‹ã®ã¿.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
@@ -961,7 +961,7 @@ msgstr ""
" FILE ã‚’ã¨ã¦ã‚‚å¤ã„ã‚‚ã®ã¨è¦‹ãªã—ã¦, å† make ã—ãª"
"ã„.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
@@ -969,11 +969,11 @@ msgstr ""
" -O[TYPE], --output-sync[=TYPE]\n"
" 並列ジョブã®å‡ºåŠ›ã‚’ TYPE ã§æƒãˆã‚‹.\n"
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr " -p, --print-data-base make ã®å†…部データベースを表示ã™ã‚‹.\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
@@ -981,19 +981,25 @@ msgstr ""
" -q, --question レシピを実行ã—ãªã„; 更新済ã§ã‚ã‚‹ã‹ã©ã†ã‹ã‚’終了"
"ステータスã§é€šçŸ¥.\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr " -r, --no-builtin-rules ビルトインã®æš—黙ルールを無効ã«ã™ã‚‹.\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr " -R, --no-builtin-variables ビルトインã®å¤‰æ•°è¨­å®šã‚’無効ã«ã™ã‚‹.\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr " -s, --silent, --quiet レシピを表示ã—ãªã„.\n"
-#: main.c:393
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" --no-silent レシピをエコーã™ã‚‹ ( --silent mode ã¯ç„¡åŠ¹ã«ãª"
+"ã‚‹).\n"
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
@@ -1001,26 +1007,26 @@ msgstr ""
" -S, --no-keep-going, --stop\n"
" -k オプションをオフã«ã™ã‚‹.\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
" -t, --touch ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’å† make ã™ã‚‹ä»£ã‚ã‚Šã«ã‚¿ãƒƒãƒã™ã‚‹.\n"
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
msgstr " --trace トレース情報を表示ã™ã‚‹.\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr ""
" -v, --version make ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’表示ã—ã¦çµ‚了ã™ã‚‹.\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory カレントディレクトリを表示ã™ã‚‹.\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
@@ -1028,7 +1034,7 @@ msgstr ""
" --no-print-directory -w をオフã«ã™ã‚‹. æš—é»™ã«æœ‰åŠ¹ãªå ´åˆã§ã‚‚オフã«ã™"
"ã‚‹.\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1036,33 +1042,34 @@ msgstr ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" FILE ã‚’ã„ã¤ã§ã‚‚最新ã¨ã—ã¦è¦‹ãªã™.\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
msgstr ""
" --warn-undefined-variables 未定義ã®å¤‰æ•°ãŒå‚ç…§ã•ã‚ŒãŸã¨ãã«è­¦å‘Šã‚’発ã™ã‚‹.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "空ã®æ–‡å­—列ã¯ãƒ•ã‚¡ã‚¤ãƒ«åã¨ã—ã¦ã¯ç„¡åŠ¹ã§ã™"
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
msgstr "ä¸æ˜Žãªãƒ‡ãƒãƒƒã‚°ãƒ¬ãƒ™ãƒ«æŒ‡å®š '%s'"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr "未知ã®å‡ºåŠ›åŒæœŸåž‹ '%s'"
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr "%s: 割り込ã¿/例外をæ•æ‰ã—ã¾ã—㟠(code = 0x%lx, addr = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1077,135 +1084,144 @@ msgstr ""
"例外フラグ = %lx\n"
"例外アドレス = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "アクセスä¿è­·é•å: アドレス 0x%p ã§ã®æ›¸ãè¾¼ã¿æ“作\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "アクセスä¿è­·é•å: アドレス 0x%p ã§ã®èª­ã¿è¾¼ã¿æ“作\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell() 㯠default_shell = %s ã«è¨­å®šã—ã¾ã™\n"
-#: main.c:1021
+#: src/main.c:1009
#, 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:1538
+#: src/main.c:1609
#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s 㯠30 秒間åœæ­¢ã—ã¾ã™..."
-
-#: main.c:1540
-#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "sleep(30) ãŒçµ‚ã‚ã‚Šã¾ã—ãŸ. 続ã‘ã¾ã™.\n"
-
-#: main.c:1627
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
"警告: jobserver ãŒåˆ©ç”¨ä¸å¯: 今回㯠-j1 を使ã„ã¾ã™. 親 make ルール㫠`+' を追"
"加ã—ã¾ã—ょã†."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
msgstr ""
-"警告: 副次 make 㧠-jN を強制指定ã—ã¾ã—ãŸ: jobserver モードを無効ã«ã—ã¾ã™."
+"警告: 副次 make 㧠-j%d を強制指定ã—ã¾ã—ãŸ: jobserver モードをリセットã—ã¾ã™."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr "標準入力ã‹ã‚‰ã® makefile ãŒäºŒå›žæŒ‡å®šã•ã‚Œã¾ã—ãŸ."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (一時ファイル)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (一時ファイル)"
-#: main.c:2048
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr ""
+"警告: makefile 㧠-j%d を強制指定ã—ã¾ã—ãŸ: jobserver モードをリセットã—ã¾ã™."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr "並列ジョブ (-j) ã¯ã“ã®ãƒ—ラットフォームã§ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "å˜ä¸€ã‚¸ãƒ§ãƒ– (-j1) モードã«ãƒªã‚»ãƒƒãƒˆã—ã¾ã™."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr "シンボリックリンクã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“: -L ã¯ç„¡åŠ¹ã§ã™."
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "makefile ã®æ›´æ–°ä¸­....\n"
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr "makefile '%s' 自己å†å¸°ã®ãŠãã‚Œã‚ã‚Š ― å†make ã—ã¾ã›ã‚“.\n"
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
msgstr "makefile '%s' ã®å†makeã«å¤±æ•—ã—ã¾ã—ãŸ."
-#: main.c:2299
+#: src/main.c:2323
#, c-format
msgid "Included makefile '%s' was not found."
msgstr "インクルードã•ã‚Œã‚‹ makefile '%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ."
-#: main.c:2304
+#: src/main.c:2328
#, c-format
msgid "Makefile '%s' was not found"
msgstr "makefile '%s' ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "å…ƒã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«æˆ»ã‚Œã¾ã›ã‚“ã§ã—ãŸ."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "å†å®Ÿè¡Œã—ã¾ã™[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (一時ファイル): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ".DEFAULT_GOAL ãŒäºŒã¤ä»¥ä¸Šã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚’å«ã‚“ã§ã„ã¾ã™"
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "ターゲットãŒæŒ‡å®šã•ã‚Œã¦ãŠã‚‰ãš, makefile も見ã¤ã‹ã‚Šã¾ã›ã‚“"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "ターゲットãŒã‚ã‚Šã¾ã›ã‚“"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "ターゲットãŒæŒ‡å®šã•ã‚Œã¦ãŠã‚‰ãš, makefile も見ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "最終ターゲットを更新中....\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr "警告: 時刻ã®ãšã‚Œã‚’検出. ä¸å®Œå…¨ãªãƒ“ルドçµæžœã«ãªã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "使ã„æ–¹: %s [オプション] [ターゲット] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1214,7 +1230,7 @@ msgstr ""
"\n"
"ã“ã®ãƒ—ログラム㯠%s 用ã«ãƒ“ルドã•ã‚Œã¾ã—ãŸ\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1223,32 +1239,32 @@ msgstr ""
"\n"
"ã“ã®ãƒ—ログラム㯠%s (%s) 用ã«ãƒ“ルドã•ã‚Œã¾ã—ãŸ\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr "ãƒã‚°ãƒ¬ãƒãƒ¼ãƒˆã¯ <bug-make@gnu.org> ã¾ã§.\n"
-#: main.c:2870
+#: src/main.c:2901
#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "'%s%s' オプションã¯ç©ºã§ãªã„文字列引数をè¦æ±‚ã—ã¾ã™"
-#: main.c:2934
+#: src/main.c:2965
#, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "'-%c' オプションã¯æ­£ã®æ•´æ•°å¼•æ•°ã‚’è¦æ±‚ã—ã¾ã™"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%sã“ã®ãƒ—ログラム㯠%s 用ã«ãƒ“ルドã•ã‚Œã¾ã—ãŸ\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%sã“ã®ãƒ—ログラム㯠%s (%s) 用ã«ãƒ“ルドã•ã‚Œã¾ã—ãŸ\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1261,7 +1277,7 @@ msgstr ""
"%sã“ã‚Œã¯ãƒ•ãƒªãƒ¼ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã§ã™: 自由ã«å¤‰æ›´ãŠã‚ˆã³é…布ã§ãã¾ã™.\n"
"%s法律ã®è¨±ã™é™ã‚Šã€ã€€ç„¡ä¿è¨¼ã€€ã§ã™.\n"
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1270,7 +1286,7 @@ msgstr ""
"\n"
"# Make データベース出力 %s"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1279,345 +1295,381 @@ msgstr ""
"\n"
"# Make データベース終了 %s\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "未知ã®ã‚¨ãƒ©ãƒ¼ %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: ユーザ %lu (実効 %lu), グループ %lu (実効 %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "アクセス権é™ã‚’åˆæœŸåŒ–"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr "ユーザアクセス"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "make アクセス"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "å­ãƒ—ロセスアクセス"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: ディレクトリ(ディレクトリåä¸æ˜Ž)ã«å…¥ã‚Šã¾ã™\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: ディレクトリ(ディレクトリåä¸æ˜Ž)ã‹ã‚‰å‡ºã¾ã™\n"
-#: output.c:109
+#: src/output.c:102
#, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "%s: ディレクトリ '%s' ã«å…¥ã‚Šã¾ã™\n"
-#: output.c:111
+#: src/output.c:104
#, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "%s: ディレクトリ '%s' ã‹ã‚‰å‡ºã¾ã™\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: ディレクトリ(ディレクトリåä¸æ˜Ž)ã«å…¥ã‚Šã¾ã™\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: ディレクトリ(ディレクトリåä¸æ˜Ž)ã‹ã‚‰å‡ºã¾ã™\n"
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr "%s[%u]: ディレクトリ '%s' ã«å…¥ã‚Šã¾ã™\n"
-#: output.c:122
+#: src/output.c:115
#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "%s[%u]: ディレクトリ '%s' ã‹ã‚‰å‡ºã¾ã™\n"
-#: output.c:495 output.c:497
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
msgstr "書ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼: 標準出力"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". 中止.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr "ã“ã®ãƒ“ルドã§ã¯ -O[TYPE] (--output-sync[=TYPE]) ãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“."
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "ジョブパイプ作æˆä¸­"
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
msgstr "ジョブパイプ複製中"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr "jobserver パイプã®åˆæœŸåŒ–"
-#: posixos.c:90
+#: src/posixos.c:119
#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr "内部エラー: 無効㪠--jobserver-auth 文字列 '%s'"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr "jobserver クライアント (fds %d,%d)\n"
-#: posixos.c:109
+#: src/posixos.c:138
msgid "jobserver pipeline"
msgstr "jobserver パイプライン"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr "ジョブサーãƒã¸ã® write"
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr "ジョブサーãƒãƒ¼ãŒã‚·ãƒ£ãƒƒãƒˆãƒ€ã‚¦ãƒ³ã—ã¾ã—ãŸ"
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
msgstr "ジョブã®ãƒ‘イプ㮠pselect"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "ジョブã®ãƒ‘イプ㮠read"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "makefile を読ã¿è¾¼ã¿ã¾ã™...\n"
-#: read.c:329
+#: src/read.c:336
#, c-format
msgid "Reading makefile '%s'"
msgstr "makefile '%s' ã®èª­ã¿è¾¼ã¿ä¸­"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (デフォルトã®æœ€çµ‚ターゲットãŒã‚ã‚Šã¾ã›ã‚“)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (探索パス)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (æ°—ã«ã—ãªãã¦ã‚ˆã„)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (~ ã®å±•é–‹ãªã—)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr "makefile '%s' ã®ä¸­ã® UTF-8 BOM をスキップã—ã¾ã™\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr "makefile ãƒãƒƒãƒ•ã‚¡ã®ä¸­ã® UTF-8 BOM をスキップã—ã¾ã™\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "æ¡ä»¶éƒ¨ã®æ–‡æ³•ãŒç„¡åŠ¹ã§ã™"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr "%s: 読ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ"
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
msgstr "最åˆã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã‚ˆã‚Šå‰ã«ãƒ¬ã‚·ãƒ”ãŒã‚ã‚Šã¾ã™"
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
msgstr "レシピã®å‰ã®ãƒ«ãƒ¼ãƒ«ãŒä¸è¶³ã—ã¦ã„ã¾ã™"
-#: read.c:1124
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr "分離記å·ã‚’欠ã„ã¦ã„ã¾ã™ (8 個ã®ç©ºç™½ã§ã—ãŸãŒ, TAB ã®ã¤ã‚‚ã‚Šã§ã—ãŸã‹?)"
-#: read.c:1126
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
msgstr "分離記å·ã‚’欠ã„ã¦ã„ã¾ã™"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "ターゲットパターンを欠ã„ã¦ã„ã¾ã™"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "複数ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãƒ‘ターンã§ã™"
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
msgstr "ターゲットパターン㌠'%%' ã‚’å«ã‚“ã§ã„ã¾ã›ã‚“"
-#: read.c:1390
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
msgstr "'endif' ãŒæ¬ è½ã—ã¦ã„ã¾ã™"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "空ã®å¤‰æ•°å"
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
msgstr "'define' 疑似命令ã®å¾Œã‚ã«ç„¡é–¢ä¿‚ãªæ–‡å­—列ãŒã‚ã‚Šã¾ã™"
-#: read.c:1488
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "'endef' を欠ã„ã¦ãŠã‚Š, 'define' ãŒçµ‚了ã—ã¦ã„ã¾ã›ã‚“"
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
msgstr "'endef' 疑似命令ã®å¾Œã‚ã«ç„¡é–¢ä¿‚ãªæ–‡å­—列ãŒã‚ã‚Šã¾ã™"
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
msgstr "'%s' 疑似命令ã®å¾Œã‚ã«ç„¡é–¢ä¿‚ãªæ–‡å­—列ãŒã‚ã‚Šã¾ã™"
-#: read.c:1589
+#: src/read.c:1604
#, c-format
msgid "extraneous '%s'"
msgstr "無関係㪠'%s'"
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
msgstr "一ã¤ã®æ¡ä»¶éƒ¨ã«ã¤ã一ã¤ã—ã‹ 'else' を使ãˆã¾ã›ã‚“"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr "ターゲット特有ã®å¤‰æ•°å®šç¾©ãŒç•°å¸¸ã§ã™"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr "å¿…è¦æ¡ä»¶ã‚’レシピ内ã§å®šç¾©ã§ãã¾ã›ã‚“"
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr "グループ化ã—ãŸã‚¿ãƒ¼ã‚²ãƒƒãƒˆã¯ãƒ¬ã‚·ãƒ”を供給ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™"
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr "暗黙ルールã¨é™çš„パターンルールãŒæ··ã–ã‚Šã¾ã—ãŸ"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "暗黙ルールã¨é€šå¸¸ãƒ«ãƒ¼ãƒ«ãŒæ··ã–ã‚Šã¾ã—ãŸ"
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr "ターゲット '%s' ã¯ã‚¿ãƒ¼ã‚²ãƒƒãƒˆãƒ‘ターンã¨ä¸€è‡´ã—ã¾ã›ã‚“"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
msgstr "ターゲットファイル '%s' ㌠: 㨠:: é …ç›®ã®ä¸¡æ–¹ã‚’æŒã£ã¦ã„ã¾ã™"
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
msgstr "ターゲット '%s' ãŒåŒä¸€ãƒ«ãƒ¼ãƒ«å†…ã§è¤‡æ•°å›žä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ"
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr "警告: ターゲット '%s' ã®ãŸã‚ã®ãƒ¬ã‚·ãƒ”ã‚’ç½®ãæ›ãˆã¾ã™"
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr "警告: ターゲット '%s' ã®ãŸã‚ã®å¤ã„レシピã¯ç„¡è¦–ã•ã‚Œã¾ã™"
-#: read.c:2223
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr "*** 暗黙ルールã¨é€šå¸¸ãƒ«ãƒ¼ãƒ«ãŒæ··ã–ã‚Šã¾ã—ãŸ: 推奨ã•ã‚Œãªã„文法"
-#: read.c:2542
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "警告: ターゲット '%s' ã®ã‚°ãƒ«ãƒ¼ãƒ—メンãƒãƒ¼ã‚·ãƒƒãƒ—を上書ãã—ã¾ã™"
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr "警告: NUL 文字ãŒã‚ã‚Šã¾ã™; è¡Œã®æ®‹ã‚Šã¯ç„¡è¦–ã•ã‚Œã¾ã™"
-#: remake.c:226
+#: src/remake.c:226
#, c-format
msgid "Nothing to be done for '%s'."
msgstr "'%s' ã«å¯¾ã—ã¦è¡Œã†ã¹ã事ã¯ã‚ã‚Šã¾ã›ã‚“."
-#: remake.c:227
+#: src/remake.c:227
#, c-format
msgid "'%s' is up to date."
msgstr "'%s' ã¯æ›´æ–°æ¸ˆã¿ã§ã™."
-#: remake.c:323
+#: src/remake.c:323
#, c-format
msgid "Pruning file '%s'.\n"
msgstr "ファイル '%s' ã®ä¾å­˜é–¢ä¿‚ã‚’æ•´ç†ã—ã¦ã„ã¾ã™.\n"
-#: remake.c:406
+#: src/remake.c:389
#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr ""
"%1$s'%3$s' ã«å¿…è¦ãªã‚¿ãƒ¼ã‚²ãƒƒãƒˆ '%2$s' ã‚’ make ã™ã‚‹ãƒ«ãƒ¼ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“%4$s"
-#: remake.c:416
+#: src/remake.c:399
#, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%sターゲット '%s' ã‚’ make ã™ã‚‹ãƒ«ãƒ¼ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“%s"
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
msgstr "ファイル '%s' を検討ã—ã¦ã„ã¾ã™.\n"
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr "最近ファイル '%s' ã®æ›´æ–°ã‚’試ã—ã¦å¤±æ•—ã—ã¦ã„ã¾ã™.\n"
-#: remake.c:461
+#: src/remake.c:444
#, c-format
msgid "File '%s' was considered already.\n"
msgstr "ファイル '%s' ã¯æ¤œè¨Žæ¸ˆã¿ã§ã™.\n"
-#: remake.c:471
+#: src/remake.c:454
#, c-format
msgid "Still updating file '%s'.\n"
msgstr "ファイル '%s' ã®æ›´æ–°ã‚’ã—ã¦ã„ã¾ã™.\n"
-#: remake.c:474
+#: src/remake.c:457
#, c-format
msgid "Finished updating file '%s'.\n"
msgstr "ファイル '%s' ã®æ›´æ–°ãŒçµ‚了ã—ã¾ã—ãŸ.\n"
-#: remake.c:503
+#: src/remake.c:486
#, c-format
msgid "File '%s' does not exist.\n"
msgstr "ファイル '%s' ãŒå­˜åœ¨ã—ã¾ã›ã‚“.\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
@@ -1625,147 +1677,147 @@ msgstr ""
"*** 警告: .LOW_RESOLUTION_TIME ファイル '%s' ãŒé«˜è§£åƒåº¦ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ã‚’æŒã£ã¦"
"ã„ã¾ã™"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr "'%s' ã®ãŸã‚ã®æš—黙ルールを見ã¤ã‘ã¾ã—ãŸ.\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr "'%s' ã®ãŸã‚ã®æš—黙ルールãŒã‚ã‚Šã¾ã›ã‚“.\n"
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
msgstr "'%s' 用ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãƒ¬ã‚·ãƒ”を使用ã—ã¾ã™.\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "循環 %s <- %s ä¾å­˜é–¢ä¿‚ãŒç ´æ£„ã•ã‚Œã¾ã—ãŸ."
-#: remake.c:691
+#: src/remake.c:674
#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr "ターゲットファイル '%s' ã®å¿…è¦æ¡ä»¶ã‚’満ãŸã—ã¾ã—ãŸ.\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr "'%s' ã®å¿…è¦æ¡ä»¶ã‚’ make ã—ã¾ã™.\n"
-#: remake.c:711
+#: src/remake.c:694
#, c-format
msgid "Giving up on target file '%s'.\n"
msgstr "ターゲットファイル '%s' を諦ã‚ã¾ã™.\n"
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
msgstr "ターゲット '%s' ã¯ã‚¨ãƒ©ãƒ¼ã«ã‚ˆã‚Š å†make ã§ãã¾ã›ã‚“ã§ã—ãŸ."
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr "å¿…è¦æ¡ä»¶ '%s' ã¯ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ '%s' ã® order-only(é †åºæ±ºå®šæ¡ä»¶)ã§ã™.\n"
-#: remake.c:773
+#: src/remake.c:756
#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr "ターゲット '%2$s' ã®å¿…è¦æ¡ä»¶ '%1$s' ãŒå­˜åœ¨ã—ã¾ã›ã‚“.\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr "å¿…è¦æ¡ä»¶ '%s' ã¯ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ '%s' よりも新ã—ã„.\n"
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr "å¿…è¦æ¡ä»¶ '%s' ã¯ã‚¿ãƒ¼ã‚²ãƒƒãƒˆ '%s' よりもå¤ã„.\n"
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr "ターゲット '%s' ã¯ãƒ€ãƒ–ルコロンã§, ã‹ã¤å¿…è¦æ¡ä»¶ã‚’æŒãŸãªã„.\n"
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr "'%s' ã®ãŸã‚ã®ãƒ¬ã‚·ãƒ”ãŒç„¡ã, å¿…è¦æ¡ä»¶ã¯å®Ÿéš›ã«ã¯å¤‰æ›´ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ.\n"
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr "always-make フラグãŒç«‹ã£ã¦ã„ã‚‹ã®ã§ '%s' ã‚’ make ã—ã¾ã™.\n"
-#: remake.c:819
+#: src/remake.c:802
#, c-format
msgid "No need to remake target '%s'"
msgstr "ターゲット '%s' ã‚’å†make ã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
msgstr "; VPATH å '%s' を使用ã—ã¾ã™"
-#: remake.c:841
+#: src/remake.c:824
#, c-format
msgid "Must remake target '%s'.\n"
msgstr "ターゲット '%s' ã‚’å†make ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™.\n"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr " VPATH å '%s' を無視ã—ã¾ã™.\n"
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr "'%s' ã®ãƒ¬ã‚·ãƒ”を実行中ã§ã™.\n"
-#: remake.c:863
+#: src/remake.c:846
#, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr "ターゲットファイル '%s' ã®å†make ã«å¤±æ•—ã—ã¾ã—ãŸ.\n"
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr "ターゲットファイル '%s' ã®å† make ã«æˆåŠŸã—ã¾ã—ãŸ.\n"
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr "ターゲットファイル '%s' 㯠-q オプションを付ã‘ã¦ã®å†make ãŒå¿…è¦ã§ã™.\n"
-#: remake.c:1064
+#: src/remake.c:1047
#, c-format
msgid "Using default commands for '%s'.\n"
msgstr "'%s' ã®ãŸã‚ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã®ã‚³ãƒžãƒ³ãƒ‰ã‚’使ã„ã¾ã™.\n"
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "警告: ファイル '%s' ã®ä¿®æ­£æ™‚刻ã¯æœªæ¥ã®ã‚‚ã®ã§ã™"
-
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr "警告: ファイル '%s' ã®ä¿®æ­£æ™‚刻 %s ã¯æœªæ¥ã®æ™‚刻ã§ã™"
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr ".LIBPATTERNS è¦ç´  '%s' ãŒãƒ‘ターンã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr "Customs ãŒã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã—ã¦ãã‚Œã¾ã›ã‚“: %s\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -1773,7 +1825,7 @@ msgstr ""
"\n"
"# 暗黙ルール"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1781,181 +1833,177 @@ msgstr ""
"\n"
"# 暗黙ルールãªã—."
-#: rule.c:514
+#: src/rule.c:548
#, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
-"# %u 個ã®æš—黙ルール, %u"
+"# %u 個ã®æš—黙ルール, %u (%.1f%%) 端末。"
-#: rule.c:523
-msgid " terminal."
-msgstr " 以上."
-
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "ãƒã‚°: num_pattern_rules ãŒé–“é•ã£ã¦ã„ã‚‹! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "未知ã®ã‚·ã‚°ãƒŠãƒ«"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "ãƒãƒ³ã‚°ã‚¢ãƒƒãƒ—"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "割り込ã¿"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "終了"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "ä¸æ­£ãªãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢å‘½ä»¤"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "トレース/ブレイクãƒã‚¤ãƒ³ãƒˆãƒˆãƒ©ãƒƒãƒ—"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Abort ã—ã¾ã—ãŸ"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "IOT トラップ"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "EMT トラップ"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "浮動å°æ•°ç‚¹ä¾‹å¤–"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Kill ã•ã‚Œã¾ã—ãŸ"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "ãƒã‚¹ã‚¨ãƒ©ãƒ¼"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "メモリé•å"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "ä¸æ­£ãªã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ¼ãƒ«"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "読ã¿æ‰‹ã®ãªã„パイプã¸ã®æ›¸ãè¾¼ã¿"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "アラームクロック"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "強制終了"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "ユーザ定義シグナル 1"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "ユーザ定義シグナル 2"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "å­ãƒ—ロセス終了"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "é›»æºéšœå®³"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "一時åœæ­¢"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "一時åœæ­¢ (tty 入力)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "一時åœæ­¢ (tty 出力)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "一時åœæ­¢ (シグナル)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "CPU 時間ãŒåˆ¶é™ã‚’越ãˆã¾ã—ãŸ"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "ファイルサイズ制é™ã‚’越ãˆã¾ã—ãŸ"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "仮想タイマ満了"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "プロファイルタイマ満了"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "ウィンドウサイズ変更"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "å†é–‹ã•ã‚Œã¾ã—ãŸ"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "緊急 I/O æ¡ä»¶"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "入出力å¯èƒ½"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "リソースãŒå¤±ã‚ã‚Œã¾ã—ãŸ"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "å±é™ºã‚·ã‚°ãƒŠãƒ«"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "情報è¦æ±‚"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "浮動å°æ•°ç‚¹ã‚³ãƒ—ロセッサãŒåˆ©ç”¨ä¸èƒ½"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
@@ -1964,7 +2012,7 @@ msgstr ""
"\n"
"%s strcache ãƒãƒƒãƒ•ã‚¡ã¯ã‚ã‚Šã¾ã›ã‚“\n"
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -1975,27 +2023,27 @@ msgstr ""
"%s strcache ãƒãƒƒãƒ•ã‚¡: %lu (%lu) / 文字列 = %lu / æ ¼ç´ = %lu B / å¹³å‡ = %lu "
"B\n"
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
-"%s ç¾åœ¨ã®ãƒãƒƒãƒ•ã‚¡: サイズ = %hu B / 使用中 = %hu B / 個数 = %hu / å¹³å‡ = %hu "
+"%s ç¾åœ¨ã®ãƒãƒƒãƒ•ã‚¡: サイズ = %hu B / 使用中 = %hu B / 個数 = %hu / å¹³å‡ = %u "
"B\n"
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr "%s ãã®ä»– 使用中: åˆè¨ˆ = %lu B / 個数 = %lu / å¹³å‡ = %lu B\n"
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
msgstr ""
"%s ãã®ä»– 未使用: åˆè¨ˆ = %lu B / 最大 = %lu B / æœ€å° = %lu B / å¹³å‡ = %hu B\n"
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
@@ -2004,7 +2052,7 @@ msgstr ""
"\n"
"%s strcache ã®ç¨¼åƒ: 探索 = %lu / ヒット率 = %lu%%\n"
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
@@ -2012,44 +2060,44 @@ msgstr ""
"# ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ルã®çŠ¶æ…‹:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "自動変数"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "デフォルト"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "環境変数"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "makefile 変数"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "-e オプションã§æŒ‡å®šã—ãŸç’°å¢ƒå¤‰æ•°"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "コマンドライン変数"
-#: variable.c:1647
+#: src/variable.c:1671
msgid "'override' directive"
msgstr "'override' 疑似命令"
-#: variable.c:1658
+#: src/variable.c:1682
#, c-format
msgid " (from '%s', line %lu)"
msgstr " (ファイル '%s', %lu 行目)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr "# 変数セットã®ãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ルã®çŠ¶æ…‹:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2057,7 +2105,7 @@ msgstr ""
"\n"
"# 変数\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
@@ -2065,7 +2113,7 @@ msgstr ""
"\n"
"# パターン指定 変数 値"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2073,7 +2121,7 @@ msgstr ""
"\n"
"# パターン指定変数ã®å€¤ãªã—."
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
@@ -2082,48 +2130,48 @@ msgstr ""
"\n"
"# %u 個ã®ãƒ‘ターン指定変数ã®å€¤"
-#: variable.h:224
+#: src/variable.h:229
#, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "警告: 未定義ã®å¤‰æ•° '%.*s'"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr "sys$search() ㌠%d ã§å¤±æ•—ã—ã¾ã—ãŸ\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr ""
"-警告, DCL ã‹ã‚‰ã® CTRL-Y æ“作をå†ã³æœ‰åŠ¹ã«ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚知れã¾ã›ã‚“.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "ビルトイン CD %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr "DCL: %s\n"
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr "出力を %s ã¸è¿½åŠ \n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr "追加 %.*s ã¨å¾Œç‰‡ä»˜ã‘\n"
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "代ã‚ã‚Šã« %s を実行ã—ã¾ã™\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2131,11 +2179,11 @@ msgstr ""
"\n"
"# VPATH 探索パス\n"
-#: vpath.c:620
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
msgstr "# 'vpath' 探索パスã¯ã‚ã‚Šã¾ã›ã‚“."
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
@@ -2144,7 +2192,7 @@ msgstr ""
"\n"
"# %u ã¤ã® 'vpath' 探索パス.\n"
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
@@ -2152,7 +2200,7 @@ msgstr ""
"\n"
"# 一般㮠('VPATH' 変数) 探索パスãªã—."
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
@@ -2162,37 +2210,61 @@ msgstr ""
"# 一般㮠('VPATH' 変数) 探索パス:\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr "jobserver ã®ã‚¹ãƒ­ãƒƒãƒˆã¯ %d ã¾ã§ã§ã™\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr "ジョブサームセマフォを作æˆã—ã¦ã„ã¾ã™: (エラー %ld: %s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr "内部エラー: ジョブサームセマフォを開ã‘ã¾ã›ã‚“ '%s': (エラー %ld: %s)"
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr "jobserver クライアント (セマフォ %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr "ジョブサーãƒã®ã‚»ãƒžãƒ•ã‚©ã‚’解放ã—ã¾ã™: (エラー %ld: %s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr "セマフォ ã¾ãŸã¯ å­ãƒ—ロセスを待ã£ã¦ã„ã¾ã™: (エラー %ld: %s)"
+#~ msgid "%s: %s: Command not found\n"
+#~ msgstr "%s: %s: コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ\n"
+
+#~ msgid "%s[%u]: %s: Command not found\n"
+#~ msgstr "%s[%u]: %s: コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ\n"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s: シェルプログラムãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s 㯠30 秒間åœæ­¢ã—ã¾ã™..."
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "sleep(30) ãŒçµ‚ã‚ã‚Šã¾ã—ãŸ. 続ã‘ã¾ã™.\n"
+
+#~ msgid "Unknown error %d"
+#~ msgstr "未知ã®ã‚¨ãƒ©ãƒ¼ %d"
+
+#~ msgid "Warning: File '%s' has modification time in the future"
+#~ msgstr "警告: ファイル '%s' ã®ä¿®æ­£æ™‚刻ã¯æœªæ¥ã®ã‚‚ã®ã§ã™"
+
+#~ msgid " terminal."
+#~ msgstr " 以上."
+
#~ msgid "%s: recipe for target '%s' failed"
#~ msgstr "%s: ターゲット '%s' ã®ãƒ¬ã‚·ãƒ”ã§å¤±æ•—ã—ã¾ã—ãŸ"
diff --git a/po/ko.gmo b/po/ko.gmo
index e71932c..258d32a 100644
--- a/po/ko.gmo
+++ b/po/ko.gmo
Binary files differ
diff --git a/po/ko.po b/po/ko.po
index 0e0a7f0..c0481ac 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -3,7 +3,7 @@
# This file is distributed under the same license as the make package.
#
# Bang Jun-Young <bangjy@nownuri.net>, 1996.
-# Changwoo Ryu <cwryu@debian.org>, 2001, 2006, 2013-2014, 2016.
+# Changwoo Ryu <cwryu@debian.org>, 2001, 2006, 2013-2014, 2016, 2019-2020.
#
# ìš©ì–´
# - recipe - 명령 (makeì˜ action으로 실행할 명령어를 ë§í•¨)
@@ -15,124 +15,126 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: GNU make 4.2\n"
+"Project-Id-Version: GNU make 4.2.93\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
-"PO-Revision-Date: 2016-05-29 19:05+0900\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2020-01-03 23:07+0900\n"
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
"Language-Team: Korean <translation-team-ko@googlegroups.com>\n"
"Language: ko\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
-#: ar.c:46
+#: src/ar.c:46
#, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "지ì›ë˜ì§€ 않는 ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ë ¤ê³  함: '%s'"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "ì•„ì¹´ì´ë¸Œ 멤버 touch는 VMSì—ì„œ 사용할 수 없습니다"
-#: ar.c:147
+#: src/ar.c:147
#, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "touch: '%s' ì•„ì¹´ì´ë¸Œê°€ 없습니다"
-#: ar.c:150
+#: src/ar.c:150
#, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "touch: '%s'ì€(는) 올바른 ì•„ì¹´ì´ë¸Œê°€ 아닙니다"
-#: ar.c:157
+#: src/ar.c:157
#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "touch: '%s' 멤버가 '%s' ì•ˆì— ì—†ìŠµë‹ˆë‹¤"
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr "touch: '%s'ì— ëŒ€í•˜ì—¬ ar_member_touchì—ì„œ 실패 리턴 코드"
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr "lbr$set_module()ì´ ëª¨ë“ˆì •ë³´ë¥¼ 추출하는 ë° ì‹¤íŒ¨, ìƒíƒœ = %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "lbr$ini_control()ì´ ì‹¤íŒ¨, ìƒíƒœ = %d"
-#: arscan.c:261
+#: src/arscan.c:261
#, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr "멤버 ìƒíƒœ %2$dë²ˆì„ ì°¸ì¡°í•˜ë ¤ê³  '%1$s' ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ì—´ 수 없습니다"
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr "멤버 '%s'%s: %ldë°”ì´íŠ¸, 위치 %ld (%ld).\n"
# ì´ë¯¸ 잘려진 ì´ë¦„ì„ í‘œì‹œí•˜ë©´ì„œ ì´ë¦„ì´ ìž˜ë ¤ì¡Œì„ ìˆ˜ë„ ìžˆìœ¼ë‹ˆ 유ì˜í•˜ë¼ëŠ” 뜻
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (ì´ë¦„ì´ ìž˜ë ¤ë‚˜ê°”ì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " 날짜 %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, 모드 = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr "ëª…ë ¹ì–´ì— ì¤„ì´ ë„ˆë¬´ 많습니다(%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** 중지.\n"
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr "*** [%s] ì•„ì¹´ì´ë¸Œ '%s' 멤버는 ê°€ì§œì¼ ìˆ˜ 있으므로 삭제하지 않습니다"
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr "*** ì•„ì¹´ì´ë¸Œ '%s' 멤버는 ê°€ì§œì¼ ìˆ˜ 있으므로 삭제하지 않습니다"
-#: commands.c:645
+#: src/commands.c:646
#, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] '%s' 파ì¼ì„ 삭제합니다"
-#: commands.c:647
+#: src/commands.c:648
#, c-format
msgid "*** Deleting file '%s'"
msgstr "*** '%s' 파ì¼ì„ 삭제합니다"
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
msgstr "# 실행할 명령어"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (내장):"
-#: commands.c:688
+#: src/commands.c:689
#, c-format
msgid " (from '%s', line %lu):\n"
msgstr " ('%s'ì—ì„œ, %lu번째 줄):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -140,221 +142,221 @@ msgstr ""
"\n"
"# 디렉터리\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: statì„ í•  수 없었습니다.\n"
-#: dir.c:1085
-#, fuzzy
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
-msgstr "# %s (키 %s, ë³€ê²½ì‹œê° %ull): ì—´ 수 없습니다.\n"
+msgstr "# %s (키 %s, ë³€ê²½ì‹œê° %I64u): ì—´ 수 없습니다.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr "# %s (장치 %d, ì•„ì´ë…¸ë“œ [%d,%d,%d]): ì—´ 수 없습니다.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr "# %s (장치 %ld, ì•„ì´ë…¸ë“œ %ld): ì—´ 수 없습니다.\n"
-#: dir.c:1122
-#, fuzzy
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
-msgstr "# %s (키 %s, ë³€ê²½ì‹œê° %ull): "
+msgstr "# %s (키 %s, ë³€ê²½ì‹œê° %I64u): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (장치 %d, ì•„ì´ë…¸ë“œ [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (장치 %ld, ì•„ì´ë…¸ë“œ %ld): "
# 여기서 No는 "No files"ë¼ê³  ì“°ì¸ë‹¤. ê¶ê·¹ì ìœ¼ë¡œ msgidê°€ ê³ ì³ì ¸ì•¼ 함
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "0개"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " 파ì¼, "
# 여기서 no는 "no impossibilities"ë¼ê³  ì“°ì¸ë‹¤. ê¶ê·¹ì ìœ¼ë¡œ msgidê°€ ê³ ì³ì ¸ì•¼ 함
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "0개"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " 불가능"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " 지금까지."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " 디렉토리 %luê°œì—ì„œ 불가능.\n"
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr "재귀하는 '%s' 변수는 (ê²°êµ­) ìžê¸° ìžì‹ ì„ 참조하고 있습니다"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "변수 ì°¸ì¡°ì— ëë§ˆì¹¨ì´ ì—†ìŠµë‹ˆë‹¤"
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr "íŒŒì¼ '%s'ì˜ %s:%luì—ì„œ ëª…ë ¹ì„ ì§€ì •í–ˆìŠµë‹ˆë‹¤."
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr "íŒŒì¼ '%s'ì— ëŒ€í•œ ëª…ë ¹ì„ ë¬µì‹œì  ê·œì¹™ íƒìƒ‰ìœ¼ë¡œ 찾았습니다."
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr "하지만 '%s' 파ì¼ì€ ì´ì œ '%s'ê³¼(와) ê°™ì€ íŒŒì¼ë¡œ 간주합니다."
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr "'%s'ì— ëŒ€í•œ ëª…ë ¹ì€ '%s'ì— ëŒ€í•œ ëª…ë ¹ì´ ìš°ì„ í•˜ë¯€ë¡œ 무시합니다."
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr "ë‹¨ì¼ ì½œë¡  '%s'ì„(를) ì´ì¤‘ 콜론 '%s'(으)ë¡œ ì´ë¦„ì„ ë°”ê¿€ 수 없습니다"
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr "ì´ì¤‘ 콜론 '%s'ì„(를) ë‹¨ì¼ ì½œë¡  '%s'(으)ë¡œ ì´ë¦„ì„ ë°”ê¿€ 수 없습니다"
-#: file.c:408
+#: src/file.c:408
#, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "*** 중간 íŒŒì¼ '%s'ì„(를) 삭제합니다"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "중간 파ì¼ì„ 제거합니다...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "현재 ì‹œê°"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: 타임스탬프가 범위를 벗어나므로, %sì„(를) 대체합니다"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# íƒ€ê²Ÿì´ ì•„ë‹˜:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# 프레시어스 íŒŒì¼ (.PRECIOUSì˜ ì„ í–‰ì¡°ê±´)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# í¬ë‹ˆ 타겟 (.PHONYì˜ ì„ í–‰ì¡°ê±´)."
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# 명령행 타겟."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr ""
"# 기본 ë©”ì´í¬íŒŒì¼, MAKEFILES ë©”ì´í¬íŒŒì¼, ë˜ëŠ” -include/sinclude ë©”ì´í¬íŒŒì¼."
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
msgstr "# 내장 규칙"
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# ë¬µì‹œì  ê·œì¹™ íƒìƒ‰ì´ 완료ë˜ì—ˆìŠµë‹ˆë‹¤."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# ë¬µì‹œì  ê·œì¹™ íƒìƒ‰ì´ 완료ë˜ì§€ 않았습니다."
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr "# 묵시ì /ê³ ì • 패턴 스템: '%s'\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr "# 파ì¼ì´ ì¤‘ê°„ë‹¨ê³„ì˜ ì„ í–‰ì¡°ê±´ìž…ë‹ˆë‹¤."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# 다ìŒë„ 만듭니다:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# 변경 ì‹œê°ì´ ê²°ì½” 검사ë˜ì§€ 않았ìŒ."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# 파ì¼ì´ 없습니다."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# 파ì¼ì´ 매우 오래ë˜ì—ˆìŠµë‹ˆë‹¤."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# 마지막 변경 %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# 파ì¼ì„ ì—…ë°ì´íŠ¸í–ˆìŠµë‹ˆë‹¤."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# 파ì¼ì„ ì—…ë°ì´íŠ¸í•˜ì§€ 않았습니다."
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# 현재 ì‹¤í–‰ì¤‘ì¸ ëª…ë ¹(ì´ê²ƒì€ 버그입니다)."
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr "# 현재 ì‹¤í–‰ì¤‘ì¸ ì˜ì¡´ì„±(ì´ê²ƒì€ 버그입니다)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# 성공ì ìœ¼ë¡œ ì—…ë°ì´íŠ¸."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# ì—…ë°ì´íŠ¸ í•„ìš”(-q 설정ë¨)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# ì—…ë°ì´íŠ¸ 실패."
-#: file.c:1032
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
msgstr "# 'command_status' ë©¤ë²„ì— ê°’ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -362,7 +364,7 @@ msgstr ""
"\n"
"# 파ì¼"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -372,336 +374,344 @@ msgstr ""
"# íŒŒì¼ í•´ì‹œ í…Œì´ë¸” 통계:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr "%s: '%s' 필드가 ìºì‹œì— ì—†ìŒ: %s"
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
msgstr "'word' í•¨ìˆ˜ì˜ ì²«ë²ˆì§¸ ì¸ìžê°€ 숫ìžê°€ 아닙니다"
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr "'word' í•¨ìˆ˜ì˜ ì²«ë²ˆì§¸ ì¸ìžëŠ” 0보다 커야 합니다"
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
msgstr "'wordlist' í•¨ìˆ˜ì˜ ì²«ë²ˆì§¸ ì¸ìžê°€ 숫ìžê°€ 아닙니다"
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
msgstr "'wordlist' í•¨ìˆ˜ì˜ ë‘번째 ì¸ìžê°€ 숫ìžê°€ 아닙니다"
-#: function.c:1525
+#: src/function.c:1533
#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "windows32_openpipe: DuplicateHandle(In) 실패(e=%ld)\n"
-#: function.c:1549
+#: src/function.c:1557
#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr "windows32_openpipe: DuplicateHandle(Err) 실패(e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "CreatePipe() 실패(e=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe(): process_init_fd() 실패\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "ìž„ì‹œ 배치 íŒŒì¼ %sì„(를) 지ì›ë‹ˆë‹¤\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr "file: íŒŒì¼ ì´ë¦„ì´ ì—†ìŠµë‹ˆë‹¤"
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
msgstr "open: %s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
msgstr "write: %s: %s"
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, c-format
msgid "close: %s: %s"
msgstr "close: %s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr "file: ì¸ìžê°€ 너무 많습니다"
-#: function.c:2262
+#: src/function.c:2277
#, c-format
msgid "read: %s: %s"
msgstr "read: %s: %s"
-#: function.c:2275
+#: src/function.c:2290
#, c-format
msgid "file: invalid file operation: %s"
msgstr "file: 올바르지 ì•Šì€ íŒŒì¼ ë™ìž‘: %s"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr "함수 '%2$s'ì— ì¸ìž 갯수(%1$d)ê°€ 부족합니다"
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "ì´ í”Œëž«í¼ì—서는 구현ë˜ì§€ 않았습니다: '%s' 함수"
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr "함수 '%s'ì— ëŒ€í•´ 종료ë˜ì§€ ì•Šì€ í˜¸ì¶œ: '%c' 문ìžê°€ ë¹ ì¡ŒìŒ"
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr "빈 함수 ì´ë¦„"
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr "ìž˜ëª»ëœ í•¨ìˆ˜ ì´ë¦„: %s"
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr "함수 ì´ë¦„ì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤: %s"
-#: function.c:2657
+#: src/function.c:2674
#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
msgstr "함수 `%2$s'ì— ìµœì†Œ ì¸ìž 갯수(%1$u)ê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤"
-#: function.c:2660
+#: src/function.c:2677
#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
msgstr "함수 `%2$s'ì— ìµœëŒ€ ì¸ìž 갯수(%1$u)ê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤"
-#: getopt.c:659
+#: src/getopt.c:659
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: '%s' ì˜µì…˜ì€ ì• ë§¤í•œ 옵션입니다\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: '--%s' ì˜µì…˜ì€ ì¸ìˆ˜ë¥¼ 허용하지 않습니다\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: '%c%s' ì˜µì…˜ì€ ì¸ìˆ˜ë¥¼ 허용하지 않습니다\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: '%s' ì˜µì…˜ì€ ì¸ìˆ˜ê°€ 필요합니다\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: ì¸ì‹í•  수 없는 옵션 '--%s'\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: ì¸ì‹í•  수 없는 옵션 '%c%s'\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: ìž˜ëª»ëœ ì˜µì…˜ -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: 부ì ì ˆí•œ 옵션 -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: ì´ ì˜µì…˜ì€ ì¸ìˆ˜ê°€ 필요합니다 -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: '-W %s' ì˜µì…˜ì€ ì• ë§¤í•œ 옵션입니다\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: '-W %s' ì˜µì…˜ì€ ì¸ìˆ˜ë¥¼ 허용하지 않습니다\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr "guile: '%s' 확장\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr "guile: '%s' í•´ì„\n"
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr "í•´ì‹œ í…Œì´ë¸”ì— %lu ë°”ì´íŠ¸ë¥¼ 할당할 수 없습니다: 메모리 바닥남"
-#: hash.c:280
+#: src/hash.c:280
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "로드=%ld/%ld=%.0f%%, "
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "로드=%lu/%lu=%.0f%%, "
-#: hash.c:282
+#: src/hash.c:282
#, c-format
-msgid "Rehash=%d, "
-msgstr "다시 해시=%d, "
+msgid "Rehash=%u, "
+msgstr "다시 해시=%u, "
-#: hash.c:283
+#: src/hash.c:283
#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "충ëŒ=%ld/%ld=%.0f%%"
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "충ëŒ=%lu/%lu=%.0f%%"
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr "'%s'ì— ëŒ€í•œ ë¬µì‹œì  ê·œì¹™ì„ ì°¾ê³  있습니다.\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr "'%s'ì— ëŒ€í•œ ì•„ì¹´ì´ë¸Œë©¤ë²„ ë¬µì‹œì  ê·œì¹™ì„ ì°¾ê³  있습니다.\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr "ë¬µì‹œì  ê·œì¹™ì˜ ìž¬ê·€ë¥¼ 피함.\n"
# 스템(stem)ì´ëž€ 패턴 룰ì—ì„œ prefix/suffix를 제외한 나머지를 ë§í•œë‹¤.
# 예를 들어 `%.c'ë¼ëŠ” íŒ¨í„´ì— `hello.c'ê°€ 들어 ë§žì•˜ì„ ê²½ìš° stemì€ `hello'ì´ë‹¤.
-#: implicit.c:486
+#: src/implicit.c:484
#, c-format
-msgid "Stem too long: '%.*s'.\n"
-msgstr "ìŠ¤í…œì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤: '%.*s'.\n"
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "ìŠ¤í…œì´ ë„ˆë¬´ ê¹ë‹ˆë‹¤: '%s%.*s'.\n"
# 스템(stem)ì´ëž€ 패턴 룰ì—ì„œ prefix/suffix를 제외한 나머지를 ë§í•œë‹¤.
# 예를 들어 `%.c'ë¼ëŠ” íŒ¨í„´ì— `hello.c'ê°€ 들어 ë§žì•˜ì„ ê²½ìš° stemì€ `hello'ì´ë‹¤.
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr "'%.*s' 스템ì—ì„œ 패턴 규칙 ì‹œë„.\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr "불가능한 규칙 선행조건 '%s'ì€(는) 거부ë©ë‹ˆë‹¤.\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr "불가능한 ë¬µì‹œì  ì„ í–‰ì¡°ê±´ '%s'ì€(는) 거부ë©ë‹ˆë‹¤.\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr "규칙 선행조건 '%s'ì„(를) ì‹œë„합니다.\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr "ë¬µì‹œì  ì„ í–‰ì¡°ê±´ '%s'ì„(를) ì‹œë„합니다.\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr "VPATH '%2$s'ì—ì„œ 선행조건 '%1$s'ì„(를) 찾았습니다\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr "중간 íŒŒì¼ '%s'ì— ëŒ€í•œ ë¬µì‹œì  ê·œì¹™ì„ ì°¾ê³  있습니다.\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr "ìž„ì‹œ 파ì¼ì„ 만들 수 없습니다\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (메모리 ë¤í”„ë¨)"
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr " (무시ë¨)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
msgstr "<내장>"
-#: job.c:510
+#: src/job.c:573
#, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "%s[%s: %s] 오류 %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** ë나지 ì•Šì€ ìž‘ì—…ì„ ê¸°ë‹¤ë¦¬ê³  있습니다...."
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "살아있는 하위 프로세스 %p (%s) PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (ì›ê²©)"
-#: job.c:831
-#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "실패한 하위 프로세스 %p PID %s %sì„(를) 거둬들입니다\n"
-
-#: job.c:832
+#: src/job.c:898
#, c-format
msgid "Reaping winning child %p PID %s %s\n"
msgstr "성공한 하위 프로세스 %p PID %s %sì„(를) 거둬들입니다\n"
-#: job.c:839
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "실패한 하위 프로세스 %p PID %s %sì„(를) 거둬들입니다\n"
+
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "ìž„ì‹œ 배치 íŒŒì¼ %sì„(를) 지ì›ë‹ˆë‹¤\n"
-#: job.c:845
+#: src/job.c:956
#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr "ìž„ì‹œ 배치 íŒŒì¼ %s 지우기가 실패했습니다(%d)\n"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr "하위 프로세스 %p PID %s%sì„(를) ì²´ì¸ì—ì„œ 지ì›ë‹ˆë‹¤.\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr "하위 프로세스 %p(%s)ì— í† í°ì„ ë‚´ì–´ ì¤ë‹ˆë‹¤.\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "process_easy()ê°€ 프로세스를 시작하는 ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤(e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -710,94 +720,88 @@ msgstr ""
"\n"
"실행 실패ì—ì„œ ì¸ìˆ˜ %dê°œ\n"
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr "하위 프로세스 %p(%s) PID %s%sì„(를) ì²´ì¸ì— 넣습니다.\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "하위 프로세스 %p(%s)ì—ì„œ 토í°ì„ 받았습니다.\n"
-#: job.c:1838
+#: src/job.c:1902
#, c-format
msgid "%s: target '%s' does not exist"
msgstr "%s: '%s' íƒ€ê²Ÿì´ ì—†ìŠµë‹ˆë‹¤"
-#: job.c:1841
+#: src/job.c:1905
#, c-format
msgid "%s: update target '%s' due to: %s"
msgstr "%s: '%s' 타겟 ì—…ë°ì´íŠ¸, ì´ìœ : %s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr "ì´ ìš´ì˜ ì²´ì œì—서는 부하 ì œí•œì„ ê°•ì œí•  수 없습니다"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "부하 ì œí•œì„ ê°•ì œí•  수 없습니다: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr "íŒŒì¼ í•¸ë“¤ì´ ì—†ìŒ: 표준 ìž…ë ¥ì„ ë³µì‚¬í•  수 없습니다\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr "íŒŒì¼ í•¸ë“¤ì´ ì—†ìŒ: 표준 ì¶œë ¥ì„ ë³µì‚¬í•  수 없습니다\n"
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr "íŒŒì¼ í•¸ë“¤ì´ ì—†ìŒ: 표준 오류를 복사할 수 없습니다\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr "표준 ìž…ë ¥ì„ ë³µêµ¬í•  수 없습니다\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr "표준 ì¶œë ¥ì„ ë³µêµ¬í•  수 없습니다\n"
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr "표준 오류를 복구할 수 없습니다\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr ""
"하위 프로세스 PID %sì„(를) 거둬들ì´ê³ , ì•„ì§ PID %sì„(를) 기다리고 있습니다\n"
-#: job.c:2275
+#: src/job.c:2623
#, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: %s: ëª…ë ¹ì„ ì°¾ì§€ 못했습니다\n"
-
-#: job.c:2277
-#, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s[%u]: %s: ëª…ë ¹ì„ ì°¾ì§€ 못했습니다\n"
-
-#: job.c:2337
-#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: ì…¸ í”„ë¡œê·¸ëž¨ì„ ì°¾ì§€ 못했습니다"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr "spawnvpe: 환경 변수 ê³µê°„ì´ ë°”ë‹¥ë‚¬ì„ ìˆ˜ 있습니다"
-#: job.c:2584
+#: src/job.c:2862
#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "$SHELLì´ ë°”ë€Œì—ˆìŠµë‹ˆë‹¤(과거 '%s', 현재 '%s')\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr "ìž„ì‹œ 배치 íŒŒì¼ %sì„(를) 만듭니다\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
@@ -805,7 +809,7 @@ msgstr ""
"배치 íŒŒì¼ ë‚´ìš©:\n"
"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
@@ -815,57 +819,54 @@ msgstr ""
"\t%s\n"
# ??? 디버깅 메세지
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr "%s (%d번째 줄) ìž˜ëª»ëœ ì‰˜ 컨í…스트 (!unixy && !batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr "-O[ë°©ì‹] (--output-sync[=ë°©ì‹]) ì˜µì…˜ì€ ì´ ë¹Œë“œì—ì„œ 사용하지 않습니다."
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr "ì „ì—­ 심볼 í…Œì´ë¸”ì„ ì—¬ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤: %s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr "ì½ì–´ë“¤ì¸ %s 오브ì íŠ¸ëŠ” GPL 호환ì´ë¼ê³  선언하지 않았습니다"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr "%s ì‹¬ë³¼ì„ %sì—ì„œ ì½ì–´ë“¤ì´ëŠ”ë° ì‹¤íŒ¨: %s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr "ì½ì–´ë“¤ì¼ 심볼 ì´ë¦„ì´ ë¹„ì—ˆìŒ: %s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr "%s ì‹¬ë³¼ì„ %sì—ì„œ ì½ì–´ë“¤ìž„\n"
-#: load.c:256
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr "'load' ìž‘ì—…ì€ ì´ í”Œëž«í¼ì—ì„œ 지ì›ë˜ì§€ 않습니다."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "옵션:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr " -b, -m 무시ë©ë‹ˆë‹¤, í˜¸í™˜ì„ ìœ„í•´ 유지.\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr " -B, --always-make ì¡°ê±´ì— ê´€ê³„ ì—†ì´ ëª¨ë“  íƒ€ê²Ÿì„ ë§Œë“­ë‹ˆë‹¤.\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
@@ -873,17 +874,17 @@ msgstr ""
" -C <디렉터리>, --directory=<디렉터리>\n"
" 뭔가 하기 ì „ì— <디렉터리>ë¡œ ì´ë™í•©ë‹ˆë‹¤.\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr " -d 여러 가지 디버깅 정보를 출력합니다.\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
" --debug[=플래그] 여러 가지 ì¢…ë¥˜ì˜ ë””ë²„ê¹… 정보를 출력합니다.\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
@@ -891,13 +892,14 @@ msgstr ""
" -e, --environment-overrides\n"
" 환경변수가 ë©”ì´í¬íŒŒì¼ ë‚´ìš©ì— ìš°ì„ í•©ë‹ˆë‹¤.\n"
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
-" --eval=<문ìžì—´> <문ìžì—´>ì„ ë©”ì´í¬íŒŒì¼ 내용으로 í•´ì„합니다.\n"
+" -E <문ìžì—´>, --eval=<문ìžì—´>\n"
+" <문ìžì—´>ì„ ë©”ì´í¬íŒŒì¼ 내용으로 í•´ì„합니다.\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -905,15 +907,15 @@ msgstr ""
" -f <파ì¼>, --file=<파ì¼>, --makefile=<파ì¼>\n"
" <파ì¼>ì„ ë©”ì´í¬íŒŒì¼ë¡œ ì½ìŠµë‹ˆë‹¤.\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help ì´ ë©”ì‹œì§€ë¥¼ 출력하고 ë냅니다.\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr " -i, --ignore-errors 명령ì—ì„œ ë°œìƒí•˜ëŠ” 오류를 무시합니다.\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
@@ -921,7 +923,7 @@ msgstr ""
" -I <디렉터리>, --include-dir=<디렉터리>\n"
" í¬í•¨í•  ë©”ì´í¬íŒŒì¼ì„ <디렉터리>ì—ì„œ 찾습니다.\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
@@ -929,13 +931,13 @@ msgstr ""
" -j [N], --jobs[=N] ë™ì‹œì— Nê°œì˜ ìž‘ì—… 허용, ì¸ìž 없으면 무한대로 í—ˆ"
"ìš©.\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
" -k, --keep-going ì¼ë¶€ íƒ€ê²Ÿì„ ë§Œë“¤ 수 ì—†ë”ë¼ë„ ê³„ì† ì§„í–‰í•©ë‹ˆë‹¤.\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
@@ -945,7 +947,7 @@ msgstr ""
" 로드가 N 아래로 내려가야 ë™ì‹œ ìž‘ì—… 시작합니"
"다.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
@@ -953,7 +955,7 @@ msgstr ""
" -L, --check-symlink-times 심볼릭 ë§í¬ì™€ 실제 중 ë” ìµœê·¼ 수정 ì‹œê°ì„\n"
" 사용합니다.\n"
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
@@ -963,7 +965,7 @@ msgstr ""
" 실제로는 아무 ëª…ë ¹ë„ ì‹¤í–‰í•˜ì§€ ì•Šê³  표시만 합니"
"다.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
@@ -974,7 +976,7 @@ msgstr ""
"지\n"
" 않습니다.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
@@ -982,11 +984,11 @@ msgstr ""
" -O[ë°©ì‹], --output-sync[=ë°©ì‹]\n"
" 병렬 ìž‘ì—…ì˜ ì¶œë ¥ì„ <ë°©ì‹>ì— ë”°ë¼ ë§žì¶¥ë‹ˆë‹¤.\n"
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr " -p, --print-data-base makeì˜ ë‚´ë¶€ ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 출력합니다.\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
@@ -994,19 +996,24 @@ msgstr ""
" -q, --question ëª…ë ¹ì„ ì‹¤í–‰í•˜ì§€ ì•ŠìŒ. 종료 ìƒíƒœë¡œ ì—…ë°ì´íŠ¸\n"
" 여부를 알 수 있습니다.\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr " -r, --no-builtin-rules 내장 ë¬µì‹œì  ê·œì¹™ì„ ì‚¬ìš©í•˜ì§€ 않습니다.\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr " -R, --no-builtin-variables 내장 변수를 지정하지 못하게 합니다.\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr " -s, --silent, --quiet 명령어를 출력하지 않습니다.\n"
-#: main.c:393
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" --no-silent 명령어를 출력합니다. (--silent 모드 ë„기)\n"
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
@@ -1014,31 +1021,31 @@ msgstr ""
" -S, --no-keep-going, --stop\n"
" -k ì˜µì…˜ì„ ë•ë‹ˆë‹¤.\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
" -t, --touch íƒ€ê²Ÿì„ ë‹¤ì‹œ 만들지 ì•Šê³  touch만 합니다.\n"
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
msgstr " --trace ì¶”ì  ì •ë³´ë¥¼ 표시합니다.\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr " -v, --version makeì˜ ë²„ì „ 번호를 출력하고 ë냅니다.\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory 현재 디렉터리를 출력합니다.\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
msgstr " --no-print-directory 묵시ì ìœ¼ë¡œ 켜져 있ë”ë¼ë„ -w를 ë•ë‹ˆë‹¤.\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1047,33 +1054,34 @@ msgstr ""
" <파ì¼>ì„ ë¬´í•œížˆ ê³„ì† ìƒˆë¡œìš´ 것으로 취급합니"
"다.\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
msgstr ""
" --warn-undefined-variables ì •ì˜ë˜ì§€ ì•Šì€ ë³€ìˆ˜ë¥¼ 참조할 ë•Œ 경고를 냅니다.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "빈 문ìžì—´ì€ íŒŒì¼ ì´ë¦„으로 부ì ì ˆí•©ë‹ˆë‹¤"
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
msgstr "디버깅 단계 지정 '%s'ì´(ê°€) 잘못ë˜ì—ˆìŠµë‹ˆë‹¤"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr "ì•Œ 수 없는 output-sync ë°©ì‹ '%s'"
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr "%s: ì¸í„°ëŸ½íŠ¸/예외가 발견ë˜ì—ˆìŠµë‹ˆë‹¤(코드 = 0x%lx, 주소 = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1088,135 +1096,147 @@ msgstr ""
"예외플래그 = %lx\n"
"예외주소 = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "ì ‘ê·¼ 권한 위반: 주소 0x%pì— ì“°ê¸°\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "ì ‘ê·¼ 권한 위반: 주소 0x%pì—ì„œ ì½ê¸°\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell() 설정 default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, 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:1538
+#: src/main.c:1609
#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%sì´(ê°€) 30ì´ˆë™ì•ˆ ì¼ì‹œ 중지ë©ë‹ˆë‹¤..."
-
-#: main.c:1540
-#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "완료 sleep(30). 계ì†.\n"
-
-#: main.c:1627
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
"경고: 작업서버를 사용할 수 없습니다: -j1ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. ìƒìœ„ ë©”ì´í¬ ê·œì¹™ì— "
"'+'를 추가합니다."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
-msgstr "경고: 파ìƒëœ ë©”ì´í¬ì—ì„œ -jNì´ ê°•ì œë˜ì—ˆìŠµë‹ˆë‹¤: 작업서버 모드를 ë•ë‹ˆë‹¤."
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
+msgstr ""
+"경고: 파ìƒëœ ë©”ì´í¬ì—ì„œ -j%d ì˜µì…˜ì´ ê°•ì œë˜ì—ˆìŠµë‹ˆë‹¤: 작업서버 모드를 초기화합"
+"니다."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr "표준입력ì—ì„œ 받아들ì´ëŠ” ë©”ì´í¬íŒŒì¼ì´ ë‘ ë²ˆ ì´ìƒ 지정ë˜ì—ˆìŠµë‹ˆë‹¤."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen(ìž„ì‹œ 파ì¼)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite(ìž„ì‹œ 파ì¼)"
-#: main.c:2048
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr ""
+"경고: ë©”ì´í¬íŒŒì¼ì—ì„œ -j%d ì˜µì…˜ì´ ê°•ì œë˜ì—ˆìŠµë‹ˆë‹¤: 작업서버 모드를 초기화합니"
+"다."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr "병렬 ìž‘ì—…(-j)ì€ ì´ í”Œëž«í¼ì—ì„œ 지ì›í•˜ì§€ 않습니다."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "ë‹¨ì¼ ìž‘ì—… (-j1) 모드로 ëŒì•„갑니다."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr "심볼릭 ë§í¬ë¥¼ 지ì›í•˜ì§€ 않습니다: -L ì˜µì…˜ì„ ë•ë‹ˆë‹¤."
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "ë©”ì´í¬íŒŒì¼ì„ ì—…ë°ì´íŠ¸í•˜ê³  있습니다....\n"
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr "ë©”ì´í¬íŒŒì¼ '%s'ì€(는) 반복할 수 있으므로, 다시 만들지 않습니다.\n"
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
msgstr "'%s' ë©”ì´í¬íŒŒì¼ì„ 다시 ë§Œë“œëŠ”ë° ì‹¤íŒ¨."
-#: main.c:2299
+#: src/main.c:2323
#, c-format
msgid "Included makefile '%s' was not found."
msgstr "í¬í•¨ëœ ë©”ì´í¬íŒŒì¼ '%s'ì„(를) 찾지 못했습니다."
-#: main.c:2304
+#: src/main.c:2328
#, c-format
msgid "Makefile '%s' was not found"
msgstr "ë©”ì´í¬íŒŒì¼ '%s'ì„(를) 찾지 못했습니다"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "ì›ëž˜ 디렉터리로 ëŒì•„ê°ˆ 수 없습니다."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "재실행[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (ìž„ì‹œ 파ì¼): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ".DEFAULT_GOAL ì•ˆì— íƒ€ê²Ÿì´ ì—¬ëŸ¬ ê°œ 들어 있습니다"
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "íƒ€ê²Ÿì´ ì§€ì •ë˜ì§€ 않았고 ë©”ì´í¬íŒŒì¼ì´ 없습니다"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "타겟 ì—†ìŒ"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "íƒ€ê²Ÿì´ ì§€ì •ë˜ì§€ 않았고 ë©”ì´í¬íŒŒì¼ì´ 없습니다"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "최종 íƒ€ê²Ÿì„ ê°±ì‹ í•©ë‹ˆë‹¤....\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr ""
"경고: 시계가 잘못ë˜ì—ˆìŒì´ 발견ë˜ì—ˆìŠµë‹ˆë‹¤. 빌드가 불완전할 수 있습니다."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "사용법: %s [옵션] [타겟] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1225,7 +1245,7 @@ msgstr ""
"\n"
"ì´ í”„ë¡œê·¸ëž¨ì€ %sì—ì„œ 사용하ë„ë¡ ë¹Œë“œë˜ì—ˆìŠµë‹ˆë‹¤\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1234,32 +1254,32 @@ msgstr ""
"\n"
"ì´ í”„ë¡œê·¸ëž¨ì€ %s(%s)ì—ì„œ 사용하ë„ë¡ ë¹Œë“œë˜ì—ˆìŠµë‹ˆë‹¤\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr "문제ì ì„ <bug-make@gnu.org>ë¡œ 알려 주십시오.\n"
-#: main.c:2870
+#: src/main.c:2901
#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "'%s%s' ì˜µì…˜ì€ ë¹„ì–´ 있지 ì•Šì€ ë¬¸ìžì—´ ì¸ìˆ˜ê°€ 필요합니다"
-#: main.c:2934
+#: src/main.c:2965
#, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "'-%c' ì˜µì…˜ì€ 0보다 í° ì •ìˆ˜ ì¸ìˆ˜ê°€ 필요합니다"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%s%s 빌드\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%s%s(%s) 빌드\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1272,7 +1292,7 @@ msgstr ""
"%sThis is free software: you are free to change and redistribute it.\n"
"%sThere is NO WARRANTY, to the extent permitted by law.\n"
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1281,7 +1301,7 @@ msgstr ""
"\n"
"# ë©”ì´í¬ ë°ì´í„°ë² ì´ìŠ¤, %sì— í‘œì‹œ"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1290,347 +1310,383 @@ msgstr ""
"\n"
"# ë©”ì´í¬ ë°ì´í„°ë² ì´ìŠ¤ 마침, %sì—ì„œ\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "알 수 없는 오류 %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: ì‚¬ìš©ìž %lu (실제 %lu), 그룹 %lu (실제 %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "접근 권한 초기화"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr "ì‚¬ìš©ìž ì ‘ê·¼"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "ë©”ì´í¬ ì ‘ê·¼"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "하위 접근"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: ì•Œ 수 없는 디렉터리 들어ê°\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: ì•Œ 수 없는 디렉터리 나ê°\n"
-#: output.c:109
+#: src/output.c:102
#, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "%s: 디렉터리 '%s' 들어ê°\n"
-#: output.c:111
+#: src/output.c:104
#, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "%s: 디렉터리 '%s' 나ê°\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: ì•Œ 수 없는 디렉터리 들어ê°\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: ì•Œ 수 없는 디렉터리 나ê°\n"
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr "%s[%u]: 디렉터리 '%s' 들어ê°\n"
-#: output.c:122
+#: src/output.c:115
#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "%s[%u]: 디렉터리 '%s' 나ê°\n"
-#: output.c:495 output.c:497
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
msgstr "쓰기 오류: 표준 출력"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". 멈춤.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr "-O[ë°©ì‹] (--output-sync[=ë°©ì‹]) ì˜µì…˜ì€ ì´ ë¹Œë“œì—ì„œ 사용하지 않습니다."
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "ìž‘ì—… 파ì´í”„ ìƒì„±"
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
msgstr "ìž‘ì—… 파ì´í”„ dup() 수행"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr "작업서버 파ì´í”„ 초기화"
-#: posixos.c:90
+#: src/posixos.c:119
#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr "내부 오류: ìž˜ëª»ëœ --jobserver-auth 문ìžì—´ '%s'"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr "ìž‘ì—… 서버 í´ë¼ì´ì–¸íŠ¸(íŒŒì¼ ë””ìŠ¤í¬ë¦½í„° %d,%d)\n"
-#: posixos.c:109
+#: src/posixos.c:138
msgid "jobserver pipeline"
msgstr "작업서버 파ì´í”„ë¼ì¸"
# ??? 디버깅 메세지
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr "작업서버 쓰기"
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr "작업 서버가 꺼졌습니다"
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
msgstr "pselect ìž‘ì—… 파ì´í”„"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "ìž‘ì—… 파ì´í”„ ì½ê¸°"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "ë©”ì´í¬íŒŒì¼ì„ ì½ê³  있습니다...\n"
-#: read.c:329
+#: src/read.c:336
#, c-format
msgid "Reading makefile '%s'"
msgstr "'%s' ë©”ì´í¬íŒŒì¼ì„ ì½ê³  있습니다"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (최종 íƒ€ê²Ÿì´ ì—†ìŒ)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (íƒìƒ‰ 경로)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (ìƒê´€ 안함)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (~ 확장 ì—†ìŒ)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr "ë©”ì´í¬íŒŒì¼ '%s'ì—ì„œ UTF-8 BOM 무시\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr "ë©”ì´í¬íŒŒì¼ 버í¼ì—ì„œ UTF-8 BOM 무시\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "ì¡°ê±´ë¬¸ì— ë¶€ì ì ˆí•œ ë¬¸ë²•ì´ ì“°ìž„"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr "%s: ì½ì–´ë“¤ì´ëŠ”ë° ì‹¤íŒ¨"
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
msgstr "첫번째 타겟보다 ì•žì—ì„œ 명령어가 시작ë˜ì—ˆìŠµë‹ˆë‹¤"
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
msgstr "명령 ì•žì— ê·œì¹™ì´ ë¹ ì¡ŒìŒ"
-#: read.c:1124
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr ""
"분리 기호가 없습니다 (빈 칸 8개가 ì•„ë‹ˆë¼ íƒ­ì„ ì“°ë ¤ê³  í•œ 것 아니었습니까?)"
-#: read.c:1126
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
msgstr "분리 기호가 ë¹ ì¡ŒìŒ"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "타겟 íŒ¨í„´ì´ ë¹ ì¡ŒìŒ"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "다중 타겟 패턴"
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
msgstr "타겟 íŒ¨í„´ì— '%%'ê°€ 없습니다."
-#: read.c:1390
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
msgstr "'endif'ê°€ ë¹ ì¡ŒìŒ"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "빈 변수 ì´ë¦„"
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
msgstr "'define' ì§€ì‹œìž ë’¤ì— í•„ìš” 없는 í…스트 있ìŒ"
-#: read.c:1488
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "'endef'ê°€ ë¹ ì¡ŒìŒ. 'define'ì„ ë§ˆì¹˜ì§€ 않았습니다"
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
msgstr "'endef' ì§€ì‹œìž ë’¤ì— í•„ìš” 없는 í…스트가 있ìŒ"
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
msgstr "'%s' ì§€ì‹œìž ë’¤ì— í•„ìš” 없는 í…스트가 있ìŒ"
-#: read.c:1589
+#: src/read.c:1604
#, c-format
msgid "extraneous '%s'"
msgstr "필요 없는 '%s'"
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
msgstr "í•œ ê°œì˜ ì¡°ê±´ì—는 í•œ ê°œì˜ 'else'만 있어야 합니다"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr "타겟별 변수 ì •ì˜ í˜•ì‹ì´ 틀렸습니다"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr "명령어ì—ì„œ ì„ í–‰ì¡°ê±´ì„ ì •ì˜í•  수 없습니다"
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr "그룹 íƒ€ê²Ÿì€ ëª…ë ¹ì–´ë¥¼ 제공해야 합니다"
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr "ë¬µì‹œì  íŒ¨í„´ 룰과 ê³ ì •ëœ íŒ¨í„´ë£°ì´ ì„žì˜€ìŠµë‹ˆë‹¤"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "í˜¼í•©ëœ ë¬µì‹œì  ê·œì¹™ê³¼ ì¼ë°˜ì  규칙"
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr "타겟 '%s'ì€(는) 타겟 íŒ¨í„´ì— ë§žì§€ 않습니다"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
msgstr "타겟 íŒŒì¼ '%s'ì€(는) :와 :: í•­ëª©ì„ ë™ì‹œì— ê°–ê³  있습니다"
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
msgstr "타겟 '%s'ì´(ê°€) ê°™ì€ ê·œì¹™ì—ì„œ 여러 번 주어졌습니다"
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr "경고: 타겟 '%s'ì— ëŒ€í•œ 명령보다 우선합니다"
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr "경고: 타겟 '%s'ì— ëŒ€í•œ 과거 ëª…ë ¹ì„ ë¬´ì‹œí•©ë‹ˆë‹¤"
-#: read.c:2223
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr "*** í˜¼í•©ëœ ë¬µì‹œì  ê·œì¹™ê³¼ ì¼ë°˜ì  규칙: 추천하지 않는 문법입니다"
-#: read.c:2542
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "경고: 타겟 '%s'ì˜ ê·¸ë£¹ 소ì†ë³´ë‹¤ 우선합니다"
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr "경고: NUL 문ìžê°€ 발견ë˜ì—ˆìŠµë‹ˆë‹¤. ì¤„ì˜ ë‚˜ë¨¸ì§€ëŠ” 무시ë©ë‹ˆë‹¤"
-#: remake.c:226
+#: src/remake.c:226
#, c-format
msgid "Nothing to be done for '%s'."
msgstr "'%s'ì„(를) 위해 í•  ì¼ì´ 없습니다."
-#: remake.c:227
+#: src/remake.c:227
#, c-format
msgid "'%s' is up to date."
msgstr "'%s'ì€(는) ì´ë¯¸ ì—…ë°ì´íŠ¸ë˜ì—ˆìŠµë‹ˆë‹¤."
# pruneì´ truncateì˜ ì˜ë¯¸ì¸ê°€ 지운다는 ì˜ë¯¸ì¸ê°€??
-#: remake.c:323
+#: src/remake.c:323
#, c-format
msgid "Pruning file '%s'.\n"
msgstr "'%s' 파ì¼ì„ 잘ë¼ëƒ…니다.\n"
-#: remake.c:406
+#: src/remake.c:389
#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr "%1$s'%3$s'ì—ì„œ 필요한 '%2$s' íƒ€ê²Ÿì„ ë§Œë“¤ ê·œì¹™ì´ ì—†ìŠµë‹ˆë‹¤%4$s"
-#: remake.c:416
+#: src/remake.c:399
#, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%s타겟 '%s'ì„(를) 만들 ê·œì¹™ì´ ì—†ìŠµë‹ˆë‹¤%s"
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
msgstr "'%s' 타겟 파ì¼ì„ 고려합니다.\n"
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr "ìµœê·¼ì— '%s' íŒŒì¼ ì—…ë°ì´íŠ¸ë¥¼ ì‹œë„í•´ 실패했습니다.\n"
-#: remake.c:461
+#: src/remake.c:444
#, c-format
msgid "File '%s' was considered already.\n"
msgstr "'%s' 파ì¼ì€ ì´ë¯¸ 검토했습니다.\n"
-#: remake.c:471
+#: src/remake.c:454
#, c-format
msgid "Still updating file '%s'.\n"
msgstr "ì•„ì§ '%s' 파ì¼ì„ ì—…ë°ì´íŠ¸í•˜ê³  있습니다.\n"
-#: remake.c:474
+#: src/remake.c:457
#, c-format
msgid "Finished updating file '%s'.\n"
msgstr "'%s' 파ì¼ì˜ ì—…ë°ì´íŠ¸ë¥¼ 마쳤습니다.\n"
-#: remake.c:503
+#: src/remake.c:486
#, c-format
msgid "File '%s' does not exist.\n"
msgstr "'%s' 파ì¼ì´ 없습니다.\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
@@ -1638,148 +1694,148 @@ msgstr ""
"*** Warning: .LOW_RESOLUTION_TIME íŒŒì¼ '%s'ì— ê³ í•´ìƒë„ 타임 스탬프가 들어 있"
"습니다"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr "'%s'ì— ëŒ€í•œ ë¬µì‹œì  ê·œì¹™ì„ ì°¾ì•˜ìŠµë‹ˆë‹¤.\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr "'%s'ì— ëŒ€í•œ ë¬µì‹œì  ê·œì¹™ì´ ì—†ìŠµë‹ˆë‹¤.\n"
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
msgstr "'%s'ì— ëŒ€í•´ 기본 명령 사용.\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "%s <- %s ìƒí˜¸ ì˜ì¡´ì„±ì€ 무시ë©ë‹ˆë‹¤."
-#: remake.c:691
+#: src/remake.c:674
#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr "타겟 íŒŒì¼ '%s'ì˜ ì„ í–‰ì¡°ê±´ì„ ë§ˆì³¤ìŠµë‹ˆë‹¤.\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr "'%s'ì˜ ì„ í–‰ì¡°ê±´ì´ ë§Œë“¤ì–´ì§€ê³  있습니다.\n"
-#: remake.c:711
+#: src/remake.c:694
#, c-format
msgid "Giving up on target file '%s'.\n"
msgstr "타겟 íŒŒì¼ '%s'ì„(를) í¬ê¸°í•©ë‹ˆë‹¤.\n"
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
msgstr "오류로 '%s' íƒ€ê²Ÿì„ ë‹¤ì‹œ 만들지 못했습니다."
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr "'%s' ì„ í–‰ ì¡°ê±´ì€ '%s' íƒ€ê²Ÿì— ëŒ€í•´ 순서만 ì„ í–‰ 조건입니다.\n"
-#: remake.c:773
+#: src/remake.c:756
#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr "타겟 '%2$s'ì˜ ì„ í–‰ì¡°ê±´ %1$sì´(ê°€) 없습니다.\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr "'%s' ì„ í–‰ ì¡°ê±´ì´ '%s' 타겟보다 ë‚˜ì¤‘ì— ë§Œë“¤ì–´ì¡ŒìŠµë‹ˆë‹¤.\n"
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr "'%s' ì„ í–‰ ì¡°ê±´ì´ '%s' 타겟보다 먼저 만들어졌습니다.\n"
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr "'%s' íƒ€ê²Ÿì€ ì½œë¡  ë‘ ê°œê°€ 붙었고 ì„ í–‰ì¡°ê±´ì´ ì—†ìŠµë‹ˆë‹¤.\n"
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr "'%s'ì— ëŒ€í•œ 명령어가 없고 ì–´ë–¤ ì„ í–‰ì¡°ê±´ë„ ì‹¤ì œë¡œ 바뀌지 않았습니다.\n"
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr "always-make 옵션 ë•Œë¬¸ì— '%s' íƒ€ê²Ÿì„ ë§Œë“­ë‹ˆë‹¤.\n"
-#: remake.c:819
+#: src/remake.c:802
#, c-format
msgid "No need to remake target '%s'"
msgstr "'%s' íƒ€ê²Ÿì„ ë‹¤ì‹œ 만들 필요가 없습니다"
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
msgstr "; VPATH ì´ë¦„ '%s'ì„(를) 사용합니다"
-#: remake.c:841
+#: src/remake.c:824
#, c-format
msgid "Must remake target '%s'.\n"
msgstr "'%s' íƒ€ê²Ÿì„ ë‹¤ì‹œ 만들어야 합니다.\n"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr " VPATH ì´ë¦„ '%s'ì„(를) 무시합니다.\n"
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr "'%s'ì˜ ëª…ë ¹ì´ ì‹¤í–‰ 중입니다.\n"
-#: remake.c:863
+#: src/remake.c:846
#, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr "'%s' 타겟 파ì¼ì„ 다시 ë§Œë“œëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.\n"
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr "'%s' 타겟 파ì¼ì„ 성공ì ìœ¼ë¡œ 다시 만들었습니다.\n"
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr "'%s' 타겟 파ì¼ì„ -q 옵션으로 다시 만들어야 합니다.\n"
-#: remake.c:1064
+#: src/remake.c:1047
#, c-format
msgid "Using default commands for '%s'.\n"
msgstr "'%s'ì— ëŒ€í•´ 기본 ëª…ë ¹ì„ ì‚¬ìš©.\n"
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "경고: '%s' 파ì¼ì˜ 변경 ì‹œê°ì´ 미래입니다"
-
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr "경고: '%s' 파ì¼ì˜ 변경 ì‹œê°(%s)ì´ ë¯¸ëž˜ìž…ë‹ˆë‹¤"
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr ".LIBPATTERNSì˜ ì›ì†Œ '%s'ì´(ê°€) íŒ¨í„´ì´ ì•„ë‹™ë‹ˆë‹¤"
# ??? 디버깅 메세지 -- 뭔지 알기 어려움
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr "Customsì€ exportë˜ì§€ 않습니다: %s\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -1787,7 +1843,7 @@ msgstr ""
"\n"
"# ë¬µì‹œì  ê·œì¹™"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1795,181 +1851,177 @@ msgstr ""
"\n"
"# ë¬µì‹œì  ê·œì¹™ ì—†ìŒ."
-#: rule.c:514
+#: src/rule.c:548
#, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
-"# ë¬µì‹œì  ê·œì¹™ %uê°œ, %u"
-
-#: rule.c:523
-msgid " terminal."
-msgstr " 터미ë„."
+"# ë¬µì‹œì  ê·œì¹™ %uê°œ, %u (%.1f%%) 터미ë„."
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "버그: num_pattern_rules 틀렸습니다! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "알 수 없는 신호"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "ëŠì–´ì§"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "ì¸í„°ëŸ½íŠ¸"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "ë내기"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "ìž˜ëª»ëœ ëª…ë ¹"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "추ì /ì¤‘ë‹¨ì  íŠ¸ëž©"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "중단ë¨"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "IOT 트랩"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "EMT 트랩"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "ë¶€ë™ ì†Œìˆ˜ì  ì˜ˆì™¸"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "죽었ìŒ"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "버스 오류"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "세그멘테ì´ì…˜ 오류"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "ìž˜ëª»ëœ ì‹œìŠ¤í…œ 호출"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "깨어진 파ì´í”„"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "ìžëª…종 시계"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "종료ë¨"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "ì‚¬ìš©ìž ì •ì˜ ì‹ í˜¸ 1"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "ì‚¬ìš©ìž ì •ì˜ ì‹ í˜¸ 2"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "하위 프로세스 ë남"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "전력 중단"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "중지ë¨"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "중지ë¨(tty ìž…ë ¥)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "중지ë¨(tty 출력)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "중지ë¨(시그ë„)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "CPU 시간 제한 초과ë¨"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "íŒŒì¼ í¬ê¸° 제한 초과ë¨"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "ê°€ìƒ íƒ€ì´ë¨¸ 시간 초과ë¨"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "프로파ì¼ë§ 타ì´ë¨¸ 시간 초과ë¨"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "ì°½ì´ ë°”ë€Œì—ˆìŒ"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "계ì†ë¨"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "긴급한 입출력 ìƒí™©"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "입출력 가능"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "ìžì› ì†ì‹¤"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "위험 신호"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "정보 요청"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "부ë™ì†Œìˆ˜ì  ì—°ì‚° 보조프로세서가 없습니다"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
@@ -1978,7 +2030,7 @@ msgstr ""
"\n"
"%s strcache ë²„í¼ ì—†ìŒ\n"
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -1989,26 +2041,25 @@ msgstr ""
"%s strcache 버í¼: %lu (%lu) / 문ìžì—´ = %lu / 저장 공간 = %lu B / í‰ê·  = %lu "
"B\n"
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
-msgstr ""
-"%s 현재 버í¼: í¬ê¸° = %hu B / 사용 = %hu B / 개수 = %hu / í‰ê·  = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
+msgstr "%s 현재 버í¼: í¬ê¸° = %hu B / 사용 = %hu B / 개수 = %hu / í‰ê·  = %u B\n"
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr "%s 기타 사용: ì „ì²´ = %lu B / 개수 = %lu / í‰ê·  = %lu B\n"
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
msgstr ""
"%s 기타 빈 공간: ì „ì²´ = %lu B / 최대 = %lu B / 최소 = %lu B / í‰ê·  = %hu B\n"
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
@@ -2017,7 +2068,7 @@ msgstr ""
"\n"
"%s strcache 효율: 검색 = %lu / 히트 비율 = %lu%%\n"
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
@@ -2025,44 +2076,44 @@ msgstr ""
"# í•´ì‹œ í…Œì´ë¸” 통계:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "ìžë™"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "기본값"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "환경"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "ë©”ì´í¬íŒŒì¼"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "-e í•˜ì˜ í™˜ê²½"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "명령행"
-#: variable.c:1647
+#: src/variable.c:1671
msgid "'override' directive"
msgstr "'override' 지시ìž"
-#: variable.c:1658
+#: src/variable.c:1682
#, c-format
msgid " (from '%s', line %lu)"
msgstr " ('%s'ì—ì„œ, %lu번째 줄)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr "# 변수 ëª¨ìŒ í•´ì‹œ í…Œì´ë¸” 통계:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2070,7 +2121,7 @@ msgstr ""
"\n"
"# 변수\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
@@ -2078,7 +2129,7 @@ msgstr ""
"\n"
"# íŒ¨í„´ì„ ìœ„í•œ 변수 ê°’"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2086,7 +2137,7 @@ msgstr ""
"\n"
"# íŒ¨í„´ì„ ìœ„í•œ 변수 ê°’ì´ ì—†ìŠµë‹ˆë‹¤."
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
@@ -2095,48 +2146,48 @@ msgstr ""
"\n"
"# 특정 íŒ¨í„´ì„ ìœ„í•œ 변수 ê°’ %uê°œ"
-#: variable.h:224
+#: src/variable.h:229
#, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "경고: ì •ì˜ë˜ì§€ ì•Šì€ ë³€ìˆ˜ '%.*s'"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr "sys$search()ê°€ %dë²ˆì„ ë¦¬í„´í•˜ë©° 실패했습니다\n"
# DCL - Digital Command Language, VMSì—서만 존재하는 shell languageì˜ ì¼ì¢…
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr "-경고, DCLì—ì„œ CTRL-Y를 다시 사용가능하ë„ë¡ í•´ì•¼ í•  것입니다.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "내장 CD %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr "DCL: %s\n"
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr "ì¶œë ¥ì„ %sì— ë¶™ìž…ë‹ˆë‹¤\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr "%.*sì„(를) 붙ì´ê³  지ì›ë‹ˆë‹¤\n"
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "대신 %sì„(를) 실행\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2144,11 +2195,11 @@ msgstr ""
"\n"
"# VPATH íƒìƒ‰ 경로\n"
-#: vpath.c:620
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
msgstr "# 'vpath' íƒìƒ‰ 경로가 ì—†ìŒ."
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
@@ -2157,7 +2208,7 @@ msgstr ""
"\n"
"# 'vpath' íƒìƒ‰ 경로 %uê°œ.\n"
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
@@ -2165,7 +2216,7 @@ msgstr ""
"\n"
"# ì¼ë°˜ì ì¸ ('VPATH' 변수) íƒìƒ‰ 경로가 ì—†ìŒ."
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
@@ -2175,33 +2226,33 @@ msgstr ""
"# ì¼ë°˜ì ì¸ ('VPATH' 변수) íƒìƒ‰ 경로:\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr "작업서버 ìŠ¬ë¡¯ì€ %d개로 제한ë©ë‹ˆë‹¤\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr "작업서버 세마í¬ì–´ 만들기: (오류 %ld: %s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr "내부 오류: ìž‘ì—… 서버 세마í¬ì–´('%s')를 ì—´ 수 없습니다: (오류 %ld: %s)"
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr "ìž‘ì—… 서버 í´ë¼ì´ì–¸íŠ¸(세마í¬ì–´ %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr "ìž‘ì—… 서버 세마í¬ì–´ í•´ì œ: (오류 %ld: %s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr "세마í¬ì–´ ë˜ëŠ” 하위 프로세스 대기: (오류 %ld: %s)"
diff --git a/po/lt.gmo b/po/lt.gmo
index a3136eb..baab504 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index b836e2b..c47ea36 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: make-3.81\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
"PO-Revision-Date: 2008-05-17 21:42+0300\n"
"Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
@@ -15,117 +15,119 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
"%100<10 || n%100>=20) ? 1 : 2);\n"
-#: ar.c:46
+#: src/ar.c:46
#, fuzzy, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "bandymas naudoti nepalaikomą funkcionalumą: „%s“"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr ""
-#: ar.c:147
+#: src/ar.c:147
#, fuzzy, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "touch: Archyvas „%s“ neegzistuoja"
-#: ar.c:150
+#: src/ar.c:150
#, fuzzy, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "touch: „%s“ nėra taisyklingas archyvas"
-#: ar.c:157
+#: src/ar.c:157
#, fuzzy, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "touch: Archyvas „%s“ neegzistuoja"
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr ""
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr ""
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr ""
-#: arscan.c:261
+#: src/arscan.c:261
#, fuzzy, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr "nepavyko atverti bibliotekos „%s“ bandant surasti narį „%s“"
-#: arscan.c:965
+#: src/arscan.c:944
#, fuzzy, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr "Narys „%s“%s: %ld baitų pozicijoje %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (pavadinimas gali būti sutrumpintas)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Data %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, mode = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr ""
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr ""
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr ""
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr ""
-#: commands.c:645
+#: src/commands.c:646
#, fuzzy, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] Trinamas failas „%s“"
-#: commands.c:647
+#: src/commands.c:648
#, fuzzy, c-format
msgid "*** Deleting file '%s'"
msgstr "*** Trinamas failas „%s“"
-#: commands.c:683
+#: src/commands.c:684
#, fuzzy
msgid "# recipe to execute"
msgstr "# vykdytinos komandos"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (integruota)"
-#: commands.c:688
+#: src/commands.c:689
#, fuzzy, c-format
msgid " (from '%s', line %lu):\n"
msgstr " (nuo „%s“, %lu eilutė):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -133,228 +135,230 @@ msgstr ""
"\n"
"# Aplankai\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: negalėjo būti stat'intas.\n"
-#: dir.c:1085
+#: src/dir.c:1089
#, fuzzy
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
msgstr "# %s (key %s, mtime %d): nepavyko atverti.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr ""
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr ""
-#: dir.c:1122
+#: src/dir.c:1126
#, fuzzy
msgid "# %s (key %s, mtime %I64u): "
msgstr "# %s (key %s, mtime %d): nepavyko atverti.\n"
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr ""
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr ""
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "Ne"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " failai, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "ne"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " negalimybÄ—s"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " kol kas."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " negalimybÄ—s %lu aplankuose.\n"
-#: expand.c:125
+#: src/expand.c:125
#, fuzzy, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr "Rekursyvus kintamasis „%s“ nukreipia į save (anksÄiau ar vÄ—liau)"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "neterminuota nuoroda į kintamąjį"
-#: file.c:278
+#: src/file.c:278
#, fuzzy, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr "Komandos nurodytos failui „%s“ %s:%lu,"
-#: file.c:283
+#: src/file.c:283
#, fuzzy, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr "Komandos failui „%s“ rastos pagal neišreikštinę taisyklių paiešką"
-#: file.c:287
+#: src/file.c:287
#, fuzzy, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr "bet „%s“ dabar laikomas tuo paÄiu failu kaip „%s“."
-#: file.c:290
+#: src/file.c:290
#, fuzzy, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr "Komandos „%s“ bus ignoruojamos „%s“ komandų naudai."
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr ""
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr ""
-#: file.c:408
+#: src/file.c:408
#, fuzzy, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "*** Trinamas tarpinis failas „%s“"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "Å alinami tarpiniai failai...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "Dabartinis laikas"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: Laiko žymÄ— už rėžių; keiÄiama į %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# Ne tikslas:"
-#: file.c:967
+#: src/file.c:1021
#, fuzzy
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# Brangus failas (reikalingas .PRECIOUS)"
-#: file.c:969
+#: src/file.c:1023
#, fuzzy
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# Keistas tikslas (reikalingas .PHONY)."
-#: file.c:971
+#: src/file.c:1025
#, fuzzy
msgid "# Command line target."
msgstr "# KomandinÄ—s eilutÄ—s tikslas"
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr "# Numatytoji reikšmė, MAKEFILES, arba -include/sinclude „make“ failas"
-#: file.c:975
+#: src/file.c:1029
#, fuzzy
msgid "# Builtin rule"
msgstr ""
"\n"
"# Nėra neišreikštinių taisyklių."
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# Neišreikštinių taisyklių paieška atlikta."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# Neišreikštinių taisyklių paieška neatlikta."
-#: file.c:980
+#: src/file.c:1034
#, fuzzy, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr "# Išreikštinis/statinis šablono kamienas: „%s“\n"
-#: file.c:982
+#: src/file.c:1036
#, fuzzy
msgid "# File is an intermediate prerequisite."
msgstr "# Failas yra tarpinÄ— sÄ…lyga"
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# Taip pat sukuria:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# Modifikacijos laikas niekada netikrintas."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# Failas neegzistuoja."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# Failas labai senas."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# Paskutinį kartą pakeista %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# Failas atnaujintas."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# Failas nebuvo atnaujintas."
-#: file.c:1008
+#: src/file.c:1062
#, fuzzy
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# Dabar vykdomos komandos (TAI KLAIDA)."
-#: file.c:1011
+#: src/file.c:1065
#, fuzzy
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr "# Vykdomos priklausomybių komandos (TAI KLAIDA)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# SÄ—kmingai atnaujinta."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# Turi būti atnaujinta (-q nustatyta)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# Nepavyko atnaujinti."
-#: file.c:1032
+#: src/file.c:1086
#, fuzzy
msgid "# Invalid value in 'command_state' member!"
msgstr "# Netaisyklinga reikšmė „command_state“ naryje!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -362,7 +366,7 @@ msgstr ""
"\n"
"# Failai"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -372,662 +376,666 @@ msgstr ""
"# failų maišos lentelės statistika:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr ""
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
msgstr ""
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr ""
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
msgstr ""
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
msgstr ""
-#: function.c:1525
+#: src/function.c:1533
#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr ""
-#: function.c:1549
+#: src/function.c:1557
#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr ""
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr ""
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr ""
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr ""
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr ""
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, fuzzy, c-format
msgid "open: %s: %s"
msgstr "%s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, fuzzy, c-format
msgid "write: %s: %s"
msgstr "rašymo klaida: %s"
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, fuzzy, c-format
msgid "close: %s: %s"
msgstr "%s%s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr ""
-#: function.c:2262
+#: src/function.c:2277
#, fuzzy, c-format
msgid "read: %s: %s"
msgstr "%s: %s"
-#: function.c:2275
+#: src/function.c:2290
#, fuzzy, c-format
msgid "file: invalid file operation: %s"
msgstr "%s: netaisyklingas argumentas -- %c\n"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr ""
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr ""
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr ""
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr ""
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr ""
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr ""
-#: function.c:2657
+#: src/function.c:2674
#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
msgstr ""
-#: function.c:2660
+#: src/function.c:2677
#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
msgstr ""
-#: getopt.c:659
+#: src/getopt.c:659
#, fuzzy, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: parametras `%s' dviprasmis\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, fuzzy, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: argumentas „--%s“ neleidžia parametro\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, fuzzy, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: argumentas „%c%s“ neleidžia parametro\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, fuzzy, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: parametrui „%s“ reikia argumento\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, fuzzy, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: neatpažintas argumentas „--%s“\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, fuzzy, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: neatpažintas argumentas „%c%s“\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: neleistinas parametras -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: netaisyklingas argumentas -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: parametrui reikia argumento -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, fuzzy, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: parametras „-W %s“ dviprasmis\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, fuzzy, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: parametras „-W %s“ neleidžia argumento\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr ""
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr ""
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr ""
-#: hash.c:280
+#: src/hash.c:280
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
+msgid "Load=%lu/%lu=%.0f%%, "
msgstr ""
-#: hash.c:282
+#: src/hash.c:282
#, c-format
-msgid "Rehash=%d, "
+msgid "Rehash=%u, "
msgstr ""
-#: hash.c:283
+#: src/hash.c:283
#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
+msgid "Collisions=%lu/%lu=%.0f%%"
msgstr ""
-#: implicit.c:38
+#: src/implicit.c:38
#, fuzzy, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr "Rasta neišreikštinė taisyklė tikslui „%s“.\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, fuzzy, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr "Rasta neišreikštinė taisyklė tikslui „%s“.\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr ""
-#: implicit.c:486
+#: src/implicit.c:484
#, c-format
-msgid "Stem too long: '%.*s'.\n"
+msgid "Stem too long: '%s%.*s'.\n"
msgstr ""
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr ""
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr ""
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr ""
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr ""
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr ""
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr ""
-#: implicit.c:765
+#: src/implicit.c:786
#, fuzzy, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr "Å alinami tarpiniai failai...\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr ""
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr ""
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr ""
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
#, fuzzy
msgid "<builtin>"
msgstr " (integruota)"
-#: job.c:510
+#: src/job.c:573
#, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr ""
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr ""
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr ""
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr ""
-#: job.c:831
+#: src/job.c:898
#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
+msgid "Reaping winning child %p PID %s %s\n"
msgstr ""
-#: job.c:832
+#: src/job.c:899
#, c-format
-msgid "Reaping winning child %p PID %s %s\n"
+msgid "Reaping losing child %p PID %s %s\n"
msgstr ""
-#: job.c:839
+#: src/job.c:950
#, fuzzy, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "%s: nepavyko atverti laikinojo failo: %s"
-#: job.c:845
+#: src/job.c:956
#, fuzzy, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr "%s: nepavyko atverti laikinojo failo: %s"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr ""
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr ""
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr ""
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
"Counted %d args in failed launch\n"
msgstr ""
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr ""
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr ""
-#: job.c:1838
+#: src/job.c:1902
#, fuzzy, c-format
msgid "%s: target '%s' does not exist"
msgstr "touch: Archyvas „%s“ neegzistuoja"
-#: job.c:1841
+#: src/job.c:1905
#, fuzzy, c-format
msgid "%s: update target '%s' due to: %s"
msgstr "%sNėra taisyklės pasiekti tikslui „%s“, kurio reikia „%s“%s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr ""
-#: job.c:1958
+#: src/job.c:2110
#, fuzzy
msgid "cannot enforce load limit: "
msgstr "%s: nepayko pakeisti limito: %s"
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr ""
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr ""
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr ""
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr ""
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr ""
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr ""
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr ""
-#: job.c:2275
-#, fuzzy, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: Komanda nerasta"
-
-#: job.c:2277
-#, fuzzy, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s: Komanda nerasta"
-
-#: job.c:2337
+#: src/job.c:2623
#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: Kevalo programa nerasta"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr ""
-#: job.c:2584
+#: src/job.c:2862
#, fuzzy, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "$SHELL pakeistas (buvo „%s“, dabar „%s“)\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr ""
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
msgstr ""
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
"\t%s\n"
msgstr ""
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr ""
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr ""
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr ""
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr ""
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr ""
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr ""
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr ""
-#: load.c:256
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr ""
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr ""
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr ""
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr ""
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
msgstr ""
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr ""
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
msgstr ""
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
msgstr ""
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr ""
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr ""
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
msgstr ""
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
msgstr ""
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
"N.\n"
msgstr ""
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
msgstr ""
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
"them.\n"
msgstr ""
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
"it.\n"
msgstr ""
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
msgstr ""
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr ""
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
msgstr ""
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr ""
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr ""
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr ""
-#: main.c:393
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
msgstr ""
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
msgstr ""
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr ""
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr ""
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
msgstr ""
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
msgstr ""
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
msgstr ""
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "negalimas tuÅ¡Äias failo pavadinimas"
-#: main.c:766
+#: src/main.c:754
#, fuzzy, c-format
msgid "unknown debug level specification '%s'"
msgstr "nežinomas debug lygio specifikacija „%s“"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr ""
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr ""
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1037,132 +1045,140 @@ msgid ""
"ExceptionAddress = 0x%p\n"
msgstr ""
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr ""
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr ""
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr ""
-#: main.c:1021
+#: src/main.c:1009
#, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr ""
-#: main.c:1538
-#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr ""
-
-#: main.c:1540
+#: src/main.c:1609
#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr ""
-
-#: main.c:1627
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
msgstr ""
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr ""
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr ""
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr ""
-#: main.c:2048
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr ""
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr ""
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr ""
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr ""
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "Atnaujinami „make“ failai....\n"
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr ""
-#: main.c:2279
+#: src/main.c:2303
#, fuzzy, c-format
msgid "Failed to remake makefile '%s'."
msgstr "Nereikia atnaujinti taikinio „%s“"
-#: main.c:2299
+#: src/main.c:2323
#, fuzzy, c-format
msgid "Included makefile '%s' was not found."
msgstr "„Make“ failas „%s“ nerastas"
-#: main.c:2304
+#: src/main.c:2328
#, fuzzy, c-format
msgid "Makefile '%s' was not found"
msgstr "„Make“ failas „%s“ nerastas"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "Nepavyko grįžti į pirminį aplanką."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr ""
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr ""
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ""
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Nenurodyta tikslų ir nerasta „make“ failų"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "Nėra tikslų"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Nenurodyta tikslų ir nerasta „make“ failų"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "Atnaujinami tikslai...\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr ""
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "Naudojimas: %s [argumentai] [tikslas] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1171,7 +1187,7 @@ msgstr ""
"\n"
"Å i programa sukompiliuota %s sistemai\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1180,36 +1196,36 @@ msgstr ""
"\n"
"Å i programa sukompiliuota %s (%s) sistemai\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr "Praneškite apie klaidas adresu <bug-make@gnu.org>\n"
-#: main.c:2870
+#: src/main.c:2901
#, fuzzy, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "parametrui „-%c“ reikia netuÅ¡Äio argumento"
-#: main.c:2934
+#: src/main.c:2965
#, fuzzy, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "parametrui „-%c“ reikia teigiamo sveiko argumento"
-#: main.c:3332
+#: src/main.c:3363
#, fuzzy, c-format
msgid "%sBuilt for %s\n"
msgstr ""
"\n"
"%sÅ i programa sukompiliuota %s sistemai\n"
-#: main.c:3334
+#: src/main.c:3365
#, fuzzy, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr ""
"\n"
"%sÅ i programa sukompiliuota %s (%s) sistemai\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1218,514 +1234,541 @@ msgid ""
"%sThere is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
"# Make data base, printed on %s"
msgstr ""
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
"# Finished Make data base on %s\n"
msgstr ""
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Nežinoma klaida %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: user %lu (real %lu), group %lu (real %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr ""
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr ""
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr ""
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr ""
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: Įeinama į nežinomą aplanką\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: Išeinama iš nežinomo aplanko\n"
-#: output.c:109
+#: src/output.c:102
#, fuzzy, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "%s: Įeinama į aplanką „%s“\n"
-#: output.c:111
+#: src/output.c:104
#, fuzzy, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "%s: Išeinama iš aplanko „%s“\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: Įeinama į nežinomą aplanką\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: Išeinama iš nežinomo aplanko\n"
-#: output.c:120
+#: src/output.c:113
#, fuzzy, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr "%s[%u]: Įeinama į aplanką „%s“\n"
-#: output.c:122
+#: src/output.c:115
#, fuzzy, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "%s[%u]: Išeinama iš aplanko „%s“\n"
-#: output.c:495 output.c:497
-#, fuzzy
+#: src/output.c:442 src/output.c:444
+#, fuzzy, c-format
msgid "write error: stdout"
msgstr "rašymo klaida: %s"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". Pabaiga.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr ""
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
msgstr ""
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr ""
-#: posixos.c:90
+#: src/posixos.c:119
#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr ""
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr ""
-#: posixos.c:109
+#: src/posixos.c:138
msgid "jobserver pipeline"
msgstr ""
-#: posixos.c:154
+#: src/posixos.c:186
#, fuzzy
msgid "write jobserver"
msgstr "rašymo klaida: %s"
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr ""
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
msgstr ""
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr ""
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "Skaitomi „make“ failai...\n"
-#: read.c:329
+#: src/read.c:336
#, fuzzy, c-format
msgid "Reading makefile '%s'"
msgstr "Skaitomas „make“ failas „%s“"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (nÄ—ra numatytojo tikslo)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (paieškos kelias)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (nesvarbu)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (nėra ~ išplėtimo)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr ""
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr ""
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "netaisyklinga sÄ…lygos sintaksÄ—"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr ""
-#: read.c:985
-#, fuzzy
+#: src/read.c:986
+#, fuzzy, c-format
msgid "recipe commences before first target"
msgstr "komandos prasideda prieš pirmąjį tikslą"
-#: read.c:1034
-#, fuzzy
+#: src/read.c:1035
+#, fuzzy, c-format
msgid "missing rule before recipe"
msgstr "trūksta taisyklės prieš komandas"
-#: read.c:1124
-#, fuzzy
+#: src/read.c:1136
+#, fuzzy, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr " (ar norėjote padėti TAB simbolį vietoje 8 tarpų?)"
-#: read.c:1126
-#, fuzzy
+#: src/read.c:1138
+#, fuzzy, c-format
msgid "missing separator"
msgstr "trūksta skirtuko%s"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "trūksta tikslo šablono"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "keli tikslo Å¡ablonai"
-#: read.c:1268
+#: src/read.c:1289
#, fuzzy, c-format
msgid "target pattern contains no '%%'"
msgstr "tikslo šablone nėra „%%“"
-#: read.c:1390
-#, fuzzy
+#: src/read.c:1404
+#, fuzzy, c-format
msgid "missing 'endif'"
msgstr "trūksta „endif“"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "tuÅ¡Äias kintamojo pavadinimas"
-#: read.c:1463
-#, fuzzy
+#: src/read.c:1478
+#, fuzzy, c-format
msgid "extraneous text after 'define' directive"
msgstr "Perteklinis tekstas po „endef“ direktyvos"
-#: read.c:1488
-#, fuzzy
+#: src/read.c:1503
+#, fuzzy, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "trūksta „endef“, nebaigtas „define“"
-#: read.c:1516
-#, fuzzy
+#: src/read.c:1531
+#, fuzzy, c-format
msgid "extraneous text after 'endef' directive"
msgstr "Perteklinis tekstas po „endef“ direktyvos"
-#: read.c:1588
+#: src/read.c:1603
#, fuzzy, c-format
msgid "extraneous text after '%s' directive"
msgstr "Perteklinis tekstas po „%s“ direktyvos"
-#: read.c:1589
+#: src/read.c:1604
#, fuzzy, c-format
msgid "extraneous '%s'"
msgstr "perteklinis „%s“"
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
msgstr ""
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr ""
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr ""
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr ""
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr ""
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr ""
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr ""
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
msgstr ""
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
msgstr ""
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr ""
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr ""
-#: read.c:2223
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr ""
-#: read.c:2542
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr ""
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr ""
-#: remake.c:226
+#: src/remake.c:226
#, fuzzy, c-format
msgid "Nothing to be done for '%s'."
msgstr "Nėra ką daryti su „%s“."
-#: remake.c:227
+#: src/remake.c:227
#, fuzzy, c-format
msgid "'%s' is up to date."
msgstr "„%s“ atnaujinti nereikia."
-#: remake.c:323
+#: src/remake.c:323
#, fuzzy, c-format
msgid "Pruning file '%s'.\n"
msgstr "Vis dar atnaujinamas failas „%s“.\n"
-#: remake.c:406
+#: src/remake.c:389
#, fuzzy, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr "%sNėra taisyklės pasiekti tikslui „%s“, kurio reikia „%s“%s"
-#: remake.c:416
+#: src/remake.c:399
#, fuzzy, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%sNėra taisyklės pasiekti tikslui „%s“%s"
-#: remake.c:442
+#: src/remake.c:425
#, fuzzy, c-format
msgid "Considering target file '%s'.\n"
msgstr "Svarstomas tikslo failas „%s“.\n"
-#: remake.c:449
+#: src/remake.c:432
#, fuzzy, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr "Neseniai bandyta ir nepavyko atnaujinti failo „%s“.\n"
-#: remake.c:461
+#: src/remake.c:444
#, fuzzy, c-format
msgid "File '%s' was considered already.\n"
msgstr "Failas „%s“ jau apsvarstytas.\n"
-#: remake.c:471
+#: src/remake.c:454
#, fuzzy, c-format
msgid "Still updating file '%s'.\n"
msgstr "Vis dar atnaujinamas failas „%s“.\n"
-#: remake.c:474
+#: src/remake.c:457
#, fuzzy, c-format
msgid "Finished updating file '%s'.\n"
msgstr "Baigtas atnaujinti failas „%s“.\n"
-#: remake.c:503
+#: src/remake.c:486
#, fuzzy, c-format
msgid "File '%s' does not exist.\n"
msgstr "Failas „%s“ neegzistuoja.\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
msgstr ""
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, fuzzy, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr "Rasta neišreikštinė taisyklė tikslui „%s“.\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, fuzzy, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr "Nerasta neišreikštinių taisyklių tikslui „%s“.\n"
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
msgstr ""
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr ""
-#: remake.c:691
+#: src/remake.c:674
#, fuzzy, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr "Svarstomas tikslo failas „%s“.\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr ""
-#: remake.c:711
+#: src/remake.c:694
#, fuzzy, c-format
msgid "Giving up on target file '%s'.\n"
msgstr "Svarstomas tikslo failas „%s“.\n"
-#: remake.c:716
+#: src/remake.c:699
#, fuzzy, c-format
msgid "Target '%s' not remade because of errors."
msgstr "Tikslas „%s“ neatnaujintas dėl klaidų."
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr ""
-#: remake.c:773
+#: src/remake.c:756
#, fuzzy, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr "Failas „%s“ neegzistuoja.\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr ""
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr ""
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr ""
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr ""
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr ""
-#: remake.c:819
+#: src/remake.c:802
#, fuzzy, c-format
msgid "No need to remake target '%s'"
msgstr "Nereikia atnaujinti taikinio „%s“"
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
msgstr ""
-#: remake.c:841
+#: src/remake.c:824
#, fuzzy, c-format
msgid "Must remake target '%s'.\n"
msgstr "Būtina atnaujinti taikinį „%s“.\n"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr ""
-#: remake.c:856
+#: src/remake.c:839
#, fuzzy, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr "Vykdomos „%s“ komandos.\n"
-#: remake.c:863
+#: src/remake.c:846
#, fuzzy, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr "Nereikia atnaujinti taikinio „%s“"
-#: remake.c:866
+#: src/remake.c:849
#, fuzzy, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr "Būtina atnaujinti taikinį „%s“.\n"
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr ""
-#: remake.c:1064
+#: src/remake.c:1047
#, fuzzy, c-format
msgid "Using default commands for '%s'.\n"
msgstr "paskutinÄ— komanda: %s\n"
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr ""
-
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr ""
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr ""
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr ""
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -1733,7 +1776,7 @@ msgstr ""
"\n"
"# Neišreikštinės taisyklės"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1741,193 +1784,189 @@ msgstr ""
"\n"
"# Nėra neišreikštinių taisyklių."
-#: rule.c:514
-#, c-format
+#: src/rule.c:548
+#, fuzzy, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
"# %u neišreikštinių taisyklių, %u"
-#: rule.c:523
-msgid " terminal."
-msgstr ""
-
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr ""
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "nežinomas signalas"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr ""
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "Pertraukimas"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "IÅ¡eita"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "Neleistina instrukcija"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr ""
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr ""
-#: signame.c:112
+#: src/signame.c:112
#, fuzzy
msgid "IOT trap"
msgstr "EMT gaudyklÄ—"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "EMT gaudyklÄ—"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "Slankaus kablelio klaida"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Nutraukta"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "MagistralÄ—s klaida"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Segmentacijos klaida"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "Blogas sisteminis kvietimas"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr ""
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Žadintuvas"
-#: signame.c:139
+#: src/signame.c:139
#, fuzzy
msgid "Terminated"
msgstr "apribota"
-#: signame.c:142
+#: src/signame.c:142
#, fuzzy
msgid "User defined signal 1"
msgstr "%s: nutrauktas signalo %d"
-#: signame.c:145
+#: src/signame.c:145
#, fuzzy
msgid "User defined signal 2"
msgstr "%s: nutrauktas signalo %d"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
#, fuzzy
msgid "Child exited"
msgstr "Failas jau egzistuoja"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Elektros maitinimo sutrikimas"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Sustabdyta"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Sustabdyta (tty įvedimas)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Sustabdyta (tty išvedimas)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Sustabdyta (signalas)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "Viršytas CPU laiko limitas"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "Viršytas failo dydžio limitas"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr ""
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr ""
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "Langas pakeistas"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Pratęsta"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr ""
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "Galimas įvedimas/išvedimas"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "IÅ¡teklius prarastas"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Pavojaus signalas"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Informacijos užklausa"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "Slankaus kablelio koprocesorius neprieinamas"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
"%s No strcache buffers\n"
msgstr ""
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -1935,31 +1974,31 @@ msgid ""
"B\n"
msgstr ""
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr ""
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
msgstr ""
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
msgstr ""
-#: strcache.c:328
+#: src/strcache.c:328
#, fuzzy
msgid ""
"# hash-table stats:\n"
@@ -1969,168 +2008,168 @@ msgstr ""
"# failų maišos lentelės statistika:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr ""
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr ""
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr ""
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr ""
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr ""
-#: variable.c:1644
+#: src/variable.c:1668
#, fuzzy
msgid "command line"
msgstr "%s: komanda nerasta"
-#: variable.c:1647
+#: src/variable.c:1671
#, fuzzy
msgid "'override' directive"
msgstr "tuÅ¡Äia „override“ direktyva"
-#: variable.c:1658
+#: src/variable.c:1682
#, fuzzy, c-format
msgid " (from '%s', line %lu)"
msgstr " (nuo „%s“, %lu eilutė):\n"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr ""
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
msgstr ""
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
msgstr ""
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
msgstr ""
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
"# %u pattern-specific variable values"
msgstr ""
-#: variable.h:224
+#: src/variable.h:229
#, fuzzy, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "%s: neatpažintas argumentas „%c%s“\n"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr ""
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr ""
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr ""
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr ""
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr ""
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr ""
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr ""
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
msgstr ""
-#: vpath.c:620
+#: src/vpath.c:620
#, fuzzy
msgid "# No 'vpath' search paths."
msgstr " (paieškos kelias)"
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
"# %u 'vpath' search paths.\n"
msgstr ""
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
msgstr ""
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
"# "
msgstr ""
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr ""
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr ""
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr ""
@@ -2138,6 +2177,15 @@ msgstr ""
#~ msgid "# Invalid value in `update_status' member!"
#~ msgstr "# Netaisyklinga reikšmė „update_status“ naryje!"
+#~ msgid "%s: Command not found"
+#~ msgstr "%s: Komanda nerasta"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s: Kevalo programa nerasta"
+
+#~ msgid "Unknown error %d"
+#~ msgstr "Nežinoma klaida %d"
+
#~ msgid "virtual memory exhausted"
#~ msgstr "baigÄ—si virtuali atmintis"
diff --git a/po/make.pot b/po/make.pot
index b958621..73f64ae 100644
--- a/po/make.pot
+++ b/po/make.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: GNU make 4.2.1\n"
+"Project-Id-Version: GNU make 4.3\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,993 +17,1000 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ar.c:46
+#: src/ar.c:46
#, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr ""
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr ""
-#: ar.c:147
+#: src/ar.c:147
#, c-format
msgid "touch: Archive '%s' does not exist"
msgstr ""
-#: ar.c:150
+#: src/ar.c:150
#, c-format
msgid "touch: '%s' is not a valid archive"
msgstr ""
-#: ar.c:157
+#: src/ar.c:157
#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr ""
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr ""
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr ""
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr ""
-#: arscan.c:261
+#: src/arscan.c:261
#, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr ""
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr ""
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr ""
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr ""
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr ""
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr ""
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr ""
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr ""
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr ""
-#: commands.c:645
+#: src/commands.c:646
#, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr ""
-#: commands.c:647
+#: src/commands.c:648
#, c-format
msgid "*** Deleting file '%s'"
msgstr ""
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
msgstr ""
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr ""
-#: commands.c:688
+#: src/commands.c:689
#, c-format
msgid " (from '%s', line %lu):\n"
msgstr ""
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
msgstr ""
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr ""
-#: dir.c:1085
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
msgstr ""
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr ""
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr ""
-#: dir.c:1122
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
msgstr ""
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr ""
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr ""
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr ""
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr ""
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr ""
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr ""
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr ""
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr ""
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr ""
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr ""
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr ""
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr ""
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr ""
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr ""
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr ""
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr ""
-#: file.c:408
+#: src/file.c:408
#, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr ""
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr ""
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr ""
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr ""
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr ""
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr ""
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr ""
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr ""
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr ""
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
msgstr ""
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr ""
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr ""
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr ""
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr ""
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr ""
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr ""
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr ""
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr ""
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr ""
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr ""
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr ""
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr ""
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr ""
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr ""
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr ""
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr ""
-#: file.c:1032
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
msgstr ""
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
msgstr ""
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
"# "
msgstr ""
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr ""
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
msgstr ""
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr ""
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
msgstr ""
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
msgstr ""
-#: function.c:1525
+#: src/function.c:1533
#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr ""
-#: function.c:1549
+#: src/function.c:1557
#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr ""
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr ""
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr ""
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr ""
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr ""
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
msgstr ""
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
msgstr ""
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, c-format
msgid "close: %s: %s"
msgstr ""
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr ""
-#: function.c:2262
+#: src/function.c:2277
#, c-format
msgid "read: %s: %s"
msgstr ""
-#: function.c:2275
+#: src/function.c:2290
#, c-format
msgid "file: invalid file operation: %s"
msgstr ""
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr ""
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr ""
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr ""
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr ""
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr ""
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr ""
-#: function.c:2657
+#: src/function.c:2674
#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
msgstr ""
-#: function.c:2660
+#: src/function.c:2677
#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
msgstr ""
-#: getopt.c:659
+#: src/getopt.c:659
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr ""
-#: getopt.c:683
+#: src/getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr ""
-#: getopt.c:688
+#: src/getopt.c:688
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr ""
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr ""
-#: getopt.c:734
+#: src/getopt.c:734
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr ""
-#: getopt.c:738
+#: src/getopt.c:738
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr ""
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr ""
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr ""
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr ""
-#: getopt.c:844
+#: src/getopt.c:844
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr ""
-#: getopt.c:862
+#: src/getopt.c:862
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr ""
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr ""
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr ""
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr ""
-#: hash.c:280
+#: src/hash.c:280
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
+msgid "Load=%lu/%lu=%.0f%%, "
msgstr ""
-#: hash.c:282
+#: src/hash.c:282
#, c-format
-msgid "Rehash=%d, "
+msgid "Rehash=%u, "
msgstr ""
-#: hash.c:283
+#: src/hash.c:283
#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
+msgid "Collisions=%lu/%lu=%.0f%%"
msgstr ""
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr ""
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr ""
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr ""
-#: implicit.c:486
+#: src/implicit.c:484
#, c-format
-msgid "Stem too long: '%.*s'.\n"
+msgid "Stem too long: '%s%.*s'.\n"
msgstr ""
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr ""
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr ""
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr ""
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr ""
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr ""
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr ""
-#: implicit.c:765
+#: src/implicit.c:786
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr ""
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr ""
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr ""
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr ""
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
msgstr ""
-#: job.c:510
+#: src/job.c:573
#, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr ""
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr ""
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr ""
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr ""
-#: job.c:831
+#: src/job.c:898
#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
+msgid "Reaping winning child %p PID %s %s\n"
msgstr ""
-#: job.c:832
+#: src/job.c:899
#, c-format
-msgid "Reaping winning child %p PID %s %s\n"
+msgid "Reaping losing child %p PID %s %s\n"
msgstr ""
-#: job.c:839
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr ""
-#: job.c:845
+#: src/job.c:956
#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr ""
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr ""
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr ""
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr ""
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
"Counted %d args in failed launch\n"
msgstr ""
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr ""
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr ""
-#: job.c:1838
+#: src/job.c:1902
#, c-format
msgid "%s: target '%s' does not exist"
msgstr ""
-#: job.c:1841
+#: src/job.c:1905
#, c-format
msgid "%s: update target '%s' due to: %s"
msgstr ""
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr ""
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr ""
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr ""
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr ""
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr ""
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr ""
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr ""
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr ""
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr ""
-#: job.c:2275
-#, c-format
-msgid "%s: %s: Command not found\n"
-msgstr ""
-
-#: job.c:2277
-#, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr ""
-
-#: job.c:2337
+#: src/job.c:2623
#, c-format
-msgid "%s: Shell program not found"
-msgstr ""
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr ""
-#: job.c:2584
+#: src/job.c:2862
#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr ""
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr ""
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
msgstr ""
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
"\t%s\n"
msgstr ""
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr ""
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr ""
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr ""
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr ""
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr ""
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr ""
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr ""
-#: load.c:256
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr ""
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr ""
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr ""
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr ""
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
msgstr ""
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr ""
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
msgstr ""
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
msgstr ""
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr ""
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr ""
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
msgstr ""
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
msgstr ""
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
"N.\n"
msgstr ""
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
msgstr ""
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
"them.\n"
msgstr ""
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
"it.\n"
msgstr ""
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
msgstr ""
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr ""
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
msgstr ""
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr ""
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr ""
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr ""
-#: main.c:393
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
msgstr ""
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
msgstr ""
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr ""
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr ""
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
msgstr ""
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
msgstr ""
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
msgstr ""
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr ""
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
msgstr ""
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr ""
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr ""
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1013,171 +1020,179 @@ msgid ""
"ExceptionAddress = 0x%p\n"
msgstr ""
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr ""
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr ""
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr ""
-#: main.c:1021
+#: src/main.c:1009
#, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr ""
-#: main.c:1538
-#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr ""
-
-#: main.c:1540
+#: src/main.c:1609
#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr ""
-
-#: main.c:1627
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
msgstr ""
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr ""
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr ""
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr ""
-#: main.c:2048
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr ""
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr ""
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr ""
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr ""
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr ""
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr ""
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
msgstr ""
-#: main.c:2299
+#: src/main.c:2323
#, c-format
msgid "Included makefile '%s' was not found."
msgstr ""
-#: main.c:2304
+#: src/main.c:2328
#, c-format
msgid "Makefile '%s' was not found"
msgstr ""
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr ""
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr ""
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr ""
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ""
-#: main.c:2548
-msgid "No targets specified and no makefile found"
+#: src/main.c:2579
+#, c-format
+msgid "No targets"
msgstr ""
-#: main.c:2550
-msgid "No targets"
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
msgstr ""
-#: main.c:2555
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr ""
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr ""
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr ""
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
"This program built for %s\n"
msgstr ""
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
"This program built for %s (%s)\n"
msgstr ""
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr ""
-#: main.c:2870
+#: src/main.c:2901
#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr ""
-#: main.c:2934
+#: src/main.c:2965
#, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr ""
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr ""
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr ""
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1186,695 +1201,727 @@ msgid ""
"%sThere is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
"# Make data base, printed on %s"
msgstr ""
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
"# Finished Make data base on %s\n"
msgstr ""
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr ""
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr ""
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr ""
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr ""
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr ""
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr ""
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr ""
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr ""
-#: output.c:109
+#: src/output.c:102
#, c-format
msgid "%s: Entering directory '%s'\n"
msgstr ""
-#: output.c:111
+#: src/output.c:104
#, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr ""
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr ""
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr ""
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr ""
-#: output.c:122
+#: src/output.c:115
#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr ""
-#: output.c:495 output.c:497
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
msgstr ""
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ""
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr ""
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr ""
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr ""
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
msgstr ""
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr ""
-#: posixos.c:90
+#: src/posixos.c:119
#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr ""
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr ""
-#: posixos.c:109
+#: src/posixos.c:138
msgid "jobserver pipeline"
msgstr ""
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr ""
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr ""
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
msgstr ""
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr ""
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr ""
-#: read.c:329
+#: src/read.c:336
#, c-format
msgid "Reading makefile '%s'"
msgstr ""
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr ""
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr ""
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr ""
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr ""
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr ""
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr ""
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr ""
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr ""
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
msgstr ""
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
msgstr ""
-#: read.c:1124
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr ""
-#: read.c:1126
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
msgstr ""
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr ""
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr ""
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
msgstr ""
-#: read.c:1390
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
msgstr ""
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr ""
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
msgstr ""
-#: read.c:1488
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr ""
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
msgstr ""
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
msgstr ""
-#: read.c:1589
+#: src/read.c:1604
#, c-format
msgid "extraneous '%s'"
msgstr ""
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
msgstr ""
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr ""
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr ""
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr ""
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr ""
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr ""
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr ""
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
msgstr ""
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
msgstr ""
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr ""
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr ""
-#: read.c:2223
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr ""
-#: read.c:2542
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr ""
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr ""
-#: remake.c:226
+#: src/remake.c:226
#, c-format
msgid "Nothing to be done for '%s'."
msgstr ""
-#: remake.c:227
+#: src/remake.c:227
#, c-format
msgid "'%s' is up to date."
msgstr ""
-#: remake.c:323
+#: src/remake.c:323
#, c-format
msgid "Pruning file '%s'.\n"
msgstr ""
-#: remake.c:406
+#: src/remake.c:389
#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr ""
-#: remake.c:416
+#: src/remake.c:399
#, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr ""
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
msgstr ""
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr ""
-#: remake.c:461
+#: src/remake.c:444
#, c-format
msgid "File '%s' was considered already.\n"
msgstr ""
-#: remake.c:471
+#: src/remake.c:454
#, c-format
msgid "Still updating file '%s'.\n"
msgstr ""
-#: remake.c:474
+#: src/remake.c:457
#, c-format
msgid "Finished updating file '%s'.\n"
msgstr ""
-#: remake.c:503
+#: src/remake.c:486
#, c-format
msgid "File '%s' does not exist.\n"
msgstr ""
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
msgstr ""
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr ""
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr ""
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
msgstr ""
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr ""
-#: remake.c:691
+#: src/remake.c:674
#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr ""
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr ""
-#: remake.c:711
+#: src/remake.c:694
#, c-format
msgid "Giving up on target file '%s'.\n"
msgstr ""
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
msgstr ""
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr ""
-#: remake.c:773
+#: src/remake.c:756
#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr ""
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr ""
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr ""
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr ""
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr ""
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr ""
-#: remake.c:819
+#: src/remake.c:802
#, c-format
msgid "No need to remake target '%s'"
msgstr ""
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
msgstr ""
-#: remake.c:841
+#: src/remake.c:824
#, c-format
msgid "Must remake target '%s'.\n"
msgstr ""
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr ""
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr ""
-#: remake.c:863
+#: src/remake.c:846
#, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr ""
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr ""
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr ""
-#: remake.c:1064
+#: src/remake.c:1047
#, c-format
msgid "Using default commands for '%s'.\n"
msgstr ""
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr ""
-
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr ""
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr ""
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr ""
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
msgstr ""
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
msgstr ""
-#: rule.c:514
+#: src/rule.c:548
#, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
-msgstr ""
-
-#: rule.c:523
-msgid " terminal."
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr ""
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr ""
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr ""
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr ""
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr ""
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr ""
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr ""
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr ""
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr ""
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr ""
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr ""
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr ""
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr ""
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr ""
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr ""
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr ""
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr ""
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr ""
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr ""
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr ""
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr ""
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr ""
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr ""
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr ""
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr ""
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr ""
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr ""
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr ""
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr ""
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr ""
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr ""
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr ""
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr ""
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr ""
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr ""
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr ""
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr ""
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr ""
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr ""
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr ""
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
"%s No strcache buffers\n"
msgstr ""
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -1882,195 +1929,195 @@ msgid ""
"B\n"
msgstr ""
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr ""
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
msgstr ""
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
msgstr ""
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
msgstr ""
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr ""
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr ""
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr ""
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr ""
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr ""
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr ""
-#: variable.c:1647
+#: src/variable.c:1671
msgid "'override' directive"
msgstr ""
-#: variable.c:1658
+#: src/variable.c:1682
#, c-format
msgid " (from '%s', line %lu)"
msgstr ""
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr ""
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
msgstr ""
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
msgstr ""
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
msgstr ""
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
"# %u pattern-specific variable values"
msgstr ""
-#: variable.h:224
+#: src/variable.h:229
#, c-format
msgid "warning: undefined variable '%.*s'"
msgstr ""
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr ""
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr ""
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr ""
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr ""
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr ""
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr ""
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr ""
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
msgstr ""
-#: vpath.c:620
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
msgstr ""
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
"# %u 'vpath' search paths.\n"
msgstr ""
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
msgstr ""
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
"# "
msgstr ""
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr ""
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr ""
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr ""
diff --git a/po/nl.gmo b/po/nl.gmo
index 3c1fa76..12c2d96 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index b30b84d..9b00278 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,134 +1,136 @@
# Dutch translations for GNU make.
-# Copyright (C) 2016 Free Software Foundation, Inc.
+# Copyright (C) 2020 Free Software Foundation, Inc.
# This file is distributed under the same license as the make package.
#
# "On the plus side, Miss Vernon was outstandingly good-looking."
#
# Taco Witte <tcwitte@cs.uu.nl>, 2004.
-# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2006, 2007, 2010, 2013, 2014, 2016.
+# Benno Schulenberg <benno@vertaalt.nl>, 2005, 2006, 2007, 2010.
+# Benno Schulenberg <benno@vertaalt.nl>, 2013, 2014, 2016, 2019, 2020.
msgid ""
msgstr ""
-"Project-Id-Version: make-4.2\n"
+"Project-Id-Version: make-4.2.93\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
-"PO-Revision-Date: 2016-05-27 10:23+0200\n"
-"Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2020-01-03 16:48+0100\n"
+"Last-Translator: Benno Schulenberg <vertaling@coevern.nl>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 1.0\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ar.c:46
+#: src/ar.c:46
#, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "poging tot gebruik van niet-ondersteunde functie: '%s'"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "het 'touchen' van een archiefonderdeel is niet mogelijk op VMS"
-#: ar.c:147
+#: src/ar.c:147
#, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "touch: archief '%s' bestaat niet"
-#: ar.c:150
+#: src/ar.c:150
#, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "touch: '%s' is geen geldig archief"
-#: ar.c:157
+#: src/ar.c:157
#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "touch: onderdeel '%s' bestaat niet in '%s'"
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr "touch: ar_member_touch() van '%s' is mislukt"
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr ""
"uitpakken van module-info door lbr$set_module() is mislukt, afsluitwaarde= %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "lbr$ini_control() is mislukt, afsluitwaarde = %d"
-#: arscan.c:261
+#: src/arscan.c:261
#, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr ""
"kan bibliotheek '%s' niet openen om status van onderdeel %d op te zoeken"
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr "Onderdeel '%s'%s: %ld bytes bij %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (naam kan afgekapt zijn)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Datum %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, modus = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr "Recept bevat te veel regels (%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** Afgebroken.\n"
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr "*** [%s] Archiefonderdeel '%s' kan onecht zijn; niet verwijderd"
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr "*** Archiefonderdeel '%s' kan onecht zijn; niet verwijderd"
-#: commands.c:645
+#: src/commands.c:646
#, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] Verwijderen van bestand '%s'"
-#: commands.c:647
+#: src/commands.c:648
#, c-format
msgid "*** Deleting file '%s'"
msgstr "*** Verwijderen van bestand '%s'"
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
msgstr "# uit te voeren recept"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (ingebouwd):"
-#: commands.c:688
+#: src/commands.c:689
#, c-format
msgid " (from '%s', line %lu):\n"
msgstr " (uit '%s', regel %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -136,219 +138,219 @@ msgstr ""
"\n"
"# Mappen\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# kan status van %s niet opvragen.\n"
-#: dir.c:1085
-#, fuzzy
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
-msgstr "# %s (sleutel %s, wijzigingstijd %ull): kan niet worden geopend.\n"
+msgstr "# %s (sleutel %s, wijzigingstijd %I64u): kan niet worden geopend.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr "# %s (apparaat %d, inode [%d,%d,%d]): kan niet worden geopend.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr "# %s (apparaat %ld, inode %ld): kan niet worden geopend.\n"
-#: dir.c:1122
-#, fuzzy
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
-msgstr "# %s (sleutel %s, wijzigingstijd %ull): "
+msgstr "# %s (sleutel %s, wijzigingstijd %I64u): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (apparaat %d, inode [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (apparaat %ld, inode %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "Geen"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " bestanden, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "geen"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " onmogelijkheden"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " tot nu toe."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " onmogelijkheden in %lu mappen.\n"
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr "Recursieve variabele '%s' verwijst naar zichzelf (uiteindelijk)"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "onafgemaakte verwijzing naar variabele"
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr "Recept voor bestand '%s' is opgegeven in %s:%lu,"
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr "Recept voor bestand '%s' werd gevonden via impliciet zoeken,"
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr "maar '%s' wordt nu als hetzelfde bestand beschouwd als '%s'."
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr "Recept voor '%s' zal worden genegeerd ten gunste van die voor '%s'."
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr "kan enkeldubbelpunts '%s' niet hernoemen tot dubbeldubbelpunts '%s'"
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr "kan dubbeldubbelpunts '%s' niet hernoemen tot enkeldubbelpunts '%s'"
-#: file.c:408
+#: src/file.c:408
#, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "*** Verwijderen van tussentijds bestand '%s'"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "Verwijderen van tussentijdse bestanden...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "Huidige tijd"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: Tijdsstempel ligt buiten bereik; wordt vervangen door %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# Is geen doel:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# Waardevol bestand (vereiste van .PRECIOUS)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# Nepdoel (vereiste van .PHONY)."
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# Doel afkomstig van opdrachtregel."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr ""
"# Een standaard Makefile, of eentje via MAKEFILES of '-include/sinclude'."
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
msgstr "# Ingebouwde regel"
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# Impliciete regel-zoekopdracht is uitgevoerd."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# Impliciete regel-zoekopdracht is niet uitgevoerd."
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr "# Impliciete/statische patroonstam: '%s'\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr "# Bestand is een tussentijds vereiste."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# Maakt ook:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# Wijzigingstijd is nooit gecontroleerd."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# Bestand bestaat niet."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# Bestand is erg oud."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# Laatst gewijzigd %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# Bestand is bijgewerkt."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# Bestand is niet bijgewerkt."
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# Nog lopend recept (DIT IS EEN PROGRAMMAFOUT)."
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr "# Nog lopende receptafhankelijkheden (DIT IS EEN PROGRAMMAFOUT)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# Met succes bijgewerkt."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# Moet worden bijgewerkt ('-q' is ingesteld)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# Bijwerken is mislukt."
-#: file.c:1032
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
msgstr "# Ongeldige waarde in 'command_state'-onderdeel!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -356,7 +358,7 @@ msgstr ""
"\n"
"# Bestanden"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -366,334 +368,342 @@ msgstr ""
"# hashtabel-statistieken van bestanden:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr "%s: Veld '%s' is niet gecached: %s"
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
msgstr "niet-numeriek eerste argument van 'word'-functie"
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr "eerste argument van 'word'-functie moet groter zijn dan 0"
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
msgstr "niet-numeriek eerste argument van 'wordlist'-functie"
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
msgstr "niet-numeriek tweede argument van 'wordlist'-functie"
-#: function.c:1525
+#: src/function.c:1533
#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "windows32_openpipe(): DuplicateHandle(In) is mislukt (e=%ld)\n"
-#: function.c:1549
+#: src/function.c:1557
#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr "windows32_openpipe(): DuplicateHandle(Err) is mislukt (e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "CreatePipe() is mislukt (e=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe(): process_init_fd() is mislukt\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "Opschonen van tijdelijk batch-bestand %s\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr "file: ontbrekende bestandsnaam"
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
msgstr "open(): %s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
msgstr "write(): %s: %s"
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, c-format
msgid "close: %s: %s"
msgstr "close(): %s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr "file: te veel argumenten"
-#: function.c:2262
+#: src/function.c:2277
#, c-format
msgid "read: %s: %s"
msgstr "read(): %s: %s"
-#: function.c:2275
+#: src/function.c:2290
#, c-format
msgid "file: invalid file operation: %s"
msgstr "file: ongeldige bestandsbewerking: %s"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr "onvoldoende aantal argumenten (%d) voor functie '%s'"
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "niet-geïmplementeerd op dit platform: functie '%s'"
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr "onafgemaakte aanroep van functie '%s': '%c' ontbreekt"
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr "Lege functienaam"
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr "Ongeldige functienaam: %s"
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr "Functienaam is te lang: %s"
-#: function.c:2657
+#: src/function.c:2674
#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
msgstr "Ongeldig minimumaantal argumenten (%u) voor functie %s"
-#: function.c:2660
+#: src/function.c:2677
#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
msgstr "Ongeldig maximumaantal argumenten (%u) voor functie %s"
-#: getopt.c:659
+#: src/getopt.c:659
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: optie '%s' is niet eenduidig\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: optie '--%s' staat geen argument toe\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: optie '%c%s' staat geen argument toe\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: optie '%s' vereist een argument\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: onbekende optie '--%s'\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: onbekende optie '%c%s'\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: ongeldige optie -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: ongeldige optie -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: optie vereist een argument -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: optie '-W %s' is niet eenduidig\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: optie '-W %s' staat geen argument toe\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr "guile: Expanderen van '%s'\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr "guile: Evalueren van '%s'\n"
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr ""
"kan %lu bytes voor hashtabel niet reserveren: onvoldoende geheugen "
"beschikbaar"
-#: hash.c:280
+#: src/hash.c:280
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "Belasting=%ld/%ld=%.0f%%, "
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "Belasting=%lu/%lu=%.0f%%, "
-#: hash.c:282
+#: src/hash.c:282
#, c-format
-msgid "Rehash=%d, "
-msgstr "Herhash=%d, "
+msgid "Rehash=%u, "
+msgstr "Herhash=%u, "
-#: hash.c:283
+#: src/hash.c:283
#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "Botsingen=%ld/%ld=%.0f%%"
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "Botsingen=%lu/%lu=%.0f%%"
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr "Zoeken naar impliciete regel voor '%s'.\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr "Zoeken naar archiefonderdeel-impliciete regel voor '%s'.\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr "Impliciete regelrecursie wordt ontweken.\n"
-#: implicit.c:486
+#: src/implicit.c:484
#, c-format
-msgid "Stem too long: '%.*s'.\n"
-msgstr "Stam is te lang: '%.*s'.\n"
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "Stam is te lang: '%s%.*s'.\n"
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr "Patroonregel wordt geprobeerd met stam '%.*s'.\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr "Onmogelijke regelvereiste '%s' wordt verworpen.\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr "Onmogelijke impliciete vereiste '%s' wordt verworpen.\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr "Proberen van regelvereiste '%s'.\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr "Proberen van impliciete vereiste '%s'.\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr "Vereiste '%s' gevonden als VPATH '%s'.\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr "Zoeken naar een regel met tussentijds bestand '%s'.\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr "Kan geen tijdelijk bestand aanmaken\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (geheugendump gemaakt)"
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr " (genegeerd)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
msgstr "<ingebouwd>"
-#: job.c:510
+#: src/job.c:573
#, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "%s[%s: %s] Fout %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** Wachten op onvoltooide taken..."
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "Levend dochterproces %p (%s) PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (ginds)"
-#: job.c:831
-#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Beëindigen van verliezend dochterproces %p PID %s %s\n"
-
-#: job.c:832
+#: src/job.c:898
#, c-format
msgid "Reaping winning child %p PID %s %s\n"
msgstr "Beëindigen van winnend dochterproces %p PID %s %s\n"
-#: job.c:839
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Beëindigen van verliezend dochterproces %p PID %s %s\n"
+
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "Opschonen van tijdelijk batch-bestand %s\n"
-#: job.c:845
+#: src/job.c:956
#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr "Opschonen van tijdelijk batch-bestand %s is mislukt (%d)\n"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr "Verwijderen van dochterproces %p PID %s%s uit de ketting.\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr "Token vrijgegeven voor dochterproces %p (%s).\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "process_easy() kan geen proces starten (e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -702,100 +712,94 @@ msgstr ""
"\n"
"%d argumenten geteld bij mislukte start\n"
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr "Opname van dochterproces %p (%s) PID %s%s in de ketting.\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "Token verkregen voor dochterproces %p (%s).\n"
-#: job.c:1838
+#: src/job.c:1902
#, c-format
msgid "%s: target '%s' does not exist"
msgstr "%s: doel '%s' bestaat niet"
-#: job.c:1841
+#: src/job.c:1905
#, c-format
msgid "%s: update target '%s' due to: %s"
msgstr "%s: bijwerken van doel '%s' vanwege: %s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr "kan belastingsgrenzen niet afdwingen op dit besturingssysteem"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "kan belastingsgrens niet afdwingen: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr ""
"geen bestandshandvatten meer beschikbaar: kan standaardinvoer niet "
"dupliceren\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr ""
"geen bestandshandvatten meer beschikbaar: kan standaarduitvoer niet "
"dupliceren\n"
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr ""
"geen bestandshandvatten meer beschikbaar: kan standaardfoutuitvoer niet "
"dupliceren\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr "Kan standaardinvoer niet herstellen\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr "Kan standaarduitvoer niet herstellen\n"
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr "Kan standaardfoutuitvoer niet herstellen\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr ""
"'make' heeft dochterproces met PID %s verwerkt, maar wacht nog op PID %s\n"
-#: job.c:2275
-#, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: %s: Opdracht niet gevonden\n"
-
-#: job.c:2277
+#: src/job.c:2623
#, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s[%u]: %s: Opdracht niet gevonden\n"
-
-#: job.c:2337
-#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: Shell-programma niet gevonden"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr "spawnvpe: mogelijk geen omgevingsruimte meer beschikbaar"
-#: job.c:2584
+#: src/job.c:2862
#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "$SHELL is gewijzigd (was '%s', is nu '%s')\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr "Maken van tijdelijk batch-bestand %s\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
@@ -803,7 +807,7 @@ msgstr ""
"Inhoud van batch-bestand:\n"
"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
@@ -812,93 +816,88 @@ msgstr ""
"Inhoud van batch-bestand:%s\n"
"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr "%s (regel %d) Onjuiste shell-context (!unixy && !batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr ""
-"Optie '-O[TYPE]' (--output-sync[=TYPE]) is niet meegecompileerd in dit "
-"programma."
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr "Openen van globale symbolentabel is mislukt: %s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr "Geladen object %s is niet gedeclareerd als GPL-compatibel"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr "Laden van symbool %s uit %s is mislukt: %s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr "Lege symboolnaam om te laden: %s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr "Laden van symbool %s uit %s\n"
-#: load.c:256
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr "De 'load'-operatie wordt op dit platform niet ondersteund."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "Opties:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr ""
" -b, -m (genegeerd, maar herkend wegens "
"compatibiliteit)\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr " -B, --always-make onvoorwaardelijk alle doelen maken\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
msgstr ""
" -C MAP, --directory=MAP naar deze map gaan alvorens iets te doen\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr ""
" -d veel informatie weergeven voor het debuggen\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
" --debug[=VLAGGEN] verschillende soorten debuginformatie "
"weergeven\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
msgstr ""
" -e, --environment-overrides omgevingsvariabelen gaan boven Makefiles\n"
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
-" --eval=TEKST deze TEKST als Makefile-statement evalueren\n"
+" -E TEKST, --eval=TEKST deze TEKST als Makefile-statement evalueren\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -907,15 +906,15 @@ msgstr ""
" het gegeven bestand als Makefile gebruiken\n"
"\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help deze hulptekst tonen en stoppen\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr " -i, --ignore-errors alle fouten in recepten negeren\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
@@ -923,7 +922,7 @@ msgstr ""
" -I MAP, --include-dir=MAP deze map doorzoeken naar ingesloten "
"Makefiles\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
@@ -931,14 +930,14 @@ msgstr ""
" -j [N], --jobs[=N] het uitvoeren van N taken tegelijk toestaan;\n"
" zonder N is het aantal onbeperkt\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
" -k, --keep-going doorgaan als een doel niet gemaakt kan "
"worden\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
@@ -948,7 +947,7 @@ msgstr ""
" alleen extra taken starten als de\n"
" systeembelasting lager is dan N\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
@@ -957,7 +956,7 @@ msgstr ""
" de laatste wijzigingstijd gebruiken\n"
"\n"
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
@@ -966,7 +965,7 @@ msgstr ""
" -n, --just-print, --dry-run, --recon\n"
" recepten niet uitvoeren, alleen weergeven\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
@@ -976,7 +975,7 @@ msgstr ""
" BESTAND als oud beschouwen, niet opnieuw "
"maken\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
@@ -985,12 +984,12 @@ msgstr ""
" uitvoer van parallelle taken synchroniseren "
"op TYPE\n"
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr ""
" -p, --print-data-base interne gegevensbank van 'make' weergeven\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
@@ -998,47 +997,53 @@ msgstr ""
" -q, --question geen recepten uitvoeren; de afsluitwaarde\n"
" geeft aan of alles bijgewerkt is\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr ""
" -r, --no-builtin-rules ingebouwde impliciete regels uitzetten\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr ""
" -R, --no-builtin-variables ingebouwde instellingen van variabelen "
"uitzetten\n"
"\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr " -s, --silent, --quiet recepten niet weergeven\n"
-#: main.c:393
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" --no-silent recepten weergeven (--silent-modus "
+"uitschakelen)\n"
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
msgstr " -S, --no-keep-going, --stop optie '-k' uitzetten\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
" -t, --touch doelen aanraken in plaats van opnieuw maken\n"
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
msgstr " --trace tracing-informatie weergeven\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr " -v, --version programmaversie tonen en stoppen\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory de huidige map weergeven\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
@@ -1046,7 +1051,7 @@ msgstr ""
" --no-print-directory optie '-w' uitzetten, ook als deze impliciet\n"
" was aangezet\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1054,7 +1059,7 @@ msgstr ""
" -W BESTAND, --what-if=BESTAND, --new-file=BESTAND, --assume-new=BESTAND\n"
" BESTAND als oneindig nieuw beschouwen\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
@@ -1062,26 +1067,27 @@ msgstr ""
" --warn-undefined-variables waarschuwen als naar een ongedefinieerde\n"
" variabele wordt verwezen\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "lege tekenreeks is ongeldig als bestandsnaam"
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
msgstr "onbekende aanduiding '%s' voor debug-niveau"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr "onbekend uitvoersynchronisatie-type: '%s'"
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr "%s: Onderbreking/uitzondering gekregen (code = 0x%lx, adres = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1096,140 +1102,149 @@ msgstr ""
"ExceptionFlags = %lx\n"
"ExceptionAddress = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "Toegangsrechtenovertreding: schrijfopdracht op adres 0x%p\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "Toegangsrechtenovertreding: leesopdracht op adres 0x%p\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell() stelt default_shell = %s in\n"
-#: main.c:1021
+#: src/main.c:1009
#, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr ""
"find_and_set_shell() stelt na doorzoeken van pad default_shell = %s in\n"
-#: main.c:1538
-#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s slaapt gedurende 30 seconden..."
-
-#: main.c:1540
+#: src/main.c:1609
#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "klaar met 30 seconden slapen. Make gaat verder.\n"
-
-#: main.c:1627
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
"Waarschuwing: taakserver is onbeschikbaar: '-j1' wordt gebruikt. Voeg '+' "
"toe aan de ouderregel."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
msgstr ""
-"Waarschuwing: '-jN' is afgedwongen in een deelproces: taakserver-modus "
+"Waarschuwing: '-j%d' is afgedwongen in een deelproces: taakserver-modus "
"uitgezet."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr "Makefile op standaardinvoer is dubbel opgegeven."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (tijdelijk bestand)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (tijdelijk bestand)"
-#: main.c:2048
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr ""
+"Waarschuwing: '-j%d' is afgedwongen in makefile: taakserver-modus uitgezet."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr "Parallelle taken (-j) worden op dit platform niet ondersteund."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "Opnieuw instellen op enkele-taakmodus (-j1)."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr ""
"Symbolische koppelingen worden niet ondersteund: '-L' wordt uitgeschakeld."
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "Bijwerken van Makefiles...\n"
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr "Makefile '%s' bevat mogelijk een lus; wordt niet opnieuw gemaakt.\n"
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
msgstr "Opnieuw maken van Makefile '%s' is mislukt."
-#: main.c:2299
+#: src/main.c:2323
#, c-format
msgid "Included makefile '%s' was not found."
msgstr "Ingesloten Makefile '%s' is niet gevonden."
-#: main.c:2304
+#: src/main.c:2328
#, c-format
msgid "Makefile '%s' was not found"
msgstr "Makefile '%s' is niet gevonden."
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "Kan niet terugkeren naar oorspronkelijke map."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "Opnieuw uitvoeren[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "verwijderen (van tijdelijk bestand): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ".DEFAULT_GOAL bevat meer dan één doel"
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Geen doelen opgegeven en geen Makefile gevonden"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "Geen doelen"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Geen doelen opgegeven en geen Makefile gevonden"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "Bijwerken van doelen...\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr ""
"Waarschuwing: Klokafwijking geconstateerd. Het maken is mogelijk "
"onvolledig gebeurd."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "Gebruik: %s [OPTIES] [DOEL]...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1238,7 +1253,7 @@ msgstr ""
"\n"
"Dit programma is gecompileerd voor %s.\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1247,34 +1262,34 @@ msgstr ""
"\n"
"Dit programma is gecompileerd voor %s (%s).\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr ""
-"Rapporteer programmafouten aan <bug-make@gnu.org>,\n"
+"Rapporteer programmafouten aan <bug-make@gnu.org>;\n"
"meld gebreken in de vertaling aan <vertaling@vrijschrift.org>.\n"
-#: main.c:2870
+#: src/main.c:2901
#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "de optie '%s%sc' vereist een niet-lege tekenreeks als argument"
-#: main.c:2934
+#: src/main.c:2965
#, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "de optie '-%c' vereist een positief geheel getal als argument"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%sDit programma is gecompileerd voor %s.\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%sDit programma is gecompileerd voor %s (%s).\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1288,7 +1303,7 @@ msgstr ""
"verspreiden.\n"
"%sEr is GEEN GARANTIE, voor zover de wet dit toestaat.\n"
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1297,7 +1312,7 @@ msgstr ""
"\n"
"# Make-gegevensbank, weergegeven op %s"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1306,345 +1321,384 @@ msgstr ""
"\n"
"# Make-gegevensbank voltooid op %s\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Onbekende fout %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: gebruiker %lu (echt %lu), groep %lu (echt %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "Toegang geïnitialiseerd"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr "Gebruikerstoegang"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "Make-toegang"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "Dochterprocestoegang"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: Een onbekende map wordt binnengegaan\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: Een onbekende map wordt verlaten\n"
-#: output.c:109
+#: src/output.c:102
#, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "%s: Map '%s' wordt binnengegaan\n"
-#: output.c:111
+#: src/output.c:104
#, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "%s: Map '%s' wordt verlaten\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: Een onbekende map wordt binnengegaan\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: Een onbekende map wordt verlaten\n"
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr "%s[%u]: Map '%s' wordt binnengegaan\n"
-#: output.c:122
+#: src/output.c:115
#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "%s[%u]: Map '%s' wordt verlaten\n"
-#: output.c:495 output.c:497
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
msgstr "schrijffout: standaarduitvoer"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". Gestopt.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+"Optie '-O[TYPE]' (--output-sync[=TYPE]) is niet meegecompileerd in dit "
+"programma."
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "aanmaken van takenpijp"
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
msgstr "dupliceren van takenpijp"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr "initialiseren van taakserverpijp"
-#: posixos.c:90
+#: src/posixos.c:119
#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr "*interne fout*: ongeldige tekenreeks '%s' voor '--jobserver-auth'"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr "Taakservercliënt (bestandsdescriptor %d,%d)\n"
-#: posixos.c:109
+#: src/posixos.c:138
msgid "jobserver pipeline"
msgstr "taakserverpijplijn"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr "schrijven naar taakserver"
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr "taakserver is gestopt"
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
msgstr "pselect() van takenpijp"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "lezen van takenpijp"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "Lezen van Makefiles...\n"
-#: read.c:329
+#: src/read.c:336
#, c-format
msgid "Reading makefile '%s'"
msgstr "Lezen van Makefile '%s'"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (geen standaarddoel)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (zoekpad)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (maakt niet uit)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (geen expansie van ~)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr "UTF-8 BOM in Makefile '%s' wordt overgeslagen\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr "UTF-8 BOM in Makefile-buffer wordt overgeslagen\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "ongeldige syntax in voorwaardelijk deel"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr "%s: laden is mislukt"
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
msgstr "recept begint voor eerste doel"
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
msgstr "ontbrekende regel vóór recept"
-#: read.c:1124
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr ""
"ontbrekend scheidingsteken (bedoelde u een TAB in plaats van 8 spaties?)"
-#: read.c:1126
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
msgstr "ontbrekend scheidingsteken"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "ontbrekend doelpatroon"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "meerdere doelpatronen"
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
msgstr "doelpatroon bevat geen '%%'"
-#: read.c:1390
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
msgstr "ontbrekende 'endif'"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "lege naam van variabele"
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
msgstr "extra tekst na 'define'-opdracht"
-#: read.c:1488
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "ontbrekende 'endef', onafgemaakte 'define'"
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
msgstr "extra tekst na 'endef'-opdracht"
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
msgstr "extra tekst na '%s'-opdracht"
-#: read.c:1589
+#: src/read.c:1604
#, c-format
msgid "extraneous '%s'"
msgstr "extra '%s'"
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
msgstr "slechts één 'else' per voorwaardelijk deel"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr "Onjuiste doelspecifieke variabele-definitie"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr "vereisten kunnen niet in recepten gedefinieerd worden"
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr "gegroepeerde doelen moeten een recept geven"
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr "gemengde impliciete en statische patroonregels"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "gemengde impliciete en normale regels"
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr "doel '%s' komt niet overeen met doelpatroon"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
msgstr "doelbestand '%s' heeft zowel ':'- als '::'-items"
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
msgstr "doel '%s' is meerdere keren gegeven in dezelfde regel"
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr "Waarschuwing: er wordt voorbijgegaan aan recept voor doel '%s'"
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr "Waarschuwing: oud recept voor doel '%s' wordt genegeerd"
-#: read.c:2223
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr "*** gemengde impliciete en normale regels: verouderde syntax"
-#: read.c:2542
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr ""
+"Waarschuwing: er wordt voorbijgegaan aan groepslidmaatschap voor doel '%s'"
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr "Waarschuwing: NUL-teken gezien; de rest van de regel wordt genegeerd"
-#: remake.c:226
+#: src/remake.c:226
#, c-format
msgid "Nothing to be done for '%s'."
msgstr "Er hoeft niets gedaan te worden voor '%s'."
-#: remake.c:227
+#: src/remake.c:227
#, c-format
msgid "'%s' is up to date."
msgstr "'%s' is up-to-date."
-#: remake.c:323
+#: src/remake.c:323
#, c-format
msgid "Pruning file '%s'.\n"
msgstr "Snoeien van bestand '%s'.\n"
-#: remake.c:406
+#: src/remake.c:389
#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr "%sEr is geen regel om doel '%s' te maken, nodig voor '%s'%s"
-#: remake.c:416
+#: src/remake.c:399
#, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%sEr is geen regel om doel '%s' te maken%s"
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
msgstr "Doelbestand '%s' wordt overwogen.\n"
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr "Bijwerken van bestand '%s' is recent geprobeerd en mislukt.\n"
-#: remake.c:461
+#: src/remake.c:444
#, c-format
msgid "File '%s' was considered already.\n"
msgstr "Bestand '%s' was al overwogen.\n"
-#: remake.c:471
+#: src/remake.c:454
#, c-format
msgid "Still updating file '%s'.\n"
msgstr "Bestand '%s' wordt nog bijgewerkt.\n"
-#: remake.c:474
+#: src/remake.c:457
#, c-format
msgid "Finished updating file '%s'.\n"
msgstr "Bijwerken van bestand '%s' is voltooid.\n"
-#: remake.c:503
+#: src/remake.c:486
#, c-format
msgid "File '%s' does not exist.\n"
msgstr "Bestand '%s' bestaat niet.\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
@@ -1652,149 +1706,149 @@ msgstr ""
"*** Waarschuwing: .LOW_RESOLUTION_TIME-bestand '%s' heeft een hoge-resolutie "
"tijdsstempel"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr "Impliciete regel voor '%s' gevonden.\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr "Geen impliciete regel voor '%s' gevonden.\n"
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
msgstr "Standaardrecept wordt gebruikt voor '%s'.\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "Circulaire afhankelijkheid %s <- %s is verworpen."
-#: remake.c:691
+#: src/remake.c:674
#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr "Vereisten van doelbestand '%s' zijn voltooid.\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr "De vereisten van '%s' worden nu gemaakt.\n"
-#: remake.c:711
+#: src/remake.c:694
#, c-format
msgid "Giving up on target file '%s'.\n"
msgstr "Pogingen voor doelbestand '%s' worden gestaakt.\n"
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
msgstr "Doel '%s' is niet opnieuw gemaakt vanwege fouten."
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr "Vereiste '%s' is alleen-ordenen voor doel '%s'.\n"
-#: remake.c:773
+#: src/remake.c:756
#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr "Vereiste '%s' van doel '%s' bestaat niet.\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr "Vereiste '%s' is nieuwer dan doel '%s'.\n"
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr "Vereiste '%s' is ouder dan doel '%s'.\n"
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr "Doel '%s' is dubbeldubbelpunts en heeft geen vereisten.\n"
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr "Er is geen recept voor '%s', en geen van de vereisten is veranderd.\n"
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr "Maken van '%s' vanwege 'always-make'-vlag.\n"
-#: remake.c:819
+#: src/remake.c:802
#, c-format
msgid "No need to remake target '%s'"
msgstr "Doel '%s' hoeft niet opnieuw gemaakt te worden"
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
msgstr "; VPATH-naam '%s' wordt gebruikt"
-#: remake.c:841
+#: src/remake.c:824
#, c-format
msgid "Must remake target '%s'.\n"
msgstr "Doel '%s' moet opnieuw gemaakt worden.\n"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr " VPATH-naam '%s' wordt genegeerd.\n"
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr "Recept van '%s' wordt nu uitgevoerd.\n"
-#: remake.c:863
+#: src/remake.c:846
#, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr "Opnieuw maken van doelbestand '%s' is mislukt.\n"
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr "Doelbestand '%s' is met succes opnieuw gemaakt.\n"
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr "Doelbestand '%s' moet opnieuw worden gemaakt onder '-q'.\n"
-#: remake.c:1064
+#: src/remake.c:1047
#, c-format
msgid "Using default commands for '%s'.\n"
msgstr "Standaardopdrachten worden gebruikt voor '%s'.\n"
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "Waarschuwing: bestand '%s' heeft een wijzigingstijd in de toekomst"
-
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr ""
"Waarschuwing: bestand '%s' heeft een wijzigingstijd %s seconden in de "
"toekomst"
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr ".LIBPATTERNS-element '%s' is geen patroon"
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr "Customs kan niet exporteren: %s\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -1802,7 +1856,7 @@ msgstr ""
"\n"
"# Impliciete regels"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1810,184 +1864,180 @@ msgstr ""
"\n"
"# Geen impliciete regels."
-#: rule.c:514
+#: src/rule.c:548
#, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
-"# %u impliciete regels, %u"
+"# %u impliciete regels, %u (%.1f%%) eindpunten."
-#: rule.c:523
-msgid " terminal."
-msgstr " terminal."
-
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "PROGRAMMAFOUT: num_pattern_rules() is verkeerd! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "onbekend signaal"
# Vroeger ging dit over het afsluiten van een modemverbinding,
# tegenwoordig over het afsluiten van een pseudoterminal.
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Opgehangen"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "Onderbroken"
# Verleden tijd, "Afgesloten", net als de andere actiesignaalnamen.
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Afgesloten"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "Ongeldige instructie"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "Traceer/breekpunt-instructie"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Afgebroken"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "IOT-instructie"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "EMT-instructie"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "Drijvendekomma-berekeningsfout"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Geëlimineerd"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "Busfout"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Segmentatiefout"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "Onjuiste systeemaanroep"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "Gebroken pijp"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Wekker"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "Beëindigd"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "Gebruikergedefinieerd signaal 1"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "Gebruikergedefinieerd signaal 2"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "Dochterproces is afgesloten"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Stroomstoring"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Gepauzeerd"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Gepauzeerd (terminalinvoer)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Gepauzeerd (terminaluitvoer)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Gepauzeerd (signaal)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "Limiet op processortijd is overschreden"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "Limiet op bestandsgrootte is overschreden"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "Virtuele timer is afgelopen"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "Timer voor profilering is afgelopen"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "Venster is veranderd"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Doorgegaan"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "Urgente in-/uitvoertoestand"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "In-/uitvoer is mogelijk"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "Hulpbron verloren"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Gevaarsignaal"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Verzoek om informatie"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "Drijvendekomma-coprocessor is niet beschikbaar"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
@@ -1996,7 +2046,7 @@ msgstr ""
"\n"
"%s Geen 'strcache'-buffers\n"
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -2007,21 +2057,21 @@ msgstr ""
"%s 'strcache'-buffers: %lu (%lu) / strings = %lu / opslag = %lu B / "
"gemiddeld = %lu B\n"
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
"%s huidig buffer: grootte = %hu B / gebruikt = %hu B / aantal = %hu / "
-"gemiddeld = %hu B\n"
+"gemiddeld = %u B\n"
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr ""
"%s andere gebruikte: totaal = %lu B / aantal = %lu / gemiddeld = %lu B\n"
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
@@ -2029,7 +2079,7 @@ msgstr ""
"%s andere vrij: totaal = %lu B / max = %lu B / min = %lu B / gemiddeld = %hu "
"B\n"
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
@@ -2038,7 +2088,7 @@ msgstr ""
"\n"
"%s 'strcache'-prestatie: lookups = %lu / treffersverhouding = %lu%%\n"
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
@@ -2046,44 +2096,44 @@ msgstr ""
"# hashtabel-statistieken van bestanden:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "automatisch"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "standaard"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "omgeving"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "Makefile"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "omgeving onder -e"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "opdrachtregel"
-#: variable.c:1647
+#: src/variable.c:1671
msgid "'override' directive"
msgstr "'override'-opdracht"
-#: variable.c:1658
+#: src/variable.c:1682
#, c-format
msgid " (from '%s', line %lu)"
msgstr " (uit '%s', regel %lu)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr "# Statistieken van hashtabel van variabelenverzameling:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2091,7 +2141,7 @@ msgstr ""
"\n"
"# Variabelen\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
@@ -2099,7 +2149,7 @@ msgstr ""
"\n"
"# Patroonspecifieke variabelewaarden"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2107,7 +2157,7 @@ msgstr ""
"\n"
"# Geen patroonspecifieke variabelewaarden"
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
@@ -2116,49 +2166,49 @@ msgstr ""
"\n"
"# %u patroonspecifieke variabelewaarden"
-#: variable.h:224
+#: src/variable.h:229
#, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "Waarschuwing: ongedefinieerde variabele '%.*s'"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr "sys$search() is mislukt met afsluitwaarde %d\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr ""
"-waarschuwing: mogelijk dient u CTRL-Y-afhandeling opnieuw aan te zetten "
"vanuit DCL.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "INGEBOUWDE CD %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr "DCL: %s\n"
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr "Uitvoer wordt toegevoegd aan %s\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr "Toevoegen van %.*s en opschoning\n"
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "In plaats daarvan wordt %s uitgevoerd\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2166,11 +2216,11 @@ msgstr ""
"\n"
"# VPATH-zoekpaden\n"
-#: vpath.c:620
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
msgstr "# Geen 'vpath'-zoekpaden."
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
@@ -2179,7 +2229,7 @@ msgstr ""
"\n"
"# %u 'vpath'-zoekpaden.\n"
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
@@ -2187,7 +2237,7 @@ msgstr ""
"\n"
"# Geen algemeen zoekpad ('VPATH'-variabele)."
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
@@ -2197,38 +2247,56 @@ msgstr ""
"# Algemeen zoekpad ('VPATH'-variabele):\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr "Taakserver-plaatsen zijn beperkt tot %d\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr "aanmaken van taakserver-semafoor: (Fout %ld: %s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr ""
"*interne fout*: kan taakserver-semafoor '%s' niet openen: (Fout %ld: %s)"
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr "Taakservercliënt (semafoor %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr "vrijgeven van taakserver-semafoor: (Fout %ld: %s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr "wachten op semafoor of dochterproces: (Fout %ld: %s)"
+#~ msgid "%s: %s: Command not found\n"
+#~ msgstr "%s: %s: Opdracht niet gevonden\n"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s: Shell-programma niet gevonden"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s slaapt gedurende 30 seconden..."
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "klaar met 30 seconden slapen. Make gaat verder.\n"
+
+#~ msgid "Unknown error %d"
+#~ msgstr "Onbekende fout %d"
+
+#~ msgid "Warning: File '%s' has modification time in the future"
+#~ msgstr "Waarschuwing: bestand '%s' heeft een wijzigingstijd in de toekomst"
+
#~ msgid "%s: recipe for target '%s' failed"
#~ msgstr "%s: recept voor doel '%s' is mislukt"
@@ -2241,12 +2309,6 @@ msgstr "wachten op semafoor of dochterproces: (Fout %ld: %s)"
#~ msgid "internal error: '%s' command_state"
#~ msgstr "*interne fout*: '%s' command_state"
-#~ msgid "BUILTIN [%s][%s]\n"
-#~ msgstr "INGEBOUWD [%s][%s]\n"
-
-#~ msgid "BUILTIN ECHO %s->%s\n"
-#~ msgstr "INGEBOUWDE ECHO %s->%s\n"
-
#~ msgid "Unknown builtin command '%s'\n"
#~ msgstr "Onbekende ingebouwde opdracht '%s'\n"
@@ -2273,18 +2335,12 @@ msgstr "wachten op semafoor of dochterproces: (Fout %ld: %s)"
#~ msgid "internal error: multiple --sync-mutex options"
#~ msgstr "*interne fout*: meerdere opties '--sync-mutex'"
-#~ msgid "internal error: multiple --jobserver-fds options"
-#~ msgstr "*interne fout*: meerdere opties '--jobserver-fds'"
-
#~ msgid "virtual memory exhausted"
#~ msgstr "onvoldoende geheugen beschikbaar"
#~ msgid "write error"
#~ msgstr "schrijffout"
-#~ msgid "BUILTIN RM %s\n"
-#~ msgstr "INGEBOUWDE RM %s\n"
-
#~ msgid "# Invalid value in 'update_status' member!"
#~ msgstr "# Ongeldige waarde in 'update_status'-onderdeel!"
@@ -2303,28 +2359,9 @@ msgstr "wachten op semafoor of dochterproces: (Fout %ld: %s)"
#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
#~ msgstr "%s Aantal strcache-buffers: %d (* %d bytes/buffer = %d bytes)\n"
-#~ msgid ""
-#~ "\n"
-#~ "# strcache hash-table stats:\n"
-#~ "# "
-#~ msgstr ""
-#~ "\n"
-#~ "# strcache-hashtabel-statistieken:\n"
-#~ "# "
-
#~ msgid "process_easy() failed failed to launch process (e=%ld)\n"
#~ msgstr "process_easy() kan geen proces starten (e=%ld)\n"
-#~ msgid ""
-#~ "%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"
-#~ msgstr ""
-#~ "%sDit is vrije programmatuur; zie de brontekst voor de "
-#~ "kopieervoorwaarden.\n"
-#~ "%sEr is GEEN garantie; zelfs niet voor VERHANDELBAARHEID of\n"
-#~ "%sGESCHIKTHEID VOOR EEN BEPAALD DOEL.\n"
-
#~ msgid "empty `override' directive"
#~ msgstr "lege 'override'-opdracht"
diff --git a/po/pl.gmo b/po/pl.gmo
index 92319a5..da819d0 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index e6d701a..34d33fb 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,130 +1,132 @@
# Polish translation for GNU make.
-# Copyright (C) 1996, 2002, 2005, 2006, 2010, 2013, 2014, 2016 Free Software Foundation, Inc.
+# Copyright (C) 1996, 2002, 2005, 2006, 2010, 2013, 2014, 2016, 2019, 2020 Free Software Foundation, Inc.
# This file is distributed under the same license as the make package.
# Paweł Krawczyk <kravietz@ceti.pl>, 1996.
-# Jakub Bogusz <qboosh@pld-linux.org>, 2002-2016.
+# Jakub Bogusz <qboosh@pld-linux.org>, 2002-2020.
#
msgid ""
msgstr ""
-"Project-Id-Version: make 4.2\n"
+"Project-Id-Version: make 4.2.93\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
-"PO-Revision-Date: 2016-05-22 21:47+0200\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2020-01-03 20:30+0100\n"
"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
-#: ar.c:46
+#: src/ar.c:46
#, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "próba użycia nieistniejącej funkcji: '%s'"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "element biblioteki `touch' jest niedostępny pod VMS"
-#: ar.c:147
+#: src/ar.c:147
#, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "touch: Archiwum '%s' nie istnieje"
-#: ar.c:150
+#: src/ar.c:150
#, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "touch: '%s' nie jest poprawnym archiwum"
-#: ar.c:157
+#: src/ar.c:157
#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "touch: Brak elementu '%s' w '%s'"
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr "touch: Błędny kod powrotu z ar_member_touch w '%s'"
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr ""
"Uzyskanie informacji o module przez lnr$set_module() nie udało się, status = "
"%d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "lbr$ini_control() nie powiodło się, status = %d"
-#: arscan.c:261
+#: src/arscan.c:261
#, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr "błąd otwarcia biblioteki '%s' podczas szukania stanu elementu %d"
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr "Element '%s'%s: %ld bajtów pod %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (nazwa może zostać okrojona)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Data %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, mode = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr "Polecenia mają za dużo linii (%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** Przerwano.\n"
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr "*** [%s] Element archiwum '%s' może być fałszywy; nie usunięty"
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr "*** Element archiwum '%s' może być fałszywy; nie usunięty"
-#: commands.c:645
+#: src/commands.c:646
#, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] KasujÄ™ plik '%s'"
-#: commands.c:647
+#: src/commands.c:648
#, c-format
msgid "*** Deleting file '%s'"
msgstr "*** KasujÄ™ plik '%s'"
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
msgstr "# polecenia do wykonania"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (wbudowane):"
-#: commands.c:688
+#: src/commands.c:689
#, c-format
msgid " (from '%s', line %lu):\n"
msgstr " (z '%s', linia %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -132,221 +134,221 @@ msgstr ""
"\n"
"# Katalogi\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: stat() zwraca błąd.\n"
-#: dir.c:1085
-#, fuzzy
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
-msgstr "# %s (klucz %s, czas modyfikacji %ull): otwarcie było niemożliwe.\n"
+msgstr "# %s (klucz %s, czas modyfikacji %I64u): otwarcie było niemożliwe.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr "# %s (urządzenie %d, i-węzeł [%d,%d,%d]): otwarcie było niemożliwe.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr "# %s (urządzenie %ld, i-węzeł %ld): otwarcie było niemożliwe.\n"
-#: dir.c:1122
-#, fuzzy
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
-msgstr "# %s (klucz %s, czas modyfikacji %ull): "
+msgstr "# %s (klucz %s, czas modyfikacji %I64u): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (urządzenie %d, i-węzeł [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (urządzenie %ld, i-węzeł %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "Nie"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " pliki, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "nie"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " niemożliwości"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " jak dotÄ…d."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " niemożliwości w %lu katalogach.\n"
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr "Rekurencyjna zmienna '%s' wskazuje na samÄ… siebie"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "niezakończone odwołanie do zmiennej"
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr "Polecenia dla pliku '%s' podano w %s:%lu,"
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr ""
"Polecenia dla pliku '%s' zostały wyznaczone na podstawie reguł standardowych,"
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr "ale '%s' jest teraz uznawany za ten sam plik co '%s'."
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr "Polecenia dla '%s' zostaną zignorowane na rzecz poleceń dla '%s'."
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr ""
"nie można przemianować '%s' z pojedynczym dwukropkiem na '%s' z podwójnym"
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr ""
"nie można przemianować '%s' z podwójnym dwukropkiem na '%s' z pojedynczym"
-#: file.c:408
+#: src/file.c:408
#, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "*** Kasowanie pliku pośredniego '%s'"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "Kasowanie plików pośrednich...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "Aktualny czas"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: Oznaczenie czasu spoza zakresu; zastÄ…piono %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# To nie jest obiekt:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# Cenny plik (zależność .PRECIOUS)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# Obiekt niejawny (zależność .PHONY)."
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# Obiekt podany w linii poleceń."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr "# Makefile domyślny, wymieniony w MAKEFILES lub -include/sinclude."
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
msgstr "# Reguła wbudowana"
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# Szukanie reguł domyślnych zostało wykonane."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# Szukanie reguł domyślnych nie zostało wykonane."
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr "# Gałąź wzorców domyślnych/statycznych: '%s'\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr "# Plik jest zależnością przejściową."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# Robi również:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# Czas modyfikacji nie był sprawdzany."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# Plik nie istnieje."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# Plik jest bardzo stary."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# Ostatnio modyfikowany %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# Plik został uaktualniony."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# Plik nie został uaktualniony."
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# Aktualnie uruchamiane polecenia (TO JEST BÅÄ„D)."
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr "# Aktualnie uruchamiane polecenia zależnoÅ›ci (TO JEST BÅÄ„D)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# Uaktualnienie powiodło się."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# Powinien być uaktualniony (-q jest włączone)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# Uaktualnianie nie powiodło się."
-#: file.c:1032
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
msgstr "# Błędna wartość w elemencie 'command_state'!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -354,7 +356,7 @@ msgstr ""
"\n"
"# Pliki"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -364,333 +366,341 @@ msgstr ""
"# statystyki tablic haszujących plików:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr "%s: Pole '%s' nie zapamiętane w pamięci podręcznej: %s"
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
msgstr "pierwszy argument funkcji 'word' nie jest liczbowy"
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr "pierwszy argument funkcji 'word' musi być większy od 0"
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
msgstr "pierwszy argument funkcji 'wordlist' nie jest liczbowy"
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
msgstr "drugi argument funkcji 'wordlist' nie jest liczbowy"
-#: function.c:1525
+#: src/function.c:1533
#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "windows32_openpipe: DuplicateHandle(In) nie powiodło się (e=%ld)\n"
-#: function.c:1549
+#: src/function.c:1557
#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr "windows32_openpipe: DuplicateHandle(Err) nie powiodło się (e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "CreatePipe() nie powiodło się (e=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe(): process_init_fd() nie powiodło się\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "CzyszczÄ™ tymczasowy plik wsadowy %s\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr "plik: brak nazwy"
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
msgstr "otwarcie: %s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
msgstr "zapis: %s: %s"
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, c-format
msgid "close: %s: %s"
msgstr "zamknięcie: %s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr "plik: zbyt dużo argumentów"
-#: function.c:2262
+#: src/function.c:2277
#, c-format
msgid "read: %s: %s"
msgstr "odczyt: %s: %s"
-#: function.c:2275
+#: src/function.c:2290
#, c-format
msgid "file: invalid file operation: %s"
msgstr "plik: błędna operacja na pliku: %s"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr "niewystarczająca liczba argumentów (%d) dla funkcji '%s'"
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "funkcja '%s' nie jest zaimplementowana na tej platformie"
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr "nie dokończone wywołanie funkcji '%s': brak '%c'"
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr "Pusta nazwa funkcji"
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr "Błędna nazwa funkcji: %s"
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr "Zbyt długa nazwa funkcji: %s"
-#: function.c:2657
+#: src/function.c:2674
#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
msgstr "Błędna minimalna liczba argumentów (%u) dla funkcji %s"
-#: function.c:2660
+#: src/function.c:2677
#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
msgstr "Błędna maksymalna liczba argumentów (%u) dla funkcji %s"
-#: getopt.c:659
+#: src/getopt.c:659
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: opcja '%s' jest niejednoznaczna\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: opcja '--%s' nie przyjmuje argumentów\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: opcja '%c%s' nie może mieć argumentów\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: opcja '%s' musi mieć argument\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: nieznana opcja '--%s'\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: nieznana opcja '%c%s'\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: niedozwolona opcja -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: błędna opcja -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: opcja musi mieć argument -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: opcja '-W %s' jest niejednoznaczna\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: opcja '-W %s' nie może mieć argumentów\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr "guile: Rozwijanie '%s'\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr "guile: Wyliczanie '%s'\n"
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr ""
"nie można przydzielić %lu bajtów na tablicę haszującą: pamięć wyczerpana"
-#: hash.c:280
+#: src/hash.c:280
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "Wypełnienie=%ld/%ld=%.0f%%, "
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "Wypełnienie=%lu/%lu=%.0f%%, "
-#: hash.c:282
+#: src/hash.c:282
#, c-format
-msgid "Rehash=%d, "
-msgstr "Przehaszowania=%d, "
+msgid "Rehash=%u, "
+msgstr "Przehaszowania=%u, "
-#: hash.c:283
+#: src/hash.c:283
#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "Kolizje=%ld/%ld=%.0f%%"
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "Kolizje=%lu/%lu=%.0f%%"
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr "Szukanie standardowej reguły dla '%s'.\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr "Szukanie standardowej reguły typu archive-member dla '%s'.\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr "Pomijanie rekurencyjnego wywołania reguły standardowej.\n"
-#: implicit.c:486
+#: src/implicit.c:484
#, c-format
-msgid "Stem too long: '%.*s'.\n"
-msgstr "Gałąź zbyt długa: '%.*s'.\n"
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "Gałąź zbyt długa: '%s%.*s'.\n"
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr "Próbowanie reguły wzorcowej z gałęzią '%.*s'.\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr "Odrzucenie niemożliwej zależności reguły '%s'.\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr "Odrzucenie niemożliwej zależności domyślnej '%s'.\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr "Próbowanie zależności reguły '%s'.\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr "Próbowanie zależności domyślnej '%s'.\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr "Znaleziono zależność '%s' jako VPATH '%s'\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr "Szukanie reguły zawierającej plik przejściowy '%s'.\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr "Nie można utworzyć pliku tymczasowego\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (zrzut pamięci)"
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr " (zignorowano)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
msgstr "<wbudowane>"
-#: job.c:510
+#: src/job.c:573
#, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "%s[%s: %s] BÅ‚Ä…d %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** Oczekiwanie na niezakończone zadania...."
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "Żyjący potomek %p (%s) PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (zdalne)"
-#: job.c:831
-#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Zbieranie przegrywajÄ…cego potomka %p PID %s %s\n"
-
-#: job.c:832
+#: src/job.c:898
#, c-format
msgid "Reaping winning child %p PID %s %s\n"
msgstr "Zbieranie wygrywajÄ…cego potomka %p PID %s %s\n"
-#: job.c:839
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Zbieranie przegrywajÄ…cego potomka %p PID %s %s\n"
+
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "Czyszczenie tymczasowego pliku wsadowego %s\n"
-#: job.c:845
+#: src/job.c:956
#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr "Czyszczenie tymczasowego pliku wsadowego %s nie powiodło się (%d)\n"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr "Usuwanie potomka %p PID %s%s z kolejki.\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr "Zwolniony token dla potomka %p (%s).\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "process_easy() nie mógł uruchomić procesu (e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -699,93 +709,87 @@ msgstr ""
"\n"
"Naliczono %d parametrów nieudanego uruchomienia\n"
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr "Wstawianie potomka %p (%s) PID %s%s do kolejki.\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "Otrzymano token dla potomka %p (%s).\n"
-#: job.c:1838
+#: src/job.c:1902
#, c-format
msgid "%s: target '%s' does not exist"
msgstr "%s: obiekt '%s' nie istnieje"
-#: job.c:1841
+#: src/job.c:1905
#, c-format
msgid "%s: update target '%s' due to: %s"
msgstr "%s: uaktualnianie obiektu '%s' z powodu: %s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr "niemożliwe wymuszenie limitów obciążenia w tym systemie"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "niemożliwe wymuszenie limitu obciążenia: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr "nie ma więcej uchwytów plików: nie można powielić stdin\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr "nie ma więcej uchwytów plików: nie można powielić stdout\n"
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr "nie ma więcej uchwytów plików: nie można powielić stderr\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr "Nie można odtworzyć stdin\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr "Nie można odtworzyć stdout\n"
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr "Nie można odtworzyć stderr\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr "make usunÄ…Å‚ potomka pid %s, nadal czeka na pid %s\n"
-#: job.c:2275
+#: src/job.c:2623
#, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: %s: Polecenie nie znalezione\n"
-
-#: job.c:2277
-#, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s[%u]: %s: Polecenie nie znalezione\n"
-
-#: job.c:2337
-#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: Nie znaleziono programu powłoki"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr "spawnvpe: mogło zabraknąć miejsca na środowisko"
-#: job.c:2584
+#: src/job.c:2862
#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "$SHELL się zmienił (był '%s', jest '%s')\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr "Tworzenie tymczasowego pliku wsadowego %s\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
@@ -793,7 +797,7 @@ msgstr ""
"Zawartość pliku wsadowego:\n"
"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
@@ -802,59 +806,55 @@ msgstr ""
"Zawartość pliku wsadowego:%s\n"
"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr "%s (linia %d) Zły kontekst powłoki (!unixy && !batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr ""
-"-O[TYP] (--output-sync[=TYP]) nie zostało skonfigurowane przy tym budowaniu."
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr "Nie udało się otworzyć tablicy symboli globalnych: %s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr "Wczytany obiekt %s nie jest zadeklarowany jako kompatybilny z GPL"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr "Nie udało się wczytać symbolu %s z %s: %s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr "Pusta nazwa symbolu do wczytania: %s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr "Wczytywanie symbolu %s z %s\n"
-#: load.c:256
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr "Operacja 'load' nie jest obsługiwana na tej platformie"
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "Opcje:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr " -b, -m Ignorowane dla kompatybilności.\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr ""
" -B, --always-make Bezwarunkowe utworzenie wszystkich obiektów.\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
@@ -863,19 +863,19 @@ msgstr ""
" Przejście do KATALOGu przed robieniem\n"
" czegokolwiek.\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr ""
" -d Wyświetla dużo informacji diagnostycznych.\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
" --debug[=FLAGI] Wyświetla różne rodzaje informacji\n"
" diagnostycznych.\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
@@ -883,14 +883,14 @@ msgstr ""
" -e, --environment-overrides\n"
" Zmienne środowiska przykrywają makefile.\n"
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
-" --eval=ÅAŃCUCH Wyznacza ÅAŃCUCH jako instrukcjÄ™ pliku "
+" -E ÅAŃCUCH, --eval=ÅAŃCUCH Wyznacza ÅAŃCUCH jako instrukcjÄ™ pliku "
"makefile.\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -898,16 +898,16 @@ msgstr ""
" -f PLIK, --file=PLIK, --makefile=PLIK\n"
" Czyta PLIK jako makefile.\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr ""
" -h, --help Wyświetla ten komunikat i kończy działanie.\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr " -i, --ignore-errors Ignoruje błędy poleceń.\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
@@ -915,7 +915,7 @@ msgstr ""
" -I KATALOG, --include-dir=KATALOG\n"
" Szuka dołączanych makefile w KATALOGu.\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
@@ -923,14 +923,14 @@ msgstr ""
" -j [N], --jobs[=N] Dopuszcza N zadań naraz; brak N oznacza brak\n"
" ograniczeń.\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
" -k, --keep-going Kontynuuj jeśli nie da się zrobić jakichś\n"
" obiektów.\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
@@ -941,7 +941,7 @@ msgstr ""
"jest\n"
" poniżej N.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
@@ -949,7 +949,7 @@ msgstr ""
" -L, --check-symlink-times Używanie ostatniego mtime między dowiązaniem a "
"celem.\n"
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
@@ -958,7 +958,7 @@ msgstr ""
" -n, --just-print, --dry-run, --recon\n"
" Nie wykonuje poleceń; jedynie je wyświetla.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
@@ -969,7 +969,7 @@ msgstr ""
"go\n"
" ponownie.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
@@ -978,11 +978,11 @@ msgstr ""
" Sposób synchronizacji wyjścia zadań "
"równoległych.\n"
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr " -p, --print-data-base Wyświetla wewnętrzną bazę danych make.\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
@@ -990,20 +990,25 @@ msgstr ""
" -q, --question Nie uruchamia żadnych poleceń; status powrotu\n"
" wskazuje aktualność.\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr " -r, --no-builtin-rules Wyłącza wbudowane reguły standardowe.\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr ""
" -R, --no-builtin-variables Wyłącza ustawianie wbudowanych zmiennych.\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr " -s, --silent, --quiet Nie wypisuje poleceń.\n"
-#: main.c:393
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" --no-silent Wypisuje polecenia (wyłącza tryb --silent).\n"
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
@@ -1011,25 +1016,25 @@ msgstr ""
" -S, --no-keep-going, --stop\n"
" Wyłącza -k.\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr " -t, --touch Uaktualnia obiekty zamiast je robić.\n"
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
msgstr " --trace Wypisywanie informacji ze śledzenia.\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr ""
" -v, --version Wyświetla wersję make i kończy działanie.\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory Wyświetla aktualny katalog.\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
@@ -1037,7 +1042,7 @@ msgstr ""
" --no-print-directory Wyłącza -w, nawet jeśli było ono włączone\n"
" domyślnie.\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1045,7 +1050,7 @@ msgstr ""
" -W PLIK, --what-if=PLIK, --new-file=PLIK, --assume-new=PLIK\n"
" Uznaje PLIK za nieskończenie nowy.\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
@@ -1054,26 +1059,27 @@ msgstr ""
"niezdefiniowanych\n"
" zmiennych.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "pusty łańcuch nie może być nazwą pliku"
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
msgstr "nieznany poziom diagnostyki '%s'"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr "nieznany sposób synchronizacji wyjścia '%s'"
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr "%s: złapano przerwanie/wyjątek (kod = 0x%lx, adres = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1088,134 +1094,142 @@ msgstr ""
"ExceptionFlags = %lx\n"
"ExceptionAddress = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "Naruszenie praw dostępu: zapis pod adresem 0x%p\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "Naruszenie praw dostępu: odczyt spod adresu 0x%p\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell() ustawia default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr "find_and_set_shell() ustawia ścieżkę wyszukiwania default_shell = %s\n"
-#: main.c:1538
-#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s jest zawieszony na 30 sekund..."
-
-#: main.c:1540
+#: src/main.c:1609
#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "zakończono sleep(30). Kontynuacja.\n"
-
-#: main.c:1627
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
"uwaga: serwer zadań niedostępny: użycie -j1. Należy dodać `+' do nadrzędnej "
"reguły make."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
-msgstr "uwaga: -jN wymuszone w podzadaniu: wyłączanie trybu serwera zadań."
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
+msgstr "uwaga: -j%d wymuszone w podzadaniu: wyłączanie trybu serwera zadań."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr "Makefile ze standardowego wejścia podano dwukrotnie."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (plik tymczasowy)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (plik tymczasowy)"
-#: main.c:2048
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr "uwaga: -j%d wymuszone w podzadaniu: wyłączanie trybu serwera zadań."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr "Równoległe zadania (-j) nie są obsługiwane na tej platformie"
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "Przełączanie w tryb jednozadaniowy (-j1)."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr "Dowiązania symboliczne nie są obsługiwane: wyłączono -L."
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "Uaktualnianie plików makefile....\n"
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr "Plik makefile '%s' może się zapętlić; bez ponownego przetwarzania.\n"
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
msgstr "Nie udało się ponownie przetworzyć pliku makefile '%s'."
-#: main.c:2299
+#: src/main.c:2323
#, c-format
msgid "Included makefile '%s' was not found."
msgstr "Nie znaleziono włączanego pliku makefile '%s'."
-#: main.c:2304
+#: src/main.c:2328
#, c-format
msgid "Makefile '%s' was not found"
msgstr "Nie znaleziono pliku makefile '%s'"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "Niemożliwy powrót do katalogu startowego."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "Ponowne uruchamianie[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (plik tymczasowy): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ".DEFAULT_GOAL zawiera więcej niż jeden cel"
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Nie podano obiektów i nie znaleziono makefile"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "Brak obiektów"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Nie podano obiektów i nie znaleziono makefile"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "Uaktualnianie obiektów docelowych....\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr "uwaga: Wykryto przestawienie zegara. Budowanie może być niekompletne."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "Składnia: %s [opcje] [obiekt] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1224,7 +1238,7 @@ msgstr ""
"\n"
"Ten program został zbudowany dla %s\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1233,32 +1247,32 @@ msgstr ""
"\n"
"Ten program został zbudowany dla %s (%s)\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr "Błędy proszę zgłaszać na adres <bug-make@gnu.org>\n"
-#: main.c:2870
+#: src/main.c:2901
#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "opcja '%s%s' wymaga niepustego łańcucha jako argumentu"
-#: main.c:2934
+#: src/main.c:2965
#, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "opcja '-%c' wymaga argumentu będącego liczbą całkowitą dodatnią"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%sTen program został zbudowany dla systemu %s\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%sTen program został zbudowany dla systemu %s (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1272,7 +1286,7 @@ msgstr ""
"rozpowszechniać.\n"
"%sNie ma ŻADNEJ GWARANCJI w zakresie dopuszczalnym przez prawo.\n"
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1281,7 +1295,7 @@ msgstr ""
"\n"
"# Baza danych Make, wyświetlana na %s"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1290,344 +1304,381 @@ msgstr ""
"\n"
"# Zakończono tworzenie bazy danych Make na %s\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Nieznany błąd %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: użytkownik %lu (rzeczywisty %lu), grupa %lu (rzeczywista %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "Zainicjalizowany dostęp"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr "Dostęp użytkownika"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "Dostęp make"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "Dostęp potomka"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: Wejście do nieznanego katalogu\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: Opuszczenie nieznanego katalogu\n"
-#: output.c:109
+#: src/output.c:102
#, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "%s: Wejście do katalogu '%s'\n"
-#: output.c:111
+#: src/output.c:104
#, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "%s: Opuszczenie katalogu '%s'\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: Wejście do nieznanego katalogu\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: Opuszczenie nieznanego katalogu\n"
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr "%s[%u]: Wejście do katalogu '%s'\n"
-#: output.c:122
+#: src/output.c:115
#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "%s[%u]: Opuszczenie katalogu '%s'\n"
-#: output.c:495 output.c:497
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
msgstr "błąd zapisu: standardowe wyjście"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". Stop.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+"-O[TYP] (--output-sync[=TYP]) nie zostało skonfigurowane przy tym budowaniu."
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "tworzenie potoku zadań"
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
msgstr "duplikowanie potoku zadań"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr "inicjowanie potoku serwera zadań"
-#: posixos.c:90
+#: src/posixos.c:119
#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr "błąd wewnętrzny: błędny łańcuch --jobserver-auth '%s'"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr "Klient serwera zadań (fds %d,%d)\n"
-#: posixos.c:109
+#: src/posixos.c:138
msgid "jobserver pipeline"
msgstr "potok serwera zadań"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr "zapis do serwera zadań"
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr "serwer zadań zamknięty"
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
msgstr "pselect potoku zadań"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "odczyt potoku zadań"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "Czytanie makefile...\n"
-#: read.c:329
+#: src/read.c:336
#, c-format
msgid "Reading makefile '%s'"
msgstr "Czytanie pliku makefile '%s'"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (brak celu domyślnego)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (przeszukiwana ścieżka)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (nieważne)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (brak rozszerzenia ~)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr "Pominięto BOM UTF-8 w pliku makefile '%s'\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr "Pominięto BOM UTF-8 w buforze pliku makefile\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "błędna składnia wyrażenia warunkowego"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr "%s: nie udało się załadować"
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
msgstr "polecenia zaczynajÄ… siÄ™ przed pierwszym obiektem"
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
msgstr "brakuje reguły przed poleceniami"
-#: read.c:1124
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr "brakujący separator (czyżby miał być TAB zamiast 8 spacji?)"
-#: read.c:1126
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
msgstr "brakujÄ…cy separator"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "brakujÄ…cy wzorzec obiektu"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "wielokrotne wzorce obiektu"
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
msgstr "wzorzec obiektu nie zawiera '%%'"
-#: read.c:1390
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
msgstr "brakujÄ…cy 'endif'"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "pusta nazwa zmiennej"
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
msgstr "nadmiarowy tekst po dyrektywie 'define'"
-#: read.c:1488
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "brakujący 'endef', niezakończone 'define'"
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
msgstr "nadmiarowy tekst po dyrektywie 'endef'"
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
msgstr "niezwiÄ…zany tekst po dyrektywie '%s'"
-#: read.c:1589
+#: src/read.c:1604
#, c-format
msgid "extraneous '%s'"
msgstr "nadmiarowy '%s'"
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
msgstr "tylko jedno 'else' w wyrażeniu warunkowym"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr "Źle sformułowana definicja zmiennej dla celu"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr "wymagania nie mogą być definiowane w opisach poleceń"
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr "pogrupowane obiekty muszą dostarczać opis polecenia"
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr "pomieszane standardowe i statyczne reguły wzorców"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "pomieszane standardowe i normalne reguły"
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr "obiekt '%s' nie pasuje do wzorca obiektu"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
msgstr "plik obiektu '%s' ma pozycje i : i ::"
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
msgstr "obiekt '%s' podany wielokrotnie w tej samej regule"
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr "uwaga: polecenia zakrywajÄ…ce dla obiektu '%s'"
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr "uwaga: ignorujÄ™ stare polecenia dla obiektu '%s'"
-#: read.c:2223
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr "*** pomieszane reguły standardowe i normalne: przestarzała składnia"
-#: read.c:2542
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "uwaga: zakrycie członkowstwa w grupie dla obiektu '%s'"
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr "uwaga: napotkałem na znak NUL; reszta linii zignorowana"
-#: remake.c:226
+#: src/remake.c:226
#, c-format
msgid "Nothing to be done for '%s'."
msgstr "Nie ma nic do zrobienia w '%s'."
-#: remake.c:227
+#: src/remake.c:227
#, c-format
msgid "'%s' is up to date."
msgstr "'%s' jest aktualne."
-#: remake.c:323
+#: src/remake.c:323
#, c-format
msgid "Pruning file '%s'.\n"
msgstr "Czyszczenie pliku '%s'.\n"
-#: remake.c:406
+#: src/remake.c:389
#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr "%sBrak reguł do zrobienia obiektu '%s', wymaganego przez '%s'%s"
-#: remake.c:416
+#: src/remake.c:399
#, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%sBrak reguł do wykonania obiektu '%s'%s"
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
msgstr "Przetwarzanie pliku obiektowego '%s'.\n"
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr "Już bez powodzenia próbowałem uaktualnić plik '%s'.\n"
-#: remake.c:461
+#: src/remake.c:444
#, c-format
msgid "File '%s' was considered already.\n"
msgstr "Plik '%s' był już przetwarzany.\n"
-#: remake.c:471
+#: src/remake.c:454
#, c-format
msgid "Still updating file '%s'.\n"
msgstr "Wciąż uaktualniam plik '%s'.\n"
-#: remake.c:474
+#: src/remake.c:457
#, c-format
msgid "Finished updating file '%s'.\n"
msgstr "Skończyłem uaktualniać plik '%s'.\n"
-#: remake.c:503
+#: src/remake.c:486
#, c-format
msgid "File '%s' does not exist.\n"
msgstr "Plik '%s' nie istnieje.\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
@@ -1635,148 +1686,148 @@ msgstr ""
"*** Uwaga: plik .LOW_RESOLUTION_TIME '%s' ma dużą rozdzielczość znacznika "
"czasu"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr "Znaleziono standardową regułę dla '%s'.\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr "Brak standardowych reguł dla '%s'.\n"
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
msgstr "Stosowanie standardowych poleceń dla '%s'.\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "Okrężna dyrektywa %s <- %s porzucona."
-#: remake.c:691
+#: src/remake.c:674
#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr "Zakończono zależności pliku obiektu '%s'.\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr "Zależności '%s' są wykonywane.\n"
-#: remake.c:711
+#: src/remake.c:694
#, c-format
msgid "Giving up on target file '%s'.\n"
msgstr "Zaniechany plik obiektowy '%s'.\n"
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
msgstr "Obiekt '%s' nie został ponownie wykonany z powodu błędów."
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr "Zależność '%s' dotyczy tylko kolejności dla obiektu '%s'.\n"
-#: remake.c:773
+#: src/remake.c:756
#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr "Zależność '%s' obiektu '%s' nie istnieje.\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr "Zależność '%s' jest nowsza od obiektu '%s'.\n"
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr "Zależność '%s' jest starsza od obiektu '%s'.\n"
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr ""
"Obiekt '%s' jest z podwójnym dwukropkiem i nie ma żadnych zależności.\n"
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr "Brak poleceń dla '%s' i brak zmienionych zależności.\n"
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr "Tworzenie '%s' z powodu flagi always-make.\n"
-#: remake.c:819
+#: src/remake.c:802
#, c-format
msgid "No need to remake target '%s'"
msgstr "Nie ma potrzeby ponownego robienia obiektu '%s'"
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
msgstr "; użyto nazwy VPATH '%s'"
-#: remake.c:841
+#: src/remake.c:824
#, c-format
msgid "Must remake target '%s'.\n"
msgstr "Konieczne ponowne wykonanie obiektu '%s'.\n"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr " Zignorowano nazwÄ™ VPATH '%s'.\n"
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr "Uruchomiono polecenia dla '%s'.\n"
-#: remake.c:863
+#: src/remake.c:846
#, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr "Ponowne tworzenie pliku obiektu '%s' nie powiodło się.\n"
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr "Ponowne tworzenie pliku obiektu '%s' powiodło się.\n"
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr "Plik obiektu '%s' powinien być ponownie tworzony z opcją -q.\n"
-#: remake.c:1064
+#: src/remake.c:1047
#, c-format
msgid "Using default commands for '%s'.\n"
msgstr "Stosowanie standardowych poleceń dla '%s'.\n"
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "Uwaga: Plik '%s' ma czas modyfikacji z przyszłości"
-
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr "Uwaga: Plik '%s' ma czas modyfikacji %s s w przyszłości"
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr "Element .LIBPATTERNS '%s' nie jest wzorcem"
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr "Zasady nie eksportowane: %s\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -1784,7 +1835,7 @@ msgstr ""
"\n"
"# Reguły stadardowe"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1792,181 +1843,177 @@ msgstr ""
"\n"
"# Brak standardowych reguł."
-#: rule.c:514
+#: src/rule.c:548
#, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
-"# %u standardowych reguł, %u"
-
-#: rule.c:523
-msgid " terminal."
-msgstr " terminal."
+"# %u standardowych reguł, %u (%.1f%%) końcowych."
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "BÅÄ„D: zÅ‚e num_pattern_rules! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "nieznany sygnał"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Rozłączenie"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "Przerwanie"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Wyjście"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "Błędna instrukcja"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "Pułapka śledzenia"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Przerwany"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "Pułapka IOT"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "Pułapka EMT"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "WyjÄ…tek zmiennoprzecinkowy"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Zabity"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "BÅ‚Ä…d szyny"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Naruszenie ochrony pamięci"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "Błędne wywołanie systemowe"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "Przerwany potok"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Budzik"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "Zakończony"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "Sygnał użytkownika 1"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "Sygnał użytkownika 2"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "Potomek powrócił"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Przerwa w zasilaniu"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Zatrzymany"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Zatrzymany (wejście z tty)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Zatrzymany (wyjście na tty)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Zatrzymany (sygnał)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "Przekroczony czas CPU"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "Przekroczony limit wielkości pliku"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "Wyczerpany stoper wirtualny"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "Wyczerpany stoper profilujÄ…cy"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "Zmienione okno"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Kontynuowany"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "Nagła sytuacja I/O"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "I/O możliwe"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "Zaginione zasoby"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Sygnał niebezpieczeństwa"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Żądanie informacji"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "Koprocesor obliczeń zmiennoprzecinkowych niedostępny"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
@@ -1975,7 +2022,7 @@ msgstr ""
"\n"
"%s Brak buforów strcache\n"
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -1986,26 +2033,26 @@ msgstr ""
"%s bufory strcache: %lu (%lu) / łańcuchów = %lu / miejsce = %lu B / śr = %lu "
"B\n"
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
-"%s bieżący buf: rozmiar = %hu B / użyty = %hu B / liczba = %hu / śr = %hu B\n"
+"%s bieżący buf: rozmiar = %hu B / użyty = %hu B / liczba = %hu / śr = %u B\n"
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr "%s pozostałe użyte: razem = %lu B / liczba = %lu / śr = %lu B\n"
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
msgstr ""
"%s pozostałe wolne: razem = %lu B / maks = %lu B / min = %lu B / śr = %hu B\n"
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
@@ -2014,7 +2061,7 @@ msgstr ""
"\n"
"%s wydajność strcache: wyszukiwań = %lu / wsp. trafień = %lu%%\n"
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
@@ -2022,44 +2069,44 @@ msgstr ""
"# statystyki tablic haszujÄ…cych:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "automatyczna"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "domyślna"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "środowiskowa"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "makefile"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "środowisko pod -e"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "z linii poleceń"
-#: variable.c:1647
+#: src/variable.c:1671
msgid "'override' directive"
msgstr "dyrektywa 'override'"
-#: variable.c:1658
+#: src/variable.c:1682
#, c-format
msgid " (from '%s', line %lu)"
msgstr " (z '%s', linia %lu)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr "# statystyki tablic haszujÄ…cych ustawionych zmiennych:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2067,7 +2114,7 @@ msgstr ""
"\n"
"# Zmienne\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
@@ -2075,7 +2122,7 @@ msgstr ""
"\n"
"# Wartości zmiennych dla wzorca"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2083,7 +2130,7 @@ msgstr ""
"\n"
"# Brak wartości zmiennych dla wzorca."
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
@@ -2092,47 +2139,47 @@ msgstr ""
"\n"
"# %u wartości zmiennych dla wzorca"
-#: variable.h:224
+#: src/variable.h:229
#, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "uwaga: niezdefiniowana zmienna '%.*s'"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr "sys$search() nie powiodło się - %d\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr "-uwaga, będzie trzeba ponownie umożliwić obsługę CTRL-Y z DCL.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "WBUDOWANE CD %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr "DCL: %s\n"
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr "Dołączanie wyjścia do %s\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr "Dołączanie %.*s i czyszczenie\n"
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "Zamiast tego wykonywanie %s\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2140,11 +2187,11 @@ msgstr ""
"\n"
"# Ścieżki przeszukiwania VPATH\n"
-#: vpath.c:620
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
msgstr "# Brak ścieżek przeszukiwania 'vpath'"
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
@@ -2153,7 +2200,7 @@ msgstr ""
"\n"
"# %u ścieżek przeszukiwania 'vpath'.\n"
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
@@ -2161,7 +2208,7 @@ msgstr ""
"\n"
"# Brak ogólnej (zmienna 'VPATH') ścieżki przeszukiwania."
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
@@ -2171,17 +2218,17 @@ msgstr ""
"# Ogólna (zmienna 'VPATH') ścieżka przeszukiwania:\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr "Pojemność serwera zadań ograniczona do %d\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr "tworzenie semafora serwera zadań: (Błąd %ld: %s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
@@ -2189,17 +2236,17 @@ msgstr ""
"błąd wewnętrzny: nie udało się otworzyć semafora serwera zadań '%s': (Błąd "
"%ld: %s)"
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr "Klient serwera zadań (semafor %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr "zwalnianie semafora serwera zadań: (Błąd %ld: %s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr "oczekiwanie na semafor lub proces potomny: (BÅ‚Ä…d %ld: %s)"
diff --git a/po/pt.gmo b/po/pt.gmo
new file mode 100644
index 0000000..c0c750e
--- /dev/null
+++ b/po/pt.gmo
Binary files differ
diff --git a/po/pt.po b/po/pt.po
new file mode 100644
index 0000000..ab04c11
--- /dev/null
+++ b/po/pt.po
@@ -0,0 +1,2266 @@
+# Portuguese (Portugal) translation for the "make" package.
+# Copyright (C) 2018 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
+# Pedro Albuquerque <pmra@protonmail.com>, 2018, 2019, 2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU make 4.2.93\n"
+"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2020-01-04 07:21+0000\n"
+"Last-Translator: Pedro Albuquerque <pmra@protonmail.com>\n"
+"Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: src/ar.c:46
+#, c-format
+msgid "attempt to use unsupported feature: '%s'"
+msgstr "tentativa de usar funcionalidade não suportada: \"%s\""
+
+#: src/ar.c:123
+#, c-format
+msgid "touch archive member is not available on VMS"
+msgstr "membro de touch arquivo indisponível em VMS"
+
+#: src/ar.c:147
+#, c-format
+msgid "touch: Archive '%s' does not exist"
+msgstr "touch: arquivo \"%s\" não existe"
+
+#: src/ar.c:150
+#, c-format
+msgid "touch: '%s' is not a valid archive"
+msgstr "touch: \"%s\" não é um arquivo válido"
+
+#: src/ar.c:157
+#, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
+msgstr "touch: membro \"%s\" não existe em \"%s\""
+
+#: src/ar.c:164
+#, c-format
+msgid "touch: Bad return code from ar_member_touch on '%s'"
+msgstr "touch: mau código de retorno de ar_member_touch em \"%s\""
+
+#: src/arscan.c:130
+#, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
+msgstr "lbr$set_module() falhou ao extrair informação do módulo, estado = %d"
+
+#: src/arscan.c:236
+#, c-format
+msgid "lbr$ini_control() failed with status = %d"
+msgstr "lbr$ini_control() falhou com estado = %d"
+
+#: src/arscan.c:261
+#, c-format
+msgid "unable to open library '%s' to lookup member status %d"
+msgstr ""
+"impossível abrir biblioteca \"%s\" para procurar estado do membro \"%d\""
+
+#: src/arscan.c:944
+#, c-format
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "Membro \"%s\"%s: %ld bytes em %ld (%ld).\n"
+
+#: src/arscan.c:945
+msgid " (name might be truncated)"
+msgstr " (nome pode estar truncado)"
+
+#: src/arscan.c:947
+#, c-format
+msgid " Date %s"
+msgstr " Data %s"
+
+#: src/arscan.c:948
+#, c-format
+msgid " uid = %d, gid = %d, mode = 0%o.\n"
+msgstr " uid = %d, gid = %d, modo = 0%o.\n"
+
+#: src/commands.c:403
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr "Receita com demasiadas linhas (%ud)"
+
+#: src/commands.c:504
+msgid "*** Break.\n"
+msgstr "*** Break.\n"
+
+#: src/commands.c:628
+#, c-format
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
+msgstr "*** [%s] membro do arquivo \"%s\" pode ser fictício; não eliminado"
+
+#: src/commands.c:632
+#, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
+msgstr "*** membro do arquivo \"%s\" pode ser fictício; não eliminado"
+
+#: src/commands.c:646
+#, c-format
+msgid "*** [%s] Deleting file '%s'"
+msgstr "*** [%s] a eliminar ficheiro \"%s\""
+
+#: src/commands.c:648
+#, c-format
+msgid "*** Deleting file '%s'"
+msgstr "*** a eliminar ficheiro \"%s\""
+
+#: src/commands.c:684
+msgid "# recipe to execute"
+msgstr "# receita a executar"
+
+#: src/commands.c:687
+msgid " (built-in):"
+msgstr " (interno):"
+
+#: src/commands.c:689
+#, c-format
+msgid " (from '%s', line %lu):\n"
+msgstr " (de \"%s\", linha %lu):\n"
+
+#: src/dir.c:1073
+msgid ""
+"\n"
+"# Directories\n"
+msgstr ""
+"\n"
+"# Pastas\n"
+
+#: src/dir.c:1085
+#, c-format
+msgid "# %s: could not be stat'd.\n"
+msgstr "# %s: impossível obter estatísticas.\n"
+
+#: src/dir.c:1089
+msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
+msgstr "# %s (chave %s, mtime %I64u): impossível abrir.\n"
+
+#: src/dir.c:1094
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
+msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): impossível abrir.\n"
+
+#: src/dir.c:1099
+#, c-format
+msgid "# %s (device %ld, inode %ld): could not be opened.\n"
+msgstr "# %s (dispositivo %ld, inode %ld): impossível abrir.\n"
+
+#: src/dir.c:1126
+msgid "# %s (key %s, mtime %I64u): "
+msgstr "# %s (chave %s, mtime %I64u): "
+
+#: src/dir.c:1131
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): "
+msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): "
+
+#: src/dir.c:1136
+#, c-format
+msgid "# %s (device %ld, inode %ld): "
+msgstr "# %s (dispositivo %ld, inode %ld): "
+
+#: src/dir.c:1142 src/dir.c:1163
+msgid "No"
+msgstr "Não"
+
+#: src/dir.c:1145 src/dir.c:1166
+msgid " files, "
+msgstr " ficheiros, "
+
+#: src/dir.c:1147 src/dir.c:1168
+msgid "no"
+msgstr "não"
+
+#: src/dir.c:1150
+msgid " impossibilities"
+msgstr " impossibilidades"
+
+#: src/dir.c:1154
+msgid " so far."
+msgstr " até agora."
+
+#: src/dir.c:1171
+#, c-format
+msgid " impossibilities in %lu directories.\n"
+msgstr " impossibilidades em %lu pastas.\n"
+
+#: src/expand.c:125
+#, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
+msgstr "Variável recursiva \"%s\" referencia-se a si própria (eventualmente)"
+
+#: src/expand.c:271
+#, c-format
+msgid "unterminated variable reference"
+msgstr "referencia de variável não terminada"
+
+#: src/file.c:278
+#, c-format
+msgid "Recipe was specified for file '%s' at %s:%lu,"
+msgstr "Receita especificada para ficheiro \"%s\" em %s:%lu,"
+
+#: src/file.c:283
+#, c-format
+msgid "Recipe for file '%s' was found by implicit rule search,"
+msgstr ""
+"Receita para ficheiro \"%s\" foi encontrada por procura com regra implícita,"
+
+#: src/file.c:287
+#, c-format
+msgid "but '%s' is now considered the same file as '%s'."
+msgstr "mas \"%s\" é agora considerado o mesmo ficheiro que \"%s\"."
+
+#: src/file.c:290
+#, c-format
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
+msgstr "Receita para \"%s\" será ignorada em favor da receita para \"%s\"."
+
+#: src/file.c:310
+#, c-format
+msgid "can't rename single-colon '%s' to double-colon '%s'"
+msgstr "impossível renomear dois-pontos \"%s\" para dois-pontos duplos \"%s\""
+
+#: src/file.c:316
+#, c-format
+msgid "can't rename double-colon '%s' to single-colon '%s'"
+msgstr "impossível renomear dois-pontos duplos \"%s\" para dois-pontos \"%s\""
+
+#: src/file.c:408
+#, c-format
+msgid "*** Deleting intermediate file '%s'"
+msgstr "*** A eliminar ficheiro intermédio \"%s\""
+
+#: src/file.c:412
+#, c-format
+msgid "Removing intermediate files...\n"
+msgstr "A remover ficheiros intermédios...\n"
+
+#: src/file.c:872
+msgid "Current time"
+msgstr "Hora actual"
+
+#: src/file.c:876
+#, c-format
+msgid "%s: Timestamp out of range; substituting %s"
+msgstr "%s: datação fora do intervalo; a substituir %s"
+
+#: src/file.c:1016
+msgid "# Not a target:"
+msgstr "# Não é um alvo:"
+
+#: src/file.c:1021
+msgid "# Precious file (prerequisite of .PRECIOUS)."
+msgstr "# Ficheiro precioso (pré-requisito de .PRECIOUS)."
+
+#: src/file.c:1023
+msgid "# Phony target (prerequisite of .PHONY)."
+msgstr "# Alvo falso (pré-requisito de .PHONY)."
+
+#: src/file.c:1025
+msgid "# Command line target."
+msgstr "# Alvo da linha de comandos."
+
+#: src/file.c:1027
+msgid "# A default, MAKEFILES, or -include/sinclude makefile."
+msgstr "# A predefinição, MAKEFILES, ou -include/sinclude makefile."
+
+#: src/file.c:1029
+msgid "# Builtin rule"
+msgstr "# Regra interna"
+
+#: src/file.c:1031
+msgid "# Implicit rule search has been done."
+msgstr "# Foi feita uma procura com regra implícita."
+
+#: src/file.c:1032
+msgid "# Implicit rule search has not been done."
+msgstr "# Não foi feita uma procura com regra implícita."
+
+#: src/file.c:1034
+#, c-format
+msgid "# Implicit/static pattern stem: '%s'\n"
+msgstr "# Haste de padrão implícito/estático: \"%s\"\n"
+
+#: src/file.c:1036
+msgid "# File is an intermediate prerequisite."
+msgstr "# O ficheiro é um pré-requisito imediato."
+
+#: src/file.c:1040
+msgid "# Also makes:"
+msgstr "# Também faz:"
+
+#: src/file.c:1046
+msgid "# Modification time never checked."
+msgstr "# Hora de modificação nunca verificada."
+
+#: src/file.c:1048
+msgid "# File does not exist."
+msgstr "# O ficheiro não existe."
+
+#: src/file.c:1050
+msgid "# File is very old."
+msgstr "# O ficheiro é muito antigo."
+
+#: src/file.c:1055
+#, c-format
+msgid "# Last modified %s\n"
+msgstr "# Última modificação %s\n"
+
+#: src/file.c:1058
+msgid "# File has been updated."
+msgstr "# O ficheiro foi actualizado."
+
+#: src/file.c:1058
+msgid "# File has not been updated."
+msgstr "# O ficheiro não foi actualizado."
+
+#: src/file.c:1062
+msgid "# Recipe currently running (THIS IS A BUG)."
+msgstr "# Receita actualmente em execução (ISTO É UM ERRO)."
+
+#: src/file.c:1065
+msgid "# Dependencies recipe running (THIS IS A BUG)."
+msgstr "# Receita de dependências em execução (ISTO É UM ERRO)."
+
+#: src/file.c:1074
+msgid "# Successfully updated."
+msgstr "# Actualizado com sucesso."
+
+#: src/file.c:1078
+msgid "# Needs to be updated (-q is set)."
+msgstr "# Precisa de actualização (-q está definido)."
+
+#: src/file.c:1081
+msgid "# Failed to be updated."
+msgstr "# Falha ao actualizar."
+
+#: src/file.c:1086
+msgid "# Invalid value in 'command_state' member!"
+msgstr "# Valor inválido no membro \"command_state\"!"
+
+#: src/file.c:1105
+msgid ""
+"\n"
+"# Files"
+msgstr ""
+"\n"
+"# Ficheiros"
+
+#: src/file.c:1109
+msgid ""
+"\n"
+"# files hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# estatísticas da hash-table dos ficheiros:\n"
+"# "
+
+#: src/file.c:1119
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr "%s: campo \"%s\" não armazenado em cache: %s"
+
+#: src/function.c:794
+msgid "non-numeric first argument to 'word' function"
+msgstr "primeiro argumento de função \"word\" não-numérico"
+
+#: src/function.c:799
+#, c-format
+msgid "first argument to 'word' function must be greater than 0"
+msgstr "o primeiro argumento de função \"word\" tem de ser maior que 0"
+
+#: src/function.c:819
+msgid "non-numeric first argument to 'wordlist' function"
+msgstr "primeiro argumento de função \"wordlist\" não-numérico"
+
+#: src/function.c:821
+msgid "non-numeric second argument to 'wordlist' function"
+msgstr "segundo argumento de função \"wordlist\" não-numérico"
+
+#: src/function.c:1533
+#, c-format
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe: DuplicateHandle(In) falhou (e=%ld)\n"
+
+#: src/function.c:1557
+#, c-format
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "windows32_openpipe: DuplicateHandle(Err) falhou (e=%ld)\n"
+
+#: src/function.c:1564
+#, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "CreatePipe() falhou (e=%ld)\n"
+
+#: src/function.c:1572
+#, c-format
+msgid "windows32_openpipe(): process_init_fd() failed\n"
+msgstr "windows32_openpipe(): process_init_fd() falhou\n"
+
+#: src/function.c:1857
+#, c-format
+msgid "Cleaning up temporary batch file %s\n"
+msgstr "A limpar ficheiro batch temporário %s\n"
+
+#: src/function.c:2230 src/function.c:2255
+#, c-format
+msgid "file: missing filename"
+msgstr "ficheiro: nome em falta"
+
+#: src/function.c:2234 src/function.c:2265
+#, c-format
+msgid "open: %s: %s"
+msgstr "abrir: %s: %s"
+
+#: src/function.c:2242
+#, c-format
+msgid "write: %s: %s"
+msgstr "escrever: %s: %s"
+
+#: src/function.c:2245 src/function.c:2282
+#, c-format
+msgid "close: %s: %s"
+msgstr "fechar: %s: %s"
+
+#: src/function.c:2258
+#, c-format
+msgid "file: too many arguments"
+msgstr "ficheiro: demasiados argumentos"
+
+#: src/function.c:2277
+#, c-format
+msgid "read: %s: %s"
+msgstr "ler: %s: %s"
+
+#: src/function.c:2290
+#, c-format
+msgid "file: invalid file operation: %s"
+msgstr "ficheiro: operação inválida: %s"
+
+#: src/function.c:2405
+#, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
+msgstr "número insuficiente de argumentos (%d) para a função \"%s\""
+
+#: src/function.c:2417
+#, c-format
+msgid "unimplemented on this platform: function '%s'"
+msgstr "não implementada nesta plataforma: função \"%s\""
+
+#: src/function.c:2483
+#, c-format
+msgid "unterminated call to function '%s': missing '%c'"
+msgstr "chamada não terminada à função \"%s\": \"%c\" em falta"
+
+#: src/function.c:2667
+#, c-format
+msgid "Empty function name"
+msgstr "Nome de função vazio"
+
+#: src/function.c:2669
+#, c-format
+msgid "Invalid function name: %s"
+msgstr "Nome de função inválido: %s"
+
+#: src/function.c:2671
+#, c-format
+msgid "Function name too long: %s"
+msgstr "Nome de função muito longo: %s"
+
+#: src/function.c:2674
+#, c-format
+msgid "Invalid minimum argument count (%u) for function %s"
+msgstr "Número mínimo de argumentos (%u) inválido para a função %s"
+
+#: src/function.c:2677
+#, c-format
+msgid "Invalid maximum argument count (%u) for function %s"
+msgstr "Número máximo de argumentos (%u) inválido para a função %s"
+
+#: src/getopt.c:659
+#, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: a opção \"%s\" é ambígua\n"
+
+#: src/getopt.c:683
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: a opção \"--%s\" não permite um argumento\n"
+
+#: src/getopt.c:688
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: a opção \"%c%s\" não permite um argumento\n"
+
+#: src/getopt.c:705 src/getopt.c:878
+#, c-format
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: a opção \"%s\" requer um argumento\n"
+
+#: src/getopt.c:734
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: opção não reconhecida \"--%s\"\n"
+
+#: src/getopt.c:738
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: opção não reconhecida \"%c%s\"\n"
+
+#: src/getopt.c:764
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: opção ilegal -- %c\n"
+
+#: src/getopt.c:767
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: opção inválida -- %c\n"
+
+#: src/getopt.c:797 src/getopt.c:927
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: a opção requer um argumento -- %c\n"
+
+#: src/getopt.c:844
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: a opção \"-W %s\" é ambígua\n"
+
+#: src/getopt.c:862
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: a opção \"-W %s\" não permite argumentos\n"
+
+#: src/guile.c:58
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr "guile: a expandir \"%s\"\n"
+
+#: src/guile.c:74
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr "guile: a avaliar \"%s\"\n"
+
+#: src/hash.c:50
+#, c-format
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
+msgstr "impossível alocar %lu bytes para a tabela de hash: memória esgotada"
+
+#: src/hash.c:280
+#, c-format
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "Load=%lu/%lu=%.0f%%, "
+
+#: src/hash.c:282
+#, c-format
+msgid "Rehash=%u, "
+msgstr "Rehash=%u, "
+
+#: src/hash.c:283
+#, c-format
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "Collisions=%lu/%lu=%.0f%%"
+
+#: src/implicit.c:38
+#, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
+msgstr "A procurar regra implícita para \"%s\".\n"
+
+#: src/implicit.c:54
+#, c-format
+msgid "Looking for archive-member implicit rule for '%s'.\n"
+msgstr "A procurar regra implícita de membro de arquivo para \"%s\".\n"
+
+#: src/implicit.c:311
+#, c-format
+msgid "Avoiding implicit rule recursion.\n"
+msgstr "A evitar recursividade de regra implícita.\n"
+
+#: src/implicit.c:484
+#, c-format
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "Haste muito longa: \"%s%.*s\".\n"
+
+#: src/implicit.c:490
+#, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
+msgstr "A tentar regra padrão com haste \"%.*s\".\n"
+
+#: src/implicit.c:717
+#, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
+msgstr "A rejeitar pré-requisito de regra \"%s\" impossível.\n"
+
+#: src/implicit.c:718
+#, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
+msgstr "A rejeitar pré-requisito implícito \"%s\" impossível.\n"
+
+#: src/implicit.c:732
+#, c-format
+msgid "Trying rule prerequisite '%s'.\n"
+msgstr "A tentar pré-requisito de regra \"%s\".\n"
+
+#: src/implicit.c:733
+#, c-format
+msgid "Trying implicit prerequisite '%s'.\n"
+msgstr "A tentar pré-requisito implícito \"%s\".\n"
+
+#: src/implicit.c:772
+#, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
+msgstr "Encontrado pré-requisito \"%s\" como VPATH \"%s\"\n"
+
+#: src/implicit.c:786
+#, c-format
+msgid "Looking for a rule with intermediate file '%s'.\n"
+msgstr "A procurar regra com ficheiro intermédio \"%s\".\n"
+
+#: src/job.c:370
+msgid "Cannot create a temporary file\n"
+msgstr "Impossível criar ficheiro temporário\n"
+
+#: src/job.c:548
+msgid " (core dumped)"
+msgstr " (núcleo despejado)"
+
+#: src/job.c:553
+msgid " (ignored)"
+msgstr " (ignorado)"
+
+#: src/job.c:557 src/job.c:1892
+msgid "<builtin>"
+msgstr "<interno>"
+
+#: src/job.c:573
+#, c-format
+msgid "%s[%s: %s] Error %d%s"
+msgstr "%s[%s: %s] Erro %d%s"
+
+#: src/job.c:662
+#, c-format
+msgid "*** Waiting for unfinished jobs...."
+msgstr "*** A aguardar por trabalhos não terminados...."
+
+#: src/job.c:704
+#, c-format
+msgid "Live child %p (%s) PID %s %s\n"
+msgstr "Filho vivo %p (%s) PID %s %s\n"
+
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
+msgid " (remote)"
+msgstr " (remoto)"
+
+#: src/job.c:898
+#, c-format
+msgid "Reaping winning child %p PID %s %s\n"
+msgstr "A recolher filho ganhador %p PID %s %s\n"
+
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "A recolher filho perdedor %p PID %s %s\n"
+
+#: src/job.c:950
+#, c-format
+msgid "Cleaning up temp batch file %s\n"
+msgstr "A limpar ficheiro batch temporário %s\n"
+
+#: src/job.c:956
+#, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "A limpar ficheiro batch temporário %s falhou (%d)\n"
+
+#: src/job.c:1071
+#, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
+msgstr "A remover filho %p PID %s%s da cadeia.\n"
+
+#: src/job.c:1120
+#, c-format
+msgid "Released token for child %p (%s).\n"
+msgstr "Símbolo lançado para filho %p (%s).\n"
+
+#: src/job.c:1575 src/job.c:2487
+#, c-format
+msgid "process_easy() failed to launch process (e=%ld)\n"
+msgstr "process_easy() falhou ao lançar processo (e=%ld)\n"
+
+#: src/job.c:1579 src/job.c:2491
+#, c-format
+msgid ""
+"\n"
+"Counted %d args in failed launch\n"
+msgstr ""
+"\n"
+"Contados %d argumentos no lançamento falhado\n"
+
+#: src/job.c:1642
+#, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
+msgstr "A pôr filho %p (%s) PID %s%s na cadeia.\n"
+
+#: src/job.c:1875
+#, c-format
+msgid "Obtained token for child %p (%s).\n"
+msgstr "Obtido símbolo para filho %p (%s).\n"
+
+#: src/job.c:1902
+#, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "%s: alvo \"%s\" não existe"
+
+#: src/job.c:1905
+#, c-format
+msgid "%s: update target '%s' due to: %s"
+msgstr "%s: alvo actualizado \"%s\" devido a: %s"
+
+#: src/job.c:2108
+#, c-format
+msgid "cannot enforce load limits on this operating system"
+msgstr "Impossível forçar limites de carga neste sistema operativo"
+
+#: src/job.c:2110
+msgid "cannot enforce load limit: "
+msgstr "Impossível forçar limite de carga: "
+
+#: src/job.c:2200
+#, c-format
+msgid "no more file handles: could not duplicate stdin\n"
+msgstr "não há mais gestão de ficheiros: impossível duplicar stdin\n"
+
+#: src/job.c:2212
+#, c-format
+msgid "no more file handles: could not duplicate stdout\n"
+msgstr "não há mais gestão de ficheiros: impossível duplicar stdout\n"
+
+#: src/job.c:2226
+#, c-format
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr "não há mais gestão de ficheiros: impossível duplicar stderr\n"
+
+#: src/job.c:2241
+#, c-format
+msgid "Could not restore stdin\n"
+msgstr "impossível restaurar stdin\n"
+
+#: src/job.c:2249
+#, c-format
+msgid "Could not restore stdout\n"
+msgstr "impossível restaurar stdout\n"
+
+#: src/job.c:2257
+#, c-format
+msgid "Could not restore stderr\n"
+msgstr "impossível restaurar stderr\n"
+
+#: src/job.c:2520
+#, c-format
+msgid "make reaped child pid %s, still waiting for pid %s\n"
+msgstr "fazer pid %s de filho recolhido, ainda à espera por pid %s\n"
+
+#: src/job.c:2623
+#, c-format
+msgid "spawnvpe: environment space might be exhausted"
+msgstr "spawnvpe: o espaço de ambiente pode estar esgotado"
+
+#: src/job.c:2862
+#, c-format
+msgid "$SHELL changed (was '%s', now '%s')\n"
+msgstr "$SHELL alterada (era \"%s\", é agora \"%s\")\n"
+
+#: src/job.c:3300 src/job.c:3485
+#, c-format
+msgid "Creating temporary batch file %s\n"
+msgstr "A criar ficheiro batch temporaŕio %s\n"
+
+#: src/job.c:3308
+#, c-format
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+"Conteúdo do ficheiro batch:\n"
+"\t@echo off\n"
+
+#: src/job.c:3497
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+"Conteúdo do ficheiro batch:%s\n"
+"\t%s\n"
+
+#: src/job.c:3605
+#, c-format
+msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
+msgstr "%s (linha %d) Mau contexto de shell (!unixy && !batch_mode_shell)\n"
+
+#: src/load.c:60
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr "Falha ao abrir a tabela global de símbolos: %s"
+
+#: src/load.c:97
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr "Objecto carregado %s não está declarado como compatível GPL"
+
+#: src/load.c:104
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr "Falha ao carregar símbolo %s de %s: %s"
+
+#: src/load.c:149
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr "Nome de símbolo vazio para carga: %s"
+
+#: src/load.c:204
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr "A carregar símbolo %s de %s\n"
+
+#: src/load.c:256
+#, c-format
+msgid "The 'load' operation is not supported on this platform."
+msgstr "A operação \"load\" não é suportada nesta plataforma."
+
+#: src/main.c:335
+msgid "Options:\n"
+msgstr "Opções:\n"
+
+#: src/main.c:336
+msgid " -b, -m Ignored for compatibility.\n"
+msgstr " -b, -m ignora para compatibilidade.\n"
+
+#: src/main.c:338
+msgid " -B, --always-make Unconditionally make all targets.\n"
+msgstr " -B, --always-make faz todos os alvos incondicionalmente.\n"
+
+#: src/main.c:340
+msgid ""
+" -C DIRECTORY, --directory=DIRECTORY\n"
+" Change to DIRECTORY before doing anything.\n"
+msgstr ""
+" -C PASTA, --directory=PASTA\n"
+" muda para PASTA antes de qualquer outra "
+"coisa.\n"
+
+#: src/main.c:343
+msgid " -d Print lots of debugging information.\n"
+msgstr " -d imprime muita informação de depuração.\n"
+
+#: src/main.c:345
+msgid ""
+" --debug[=FLAGS] Print various types of debugging information.\n"
+msgstr ""
+" --debug[=BANDEIRAS] imprime vários tipos de informação de "
+"depuração.\n"
+
+#: src/main.c:347
+msgid ""
+" -e, --environment-overrides\n"
+" Environment variables override makefiles.\n"
+msgstr ""
+" -e, --environment-overrides\n"
+" substitui as variáveis de ambiente com os "
+"makefiles.\n"
+
+#: src/main.c:350
+msgid ""
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
+msgstr ""
+" -E CADEIA, --eval=CADEIA Avalia CADEIA como declaração makefile.\n"
+
+#: src/main.c:352
+msgid ""
+" -f FILE, --file=FILE, --makefile=FILE\n"
+" Read FILE as a makefile.\n"
+msgstr ""
+" -f FICHEIRO, --file=FICHEIRO, --makefile=FICHEIRO\n"
+" lê FICHEIRO como makefile.\n"
+
+#: src/main.c:355
+msgid " -h, --help Print this message and exit.\n"
+msgstr " -h, --help mostra esta mensagem e sai.\n"
+
+#: src/main.c:357
+msgid " -i, --ignore-errors Ignore errors from recipes.\n"
+msgstr " -i, --ignore-errors ignora erros das receitas.\n"
+
+#: src/main.c:359
+msgid ""
+" -I DIRECTORY, --include-dir=DIRECTORY\n"
+" Search DIRECTORY for included makefiles.\n"
+msgstr ""
+" -I PASTA, --include-dir=PASTA\n"
+" procura em PASTA por makefiles incluídos.\n"
+
+#: src/main.c:362
+msgid ""
+" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
+"arg.\n"
+msgstr ""
+" -j [N], --jobs[=N] permite N tarefas de uma só vez; tarefas "
+"infinitas sem argumento.\n"
+
+#: src/main.c:364
+msgid ""
+" -k, --keep-going Keep going when some targets can't be made.\n"
+msgstr ""
+" -k, --keep-going continua quando alguns alvos não podem ser "
+"feitos.\n"
+
+#: src/main.c:366
+msgid ""
+" -l [N], --load-average[=N], --max-load[=N]\n"
+" Don't start multiple jobs unless load is below "
+"N.\n"
+msgstr ""
+" -l [N], --load-average[=N], --max-load[=N]\n"
+" não começa múltiplas tarefas a não ser que a "
+"carga seja menor que N.\n"
+
+#: src/main.c:369
+msgid ""
+" -L, --check-symlink-times Use the latest mtime between symlinks and "
+"target.\n"
+msgstr ""
+" -L, --check-symlink-times usa a última mtime entre ligações simbólicas e "
+"alvo.\n"
+
+#: src/main.c:371
+msgid ""
+" -n, --just-print, --dry-run, --recon\n"
+" Don't actually run any recipe; just print "
+"them.\n"
+msgstr ""
+" -n, --just-print, --dry-run, --recon\n"
+" não executa realmente nenhuma receita; só as "
+"imprime.\n"
+
+#: src/main.c:374
+msgid ""
+" -o FILE, --old-file=FILE, --assume-old=FILE\n"
+" Consider FILE to be very old and don't remake "
+"it.\n"
+msgstr ""
+" -o FICHEIRO, --old-file=FICHEIRO, --assume-old=FICHEIRO\n"
+" Considera FICHEIRO muito antigo e não o "
+"refaz.\n"
+
+#: src/main.c:377
+msgid ""
+" -O[TYPE], --output-sync[=TYPE]\n"
+" Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+" -O[TIPO], --output-sync[=TIPO]\n"
+" sincroniza saída de tarefas paralelas por "
+"TIPO.\n"
+
+#: src/main.c:380
+msgid " -p, --print-data-base Print make's internal database.\n"
+msgstr ""
+" -p, --print-data-base imprime a base de dados interna do make.\n"
+
+#: src/main.c:382
+msgid ""
+" -q, --question Run no recipe; exit status says if up to "
+"date.\n"
+msgstr ""
+" -q, --question não executa receitas; estado de saída mostra "
+"actualização.\n"
+
+#: src/main.c:384
+msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
+msgstr ""
+" -r, --no-builtin-rules desactiva as regras implícitas internas.\n"
+
+#: src/main.c:386
+msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
+msgstr ""
+" -R, --no-builtin-variables desactiva as definições de variáveis "
+"internas.\n"
+
+#: src/main.c:388
+msgid " -s, --silent, --quiet Don't echo recipes.\n"
+msgstr " -s, --silent, --quiet não fazer eco das receitas.\n"
+
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" --no-silent Ecoa receitas (desactiva o modo --silent).\n"
+
+#: src/main.c:392
+msgid ""
+" -S, --no-keep-going, --stop\n"
+" Turns off -k.\n"
+msgstr ""
+" -S, --no-keep-going, --stop\n"
+" desliga -k.\n"
+
+#: src/main.c:395
+msgid " -t, --touch Touch targets instead of remaking them.\n"
+msgstr " -t, --touch tocar nos alvos em vez de os refazer.\n"
+
+#: src/main.c:397
+msgid " --trace Print tracing information.\n"
+msgstr " --trace imprime informação de rastreio.\n"
+
+#: src/main.c:399
+msgid ""
+" -v, --version Print the version number of make and exit.\n"
+msgstr " -v, --version mostra informação da versão e sai.\n"
+
+#: src/main.c:401
+msgid " -w, --print-directory Print the current directory.\n"
+msgstr " -w, --print-directory imprime a pasta actual.\n"
+
+#: src/main.c:403
+msgid ""
+" --no-print-directory Turn off -w, even if it was turned on "
+"implicitly.\n"
+msgstr ""
+" --no-print-directory desliga -w, mesmo que estivesse implicitamente "
+"ligado.\n"
+
+#: src/main.c:405
+msgid ""
+" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
+" Consider FILE to be infinitely new.\n"
+msgstr ""
+" -W FICHEIRO, --what-if=FICHEIRO, --new-file=FICHEIRO, --assume-"
+"new=FICHEIRO\n"
+" considea FICHEIRO infinitamente novo.\n"
+
+#: src/main.c:408
+msgid ""
+" --warn-undefined-variables Warn when an undefined variable is "
+"referenced.\n"
+msgstr ""
+" --warn-undefined-variables avisa quando uma variável indefinida é "
+"referenciada.\n"
+
+#: src/main.c:671
+#, c-format
+msgid "empty string invalid as file name"
+msgstr "cadeia vazia inválida como nome de ficheiro"
+
+#: src/main.c:754
+#, c-format
+msgid "unknown debug level specification '%s'"
+msgstr "especificação de nível de depuração \"%s\" desconhecida"
+
+#: src/main.c:794
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr "tipo de output-sync \"%s\" desconhecido"
+
+#: src/main.c:849
+#, c-format
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
+msgstr "%s: apanhado Interrupção/Excepção (código = 0x%lx, endereço = 0x%p)\n"
+
+#: src/main.c:856
+#, c-format
+msgid ""
+"\n"
+"Unhandled exception filter called from program %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = 0x%p\n"
+msgstr ""
+"\n"
+"Filtro de excepção não gerido chamado do programa %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = 0x%p\n"
+
+#: src/main.c:864
+#, c-format
+msgid "Access violation: write operation at address 0x%p\n"
+msgstr "Violação de acesso: operação de escrita no endereço 0x%p\n"
+
+#: src/main.c:865
+#, c-format
+msgid "Access violation: read operation at address 0x%p\n"
+msgstr "Violação de acesso: operação de leitura no endereço 0x%p\n"
+
+#: src/main.c:941 src/main.c:956
+#, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
+msgstr "find_and_set_shell() a definir default_shell = %s\n"
+
+#: src/main.c:1009
+#, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
+msgstr "caminho de procura find_and_set_shell() define default_shell = %s\n"
+
+#: src/main.c:1609
+#, c-format
+msgid ""
+"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
+msgstr ""
+"aviso: jobserver indisponível: a usar -j1. Adicionar \"+\" à regra-mãe make."
+
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
+msgstr "aviso: -j%d forçado em submake: a repor modo jobserver."
+
+#: src/main.c:1781
+#, c-format
+msgid "Makefile from standard input specified twice."
+msgstr "Makefile da entrada padrão especificado duas vezes."
+
+#: src/main.c:1819 src/vmsjobs.c:1248
+msgid "fopen (temporary file)"
+msgstr "fopen (ficheiro temporário)"
+
+#: src/main.c:1825
+msgid "fwrite (temporary file)"
+msgstr "fwrite (ficheiro temporário)"
+
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr "aviso: -j%d forçado em makefile: a repor modo jobserver."
+
+#: src/main.c:2068
+#, c-format
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Não são suportadas tarefas paralelas (-j) nesta platforma."
+
+#: src/main.c:2069
+#, c-format
+msgid "Resetting to single job (-j1) mode."
+msgstr "A repor modo de tarefa única (-j1)."
+
+#: src/main.c:2109
+#, c-format
+msgid "Symbolic links not supported: disabling -L."
+msgstr "Não são suportadas ligações simbólicas: a desactivar -L"
+
+#: src/main.c:2190
+#, c-format
+msgid "Updating makefiles....\n"
+msgstr "A actualizar makefiles....\n"
+
+#: src/main.c:2226
+#, c-format
+msgid "Makefile '%s' might loop; not remaking it.\n"
+msgstr "Makefile \"%s\" pode entrar em ciclo; não será refeito.\n"
+
+#: src/main.c:2303
+#, c-format
+msgid "Failed to remake makefile '%s'."
+msgstr "Falha ao refazer makefile \"%s\"."
+
+#: src/main.c:2323
+#, c-format
+msgid "Included makefile '%s' was not found."
+msgstr "makefile \"%s\" incluído não encontrado."
+
+#: src/main.c:2328
+#, c-format
+msgid "Makefile '%s' was not found"
+msgstr "Makefile \"%s\" não encontrado"
+
+#: src/main.c:2394
+#, c-format
+msgid "Couldn't change back to original directory."
+msgstr "Impossível voltar à pasta original."
+
+#: src/main.c:2402
+#, c-format
+msgid "Re-executing[%u]:"
+msgstr "A re-executar[%u]:"
+
+#: src/main.c:2522
+msgid "unlink (temporary file): "
+msgstr "desligar (ficheiro temporário): "
+
+#: src/main.c:2555
+#, c-format
+msgid ".DEFAULT_GOAL contains more than one target"
+msgstr ".DEFAULT_GOAL contém mais de um alvo"
+
+#: src/main.c:2579
+#, c-format
+msgid "No targets"
+msgstr "Sem alvos"
+
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Sem alvos especificados e sem makefile"
+
+#: src/main.c:2586
+#, c-format
+msgid "Updating goal targets....\n"
+msgstr "A actualizar alvos objectivo...\n"
+
+#: src/main.c:2610
+#, c-format
+msgid "warning: Clock skew detected. Your build may be incomplete."
+msgstr "aviso: detectado desvio do relógio. A build pode estar incompleta."
+
+#: src/main.c:2804
+#, c-format
+msgid "Usage: %s [options] [target] ...\n"
+msgstr "Uso: %s [OPÇÕES] [ALVO] ...\n"
+
+#: src/main.c:2810
+#, c-format
+msgid ""
+"\n"
+"This program built for %s\n"
+msgstr ""
+"\n"
+"Este programa construído para %s\n"
+
+#: src/main.c:2812
+#, c-format
+msgid ""
+"\n"
+"This program built for %s (%s)\n"
+msgstr ""
+"\n"
+"Este programa construído para %s (%s)\n"
+
+#: src/main.c:2815
+#, c-format
+msgid "Report bugs to <bug-make@gnu.org>\n"
+msgstr "Reportar erros em <bug-make@gnu.org>\n"
+
+#: src/main.c:2901
+#, c-format
+msgid "the '%s%s' option requires a non-empty string argument"
+msgstr "a opção \"%s%s\" requer um argumento de cadeia não-vazia"
+
+#: src/main.c:2965
+#, c-format
+msgid "the '-%c' option requires a positive integer argument"
+msgstr "a opção \"-%c\" requer um argumento inteiro positivo"
+
+#: src/main.c:3363
+#, c-format
+msgid "%sBuilt for %s\n"
+msgstr "%sConstruído para %s\n"
+
+#: src/main.c:3365
+#, c-format
+msgid "%sBuilt for %s (%s)\n"
+msgstr "%sConstruído para %s (%s)\n"
+
+#: src/main.c:3376
+#, c-format
+msgid ""
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"%sLicença GPLv3+: GNU GPL versão 3 ou posterior <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sIsto é um programa grátis: pode alterá-lo e redistribuí-lo.\n"
+"%sNÃO Hà QUALQUER GARANTIA, até ao limite da Lei.\n"
+
+#: src/main.c:3397
+#, c-format
+msgid ""
+"\n"
+"# Make data base, printed on %s"
+msgstr ""
+"\n"
+"# Base de dados make, impressa em %s"
+
+#: src/main.c:3407
+#, c-format
+msgid ""
+"\n"
+"# Finished Make data base on %s\n"
+msgstr ""
+"\n"
+"# Base de dados make terminada em %s\n"
+
+#: src/misc.c:643
+#, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s: utilizador %lu (real %lu), grupo %lu (real %lu)\n"
+
+#: src/misc.c:664
+msgid "Initialized access"
+msgstr "Acesso inicializado"
+
+#: src/misc.c:743
+msgid "User access"
+msgstr "Acesso de utilizador"
+
+#: src/misc.c:791
+msgid "Make access"
+msgstr "Acesso make"
+
+#: src/misc.c:825
+msgid "Child access"
+msgstr "Acesso filho"
+
+#: src/output.c:97
+#, c-format
+msgid "%s: Entering an unknown directory\n"
+msgstr "%s: a entrar em pasta desconhecida\n"
+
+#: src/output.c:99
+#, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "%s: a sair duma pasta desconhecida\n"
+
+#: src/output.c:102
+#, c-format
+msgid "%s: Entering directory '%s'\n"
+msgstr "%s: a entrar na pasta \"%s\"\n"
+
+#: src/output.c:104
+#, c-format
+msgid "%s: Leaving directory '%s'\n"
+msgstr "%s: a sair da pasta \"%s\"\n"
+
+#: src/output.c:108
+#, c-format
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]: a entrar em pasta desconhecida\n"
+
+#: src/output.c:110
+#, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]: a sair duma pasta desconhecida\n"
+
+#: src/output.c:113
+#, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr "%s[%u]: a entrar na pasta \"%s\"\n"
+
+#: src/output.c:115
+#, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
+msgstr "%s[%u]: a sair da pasta \"%s\"\n"
+
+#: src/output.c:442 src/output.c:444
+#, c-format
+msgid "write error: stdout"
+msgstr "erro de escrita: stdout"
+
+#: src/output.c:624
+msgid ". Stop.\n"
+msgstr ". Parar.\n"
+
+#: src/output.c:658
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: src/output.c:667
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr "-O[TIPO] (--output-sync[=TIPO]) não está configurado para esta versão."
+
+#: src/posixos.c:90
+msgid "creating jobs pipe"
+msgstr "a criar túnel de tarefas"
+
+#: src/posixos.c:98 src/posixos.c:251
+msgid "duping jobs pipe"
+msgstr "a enganar túnel de tarefas"
+
+#: src/posixos.c:104
+msgid "init jobserver pipe"
+msgstr "a iniciar túnel de jobserver"
+
+#: src/posixos.c:119
+#, c-format
+msgid "internal error: invalid --jobserver-auth string '%s'"
+msgstr "erro interno: cadeia --jobserver-auth \"%s\" inválida"
+
+#: src/posixos.c:122
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr "Cliente jobserver (fds %d,%d)\n"
+
+#: src/posixos.c:138
+msgid "jobserver pipeline"
+msgstr "Túnel jobserver"
+
+#: src/posixos.c:186
+msgid "write jobserver"
+msgstr "escrever jobserver"
+
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr "encerramento de jobserver"
+
+#: src/posixos.c:303
+msgid "pselect jobs pipe"
+msgstr "pselect túnel de tarefas"
+
+#: src/posixos.c:319 src/posixos.c:433
+msgid "read jobs pipe"
+msgstr "ler túnel de tarefas"
+
+#: src/read.c:181
+#, c-format
+msgid "Reading makefiles...\n"
+msgstr "A ler makefiles...\n"
+
+#: src/read.c:336
+#, c-format
+msgid "Reading makefile '%s'"
+msgstr "A ler makefile \"%s\""
+
+#: src/read.c:338
+#, c-format
+msgid " (no default goal)"
+msgstr " (sem objectivo predefinido)"
+
+#: src/read.c:340
+#, c-format
+msgid " (search path)"
+msgstr " (caminho de procura)"
+
+#: src/read.c:342
+#, c-format
+msgid " (don't care)"
+msgstr " (não importa)"
+
+#: src/read.c:344
+#, c-format
+msgid " (no ~ expansion)"
+msgstr " (sem expansão ~)"
+
+#: src/read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr "A slatar UTF-8 BOM em makefile \"%s\"\n"
+
+#: src/read.c:658
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr "A saltar UTF-8 BOM no buffer makefile\n"
+
+#: src/read.c:787
+#, c-format
+msgid "invalid syntax in conditional"
+msgstr "sintaxe inválida em condicional"
+
+#: src/read.c:960
+#, c-format
+msgid "%s: failed to load"
+msgstr "%s: falha ao carregar"
+
+#: src/read.c:986
+#, c-format
+msgid "recipe commences before first target"
+msgstr "a receita começa antes do primeiro alvo"
+
+#: src/read.c:1035
+#, c-format
+msgid "missing rule before recipe"
+msgstr "regra em falta antes da receita"
+
+#: src/read.c:1136
+#, c-format
+msgid "missing separator (did you mean TAB instead of 8 spaces?)"
+msgstr "separador em falta (queria usar TAB em vez de 8 espaços?)"
+
+#: src/read.c:1138
+#, c-format
+msgid "missing separator"
+msgstr "separador em falta"
+
+#: src/read.c:1283
+#, c-format
+msgid "missing target pattern"
+msgstr "padrão de alvo em falta"
+
+#: src/read.c:1285
+#, c-format
+msgid "multiple target patterns"
+msgstr "múltiplos padrões de alvo"
+
+#: src/read.c:1289
+#, c-format
+msgid "target pattern contains no '%%'"
+msgstr "o padrão de alvo não contém \"%%\""
+
+#: src/read.c:1404
+#, c-format
+msgid "missing 'endif'"
+msgstr "\"endif\" em falta"
+
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
+msgid "empty variable name"
+msgstr "nome de variável vazio"
+
+#: src/read.c:1478
+#, c-format
+msgid "extraneous text after 'define' directive"
+msgstr "texto estranho após directiva \"define\""
+
+#: src/read.c:1503
+#, c-format
+msgid "missing 'endef', unterminated 'define'"
+msgstr "\"endef\" em falta, \"define\" não terminado"
+
+#: src/read.c:1531
+#, c-format
+msgid "extraneous text after 'endef' directive"
+msgstr "texto estranho após directiva \"endef\""
+
+#: src/read.c:1603
+#, c-format
+msgid "extraneous text after '%s' directive"
+msgstr "texto estranho após directiva \"%s\""
+
+#: src/read.c:1604
+#, c-format
+msgid "extraneous '%s'"
+msgstr "\"%s\" estranho"
+
+#: src/read.c:1632
+#, c-format
+msgid "only one 'else' per conditional"
+msgstr "só um \"else\" por condicional"
+
+#: src/read.c:1908
+#, c-format
+msgid "Malformed target-specific variable definition"
+msgstr "Definição de variável específica do alvo mal formada"
+
+#: src/read.c:1968
+#, c-format
+msgid "prerequisites cannot be defined in recipes"
+msgstr "os pré-requisitos não podem ser definidos em receitas"
+
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr "alvos agrupados têm de fornecer uma receita"
+
+#: src/read.c:2029
+#, c-format
+msgid "mixed implicit and static pattern rules"
+msgstr "regras de padrão implícitas e estáticas misturadas"
+
+#: src/read.c:2052
+#, c-format
+msgid "mixed implicit and normal rules"
+msgstr "regras de padrão implícitas e normais misturadas"
+
+#: src/read.c:2107
+#, c-format
+msgid "target '%s' doesn't match the target pattern"
+msgstr "alvo \"%s\" não corresponde ao alvo padrão"
+
+#: src/read.c:2122 src/read.c:2168
+#, c-format
+msgid "target file '%s' has both : and :: entries"
+msgstr "ficheiro alvo \"%s\" tem ambas as entradas : e ::"
+
+#: src/read.c:2128
+#, c-format
+msgid "target '%s' given more than once in the same rule"
+msgstr "alvo \"%s\" dado mais de uma vez na mesma regra"
+
+#: src/read.c:2138
+#, c-format
+msgid "warning: overriding recipe for target '%s'"
+msgstr "aviso: a sobrepor receita para o alvo \"%s\""
+
+#: src/read.c:2141
+#, c-format
+msgid "warning: ignoring old recipe for target '%s'"
+msgstr "aviso: a ignorar receita antiga para o alvo \"%s\""
+
+#: src/read.c:2254
+#, c-format
+msgid "*** mixed implicit and normal rules: deprecated syntax"
+msgstr "*** regras implícitas e normais misturadas: sintaxe obsoleta"
+
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "aviso: a sobrepor participação no grupo para o alvo \"%s\""
+
+#: src/read.c:2636
+#, c-format
+msgid "warning: NUL character seen; rest of line ignored"
+msgstr "aviso: visto carácter NUL; resto da linha ignorado"
+
+#: src/remake.c:226
+#, c-format
+msgid "Nothing to be done for '%s'."
+msgstr "Nada a fazer para \"%s\"."
+
+#: src/remake.c:227
+#, c-format
+msgid "'%s' is up to date."
+msgstr "\"%s\" está actualizado."
+
+#: src/remake.c:323
+#, c-format
+msgid "Pruning file '%s'.\n"
+msgstr "A podar ficheiro \"%s\".\n"
+
+#: src/remake.c:389
+#, c-format
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
+msgstr "%sSem regra para fazer o alvo \"%s\", necessária a \"%s\"%s"
+
+#: src/remake.c:399
+#, c-format
+msgid "%sNo rule to make target '%s'%s"
+msgstr "%sSem regra para fazer o alvo \"%s\"%s"
+
+#: src/remake.c:425
+#, c-format
+msgid "Considering target file '%s'.\n"
+msgstr "A considerar o ficheiro alvo \"%s\"\n"
+
+#: src/remake.c:432
+#, c-format
+msgid "Recently tried and failed to update file '%s'.\n"
+msgstr "Tentativa recente falhada de actualizar o ficheiro \"%s\".\n"
+
+#: src/remake.c:444
+#, c-format
+msgid "File '%s' was considered already.\n"
+msgstr "Ficheiro \"%s\" já considerado.\n"
+
+#: src/remake.c:454
+#, c-format
+msgid "Still updating file '%s'.\n"
+msgstr "Ainda a actualizar o ficheiro \"%s\".\n"
+
+#: src/remake.c:457
+#, c-format
+msgid "Finished updating file '%s'.\n"
+msgstr "Terminou a actualização do ficheiro \"%s\".\n"
+
+#: src/remake.c:486
+#, c-format
+msgid "File '%s' does not exist.\n"
+msgstr "O ficheiro \"%s\" não existe.\n"
+
+#: src/remake.c:494
+#, c-format
+msgid ""
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
+msgstr ""
+"*** Aviso: o ficheiro \"%s\" .LOW_RESOLUTION_TIME tem um carimbo de alta "
+"resolução"
+
+#: src/remake.c:507 src/remake.c:1039
+#, c-format
+msgid "Found an implicit rule for '%s'.\n"
+msgstr "Encontrada uma regra implícita para \"%s\".\n"
+
+#: src/remake.c:509 src/remake.c:1041
+#, c-format
+msgid "No implicit rule found for '%s'.\n"
+msgstr "Sem regra implícita para \"%s\".\n"
+
+#: src/remake.c:515
+#, c-format
+msgid "Using default recipe for '%s'.\n"
+msgstr "A usar receita predefinida para \"%s\".\n"
+
+#: src/remake.c:549 src/remake.c:1088
+#, c-format
+msgid "Circular %s <- %s dependency dropped."
+msgstr "Dependência %s <- %s circular abandonada."
+
+#: src/remake.c:674
+#, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
+msgstr "Terminados os pré-requisitos do ficheiro alvo \"%s\",\n"
+
+#: src/remake.c:680
+#, c-format
+msgid "The prerequisites of '%s' are being made.\n"
+msgstr "Estão-se a fazer os pré-requisitos de \"%s\".\n"
+
+#: src/remake.c:694
+#, c-format
+msgid "Giving up on target file '%s'.\n"
+msgstr "A desistir do ficheiro alvo \"%s\".\n"
+
+#: src/remake.c:699
+#, c-format
+msgid "Target '%s' not remade because of errors."
+msgstr "Alvo \"%s\" não refeito devido a erros."
+
+#: src/remake.c:751
+#, c-format
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
+msgstr "Pré-requisito \"%s\" é order-only para o alvo \"%s\".\n"
+
+#: src/remake.c:756
+#, c-format
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
+msgstr "Pré-requisito \"%s\" do alvo \"%s\" não existe.\n"
+
+#: src/remake.c:761
+#, c-format
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
+msgstr "Pré-requisito \"%s\" é mais novo que o alvo \"%s\".\n"
+
+#: src/remake.c:764
+#, c-format
+msgid "Prerequisite '%s' is older than target '%s'.\n"
+msgstr "Pré-requisito \"%s\" é mais velho que o alvo \"%s\".\n"
+
+#: src/remake.c:782
+#, c-format
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
+msgstr "O alvo \"%s\" é dois-pontos duplo e não tem pré-requisitos.\n"
+
+#: src/remake.c:789
+#, c-format
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
+msgstr "Sem receita para \"%s\" e sem pré-requisitos realmente alterados.\n"
+
+#: src/remake.c:794
+#, c-format
+msgid "Making '%s' due to always-make flag.\n"
+msgstr "A fazer \"%s\" devido a bandeira always-make.\n"
+
+#: src/remake.c:802
+#, c-format
+msgid "No need to remake target '%s'"
+msgstr "Sem necessidade de refazer o alvo \"%s\""
+
+#: src/remake.c:804
+#, c-format
+msgid "; using VPATH name '%s'"
+msgstr "; a usar nome VPATH \"%s\""
+
+#: src/remake.c:824
+#, c-format
+msgid "Must remake target '%s'.\n"
+msgstr "Necessário refazer o alvo \"%s\".\n"
+
+#: src/remake.c:830
+#, c-format
+msgid " Ignoring VPATH name '%s'.\n"
+msgstr " A ignorar nome VPATH \"%s\".\n"
+
+#: src/remake.c:839
+#, c-format
+msgid "Recipe of '%s' is being run.\n"
+msgstr "Receita de \"%s\" em execução.\n"
+
+#: src/remake.c:846
+#, c-format
+msgid "Failed to remake target file '%s'.\n"
+msgstr "Falha ao refazer ficheiro alvo \"%s\".\n"
+
+#: src/remake.c:849
+#, c-format
+msgid "Successfully remade target file '%s'.\n"
+msgstr "Ficheiro alvo \"%s\" refeito com sucesso.\n"
+
+#: src/remake.c:852
+#, c-format
+msgid "Target file '%s' needs to be remade under -q.\n"
+msgstr "O ficheiro alvo \"%s\" tem de ser refeito sob -q.\n"
+
+#: src/remake.c:1047
+#, c-format
+msgid "Using default commands for '%s'.\n"
+msgstr "A usar comandos predefinidos para \"%s\".\n"
+
+#: src/remake.c:1422
+#, c-format
+msgid "Warning: File '%s' has modification time %s s in the future"
+msgstr "Aviso: o ficheiro \"%s\" tem a hora de modificação %s s no futuro"
+
+#: src/remake.c:1662
+#, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
+msgstr "elemento .LIBPATTERNS \"%s\" não é um padrão"
+
+#: src/remote-cstms.c:122
+#, c-format
+msgid "Customs won't export: %s\n"
+msgstr "A alfândega não exportará: %s\n"
+
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
+msgid ""
+"\n"
+"# Implicit Rules"
+msgstr ""
+"\n"
+"# Regras implícitas"
+
+#: src/rule.c:545
+msgid ""
+"\n"
+"# No implicit rules."
+msgstr ""
+"\n"
+"# Sem regras implícitas."
+
+#: src/rule.c:548
+#, c-format
+msgid ""
+"\n"
+"# %u implicit rules, %u (%.1f%%) terminal."
+msgstr ""
+"\n"
+"# %u regras implícitas, %u (%.1f%%) terminal."
+
+#: src/rule.c:557
+#, c-format
+msgid "BUG: num_pattern_rules is wrong! %u != %u"
+msgstr "ERRO: num_pattern_rules está errado! %u != %u"
+
+#: src/signame.c:84
+msgid "unknown signal"
+msgstr "sinal desconhecido"
+
+#: src/signame.c:92
+msgid "Hangup"
+msgstr "Desligar"
+
+#: src/signame.c:95
+msgid "Interrupt"
+msgstr "Interromper"
+
+#: src/signame.c:98
+msgid "Quit"
+msgstr "Sair"
+
+#: src/signame.c:101
+msgid "Illegal Instruction"
+msgstr "Instrução ilegal"
+
+#: src/signame.c:104
+msgid "Trace/breakpoint trap"
+msgstr "Armadilha de rastreio/ponto de quebra"
+
+#: src/signame.c:109
+msgid "Aborted"
+msgstr "Abortado"
+
+#: src/signame.c:112
+msgid "IOT trap"
+msgstr "Armadilha IOT"
+
+#: src/signame.c:115
+msgid "EMT trap"
+msgstr "Armadilha EMT"
+
+#: src/signame.c:118
+msgid "Floating point exception"
+msgstr "Excepção de vírgula flutuante"
+
+#: src/signame.c:121
+msgid "Killed"
+msgstr "Morto"
+
+#: src/signame.c:124
+msgid "Bus error"
+msgstr "Erro de bus"
+
+#: src/signame.c:127
+msgid "Segmentation fault"
+msgstr "Falta de segmentação"
+
+#: src/signame.c:130
+msgid "Bad system call"
+msgstr "Má chamada de sistema"
+
+#: src/signame.c:133
+msgid "Broken pipe"
+msgstr "Túnel quebrado"
+
+#: src/signame.c:136
+msgid "Alarm clock"
+msgstr "Alarme"
+
+#: src/signame.c:139
+msgid "Terminated"
+msgstr "Terminado"
+
+#: src/signame.c:142
+msgid "User defined signal 1"
+msgstr "Sinal 1 definido pelo utilizador"
+
+#: src/signame.c:145
+msgid "User defined signal 2"
+msgstr "Sinal 2 definido pelo utilizador"
+
+#: src/signame.c:150 src/signame.c:153
+msgid "Child exited"
+msgstr "Filho saiu"
+
+#: src/signame.c:156
+msgid "Power failure"
+msgstr "Falha de energia"
+
+#: src/signame.c:159
+msgid "Stopped"
+msgstr "Parado"
+
+#: src/signame.c:162
+msgid "Stopped (tty input)"
+msgstr "Parado (entrada tty)"
+
+#: src/signame.c:165
+msgid "Stopped (tty output)"
+msgstr "Parado (saída tty)"
+
+#: src/signame.c:168
+msgid "Stopped (signal)"
+msgstr "Parado (sinal)"
+
+#: src/signame.c:171
+msgid "CPU time limit exceeded"
+msgstr "Excedido limite de tempo da CPU"
+
+#: src/signame.c:174
+msgid "File size limit exceeded"
+msgstr "Excedido limite de tamanho do ficheiro"
+
+#: src/signame.c:177
+msgid "Virtual timer expired"
+msgstr "Temporizador virtual expirado"
+
+#: src/signame.c:180
+msgid "Profiling timer expired"
+msgstr "Temporizador de perfil expirado"
+
+#: src/signame.c:186
+msgid "Window changed"
+msgstr "Janela alterada"
+
+#: src/signame.c:189
+msgid "Continued"
+msgstr "Continuado"
+
+#: src/signame.c:192
+msgid "Urgent I/O condition"
+msgstr "Condição I/O urgente"
+
+#: src/signame.c:199 src/signame.c:208
+msgid "I/O possible"
+msgstr "Possível I/O"
+
+#: src/signame.c:202
+msgid "SIGWIND"
+msgstr "SIGWIND"
+
+#: src/signame.c:205
+msgid "SIGPHONE"
+msgstr "SIGPHONE"
+
+#: src/signame.c:211
+msgid "Resource lost"
+msgstr "Recurso perdido"
+
+#: src/signame.c:214
+msgid "Danger signal"
+msgstr "Sinal de perigo"
+
+#: src/signame.c:217
+msgid "Information request"
+msgstr "Pedido de informação"
+
+#: src/signame.c:220
+msgid "Floating point co-processor not available"
+msgstr "Co-processador de vírgula flutuante não disponível"
+
+#: src/strcache.c:274
+#, c-format
+msgid ""
+"\n"
+"%s No strcache buffers\n"
+msgstr ""
+"\n"
+"%s Sem buffers strcache\n"
+
+#: src/strcache.c:304
+#, c-format
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
+msgstr ""
+"\n"
+"%s buffers strcache: %lu (%lu) / cadeias = %lu / capacidade = %lu B / média "
+"= %lu B\n"
+
+#: src/strcache.c:308
+#, c-format
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
+msgstr ""
+"%s buffer actual: tamanho = %hu B / usado = %hu B / total = %hu / média = %u "
+"B\n"
+
+#: src/strcache.c:319
+#, c-format
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
+msgstr "%s outro usado: tamanho = %lu B / total = %lu / média = %lu B\n"
+
+#: src/strcache.c:322
+#, c-format
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
+msgstr ""
+"%s outro livre: tamanho = %lu B / máximo = %lu B / mínimo = %lu B / média = "
+"%hu B\n"
+
+#: src/strcache.c:326
+#, c-format
+msgid ""
+"\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+"\n"
+"%s desempenho strcache: procuras = %lu / taxa de sucesso = %lu%%\n"
+
+#: src/strcache.c:328
+msgid ""
+"# hash-table stats:\n"
+"# "
+msgstr ""
+"# estatísticas da hash-table:\n"
+"# "
+
+#: src/variable.c:1653
+msgid "automatic"
+msgstr "automático"
+
+#: src/variable.c:1656
+msgid "default"
+msgstr "predefinido"
+
+#: src/variable.c:1659
+msgid "environment"
+msgstr "ambiente"
+
+#: src/variable.c:1662
+msgid "makefile"
+msgstr "makefile"
+
+#: src/variable.c:1665
+msgid "environment under -e"
+msgstr "ambiente sob -e"
+
+#: src/variable.c:1668
+msgid "command line"
+msgstr "linha de comandos"
+
+#: src/variable.c:1671
+msgid "'override' directive"
+msgstr "directiva \"override\""
+
+#: src/variable.c:1682
+#, c-format
+msgid " (from '%s', line %lu)"
+msgstr " (de \"%s\", linha %lu)"
+
+#: src/variable.c:1745
+msgid "# variable set hash-table stats:\n"
+msgstr "# conjunto de variáveis de estatísticas hash-table:\n"
+
+#: src/variable.c:1756
+msgid ""
+"\n"
+"# Variables\n"
+msgstr ""
+"\n"
+"# Variáveis\n"
+
+#: src/variable.c:1760
+msgid ""
+"\n"
+"# Pattern-specific Variable Values"
+msgstr ""
+"\n"
+"# Valores de variáveis específicas de padrão"
+
+#: src/variable.c:1774
+msgid ""
+"\n"
+"# No pattern-specific variable values."
+msgstr ""
+"\n"
+"# Sem valores de variáveis específicas de padrão"
+
+#: src/variable.c:1776
+#, c-format
+msgid ""
+"\n"
+"# %u pattern-specific variable values"
+msgstr ""
+"\n"
+"# %u valores de variáveis específicas de padrão"
+
+#: src/variable.h:229
+#, c-format
+msgid "warning: undefined variable '%.*s'"
+msgstr "aviso: variável \"%.*s\" indefinida"
+
+#: src/vmsfunctions.c:91
+#, c-format
+msgid "sys$search() failed with %d\n"
+msgstr "sys$search() falhou com %d\n"
+
+#: src/vmsjobs.c:244
+#, c-format
+msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
+msgstr "-aviso, poderá ter de reactivar a gestão CTRL-Y a partir de DCL.\n"
+
+#: src/vmsjobs.c:681
+#, c-format
+msgid "BUILTIN CD %s\n"
+msgstr "CD INTERNO %s\n"
+
+#: src/vmsjobs.c:1224
+#, c-format
+msgid "DCL: %s\n"
+msgstr "DCL: %s\n"
+
+#: src/vmsjobs.c:1284
+#, c-format
+msgid "Append output to %s\n"
+msgstr "Anexar saída a %s\n"
+
+#: src/vmsjobs.c:1309
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr "Anexar %.*s e limpar\n"
+
+#: src/vmsjobs.c:1322
+#, c-format
+msgid "Executing %s instead\n"
+msgstr "A executar antes %s\n"
+
+#: src/vpath.c:603
+msgid ""
+"\n"
+"# VPATH Search Paths\n"
+msgstr ""
+"\n"
+"# Caminhos de procura VPATH\n"
+
+#: src/vpath.c:620
+msgid "# No 'vpath' search paths."
+msgstr "# Sem caminhos de procura \"vpath\"."
+
+#: src/vpath.c:622
+#, c-format
+msgid ""
+"\n"
+"# %u 'vpath' search paths.\n"
+msgstr ""
+"\n"
+"# Caminhos de procura %u \"vpath\".\n"
+
+#: src/vpath.c:625
+msgid ""
+"\n"
+"# No general ('VPATH' variable) search path."
+msgstr ""
+"\n"
+"# Sem caminho de procura geral (variável \"VPATH\")."
+
+#: src/vpath.c:631
+msgid ""
+"\n"
+"# General ('VPATH' variable) search path:\n"
+"# "
+msgstr ""
+"\n"
+"# Caminho de procura geral (variável \"VPATH\")."
+
+#: src/w32/w32os.c:44
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr "Ranhuras jobserver limitadas a %d\n"
+
+#: src/w32/w32os.c:60
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr "a criar semáforo jobserver: (erro %ld: %s)"
+
+#: src/w32/w32os.c:79
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr "erro interno: impossível abrir semáforo jobserver '%s': (erro %ld: %s)"
+
+#: src/w32/w32os.c:82
+#, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr "Cliente jobserver (semáforo %s)\n"
+
+#: src/w32/w32os.c:123
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr "libertar semáforo jobserver: (erro %ld: %s)"
+
+#: src/w32/w32os.c:194
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr "espera de semáforo ou processo filho: (erro %ld: %s)"
+
+#~ msgid "%s: %s: Command not found\n"
+#~ msgstr "%s: %s: comando não encontrado\n"
+
+#~ msgid "%s[%u]: %s: Command not found\n"
+#~ msgstr "%s[%u]: %s: comando não encontrado\n"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s: programa de shell não encontrado"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s vai suspender por 30 segundos..."
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "feito sleep(30). A continuar.\n"
+
+#~ msgid "Unknown error %d"
+#~ msgstr "Erro desconhecido %d"
+
+#~ msgid "Warning: File '%s' has modification time in the future"
+#~ msgstr "Aviso: o ficheiro \"%s\" tem a hora de modificação no futuro"
+
+#~ msgid " terminal."
+#~ msgstr " terminal."
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index dbfc309..82195da 100644
--- a/po/pt_BR.gmo
+++ b/po/pt_BR.gmo
Binary files differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
index be0651c..fcc62a4 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -1,359 +1,358 @@
-# Mensagem do GNU make em Português (Brasil)
+# Mensagem do GNU make em Português (Brasil)
# Copyright (C) 2000 Free Software Foundation, Inc.
#
# This file is distributed under the same license as the make package.
-# Fábio Henrique F. Silva <fabiohfs@mail.com>, 2000.
-# Fábio Henrique F. Silva <fabiohfs@netscape.net>, 2008, 2009, 2010, 2011, 2012, 2013.
+# Fábio Henrique F. Silva <fabiohfs@mail.com>, 2000.
+# Fábio Henrique F. Silva <fabiohfs@netscape.net>, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016
+# Fábio Henrique F. Silva <fabiohfs@netscape.net>, 2017, 2018, 2019
#
msgid ""
msgstr ""
-"Project-Id-Version: GNU make 3.82\n"
+"Project-Id-Version: GNU make 4.2.91\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
-"PO-Revision-Date: 2013-01-09 23:04-0300\n"
-"Last-Translator: Fábio Henrique F. Silva <fabiohfs@netscape.net>\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2019-10-04 22:31-0300\n"
+"Last-Translator: Fábio Henrique F. Silva <fabiohfs@netscape.net>\n"
"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
"net>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 1.5.4\n"
-"X-Poedit-SourceCharset: iso-8859-1\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Poedit 2.0.6\n"
-# Caso você encontre alguma mensagem que não está bem traduzida, por
-# favor me informe dando sua sugestão.
-#: ar.c:46
-#, fuzzy, c-format
+# Caso você encontre alguma mensagem que não está bem traduzida, por
+# favor me informe dando sua sugestão.
+#: src/ar.c:46
+#, c-format
msgid "attempt to use unsupported feature: '%s'"
-msgstr "característica não suportada: `%s'"
+msgstr "característica não suportada: '%s' "
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
-msgstr "o touch não está disponível no VMS"
+msgstr "o touch não está disponível no VMS"
-#: ar.c:147
-#, fuzzy, c-format
+#: src/ar.c:147
+#, c-format
msgid "touch: Archive '%s' does not exist"
-msgstr "touch: Arquivo `%s' não existe"
+msgstr "touch: Arquivo '%s' não existe"
-#: ar.c:150
-#, fuzzy, c-format
+#: src/ar.c:150
+#, c-format
msgid "touch: '%s' is not a valid archive"
-msgstr "touch: `%s' não é um arquivo válido"
+msgstr "touch: '%s' não é um arquivo válido"
-#: ar.c:157
-#, fuzzy, c-format
+#: src/ar.c:157
+#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
-msgstr "touch: O membro `%s' não existe em `%s'"
+msgstr "touch: O membro '%s' não existe em '%s'"
-#: ar.c:164
-#, fuzzy, c-format
+#: src/ar.c:164
+#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
-msgstr "touch: O ar_member_touch retornou um código de erro inválido em `%s'"
+msgstr "touch: O ar_member_touch retornou um código de erro inválido em '%s'"
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
-msgstr "o lbr$set_module() falhou ao obter informações do módulo, estado = %d"
+msgstr "o lbr$set_module() falhou ao obter informações do módulo, estado = %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "lbr$ini_control() falhou com estado = %d"
-#: arscan.c:261
-#, fuzzy, c-format
+#: src/arscan.c:261
+#, c-format
msgid "unable to open library '%s' to lookup member status %d"
-msgstr "erro na abertura da biblioteca `%s' para localizar o membro `%s'"
+msgstr ""
+"erro na abertura da biblioteca '%s' para localizar o status do membro %d"
-#: arscan.c:965
-#, fuzzy, c-format
+#: src/arscan.c:944
+#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
-msgstr "Membro `%s'%s: %ld bytes de %ld (%ld).\n"
+msgstr "Membro '%s'%s: %ld bytes de %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (o nome pode estar truncado)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Data %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, modo = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
-msgstr ""
+msgstr "O comando tem muitas linhas (%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** Quebra.\n"
-#: commands.c:627
-#, fuzzy, c-format
+#: src/commands.c:628
+#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
-msgstr "** [%s] O arquivo membro `%s' pode ser falso. Não foi apagado."
+msgstr "** [%s] O arquivo membro '%s' pode ser falso. Não foi apagado."
-#: commands.c:631
-#, fuzzy, c-format
+#: src/commands.c:632
+#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
-msgstr "** O arquivo membro `%s' pode ser falso. Não foi apagado."
+msgstr "** O arquivo membro '%s' pode ser falso. Não foi apagado."
-#: commands.c:645
-#, fuzzy, c-format
+#: src/commands.c:646
+#, c-format
msgid "*** [%s] Deleting file '%s'"
-msgstr "** [%s] Apagando arquivo `%s'"
+msgstr "** [%s] Apagando arquivo '%s'"
-#: commands.c:647
-#, fuzzy, c-format
+#: src/commands.c:648
+#, c-format
msgid "*** Deleting file '%s'"
-msgstr "** Apagando arquivo `%s'"
+msgstr "** Apagando arquivo '%s'"
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
msgstr "# comandos a executar"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (embutido):"
-#: commands.c:688
-#, fuzzy, c-format
+#: src/commands.c:689
+#, c-format
msgid " (from '%s', line %lu):\n"
-msgstr " (de `%s', linha %lu):\n"
+msgstr " (de '%s', linha %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
msgstr ""
"\n"
-"# Diretórios\n"
+"# Diretórios\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
-msgstr "# %s: não pôde ser estabelecido.\n"
+msgstr "# %s: não pôde ser estabelecido.\n"
-#: dir.c:1085
-#, fuzzy
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
-msgstr "# %s (chave %s, mtime %d): não pôde ser aberto.\n"
+msgstr "# %s (chave %s, mtime %d): não pôde ser aberto.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
-msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): não pôde ser aberto.\n"
+msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): não pôde ser aberto.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
-msgstr "# %s (dispositivo %ld, inode %ld): não pôde ser aberto.\n"
+msgstr "# %s (dispositivo %ld, inode %ld): não pôde ser aberto.\n"
-#: dir.c:1122
-#, fuzzy
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
-msgstr "# %s (chave %s, mtime %d): "
+msgstr "# %s (chave %s, mtime %ull): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (dispositivo %d, inode [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (dispositivo %ld, inode %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
-msgstr "Não"
+msgstr "Não"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " arquivos, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
-msgstr "não"
+msgstr "não"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " impossibilidades"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
-msgstr " até agora."
+msgstr " até agora."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
-msgstr " impossibilidades em %lu diretórios.\n"
+msgstr " impossibilidades em %lu diretórios.\n"
-#: expand.c:125
-#, fuzzy, c-format
+#: src/expand.c:125
+#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
-msgstr "Variável recursiva `%s' faz referência a ela mesma (eventualmente)"
+msgstr "Variável recursiva '%s' faz referência a ela mesma (eventualmente)"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
-msgstr "referência a variável não finalizada"
+msgstr "referência a variável não finalizada"
-#: file.c:278
-#, fuzzy, c-format
+#: src/file.c:278
+#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
-msgstr "Os comandos especificados para o arquivo `%s' em %s:%lu,"
+msgstr "Os comandos especificados para o arquivo '%s' em %s:%lu,"
-#: file.c:283
-#, fuzzy, c-format
+#: src/file.c:283
+#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr ""
-"Os comandos para o arquivo `%s' foram encontrados por uma regra implícita,"
+"Os comandos para o arquivo '%s' foram encontrados por uma regra implícita,"
-#: file.c:287
-#, fuzzy, c-format
+#: src/file.c:287
+#, c-format
msgid "but '%s' is now considered the same file as '%s'."
-msgstr "mas `%s' é considerado o mesmo arquivo que `%s'."
+msgstr "mas '%s' é considerado o mesmo arquivo que '%s'."
-#: file.c:290
-#, fuzzy, c-format
+#: src/file.c:290
+#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
-msgstr "Os comandos para `%s' serão ignorados em favor daqueles para `%s'."
+msgstr "Os comandos para '%s' serão ignorados em favor daqueles para '%s'."
-#: file.c:310
-#, fuzzy, c-format
+#: src/file.c:310
+#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
-msgstr "não pôde renomear de dois-pontos `%s' para dois-pontos duplos `%s'"
+msgstr "não pôde renomear de dois-pontos '%s' para dois-pontos duplos '%s'"
-#: file.c:316
-#, fuzzy, c-format
+#: src/file.c:316
+#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
-msgstr "não pôde renomer de dois-pontos duplos `%s' para dois-pontos `%s'"
+msgstr "não pôde renomer de dois-pontos duplos '%s' para dois-pontos '%s'"
-#: file.c:408
-#, fuzzy, c-format
+#: src/file.c:408
+#, c-format
msgid "*** Deleting intermediate file '%s'"
-msgstr "** Apagando arquivo intermediário `%s'"
+msgstr "** Apagando arquivo intermediário '%s'"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
-msgstr "Apagando arquivo intermediário...\n"
+msgstr "Apagando arquivo intermediário...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "Hora atual"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: Data/Hora fora de faixa; substituindo %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
-msgstr "# Não é um alvo:"
+msgstr "# Não é um alvo:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# Arquivo importante (prerequisito de .PRECIOUS)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# Alvo Falso (prerequisito de .PHONY)."
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# Linha de Comando do Alvo."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
-msgstr "# Um Padrão, arquivo MAKEFILES ou -include/sinclude makefile."
+msgstr "# Um Padrão, arquivo MAKEFILES ou -include/sinclude makefile."
-#: file.c:975
-#, fuzzy
+#: src/file.c:1029
msgid "# Builtin rule"
-msgstr ""
-"\n"
-"# Faltam as regras implícitas."
+msgstr "# Regra implícita"
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
-msgstr "# Pesquisa por regra implícita concluida."
+msgstr "# Pesquisa por regra implícita concluida."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
-msgstr "# Pesquisa por regra implícita não concluida."
+msgstr "# Pesquisa por regra implícita não concluida."
-#: file.c:980
-#, fuzzy, c-format
+#: src/file.c:1034
+#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
-msgstr "# Derivação padrão implícita/estática: `%s'\n"
+msgstr "# Derivação padrão implícita/estática: '%s'\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
-msgstr "# O arquivo é um pré-requisito intermediário."
+msgstr "# O arquivo é um pré-requisito intermediário."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
-msgstr "# Também faz:"
+msgstr "# Também faz:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
-msgstr "# O Período da modificação nunca foi verificado."
+msgstr "# O Período da modificação nunca foi verificado."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
-msgstr "# O Arquivo não existe."
+msgstr "# O Arquivo não existe."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
-msgstr "# O Arquivo está desatualizado."
+msgstr "# O Arquivo está desatualizado."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
-msgstr "# Última modificação %s\n"
+msgstr "# Última modificação %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# O Arquivo foi atualizado."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
-msgstr "# O Arquivo não foi atualizado."
+msgstr "# O Arquivo não foi atualizado."
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
-msgstr "# Comandos em execução (ISTO É UMA FALHA)."
+msgstr "# Comandos em execução (ISTO É UMA FALHA)."
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
-msgstr "# Comandos de dependências em execução (ISTO É UMA FALHA)."
+msgstr "# Comandos de dependências em execução (ISTO É UMA FALHA)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# Atualizado com sucesso."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
-msgstr "# Precisa ser atualizado (-q está definido)."
+msgstr "# Precisa ser atualizado (-q está definido)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
-msgstr "# Problemas com a atualização."
+msgstr "# Problemas com a atualização."
-#: file.c:1032
-#, fuzzy
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
-msgstr "# Valor inválido no membro `command_state' !"
+msgstr "# Valor inválido no membro 'command_state' !"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -361,7 +360,7 @@ msgstr ""
"\n"
"# Arquivos"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -371,564 +370,591 @@ msgstr ""
"# tabela hash de arquivos:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
-msgstr ""
+msgstr "%s: Campo '%s' não memorizado: %s"
-#: function.c:790
-#, fuzzy
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
-msgstr "primeiro argumento não numérico para a função `word'"
+msgstr "primeiro argumento não numérico para a função 'word'"
-#: function.c:795
-#, fuzzy
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
-msgstr "o primeiro argumento para a função `word' deve ser maior que 0"
+msgstr "o primeiro argumento para a função 'word' deve ser maior que 0"
-#: function.c:815
-#, fuzzy
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
-msgstr "primeiro argumento não numérico para a função `wordlist'"
+msgstr "primeiro argumento não numérico para a função 'wordlist' "
-#: function.c:817
-#, fuzzy
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
-msgstr "segundo argumento não numérico para a função `wordlist'"
+msgstr "segundo argumento não numérico para a função 'wordlist' "
-#: function.c:1525
-#, fuzzy, c-format
+#: src/function.c:1533
+#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
-msgstr "windows32_openpipe(): DuplicateHandle(In) falhou (e=%ld)\n"
+msgstr ""
+"windows32_openpipe(): DuplicateHandle(In) falhou (e=%ld)\n"
+" \n"
-#: function.c:1549
-#, fuzzy, c-format
+#: src/function.c:1557
+#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
-msgstr "windows32_open_pipe(): DuplicateHandle(Err) falhou (e=%ld)\n"
+msgstr ""
+"windows32_openpipe(): DuplicateHandle(Err) falhou (e=%ld)\n"
+"\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "CreatePipe() falhou (e=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe(): process_init_fd() falhou\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
-msgstr "Apagando o arquivo de lote temporário %s\n"
+msgstr "Apagando o arquivo de lote temporário %s\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
-msgstr ""
+msgstr "arquivo: faltando o nome do arquivo"
-#: function.c:2219 function.c:2250
-#, fuzzy, c-format
+#: src/function.c:2234 src/function.c:2265
+#, c-format
msgid "open: %s: %s"
-msgstr "%s: %s"
+msgstr "aberto: %s: %s"
-#: function.c:2227
-#, fuzzy, c-format
+#: src/function.c:2242
+#, c-format
msgid "write: %s: %s"
-msgstr "Erro de gravação: %s"
+msgstr "gravação: %s: %s"
-#: function.c:2230 function.c:2267
-#, fuzzy, c-format
+#: src/function.c:2245 src/function.c:2282
+#, c-format
msgid "close: %s: %s"
-msgstr "%s%s: %s"
+msgstr "fechado: %s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
-msgstr ""
+msgstr "arquivo: muitos argumentos"
-#: function.c:2262
-#, fuzzy, c-format
+#: src/function.c:2277
+#, c-format
msgid "read: %s: %s"
-msgstr "%s: %s"
+msgstr "lido: %s: %s"
-#: function.c:2275
-#, fuzzy, c-format
+#: src/function.c:2290
+#, c-format
msgid "file: invalid file operation: %s"
-msgstr "%s: a opção é inválida -- %c\n"
+msgstr "arquivo: operação de arquivo inválida: %s"
-#: function.c:2390
-#, fuzzy, c-format
+#: src/function.c:2405
+#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
-msgstr "O número de argumentos é insuficiente (%d) para a função `%s' "
+msgstr "O número de argumentos é insuficiente (%d) para a função '%s' "
-#: function.c:2402
-#, fuzzy, c-format
+#: src/function.c:2417
+#, c-format
msgid "unimplemented on this platform: function '%s'"
-msgstr "A função `%s' não foi implementada nesta plataforma "
+msgstr "A função '%s' não foi implementada nesta plataforma "
-#: function.c:2466
-#, fuzzy, c-format
+#: src/function.c:2483
+#, c-format
msgid "unterminated call to function '%s': missing '%c'"
-msgstr "Chamada não terminada para a função `%s': faltando `%c'"
+msgstr "Chamada não terminada para a função '%s': faltando '%c' "
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
-msgstr ""
+msgstr "Nome da função vazio"
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
-msgstr ""
+msgstr "Nome da função inválido: %s"
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
-msgstr ""
+msgstr "Nome da função muito longo: %s"
-#: function.c:2657
-#, fuzzy, c-format
+#: src/function.c:2674
+#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
-msgstr "O número de argumentos é insuficiente (%d) para a função `%s' "
+msgstr "O número mínimo de argumentos é inválido (%u) para a função %s"
-#: function.c:2660
-#, fuzzy, c-format
+#: src/function.c:2677
+#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
-msgstr "O número de argumentos é insuficiente (%d) para a função `%s' "
+msgstr "O número máximo de argumentos é inválido (%u) para a função %s"
-#: getopt.c:659
-#, fuzzy, c-format
+#: src/getopt.c:659
+#, c-format
msgid "%s: option '%s' is ambiguous\n"
-msgstr "%s: a opção `%s' é ambigua\n"
+msgstr ""
+"%s: a opção '%s' é ambigua\n"
+"\n"
-#: getopt.c:683
-#, fuzzy, c-format
+#: src/getopt.c:683
+#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
-msgstr "%s: a opção `--%s' não permite um argumento\n"
+msgstr ""
+"%s: a opção '--%s' não permite um argumento\n"
+"\n"
-#: getopt.c:688
-#, fuzzy, c-format
+#: src/getopt.c:688
+#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr "%s: a opção `%c%s' não permite um argumento\n"
+msgstr "%s: a opção '%c%s' não permite um argumento\n"
-#: getopt.c:705 getopt.c:878
-#, fuzzy, c-format
+#: src/getopt.c:705 src/getopt.c:878
+#, c-format
msgid "%s: option '%s' requires an argument\n"
-msgstr "%s: a opção `%s' requer um argumento\n"
+msgstr ""
+"%s: a opção '%s' requer um argumento\n"
+"\n"
-#: getopt.c:734
-#, fuzzy, c-format
+#: src/getopt.c:734
+#, c-format
msgid "%s: unrecognized option '--%s'\n"
-msgstr "%s: a opção é desconhecida `--%s'\n"
+msgstr ""
+"%s: a opção é desconhecida '--%s'\n"
+"\n"
-#: getopt.c:738
-#, fuzzy, c-format
+#: src/getopt.c:738
+#, c-format
msgid "%s: unrecognized option '%c%s'\n"
-msgstr "%s: a opção é desconhecida `%c%s'\n"
+msgstr ""
+"%s: a opção é desconhecida '%c%s'\n"
+"\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
-msgstr "%s: a opção é ilegal -- %c\n"
+msgstr "%s: a opção é ilegal -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
-msgstr "%s: a opção é inválida -- %c\n"
+msgstr "%s: a opção é inválida -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: a opção requer um argumento -- %c\n"
+msgstr "%s: a opção requer um argumento -- %c\n"
-#: getopt.c:844
-#, fuzzy, c-format
+#: src/getopt.c:844
+#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
-msgstr "%s: a opção `-W %s' é ambigua\n"
+msgstr ""
+"%s: a opção '-W %s' é ambigua\n"
+"\n"
-#: getopt.c:862
-#, fuzzy, c-format
+#: src/getopt.c:862
+#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr "%s: a opção `-W %s' não permite um argumento\n"
+msgstr ""
+"%s: a opção '-W %s' não permite um argumento\n"
+"\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
-msgstr ""
+msgstr "guile: Expandindo '%s'\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
-msgstr ""
+msgstr "guile: Avaliando '%s'\n"
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
-msgstr "não foi possível alocar %lu bytes para a tabela hash: memória cheia"
+msgstr "não foi possível alocar %lu bytes para a tabela hash: memória cheia"
-#: hash.c:280
+#: src/hash.c:280
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "Carga=%ld/%ld=%.0f%%, "
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "Carga=%lu/%lu=%.0f%%,"
-#: hash.c:282
+#: src/hash.c:282
#, c-format
-msgid "Rehash=%d, "
-msgstr "Rehash=%d, "
+msgid "Rehash=%u, "
+msgstr "Rehash=%u,"
-#: hash.c:283
+#: src/hash.c:283
#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "Colisões=%ld/%ld=%.0f%%"
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "Colisões=%lu/%lu=%.0f%%"
-#: implicit.c:38
-#, fuzzy, c-format
+#: src/implicit.c:38
+#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
-msgstr "Procurando por uma regra implícita para `%s'.\n"
+msgstr ""
+"Procurando por uma regra implícita para '%s'.\n"
+" \n"
-#: implicit.c:54
-#, fuzzy, c-format
+#: src/implicit.c:54
+#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
-msgstr "Procurando por uma regra implícita de arquivo-membro para `%s'.\n"
-
-#: implicit.c:311
-msgid "Avoiding implicit rule recursion.\n"
-msgstr "Evitando recursão em regra implícita.\n"
+msgstr ""
+"Procurando por uma regra implícita de arquivo-membro para '%s'.\n"
+" \n"
-#: implicit.c:486
+#: src/implicit.c:311
#, c-format
-msgid "Stem too long: '%.*s'.\n"
-msgstr ""
+msgid "Avoiding implicit rule recursion.\n"
+msgstr "Evitando recursão em regra implícita.\n"
-#: implicit.c:491
+#: src/implicit.c:484
#, fuzzy, c-format
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "Desvio muito longo: '%.*s'.\n"
+
+#: src/implicit.c:490
+#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
-msgstr "Tentando padrão para regra com `%.*s'.\n"
+msgstr ""
+"Tentando padrão para regra com '%.*s'.\n"
+"\n"
-#: implicit.c:697
-#, fuzzy, c-format
+#: src/implicit.c:717
+#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
-msgstr "Rejeitando pré-requisito para regra `%s'.\n"
+msgstr ""
+"Rejeitando pré-requisito para regra '%s'.\n"
+"\n"
-#: implicit.c:698
-#, fuzzy, c-format
+#: src/implicit.c:718
+#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
-msgstr "Rejeitando pré-requisitos implícitos `%s'.\n"
+msgstr ""
+"Rejeitando pré-requisitos implícitos '%s'.\n"
+"\n"
-#: implicit.c:711
-#, fuzzy, c-format
+#: src/implicit.c:732
+#, c-format
msgid "Trying rule prerequisite '%s'.\n"
-msgstr "Tentanto pré-requisito para a regra `%s'.\n"
+msgstr ""
+"Tentanto pré-requisito para a regra '%s'.\n"
+"\n"
-#: implicit.c:712
-#, fuzzy, c-format
+#: src/implicit.c:733
+#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
-msgstr "Tentando pré-requisito implícito `%s'.\n"
+msgstr ""
+"Tentando pré-requisito implícito '%s'.\n"
+"\n"
-#: implicit.c:751
-#, fuzzy, c-format
+#: src/implicit.c:772
+#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
-msgstr "Pré-requisito `%s' encontrado como VPATH `%s'\n"
+msgstr ""
+"Pré-requisito '%s' encontrado como VPATH '%s'\n"
+"\n"
-#: implicit.c:765
-#, fuzzy, c-format
+#: src/implicit.c:786
+#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
-msgstr "Procurando uma regra com o arquivo intermediário `%s'.\n"
+msgstr ""
+"Procurando uma regra com o arquivo intermediário '%s'.\n"
+"\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
-msgstr "Não foi possível criar um arquivos temporário\n"
+msgstr "Não foi possível criar um arquivos temporário\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (arquivo core criado)"
-#: job.c:490
-#, fuzzy
+#: src/job.c:553
msgid " (ignored)"
-msgstr "[%s] Erro %d (ignorado)"
+msgstr "(ignorado)"
-#: job.c:494 job.c:1828
-#, fuzzy
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
-msgstr " (embutido):"
+msgstr "<embutido>"
-#: job.c:510
-#, fuzzy, c-format
+#: src/job.c:573
+#, c-format
msgid "%s[%s: %s] Error %d%s"
-msgstr "** [%s] Erro %d"
+msgstr "%s[%s: %s] Erro %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "** Esperando que outros processos terminem."
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "Filho ativo %p (%s) PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (remoto)"
-#: job.c:831
+#: src/job.c:898
#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
+msgid "Reaping winning child %p PID %s %s\n"
msgstr "Descarregando processo filho %p PID %s %s\n"
-#: job.c:832
+#: src/job.c:899
#, c-format
-msgid "Reaping winning child %p PID %s %s\n"
+msgid "Reaping losing child %p PID %s %s\n"
msgstr "Descarregando processo filho %p PID %s %s\n"
-#: job.c:839
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
-msgstr "Apagando o arquivo de lote temporário: %s\n"
+msgstr "Apagando o arquivo de lote temporário: %s\n"
-#: job.c:845
-#, fuzzy, c-format
+#: src/job.c:956
+#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
-msgstr "Apagando o arquivo de lote temporário: %s\n"
+msgstr "Ao apagar o arquivo de lote temporário %s houve uma falha (%d)\n"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr "Removendo o processo filho %p PID %s%s da cadeia.\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr "Liberado sinalizador para o processo filho %p (%s).\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "process_easy() falhou ao executar o processo (e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
"Counted %d args in failed launch\n"
msgstr ""
"\n"
-"Contados %d args na falha de execução\n"
+"Contados %d args na falha de execução\n"
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr "Colocando o processo filho %p (%s) PID %s%s na cadeia.\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "Obtido o sinalizador para o processo filho %p (%s).\n"
-#: job.c:1838
-#, fuzzy, c-format
+#: src/job.c:1902
+#, c-format
msgid "%s: target '%s' does not exist"
-msgstr "touch: Arquivo `%s' não existe"
+msgstr "%s Alvo '%s' não existe"
-#: job.c:1841
-#, fuzzy, c-format
+#: src/job.c:1905
+#, c-format
msgid "%s: update target '%s' due to: %s"
-msgstr "%sSem regra para processar o alvo `%s', necessário por `%s'%s"
+msgstr "%s: alvo atualizado '%s'devido a: %s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
-msgstr "não pôde forçar os limites de carga neste sistema operacional"
+msgstr "não pôde forçar os limites de carga neste sistema operacional"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
-msgstr "não pôde forçar a carga limite:"
+msgstr "não pôde forçar a carga limite:"
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
-msgstr "sem manipuladores de arquivos: não é possível duplicar stdin\n"
+msgstr "sem manipuladores de arquivos: não é possível duplicar stdin\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
-msgstr "sem manipuladores de arquivos: não é possível duplicar stdout\n"
+msgstr "sem manipuladores de arquivos: não é possível duplicar stdout\n"
-#: job.c:2074
-#, fuzzy
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
-msgstr "sem manipuladores de arquivos: não é possível duplicar stdin\n"
+msgstr "sem manipuladores de arquivos: não é possível duplicar stderr\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
-msgstr "Não é possível restaurar stdin\n"
+msgstr "Não é possível restaurar stdin\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
-msgstr "Não é possível restaurar stdout\n"
+msgstr "Não é possível restaurar stdout\n"
-#: job.c:2105
-#, fuzzy
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
-msgstr "Não é possível restaurar stdin\n"
+msgstr "Não é possível restaurar stderr\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr "processo filho descarregado: pid %s, aguardando pelo pid %s\n"
-#: job.c:2275
-#, fuzzy, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: Comando não encontrado"
-
-#: job.c:2277
-#, fuzzy, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s: Comando não encontrado"
-
-#: job.c:2337
+#: src/job.c:2623
#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: Interpretador de comandos não encontrado"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
-msgstr "spawnvpe: o espaço de ambiente pode estar cheio"
+msgstr "spawnvpe: o espaço de ambiente pode estar cheio"
-#: job.c:2584
-#, fuzzy, c-format
+#: src/job.c:2862
+#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
-msgstr "$SHELL alterado (era `%s' e agora é `%s')\n"
+msgstr ""
+"$SHELL alterado (era '%s' e agora é '%s')\n"
+"\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
-msgstr "Criando arquivo de lote temporário %s\n"
+msgstr "Criando arquivo de lote temporário %s\n"
-#: job.c:3030
-#, fuzzy
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
msgstr ""
-"Conteúdo do arquivo de lote:%s\n"
-"\t%s\n"
+"Conteúdo do arquivo de lote:\n"
+"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
"\t%s\n"
msgstr ""
-"Conteúdo do arquivo de lote:%s\n"
+"Conteúdo do arquivo de lote:%s\n"
"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
-msgstr "%s (linha %d) contexto inválido (!unixy && !batch_mode_shell)\n"
-
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr ""
+msgstr "%s (linha %d) contexto inválido (!unixy && !batch_mode_shell)\n"
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
-msgstr ""
+msgstr "Falha ao abrir a tabela de símbolos globais: %s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
-msgstr ""
+msgstr "O objeto carregado %s não foi declarado compatível com a GPL"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
-msgstr ""
+msgstr "Falhou ao carragar o símbolo %s de %s: %s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
-msgstr ""
+msgstr "Nome do símbolo vazio: %s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
-msgstr ""
+msgstr "Carregando símbolo %s de %s\n"
-#: load.c:256
-#, fuzzy
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
-msgstr "Tarefas paralelas (-j) não são suportadas nesta plataforma."
+msgstr "A operação 'load' não é suportada nesta plataforma."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
-msgstr "Opções:\n"
+msgstr "Opções:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr " -b, -m Ignorado para compatibilidade.\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr ""
" -B, --always-make Processa todos os alvos incondicionalmente.\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
msgstr ""
-" -C DIRETÓRIO, --directory=DIRETÓRIO\n"
-" Muda para o DIRETÓRIO antes de fazer algo.\n"
+" -C DIRETÓRIO, --directory=DIRETÓRIO\n"
+" Muda para o DIRETÓRIO antes de fazer algo.\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
-msgstr " -d Imprime muita informação de depuração.\n"
+msgstr " -d Imprime muita informação de depuração.\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
-" --debug[=OPÇÕES] Imprime vários tipos de informações de "
-"depuração.\n"
+" --debug[=OPÇÕES] Imprime vários tipos de informações de "
+"depuração.\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
msgstr ""
" -e, --environment-overrides\n"
-" Assume os valores das variáveis de ambiente.\n"
+" Assume os valores das variáveis de ambiente.\n"
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
-" --eval=STRING Avalia a STRING como uma declaração para um "
+"-E STRING, --eval=STRING Avalia a STRING como uma declaração para um "
"makefile.\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
msgstr ""
" -f ARQUIVO, --file=ARQUIVO, --makefile=ARQUIVO\n"
-" Lê o ARQUIVO como se fosse um arquivo make.\n"
+" Lê o ARQUIVO como se fosse um arquivo make.\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help Imprime esta mensagem e sai.\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr " -i, --ignore-errors Ignora os erros dos comandos.\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
msgstr ""
-" -I DIRETÓRIO, --include-dir=DIRETÓRIO\n"
-" Pesquisa o DIRETÒRIO por arquivos make a "
+" -I DIRETÓRIO, --include-dir=DIRETÓRIO\n"
+" Pesquisa o DIRETÃ’RIO por arquivos make a "
"incluir.\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
@@ -936,122 +962,130 @@ msgstr ""
" -j [N], --jobs[=N] Permite N tarefas de uma vez; tarefas infinitas "
"sem argumentos.\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
-" -k, --keep-going Continua mesmo que alguns alvos não possam ser "
+" -k, --keep-going Continua mesmo que alguns alvos não possam ser "
"processados.\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
"N.\n"
msgstr ""
" -l [N], --load-average[=N], --max-load[=N]\n"
-" Não inicia múltiplas tarefas a menos que a "
+" Não inicia múltiplas tarefas a menos que a "
"carga seja menor que N.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
msgstr ""
-"-L, --check-symlink-times Usa o tempo mais antigo entre o vínculo simbólico "
+"-L, --check-symlink-times Usa o tempo mais antigo entre o vínculo simbólico "
"e o alvo.\n"
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
"them.\n"
msgstr ""
" -n, --just-print, --dry-run, --recon\n"
-" Não executa quaisquer comandos; apenas imprime-"
+" Não executa quaisquer comandos; apenas imprime-"
"os.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
"it.\n"
msgstr ""
" -o ARQUIVO, --old-file=ARQUIVO, --assume-old=ARQUIVO\n"
-" Considera o ARQUIVO como muito antigo e não "
-"reprocessá-o.\n"
+" Considera o ARQUIVO como muito antigo e não "
+"reprocessá-o.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
msgstr ""
+" -O[TYPE], --output-sync[=TYPE]\n"
+" Sincroniza a saída de tarefas paralelas pelo "
+"TIPO.\n"
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr ""
" -p, --print-data-base Imprime o banco de dados interno do make.\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
msgstr ""
-" -q, --question Não executa os comandos; O código de saida "
-"indica se está atualizado.\n"
+" -q, --question Não executa os comandos; O código de saida "
+"indica se está atualizado.\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
-msgstr " -r, --no-builtin-rules Desabilita as regras implícitas.\n"
+msgstr " -r, --no-builtin-rules Desabilita as regras implícitas.\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr ""
-" -R, --no-builtin-variables Desabilita a configuração das variáveis "
+" -R, --no-builtin-variables Desabilita a configuração das variáveis "
"embutidas.\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
-msgstr " -s, --silent, --quiet Não ecoa os comandos.\n"
+msgstr " -s, --silent, --quiet Não ecoa os comandos.\n"
+
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" --no-silent Ecoa as instruções (desabilita o modo --"
+"silent).\n"
-#: main.c:393
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
msgstr ""
" -S, --no-keep-going, --stop\n"
-" Desativa a opção -k.\n"
+" Desativa a opção -k.\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
-" -t, --touch Executa um `touch' nos alvos ao invés de "
-"reprocessá-los.\n"
+" -t, --touch Executa um `touch' nos alvos ao invés de "
+"reprocessá-los.\n"
-#: main.c:398
-#, fuzzy
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
-msgstr " -d Imprime muita informação de depuração.\n"
+msgstr " -trace Imprime informação de depuração.\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr ""
-" -v, --version Imprime o número de versão do make e sai.\n"
+" -v, --version Imprime o número de versão do make e sai.\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
-msgstr " -w, --print-directory Imprime o diretório atual.\n"
+msgstr " -w, --print-directory Imprime o diretório atual.\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
msgstr ""
-" --no-print-directory Desativa a opção -w, mesmo que ela esteja "
+" --no-print-directory Desativa a opção -w, mesmo que ela esteja "
"implicitamente ativada.\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1059,34 +1093,35 @@ msgstr ""
" -W ARQUIVO, --what-if=ARQUIVO, --new-file=ARQUIVO, --assume-new=ARQUIVO\n"
" Considera o ARQUIVO infinitamente novo.\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
msgstr ""
-" --warn-undefined-variables Avisa quando um variável não definida for "
+" --warn-undefined-variables Avisa quando um variável não definida for "
"referenciada.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
-msgstr "Cadeia de caracteres vazia não é válida como nome de arquivo"
+msgstr "Cadeia de caracteres vazia não é válida como nome de arquivo"
-#: main.c:766
-#, fuzzy, c-format
+#: src/main.c:754
+#, c-format
msgid "unknown debug level specification '%s'"
-msgstr "nível de depuração desconhecido: `%s'"
+msgstr "nível de depuração desconhecido: '%s' "
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
-msgstr ""
+msgstr "tipo output-sync desconhecido '%s'"
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
-msgstr "%s: Interrupção/Exceção capturada (código = 0x%lx, endereço = 0x%p)\n"
+msgstr "%s: Interrupção/Exceção capturada (código = 0x%lx, endereço = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1096,138 +1131,147 @@ msgid ""
"ExceptionAddress = 0x%p\n"
msgstr ""
"\n"
-"Não pôde tratar o filtro de exceção chamado por %s\n"
-"CódigoExceção = %lx\n"
-"SinalExceção = %lx\n"
-"EndereçoExceção = 0x%p\n"
+"Não pôde tratar o filtro de exceção chamado por %s\n"
+"CódigoExceção = %lx\n"
+"SinalExceção = %lx\n"
+"EndereçoExceção = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
-msgstr "Violação de acesso: operação de escrita no endereço 0x%p\n"
+msgstr "Violação de acesso: operação de escrita no endereço 0x%p\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
-msgstr "Violação de acesso: operação de leitura no endereço 0x%p\n"
+msgstr "Violação de acesso: operação de leitura no endereço 0x%p\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell() definiu o default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr "find_and_set_shell(), caminho de pesquisa do default_shell = %s\n"
-#: main.c:1538
-#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s está suspenso por 30 segundos..."
-
-#: main.c:1540
+#: src/main.c:1609
#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "sleep(30) concluido. Continuando.\n"
-
-#: main.c:1627
-#, fuzzy
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
-msgstr "aviso: jobserver indisponível: usando -j1. Inclua `+' na regra pai."
+msgstr "aviso: jobserver indisponível: usando -j1. Inclua '+' na regra pai. "
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
-msgstr "aviso: -jN forçado no submake: desabilitando o modo jobserver."
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
+msgstr "aviso: -j%d forçado no submake: reiniciando o modo jobserver."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
-msgstr "Makefile na entrada padrão especificado duas vezes."
+msgstr "Makefile na entrada padrão especificado duas vezes."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
-msgstr "fopen (arquivo temporário)"
+msgstr "fopen (arquivo temporário)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
-msgstr "fwrite (arquivo temporário)"
+msgstr "fwrite (arquivo temporário)"
-#: main.c:2048
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr "aviso: -j%d forçado no submake: reiniciando o modo jobserver."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
-msgstr "Tarefas paralelas (-j) não são suportadas nesta plataforma."
+msgstr "Tarefas paralelas (-j) não são suportadas nesta plataforma."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
-msgstr "Reiniciando no modo de tarefa única (-j1)."
+msgstr "Reiniciando no modo de tarefa única (-j1)."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
-msgstr "Vínculos simbólicos não são suportados: desabilite -L."
+msgstr "Vínculos simbólicos não são suportados: desabilite -L."
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "Atualizando os arquivos makefiles ...\n"
-#: main.c:2195
-#, fuzzy, c-format
+#: src/main.c:2226
+#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
-msgstr "O arquivo `%s' pode estar em loop; não reprocessá-lo.\n"
+msgstr ""
+"O arquivo '%s' pode estar em loop; não reprocessá-lo.\n"
+"\n"
-#: main.c:2279
-#, fuzzy, c-format
+#: src/main.c:2303
+#, c-format
msgid "Failed to remake makefile '%s'."
-msgstr "Problemas ao reprocessar o arquivo `%s'."
+msgstr "Problemas ao reprocessar o arquivo '%s'. "
-#: main.c:2299
-#, fuzzy, c-format
+#: src/main.c:2323
+#, c-format
msgid "Included makefile '%s' was not found."
-msgstr "Arquivo `%s' incluido não foi encontrado."
+msgstr "Arquivo '%s' incluido não foi encontrado. "
-#: main.c:2304
-#, fuzzy, c-format
+#: src/main.c:2328
+#, c-format
msgid "Makefile '%s' was not found"
-msgstr "O arquivo `%s' não foi encontrado."
+msgstr "O arquivo '%s' não foi encontrado. "
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
-msgstr "Não foi possível voltar ao diretório original."
+msgstr "Não foi possível voltar ao diretório original."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "Re-executando[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
-msgstr "desvinculado (arquivos temporário): "
+msgstr "desvinculado (arquivos temporário): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
-msgstr ". DEFAULT_GOAL contém mais do que um alvo"
-
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Nenhum alvo indicado e nenhum arquivo make encontrado"
+msgstr ". DEFAULT_GOAL contém mais do que um alvo"
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "Sem alvo"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Nenhum alvo indicado e nenhum arquivo make encontrado"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "Atualizando os objetivos finais...\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
-msgstr "aviso: O relógio está errado. Sua compilação pode ficar incompleta."
+msgstr "aviso: O relógio está errado. Sua compilação pode ficar incompleta."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
-msgstr "Uso: %s [opções] [alvo] ...\n"
+msgstr "Uso: %s [opções] [alvo] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1236,7 +1280,7 @@ msgstr ""
"\n"
"Este programa foi compilado para %s\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1245,32 +1289,32 @@ msgstr ""
"\n"
"Este programa foi compilado para %s (%s)\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr "Informe os problemas para <bug-make@gnu.org>.\n"
-#: main.c:2870
-#, fuzzy, c-format
+#: src/main.c:2901
+#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
-msgstr "a opção `%s%s' requer um argumento não vazio"
+msgstr "a opção '%s%s' requer um argumento não vazio "
-#: main.c:2934
-#, fuzzy, c-format
+#: src/main.c:2965
+#, c-format
msgid "the '-%c' option requires a positive integer argument"
-msgstr "a opção `-%c' requer um argumento inteiro positivo"
+msgstr "a opção '-%c' requer um argumento inteiro positivo "
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%sCompilado para %s\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%sCompilado para %s (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1278,13 +1322,13 @@ msgid ""
"%sThis is free software: you are free to change and redistribute it.\n"
"%sThere is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
-"%sLicença GPLv3+: GNU GPL versão 3 ou posterior <http://gnu.org/licenses/gpl."
+"%sLicença GPLv3+: GNU GPL versão 3 ou posterior <http://gnu.org/licenses/gpl."
"html>\n"
-"%sIsto é um aplicativo livre: você pode alterá-lo e redistribui-lo "
+"%sIsto é um aplicativo livre: você pode alterá-lo e redistribui-lo "
"livremente.\n"
-"%sNÃO HÁ GARANTIAS, exceto o que for permitido por lei.\n"
+"%sNÃO Hà GARANTIAS, exceto o que for permitido por lei.\n"
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1293,7 +1337,7 @@ msgstr ""
"\n"
"# Banco de dados do Make, impresso em %s"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1302,856 +1346,941 @@ msgstr ""
"\n"
"# Banco de dados do Make finalizado em %s\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Erro desconhecido %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
-msgstr "%s: usuário %lu (real %lu), grupo %lu (real %lu)\n"
+msgstr "%s: usuário %lu (real %lu), grupo %lu (real %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "Acesso inicializado"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
-msgstr "Acesso do usuário"
+msgstr "Acesso do usuário"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "Acesso do make"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "Acesso filho"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
-msgstr "%s: Entrando em um diretório desconhecido\n"
+msgstr "%s: Entrando em um diretório desconhecido\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
-msgstr "%s: Saindo de um diretório desconhecido\n"
+msgstr "%s: Saindo de um diretório desconhecido\n"
-#: output.c:109
-#, fuzzy, c-format
+#: src/output.c:102
+#, c-format
msgid "%s: Entering directory '%s'\n"
-msgstr "%s: Entrando no diretório `%s'\n"
+msgstr ""
+"%s: Entrando no diretório '%s'\n"
+"\n"
-#: output.c:111
-#, fuzzy, c-format
+#: src/output.c:104
+#, c-format
msgid "%s: Leaving directory '%s'\n"
-msgstr "%s: Saindo do diretório `%s'\n"
+msgstr ""
+"%s: Saindo do diretório '%s'\n"
+"\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
-msgstr "%s[%u]: Entrando em um diretório desconhecido\n"
+msgstr "%s[%u]: Entrando em um diretório desconhecido\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
-msgstr "%s[%u]: Saindo de um diretório desconhecido\n"
+msgstr "%s[%u]: Saindo de um diretório desconhecido\n"
-#: output.c:120
-#, fuzzy, c-format
+#: src/output.c:113
+#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
-msgstr "%s[%u]: Entrando no diretório `%s'\n"
+msgstr ""
+"%s[%u]: Entrando no diretório '%s'\n"
+"\n"
-#: output.c:122
-#, fuzzy, c-format
+#: src/output.c:115
+#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
-msgstr "%s[%u]: Saindo do diretório `%s'\n"
+msgstr ""
+"%s[%u]: Saindo do diretório '%s'\n"
+"\n"
-#: output.c:495 output.c:497
-#, fuzzy
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
-msgstr "Erro de gravação: %s"
+msgstr "Erro de gravação: stdout"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". Pare.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+"-O[TYPE] (--output-sync[=TYPE]) não está configurado para esta compilação."
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
-msgstr "criando canalização de tarefas"
+msgstr "criando canalização de tarefas"
-#: posixos.c:72 posixos.c:227
-#, fuzzy
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
-msgstr "criando canalização de tarefas"
+msgstr "duplicando canalização de tarefas"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
-msgstr "inicializando a canalização do jobserver"
+msgstr "inicializando a canalização do jobserver"
-#: posixos.c:90
-#, fuzzy, c-format
+#: src/posixos.c:119
+#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
-msgstr "erro interno: valor `%s' inválido para --jobserver-fds"
+msgstr "erro interno: valor '%s' inválido para --jobserver-auth"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr "Cliente Jobserver (fds %d,%d)\n"
-#: posixos.c:109
-#, fuzzy
+#: src/posixos.c:138
msgid "jobserver pipeline"
-msgstr "inicializando a canalização do jobserver"
+msgstr "canalização do jobserver"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr "gravar jobserver"
-#: posixos.c:268
-#, fuzzy
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr "servidor de job desligado"
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
-msgstr "tarefas canalizadas lidas"
+msgstr "tarefas canalizadas pselect"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "tarefas canalizadas lidas"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "Lendo arquivos makefile ...\n"
-#: read.c:329
-#, fuzzy, c-format
+#: src/read.c:336
+#, c-format
msgid "Reading makefile '%s'"
-msgstr "Lendo arquivos makefile `%s'"
+msgstr "Lendo arquivos makefile '%s' "
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
-msgstr " (não há objetivo padrão)"
+msgstr " (não há objetivo padrão)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (caminho de pesquisa)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
-msgstr " (sem importância)"
+msgstr " (sem importância)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
-msgstr " (sem expansão ~)"
+msgstr " (sem expansão ~)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
-msgstr ""
+msgstr "Ignorando UTF-8 BOM no makefile '%s'\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
-msgstr ""
+msgstr "Ignorando UTF-8 BOM no makefile buffer\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
-msgstr "síntaxe inválida na condicional"
+msgstr "síntaxe inválida na condicional"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
-msgstr ""
+msgstr "%s: falhou ao carregar"
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
-msgstr "comandos começam antes do primeiro alvo"
+msgstr "comandos começam antes do primeiro alvo"
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
msgstr "falta uma regra antes dos comandos"
-#: read.c:1124
-#, fuzzy
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
-msgstr " (você pensou em TAB ao invés de 8 espaços?)"
+msgstr "faltando separador (você pensou em TAB ao invés de 8 espaços?)"
-#: read.c:1126
-#, fuzzy
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
-msgstr "faltando o separador%s"
+msgstr "faltando o separador"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
-msgstr "faltando o padrão dos alvos"
+msgstr "faltando o padrão dos alvos"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
-msgstr "múltiplos padrões para o alvo"
+msgstr "múltiplos padrões para o alvo"
-#: read.c:1268
-#, fuzzy, c-format
+#: src/read.c:1289
+#, c-format
msgid "target pattern contains no '%%'"
-msgstr "padrão para o alvo não contém `%%'"
+msgstr "padrão para o alvo não contém '%%' "
-#: read.c:1390
-#, fuzzy
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
-msgstr "faltando `endif'"
+msgstr "faltando 'endif' "
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
-msgstr "nome de variável vazio"
+msgstr "nome de variável vazio"
-#: read.c:1463
-#, fuzzy
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
-msgstr "Texto estranho depois da diretiva `define'"
+msgstr "Texto estranho depois da diretiva 'define' "
-#: read.c:1488
-#, fuzzy
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
-msgstr "faltando `endef', `define' não terminado"
+msgstr "faltando 'endef', 'define' não terminado "
-#: read.c:1516
-#, fuzzy
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
-msgstr "Texto estranho depois da diretiva `endef"
+msgstr "Texto estranho depois da diretiva 'endef'"
-#: read.c:1588
-#, fuzzy, c-format
+#: src/read.c:1603
+#, c-format
msgid "extraneous text after '%s' directive"
-msgstr "Texto estranho depois da diretiva `%s'"
+msgstr "Texto estranho depois da diretiva '%s' "
-#: read.c:1589
-#, fuzzy, c-format
+#: src/read.c:1604
+#, c-format
msgid "extraneous '%s'"
-msgstr "`%s' estranho"
+msgstr "'%s' estranho "
-#: read.c:1617
-#, fuzzy
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
-msgstr "use apenas um `else' por condicional"
+msgstr "use apenas um 'else' por condicional "
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
-msgstr "Definição de variável para o alvo mau formada"
+msgstr "Definição de variável para o alvo mau formada"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
-msgstr "os pré-requisitos não podem ser definidos no comando"
+msgstr "os pré-requisitos não podem ser definidos no comando"
+
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr "alvos agrupados devem fornecer uma instrução"
-#: read.c:2009
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
-msgstr "As regras implícitas e de padrão estático misturadas"
+msgstr "As regras implícitas e de padrão estático misturadas"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
-msgstr "As regras implícitas e normais misturadas"
+msgstr "As regras implícitas e normais misturadas"
-#: read.c:2085
-#, fuzzy, c-format
+#: src/read.c:2107
+#, c-format
msgid "target '%s' doesn't match the target pattern"
-msgstr "O alvo `%s' não coincide com o padrão"
+msgstr "O alvo '%s' não coincide com o padrão "
-#: read.c:2100 read.c:2146
-#, fuzzy, c-format
+#: src/read.c:2122 src/read.c:2168
+#, c-format
msgid "target file '%s' has both : and :: entries"
-msgstr "O arquivo alvo `%s' tem entradas : e ::"
+msgstr "O arquivo alvo '%s' tem entradas : e :: "
-#: read.c:2106
-#, fuzzy, c-format
+#: src/read.c:2128
+#, c-format
msgid "target '%s' given more than once in the same rule"
-msgstr "O alvo `%s' foi informado mais do que um vez na mesma regra."
+msgstr "O alvo '%s' foi informado mais do que um vez na mesma regra. "
-#: read.c:2116
-#, fuzzy, c-format
+#: src/read.c:2138
+#, c-format
msgid "warning: overriding recipe for target '%s'"
-msgstr "aviso: sobreescrevendo os comandos para o alvo `%s'"
+msgstr "aviso: sobrescrevendo os comandos para o alvo '%s'"
-#: read.c:2119
-#, fuzzy, c-format
+#: src/read.c:2141
+#, c-format
msgid "warning: ignoring old recipe for target '%s'"
-msgstr "aviso: ignorando comandos antigos para o alvo `%s'"
+msgstr "aviso: ignorando comandos antigos para o alvo '%s' "
-#: read.c:2223
-#, fuzzy
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
-msgstr "As regras implícitas e normais misturadas"
+msgstr "As regras implícitas e normais misturadas: síntaxe obsoleta"
+
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "aviso: sobrescrevendo o grupo para o alvo '%s'"
-#: read.c:2542
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr "aviso: caracter NUL detetado; o resto da linha foi ignorado"
-#: remake.c:226
-#, fuzzy, c-format
+#: src/remake.c:226
+#, c-format
msgid "Nothing to be done for '%s'."
-msgstr "Nada a ser feito para `%s'."
+msgstr "Nada a ser feito para '%s'. "
-#: remake.c:227
-#, fuzzy, c-format
+#: src/remake.c:227
+#, c-format
msgid "'%s' is up to date."
-msgstr "`%s' está atualizado."
+msgstr "'%s' está atualizado. "
-#: remake.c:323
-#, fuzzy, c-format
+#: src/remake.c:323
+#, c-format
msgid "Pruning file '%s'.\n"
-msgstr "Atualizando o arquivo `%s'.\n"
+msgstr ""
+"Atualizando o arquivo '%s'.\n"
+"\n"
-#: remake.c:406
-#, fuzzy, c-format
+#: src/remake.c:389
+#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
-msgstr "%sSem regra para processar o alvo `%s', necessário por `%s'%s"
+msgstr "%sSem regra para processar o alvo '%s', necessário por '%s'%s "
-#: remake.c:416
-#, fuzzy, c-format
+#: src/remake.c:399
+#, c-format
msgid "%sNo rule to make target '%s'%s"
-msgstr "%sSem regra para processar o alvo `%s'%s"
+msgstr "%sSem regra para processar o alvo '%s'%s "
-#: remake.c:442
-#, fuzzy, c-format
+#: src/remake.c:425
+#, c-format
msgid "Considering target file '%s'.\n"
-msgstr "Considerando o arquivo alvo `%s'.\n"
+msgstr ""
+"Considerando o arquivo alvo '%s'.\n"
+"\n"
-#: remake.c:449
-#, fuzzy, c-format
+#: src/remake.c:432
+#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
-msgstr "Tentativa de atualizar o arquivo `%s' falhou.\n"
+msgstr ""
+"Tentativa de atualizar o arquivo '%s' falhou.\n"
+"\n"
-#: remake.c:461
-#, fuzzy, c-format
+#: src/remake.c:444
+#, c-format
msgid "File '%s' was considered already.\n"
-msgstr "O arquivo `%s' já foi considerado.\n"
+msgstr ""
+"O arquivo '%s' já foi considerado.\n"
+"\n"
-#: remake.c:471
-#, fuzzy, c-format
+#: src/remake.c:454
+#, c-format
msgid "Still updating file '%s'.\n"
-msgstr "Ainda está atualizando o arquivo `%s'.\n"
+msgstr ""
+"Ainda está atualizando o arquivo '%s'.\n"
+"\n"
-#: remake.c:474
-#, fuzzy, c-format
+#: src/remake.c:457
+#, c-format
msgid "Finished updating file '%s'.\n"
-msgstr "Atualização do arquivo `%s' concluida.\n"
+msgstr ""
+"Atualização do arquivo '%s' concluida.\n"
+"\n"
-#: remake.c:503
-#, fuzzy, c-format
+#: src/remake.c:486
+#, c-format
msgid "File '%s' does not exist.\n"
-msgstr "O arquivo `%s' não existe.\n"
+msgstr ""
+"O arquivo '%s' não existe.\n"
+"\n"
-#: remake.c:511
-#, fuzzy, c-format
+#: src/remake.c:494
+#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
msgstr ""
-"*** Aviso: arquivo .LOW_RESOLUTION_TIME `%s' tem uma etiqueta de tempo de "
-"alta resolução"
+"*** Aviso: arquivo .LOW_RESOLUTION_TIME '%s' tem uma etiqueta de tempo de "
+"alta resolução "
-#: remake.c:524 remake.c:1056
-#, fuzzy, c-format
+#: src/remake.c:507 src/remake.c:1039
+#, c-format
msgid "Found an implicit rule for '%s'.\n"
-msgstr "Regra implícita encontrada para `%s'.\n"
+msgstr ""
+"Regra implícita encontrada para '%s'.\n"
+"\n"
-#: remake.c:526 remake.c:1058
-#, fuzzy, c-format
+#: src/remake.c:509 src/remake.c:1041
+#, c-format
msgid "No implicit rule found for '%s'.\n"
-msgstr "Nenhuma regra implícita encontrada para `%s'.\n"
+msgstr ""
+"Nenhuma regra implícita encontrada para '%s'.\n"
+"\n"
-#: remake.c:532
-#, fuzzy, c-format
+#: src/remake.c:515
+#, c-format
msgid "Using default recipe for '%s'.\n"
-msgstr "Usando os comandos padrões para `%s'.\n"
+msgstr ""
+"Usando os comandos padrões para '%s'.\n"
+"\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
-msgstr "Dependência circular %s <- %s abandonada."
+msgstr "Dependência circular %s <- %s abandonada."
-#: remake.c:691
-#, fuzzy, c-format
+#: src/remake.c:674
+#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
-msgstr "Pré-requisitos do alvo `%s' concluido.\n"
+msgstr ""
+"Pré-requisitos do alvo '%s' concluido.\n"
+"\n"
-#: remake.c:697
-#, fuzzy, c-format
+#: src/remake.c:680
+#, c-format
msgid "The prerequisites of '%s' are being made.\n"
-msgstr "Pré-requisitos do `%s' estão sendo criados.\n"
+msgstr ""
+"Pré-requisitos do '%s' estão sendo criados.\n"
+"\n"
-#: remake.c:711
-#, fuzzy, c-format
+#: src/remake.c:694
+#, c-format
msgid "Giving up on target file '%s'.\n"
-msgstr "Desistindo do arquivo `%s'.\n"
+msgstr ""
+"Desistindo do arquivo '%s'.\n"
+"\n"
-#: remake.c:716
-#, fuzzy, c-format
+#: src/remake.c:699
+#, c-format
msgid "Target '%s' not remade because of errors."
-msgstr "O alvo `%s' não foi reprocessado por causa de erros."
+msgstr "O alvo '%s' não foi reprocessado por causa de erros. "
-#: remake.c:768
-#, fuzzy, c-format
+#: src/remake.c:751
+#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
-msgstr "Pré-requisito `%s' está ordenado para o alvo `%s'.\n"
+msgstr ""
+"Pré-requisito '%s' está ordenado para o alvo '%s'.\n"
+"\n"
-#: remake.c:773
-#, fuzzy, c-format
+#: src/remake.c:756
+#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
-msgstr "Pré-requisitos `%s' do alvo `%s' não existem.\n"
+msgstr ""
+"Pré-requisitos '%s' do alvo '%s' não existem.\n"
+"\n"
-#: remake.c:778
-#, fuzzy, c-format
+#: src/remake.c:761
+#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
-msgstr "Pré-requisito `%s' é mais novo do que o alvo `%s'.\n"
+msgstr ""
+"Pré-requisito '%s' é mais novo do que o alvo '%s'.\n"
+"\n"
-#: remake.c:781
-#, fuzzy, c-format
+#: src/remake.c:764
+#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
-msgstr "Pré-requisito `%s' é mais antigo do que o alvo `%s'.\n"
+msgstr ""
+"Pré-requisito '%s' é mais antigo do que o alvo '%s'.\n"
+"\n"
-#: remake.c:799
-#, fuzzy, c-format
+#: src/remake.c:782
+#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
-msgstr "O alvo `%s' é dois-pontos duplos e não tem pré-requisitos.\n"
+msgstr "O alvo '%s' são dois-pontos duplos e não tem pré-requisitos.\n"
-#: remake.c:806
-#, fuzzy, c-format
+#: src/remake.c:789
+#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
-msgstr "Nenhum comando para `%s' e nenhum pré-requisito foi alterado.\n"
+msgstr ""
+"Nenhum comando para '%s' e nenhum pré-requisito foi alterado.\n"
+"\n"
-#: remake.c:811
-#, fuzzy, c-format
+#: src/remake.c:794
+#, c-format
msgid "Making '%s' due to always-make flag.\n"
-msgstr "Processando `%s' devido a opção always-make.\n"
+msgstr ""
+"Processando '%s' devido a opção always-make.\n"
+"\n"
-#: remake.c:819
-#, fuzzy, c-format
+#: src/remake.c:802
+#, c-format
msgid "No need to remake target '%s'"
-msgstr "Não é necessário reprocessar o alvo `%s'"
+msgstr "Não é necessário reprocessar o alvo '%s' "
-#: remake.c:821
-#, fuzzy, c-format
+#: src/remake.c:804
+#, c-format
msgid "; using VPATH name '%s'"
-msgstr "; usando o nome VPATH `%s'"
+msgstr "; usando o nome VPATH '%s' "
-#: remake.c:841
-#, fuzzy, c-format
+#: src/remake.c:824
+#, c-format
msgid "Must remake target '%s'.\n"
-msgstr "O alvo `%s' deve ser reprocessado.\n"
+msgstr ""
+"O alvo '%s' deve ser reprocessado.\n"
+"\n"
-#: remake.c:847
-#, fuzzy, c-format
+#: src/remake.c:830
+#, c-format
msgid " Ignoring VPATH name '%s'.\n"
-msgstr " Ignorando o nome VPATH `%s'.\n"
+msgstr ""
+" Ignorando o nome VPATH '%s'.\n"
+"\n"
-#: remake.c:856
-#, fuzzy, c-format
+#: src/remake.c:839
+#, c-format
msgid "Recipe of '%s' is being run.\n"
-msgstr "Os comandos de `%s' estão rodando.\n"
+msgstr ""
+"Os comandos de '%s' estão rodando.\n"
+"\n"
-#: remake.c:863
-#, fuzzy, c-format
+#: src/remake.c:846
+#, c-format
msgid "Failed to remake target file '%s'.\n"
-msgstr "Falha ao reprocessar o alvo `%s'.\n"
+msgstr ""
+"Falha ao reprocessar o alvo '%s'.\n"
+"\n"
-#: remake.c:866
-#, fuzzy, c-format
+#: src/remake.c:849
+#, c-format
msgid "Successfully remade target file '%s'.\n"
-msgstr "Alvo `%s' reprocessado com sucesso.\n"
+msgstr ""
+"Alvo '%s' reprocessado com sucesso.\n"
+"\n"
-#: remake.c:869
-#, fuzzy, c-format
+#: src/remake.c:852
+#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
-msgstr "O alvo `%s' precisa ser reprocessado sob -q.\n"
+msgstr ""
+"O alvo '%s' precisa ser reprocessado sob -q.\n"
+"\n"
-#: remake.c:1064
-#, fuzzy, c-format
+#: src/remake.c:1047
+#, c-format
msgid "Using default commands for '%s'.\n"
-msgstr "Usando os comandos padrões para `%s'.\n"
-
-#: remake.c:1430
-#, fuzzy, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "** Aviso: O arquivo `%s' está com a hora adiantada"
+msgstr ""
+"Usando os comandos padrões para '%s'.\n"
+"\n"
-#: remake.c:1444
-#, fuzzy, c-format
+#: src/remake.c:1422
+#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
-msgstr "** Aviso: O arquivo `%s' está com a hora %s s adiantada"
+msgstr "** Aviso: O arquivo '%s' está com a hora %s s adiantada "
-#: remake.c:1647
-#, fuzzy, c-format
+#: src/remake.c:1662
+#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
-msgstr "O elemento .LIBPATTERNS `%s' não é um padrão"
+msgstr "O elemento .LIBPATTERNS '%s' não é um padrão "
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
-msgstr "Customizações não exportadas: %s\n"
+msgstr "Customizações não exportadas: %s\n"
+
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
-#: rule.c:496
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
msgstr ""
"\n"
-"# Regras implícitas."
+"# Regras implícitas."
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
msgstr ""
"\n"
-"# Faltam as regras implícitas."
+"# Faltam as regras implícitas."
-#: rule.c:514
+#: src/rule.c:548
#, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
-"# %u regras implícitas, %u"
+"# %u regras implícitas, %u (%.1f%%) terminal."
-#: rule.c:523
-msgid " terminal."
-msgstr " terminal."
-
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "ERRO: num_pattern_rules errada! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "sinal desconhecido"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Desconectar"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
-msgstr "Interrupção"
+msgstr "Interrupção"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Sair"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
-msgstr "Instrução ilegal"
+msgstr "Instrução ilegal"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "Aviso Trace/breakpoint"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Abortado"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "Aviso IOT"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "Aviso EMT"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
-msgstr "Exceção de ponto flutuante"
+msgstr "Exceção de ponto flutuante"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Finalizado"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "Erro de barramento"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
-msgstr "Falha de segmentação"
+msgstr "Falha de segmentação"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
-msgstr "Chamada de sistema inválida"
+msgstr "Chamada de sistema inválida"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
-msgstr "Canalização interrompida"
+msgstr "Canalização interrompida"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Despertador"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "Terminado"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
-msgstr "Sinal 1 definido pelo usuário"
+msgstr "Sinal 1 definido pelo usuário"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
-msgstr "Sinal 2 definido pelo usuário"
+msgstr "Sinal 2 definido pelo usuário"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "O Filho saiu"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
-msgstr "Falha na Energia Elétrica"
+msgstr "Falha na Energia Elétrica"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Parado"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Parado (entrada tty)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Parado (saida tty)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Parado (sinal)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "Tempo de CPU excedido"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "Tamanho do arquivo excedido"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "Temporizador virtual expirou"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "Temporizador de perfil expirou"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "Janela alterada"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
-msgstr "Continuação"
+msgstr "Continuação"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
-msgstr "Condição de E/S urgente"
+msgstr "Condição de E/S urgente"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
-msgstr "Possível E/S"
+msgstr "Possível E/S"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "Recurso perdido"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Sinal perigoso"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
-msgstr "Solicitação de informação"
+msgstr "Solicitação de informação"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
-msgstr "Co-processador aritmético indisponível"
+msgstr "Co-processador aritmético indisponível"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
"%s No strcache buffers\n"
msgstr ""
+"\n"
+"%s Não há strcache buffers\n"
-#: strcache.c:304
-#, fuzzy, c-format
+#: src/strcache.c:304
+#, c-format
msgid ""
"\n"
"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
"B\n"
-msgstr "%s strcache usado: total = %d (%d) / max = %d / min = %d / med = %d\n"
+msgstr ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / armazenamento = %lu / med = "
+"%lu B\n"
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
+"%s buf atual: tamanho = %hu B / usado = %hu B / contado = %hu / med = %u B\n"
-#: strcache.c:319
-#, fuzzy, c-format
+#: src/strcache.c:319
+#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
-msgstr "%s strcache usado: total = %d (%d) / max = %d / min = %d / med = %d\n"
+msgstr "%s outro usado: total = %lu B / contado = %lu / med = %lu B\n"
-#: strcache.c:322
-#, fuzzy, c-format
+#: src/strcache.c:322
+#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
-msgstr "%s strcache livres: total = %d (%d) / max = %d / min = %d / med = %d\n"
+msgstr ""
+"%s outro livre: total = %lu B / max = %lu B / min = %lu B / med = %hu B\n"
-#: strcache.c:326
-#, fuzzy, c-format
+#: src/strcache.c:326
+#, c-format
msgid ""
"\n"
"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
msgstr ""
"\n"
-"%s # de cadeias em strcache: %d / pesquisados = %lu / encontrados = %lu\n"
+"%s desempenho strcache: pesquisados = %lu / encontrados = %lu%%\n"
-#: strcache.c:328
-#, fuzzy
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
msgstr ""
-"\n"
"# tabela hash de arquivos:\n"
-"# "
+"#"
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
-msgstr "automático"
+msgstr "automático"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
-msgstr "padrão"
+msgstr "padrão"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "ambiente"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "makefile"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "ambiente sob -e"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "linha de comando"
-#: variable.c:1647
-#, fuzzy
+#: src/variable.c:1671
msgid "'override' directive"
-msgstr "diretiva `override'"
+msgstr "diretiva 'override' "
-#: variable.c:1658
-#, fuzzy, c-format
+#: src/variable.c:1682
+#, c-format
msgid " (from '%s', line %lu)"
-msgstr " (de `%s', linha %lu)"
+msgstr " (de '%s', linha %lu) "
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
-msgstr "# tabela hash do conjunto de variávies:\n"
+msgstr "# tabela hash do conjunto de variávies:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
msgstr ""
"\n"
-"# Variáveis\n"
+"# Variáveis\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
msgstr ""
"\n"
-"# Valores da variável de padrões específicos"
+"# Valores da variável de padrões específicos"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
msgstr ""
"\n"
-"# Faltam valores para variável de padrões específicos"
+"# Faltam valores para variável de padrões específicos"
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
"# %u pattern-specific variable values"
msgstr ""
"\n"
-"# %u valores para variável de padrões específicos"
+"# %u valores para variável de padrões específicos"
-#: variable.h:224
-#, fuzzy, c-format
+#: src/variable.h:229
+#, c-format
msgid "warning: undefined variable '%.*s'"
-msgstr "aviso: variável indefinida `%.*s'"
+msgstr "aviso: variável indefinida '%.*s' "
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr "sys$search() falhou com %d\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr "-warning, pode ser preciso reativar o CTRL-Y no DCL.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "CD EMBUTIDO %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
-msgstr ""
+msgstr "DCL: %s\n"
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr "Saida redirecionada para %s\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr "Acrescentado %.*s e limpo\n"
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
-msgstr "Executando %s ao invés de\n"
+msgstr "Executando %s ao invés de\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2159,73 +2288,95 @@ msgstr ""
"\n"
"# Caminho VPATH\n"
-#: vpath.c:620
-#, fuzzy
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
-msgstr "# Sem caminho `vpath'."
+msgstr "# Sem caminho 'vpath'. "
-#: vpath.c:622
-#, fuzzy, c-format
+#: src/vpath.c:622
+#, c-format
msgid ""
"\n"
"# %u 'vpath' search paths.\n"
msgstr ""
"\n"
-"# %u caminhos `vpath'.\n"
+"# %u caminhos 'vpath'.\n"
+"\n"
-#: vpath.c:625
-#, fuzzy
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
msgstr ""
"\n"
-"# Sem caminho genérico (variável `VPATH')."
+"# Sem caminho genérico (variável 'VPATH')."
-#: vpath.c:631
-#, fuzzy
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
"# "
msgstr ""
"\n"
-"# Caminho genérico (variável `VPATH'):\n"
+"# Caminho genérico (variável 'VPATH'):\n"
"# "
-#: w32/w32os.c:46
-#, fuzzy, c-format
+#: src/w32/w32os.c:44
+#, c-format
msgid "Jobserver slots limited to %d\n"
-msgstr "Cliente Jobserver (fds %d,%d)\n"
+msgstr "Slots Jobserver limitados a %d)\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
-msgstr ""
+msgstr "criando semáforos jobserver: (Erro %ld: %s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
-msgstr ""
+msgstr "erro interno: falha ao abrir o semáforo jobserver '%s': (Erro %ld: %s)"
-#: w32/w32os.c:84
-#, fuzzy, c-format
+#: src/w32/w32os.c:82
+#, c-format
msgid "Jobserver client (semaphore %s)\n"
-msgstr "Cliente Jobserver (fds %d,%d)\n"
+msgstr "Cliente Jobserver (semáforo %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
-msgstr ""
+msgstr "liberar semáforos do jobserver: (Erro %ld: %s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
-msgstr ""
+msgstr "semáforo ou processo filho espera: (Erro %ld: %s)"
+
+#~ msgid "%s: %s: Command not found\n"
+#~ msgstr "%s %s: Comando não encontrado\n"
+
+#~ msgid "%s[%u]: %s: Command not found\n"
+#~ msgstr "%s[%u]: %s: Comando não encontrado\n"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s: Interpretador de comandos não encontrado"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s está suspenso por 30 segundos..."
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "sleep(30) concluido. Continuando.\n"
+
+#~ msgid "Unknown error %d"
+#~ msgstr "Erro desconhecido %d"
+
+#~ msgid "Warning: File '%s' has modification time in the future"
+#~ msgstr "** Aviso: O arquivo '%s' está com a hora adiantada "
+
+#~ msgid " terminal."
+#~ msgstr " terminal."
#~ msgid "# Invalid value in `update_status' member!"
-#~ msgstr "# Valor inválido no membro `update_status' !"
+#~ msgstr "# Valor inválido no membro `update_status' !"
#~ msgid "*** [%s] Error 0x%x (ignored)"
#~ msgstr "*** [%s] Erro 0x%x (ignorado)"
@@ -2240,16 +2391,16 @@ msgstr ""
#~ msgstr "Chamando comandos internos para atualizar o alvo `%s'.\n"
#~ msgid "internal error: multiple --jobserver-fds options"
-#~ msgstr "erro interno: múltiplas opções --jobserver-fds"
+#~ msgstr "erro interno: múltiplas opções --jobserver-fds"
#~ msgid "dup jobserver"
#~ msgstr "dup jobserver"
#~ msgid "virtual memory exhausted"
-#~ msgstr "A memória virtual encheu"
+#~ msgstr "A memória virtual encheu"
#~ msgid "write error"
-#~ msgstr "erro de gravação"
+#~ msgstr "erro de gravação"
#~ msgid "%s # of strcache buffers: %d (* %d B/buffer = %d B)\n"
#~ msgstr "%s # de buffers strcache: %d (* %d B/buffer = %d B)\n"
@@ -2264,7 +2415,7 @@ msgstr ""
#~ "#"
#~ msgid "Warning: Empty redirection\n"
-#~ msgstr "Aviso: Redireção vazia\n"
+#~ msgstr "Aviso: Redireção vazia\n"
#~ msgid "internal error: `%s' command_state"
#~ msgstr "erro interno: `%s' command_state"
@@ -2291,7 +2442,7 @@ msgstr ""
#~ msgstr "Saida redirecionada para %s\n"
#~ msgid "Error spawning, %d\n"
-#~ msgstr "Erro de execução, %d\n"
+#~ msgstr "Erro de execução, %d\n"
#~ msgid "process_easy() failed failed to launch process (e=%ld)\n"
#~ msgstr "process_easy() falhou ao executar o processo (e=%ld)\n"
@@ -2301,9 +2452,9 @@ msgstr ""
#~ "%sThere is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n"
#~ "%sPARTICULAR PURPOSE.\n"
#~ msgstr ""
-#~ "%sEste é um programa livre; veja o fonte para as condições de cópia.\n"
-#~ "%sNão há garantias; nem mesmo de COMERCIALIZAÇÃO OU ATENDIMENTO A UMA\n"
-#~ "%sFUNÇÃO EM PARTICULAR.\n"
+#~ "%sEste é um programa livre; veja o fonte para as condições de cópia.\n"
+#~ "%sNão há garantias; nem mesmo de COMERCIALIZAÇÃO OU ATENDIMENTO A UMA\n"
+#~ "%sFUNÇÃO EM PARTICULAR.\n"
#~ msgid "extraneous `endef'"
#~ msgstr "`endef' extranho"
@@ -2312,10 +2463,10 @@ msgstr ""
#~ msgstr "diretiva `override' vazia"
#~ msgid "invalid `override' directive"
-#~ msgstr "diretiva `override' inválida"
+#~ msgstr "diretiva `override' inválida"
#~ msgid "-warning, CTRL-Y will leave sub-process(es) around.\n"
-#~ msgstr "-warning, CTRL-Y sairá do(s) subprocesso(s).\n"
+#~ msgstr "-warning, CTRL-Y sairá do(s) subprocesso(s).\n"
#~ msgid "Syntax error, still inside '\"'\n"
#~ msgstr "Erro de sintaxe dentro de '\"'\n"
@@ -2324,16 +2475,16 @@ msgstr ""
#~ msgstr "Recebido um SIGSHLD; %u processos filhos descarregados.\n"
#~ msgid "Do not specify -j or --jobs if sh.exe is not available."
-#~ msgstr "Não especifique -j ou --jobs se o sh.exe não estiver disponível."
+#~ msgstr "Não especifique -j ou --jobs se o sh.exe não estiver disponível."
#~ msgid "Resetting make for single job mode."
-#~ msgstr "Reiniciando o make para o modo de trabalho único."
+#~ msgstr "Reiniciando o make para o modo de trabalho único."
#~ msgid "no file name for `%sinclude'"
#~ msgstr "sem nome de arquivo para `%sinclude'"
#~ msgid "target `%s' leaves prerequisite pattern empty"
-#~ msgstr "O alvo `%s' deixou pre-requisito padrão vazio"
+#~ msgstr "O alvo `%s' deixou pre-requisito padrão vazio"
#~ msgid ""
#~ "\n"
diff --git a/po/ru.gmo b/po/ru.gmo
index b13e248..8bfdf7e 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 0e5ec72..c2ccf94 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -6,132 +6,134 @@
# Alexey Mahotkin <alexm@hsys.msk.ru>, 2001.
# Denis Perchine <dyp@perchine.com>, 2001, 2002.
# Pavel Maryanov <acid_jack@ukr.net>, 2009.
-# Yuri Kozlov <yuray@komyakino.ru>, 2009, 2010, 2013, 2014, 2016.
+# Yuri Kozlov <yuray@komyakino.ru>, 2009, 2010, 2013, 2014, 2016, 2019, 2020.
msgid ""
msgstr ""
-"Project-Id-Version: make 4.2\n"
+"Project-Id-Version: make 4.2.93\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
-"PO-Revision-Date: 2016-05-23 20:04+0300\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2020-01-03 22:09+0300\n"
"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
"Language-Team: Russian <gnu@d07.ru>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 1.5\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Lokalize 2.0\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: ar.c:46
+#: src/ar.c:46
#, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "попытка иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ ÑредÑтва: «%s»"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "обновление времени Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‡Ð»ÐµÐ½Ð° архива невозможно в ÑиÑтеме VMS"
-#: ar.c:147
+#: src/ar.c:147
#, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "обновление времени изменениÑ: Ðрхив «%s» не ÑущеÑтвует"
-#: ar.c:150
+#: src/ar.c:150
#, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "обновление времени изменениÑ: Ðеверный архив: «%s»"
-#: ar.c:157
+#: src/ar.c:157
#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "обновление времени изменениÑ: Элемент «%s» не ÑодержитÑÑ Ð² «%s»"
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr ""
"обновление времени изменениÑ: Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ ar_member_touch вернула\n"
"ошибочное значение Ð´Ð»Ñ Â«%s»"
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr "lbr$set_module() не Ñмогла извлечь информацию о модуле, ÑÑ‚Ð°Ñ‚ÑƒÑ = %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "lbr$init_control() вернула код ошибки %d"
-#: arscan.c:261
+#: src/arscan.c:261
#, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr ""
"невозможно открыть библиотеку «%s» Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑоÑтоÑÐ½Ð¸Ñ Ñлемента %d"
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr "Элемент «%s»%s: %ld байт по адреÑу %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (Ð¸Ð¼Ñ Ð¼Ð¾Ð¶ÐµÑ‚ быть уÑечено)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Дата %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, mode = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr "Ð’ ÑпоÑобе Ñлишком много Ñтрок (%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** ОÑтанов.\n"
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr "*** [%s] Элемент архива «%s», кажетÑÑ, недейÑтвителен; не удалён"
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr "*** Элемент архива «%s», кажетÑÑ, недейÑтвителен; не удалён"
-#: commands.c:645
+#: src/commands.c:646
#, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] УдалÑетÑÑ Ñ„Ð°Ð¹Ð» «%s»"
-#: commands.c:647
+#: src/commands.c:648
#, c-format
msgid "*** Deleting file '%s'"
msgstr "*** УдалÑетÑÑ Ñ„Ð°Ð¹Ð» «%s»"
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
msgstr "# ÑпоÑоб, который Ñледует применить"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (вÑтроенные):"
-#: commands.c:688
+#: src/commands.c:689
#, c-format
msgid " (from '%s', line %lu):\n"
msgstr " (из «%s», Ñтрока %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -139,222 +141,222 @@ msgstr ""
"\n"
"# Каталоги\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: невозможно получить ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð²Ñ‹Ð·Ð¾Ð²Ð¾Ð¼ stat.\n"
-#: dir.c:1085
-#, fuzzy
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
-msgstr "# %s (ключ %s, mtime %ull): невозможно открыть.\n"
+msgstr "# %s (ключ %s, mtime %l64u): невозможно открыть.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr "# %s (уÑтройÑтво %d, inode [%d,%d,%d]): невозможно открыть.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr "# %s (уÑтройÑтво %ld, inode %ld): невозможно открыть.\n"
-#: dir.c:1122
-#, fuzzy
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
-msgstr "# %s (ключ %s, mtime %ull): "
+msgstr "# %s (ключ %s, mtime %l64u): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (уÑтройÑтво %d, inode [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (уÑтройÑтво %ld, inode %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "Ðет"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " файлов,"
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "нет"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " недоÑтижимых целей"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " на текущий момент."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " недоÑтижимых целей в %lu каталогах.\n"
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr "РекурÑÐ¸Ð²Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Â«%s» ÑÑылаетÑÑ Ñама на ÑÐµÐ±Ñ (в результате)"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½Ð½Ð°Ñ ÑÑылка на переменную"
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr "СпоÑоб Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» был задан в %s:%lu,"
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr "СпоÑоб Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» был найден из неÑвного правила,"
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr "но «%s» и «%s» теперь ÑчитаютÑÑ Ð¾Ð´Ð½Ð¸Ð¼ и тем же файлом."
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr ""
"СпоÑоб Ð´Ð»Ñ Â«%s» игнорируетÑÑ, вмеÑто него будет иÑпользован ÑпоÑоб Ð´Ð»Ñ Â«%s»."
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr ""
"невозможно переименовать «%s» Ñ Ð¾Ð´Ð½Ð¸Ð¼ двоеточием в «%s» Ñ Ð´Ð²ÑƒÐ¼Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ñми"
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr ""
"невозможно переименовать «%s» Ñ Ð´Ð²ÑƒÐ¼Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ñми в «%s» Ñ Ð¾Ð´Ð½Ð¸Ð¼ двоеточием"
-#: file.c:408
+#: src/file.c:408
#, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "*** Удаление промежуточного файла «%s»"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "Удаление промежуточных файлов...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "Текущее времÑ"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: Временной штамп выходит за пределы диапазона; подÑтавлÑем %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# Ðе ÑвлÑетÑÑ Ñ†ÐµÐ»ÑŒÑŽ:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# Ценный файл (завиÑимоÑÑ‚ÑŒ .PRECIOUS)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# ПÑевдоцель (завиÑимоÑÑ‚ÑŒ от .PHONY)."
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# Цель, Ð²Ñ‹Ð·Ñ‹Ð²Ð°ÐµÐ¼Ð°Ñ Ð¸Ð· командной Ñтроки."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr "# По умолчанию, MAKEFILES, или -include/sinclude makefile."
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
msgstr "# Ð’Ñтроенное правило"
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# ПроизводилÑÑ Ð¿Ð¾Ð¸Ñк неÑвных правил."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# ПоиÑк неÑвных правил не производилÑÑ."
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr "# ОÑнова неÑвного или ÑтатичеÑкого образца: «%s»\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr "# Файл — Ð¿Ñ€Ð¾Ð¼ÐµÐ¶ÑƒÑ‚Ð¾Ñ‡Ð½Ð°Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑ‚ÑŒ."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# Собирает также:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# Ð’Ñ€ÐµÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ð¸ разу не проверÑлоÑÑŒ."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# Файл не ÑущеÑтвует."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# Файл очень Ñтарый."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# Ð’Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ñледнего Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# Файл был обновлён."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# Файл не был обновлён."
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# Ð’ данный момент уже применÑетÑÑ Ð½ÐµÐºÐ¸Ð¹ ÑпоÑоб (ЭТО ОШИБКÐ)."
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr ""
"# Ð’ данный момент уже применÑетÑÑ Ð½ÐµÐºÐ¸Ð¹ ÑпоÑоб по завиÑимоÑÑ‚Ñм (ЭТО ОШИБКÐ)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# УÑпешно обновлено."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# Должно быть обновлено (задан ключ -q)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# Попытка Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÐµÐ·ÑƒÑпешна."
-#: file.c:1032
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
msgstr "# Ðеверное значение члена «command_state»!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -362,7 +364,7 @@ msgstr ""
"\n"
"# Файлы"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -372,334 +374,342 @@ msgstr ""
"# ÑоÑтоÑние файлов хеш-таблицы:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr "%s: Поле «%s» не кешировано: %s"
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
msgstr "нечиÑловой первый аргумент функции «word»"
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr "первый аргумент функции «word» должен быть больше нулÑ"
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
msgstr "нечиÑловой первый аргумент функции «wordlist»"
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
msgstr "нечиÑловой второй аргумент функции «wordlist»"
-#: function.c:1525
+#: src/function.c:1533
#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "windows32_openpipe: DuplicateHandle(In) вернула код ошибки (e=%ld)\n"
-#: function.c:1549
+#: src/function.c:1557
#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr "windows32_openpipe: DuplicateHandle(Err) вернула код ошибки (e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "CreatePipe() вернула код ошибки (e=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe(): process_init_fd() завершилаÑÑŒ неудачно\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "Очищаю временный пакетный файл %s\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr "файл: отÑутÑтвует Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°"
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
msgstr "открытие: %s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
msgstr "запиÑÑŒ: %s: %s"
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, c-format
msgid "close: %s: %s"
msgstr "закрытие: %s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr "файл: Ñлишком много аргументов"
-#: function.c:2262
+#: src/function.c:2277
#, c-format
msgid "read: %s: %s"
msgstr "чтение: %s: %s"
-#: function.c:2275
+#: src/function.c:2290
#, c-format
msgid "file: invalid file operation: %s"
msgstr "файл: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð¼: %s"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr "недоÑтаточно аргументов (вÑего %d) функции «%s»"
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "не реализовано на Ñтой платформе: Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Â«%s»"
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr "незавершённый вызов функции «%s»: пропущено «%c»"
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr "ПуÑтое Ð¸Ð¼Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸"
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr "Ðекорректное Ð¸Ð¼Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸: %s"
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr "Слишком длинное Ð¸Ð¼Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸: %s"
-#: function.c:2657
+#: src/function.c:2674
#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
msgstr "Ðекорректное минимальное чиÑло аргументов (вÑего %u) функции %s"
-#: function.c:2660
+#: src/function.c:2677
#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
msgstr "Ðекорректное макÑимальное чиÑло аргументов (вÑего %u) функции %s"
# Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ getopt иÑключены, Ñ‚.к. они отноÑÑÑ‚ÑÑ Ðº уже
# уÑтаревшей верÑии Ñтой библиотеки, и иÑчезнут в Ñледующей верÑии make
-#: getopt.c:659
+#: src/getopt.c:659
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: ключ «%s» не однозначен\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: ключ «--%s» должен иÑпользоватьÑÑ Ð±ÐµÐ· аргумента\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: ключ «%c%s» должен иÑпользоватьÑÑ Ð±ÐµÐ· аргумента\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: ключу «%s» требуетÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: неизвеÑтный ключ «--%s»\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: неизвеÑтный ключ «%c%s»\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: недопуÑтимый ключ -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: неверный ключ -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: ключ требует аргумент -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: ключ «-W %s» неоднозначен\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: ключ «-W %s» должен иÑпользоватьÑÑ Ð±ÐµÐ· аргумента\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr "guile: раÑширÑетÑÑ Â«%s»\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr "guile: вычиÑлÑетÑÑ Â«%s»\n"
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr "не удалоÑÑŒ выделить %lu байт Ð´Ð»Ñ Ñ…ÐµÑˆ-таблицы: закончилаÑÑŒ памÑÑ‚ÑŒ"
-#: hash.c:280
+#: src/hash.c:280
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "Загружено=%ld/%ld=%.0f%%, "
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "Загружено=%lu/%lu=%.0f%%, "
-#: hash.c:282
+#: src/hash.c:282
#, c-format
-msgid "Rehash=%d, "
-msgstr "Переформулировано=%d, "
+msgid "Rehash=%u, "
+msgstr "Переформулировано=%u, "
-#: hash.c:283
+#: src/hash.c:283
#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "Противоречий=%ld/%ld=%.0f%%"
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "Противоречий=%lu/%lu=%.0f%%"
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr "ПоиÑк неÑвного правила Ð´Ð»Ñ Â«%s».\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr "ПоиÑк неÑвного правила Ð´Ð»Ñ Ñлемента архива «%s».\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr "Избежание рекурÑивного вызова неÑвного правила.\n"
-#: implicit.c:486
+#: src/implicit.c:484
#, c-format
-msgid "Stem too long: '%.*s'.\n"
-msgstr "Слишком длинный образец: «%.*s».\n"
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "Слишком длинный образец: «%s%.*s».\n"
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr "Попытка Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð° Ñ Ð¾Ð±Ñ€Ð°Ð·Ñ†Ð¾Ð¼ «%.*s».\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr "Отвержение невозможной завиÑимоÑти правила «%s».\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr "Отвержение невозможной неÑвной завиÑимоÑти «%s».\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr "Попытка Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð° завиÑимоÑти «%s».\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr "Попытка Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½ÐµÑвной завиÑимоÑти «%s».\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr "Обнаружена завиÑимоÑÑ‚ÑŒ «%s» в виде VPATH «%s»\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr "ПоиÑк правила Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ¶ÑƒÑ‚Ð¾Ñ‡Ð½Ñ‹Ð¼ файлом «%s».\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr "Ðе удалоÑÑŒ Ñоздать временный файл\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (Ñделан дамп памÑти)"
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr " (игнорирование)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
msgstr "<вÑтроенное>"
-#: job.c:510
+#: src/job.c:573
#, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "%s[%s: %s] Ошибка %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** Ожидание Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ð¹â€¦"
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "Ðезавершённый потомок %p (%s) PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (удалённый)"
-#: job.c:831
-#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "ПодбираетÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡Ð½Ð¾ завершившийÑÑ Ð¿Ð¾Ñ‚Ð¾Ð¼Ð¾Ðº %p PID %s %s\n"
-
-#: job.c:832
+#: src/job.c:898
#, c-format
msgid "Reaping winning child %p PID %s %s\n"
msgstr "ПодбираетÑÑ ÑƒÐ´Ð°Ñ‡Ð½Ð¾ завершившийÑÑ Ð¿Ð¾Ñ‚Ð¾Ð¼Ð¾Ðº %p PID %s %s\n"
-#: job.c:839
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "ПодбираетÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡Ð½Ð¾ завершившийÑÑ Ð¿Ð¾Ñ‚Ð¾Ð¼Ð¾Ðº %p PID %s %s\n"
+
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "Подчищаю временный пакетный файл %s\n"
-#: job.c:845
+#: src/job.c:956
#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr "ОчиÑтка временного пакетного файла %s завершилаÑÑŒ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹ (%d)\n"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr "УдалÑетÑÑ Ð¿Ð¾Ñ‚Ð¾Ð¼Ð¾Ðº %p PID %s%s из цепочки.\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr "ОÑвобождён токен Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ° %p (%s).\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "process_easy() не Ñмогла запуÑтить процеÑÑ (e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -708,93 +718,87 @@ msgstr ""
"\n"
"При неудачном запуÑке ÑоÑчитано %d аргументов\n"
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr "Помещение потомка %p (%s) PID %s%s в цепочку потомков.\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "Получен токен Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ° %p (%s).\n"
-#: job.c:1838
+#: src/job.c:1902
#, c-format
msgid "%s: target '%s' does not exist"
msgstr "%s: цель «%s» не ÑущеÑтвует"
-#: job.c:1841
+#: src/job.c:1905
#, c-format
msgid "%s: update target '%s' due to: %s"
msgstr "%s: обновление цели «%s» из-за: %s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr "Ñта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ ÑиÑтема не позволÑет уÑтанавливать пределы загрузки"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "невозможно уÑтановить пределы загрузки: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr "закончилиÑÑŒ файловые деÑкрипторы: не удалоÑÑŒ Ñделать копию stdin\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr "закончилиÑÑŒ файловые деÑкрипторы: не удалоÑÑŒ Ñделать копию stdout\n"
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr "закончилиÑÑŒ файловые деÑкрипторы: не удалоÑÑŒ Ñделать копию stderr\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr "Ðе удалоÑÑŒ воÑÑтановить stdin\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr "Ðе удалоÑÑŒ воÑÑтановить stdout\n"
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr "Ðе удалоÑÑŒ воÑÑтановить stderr\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr "make нашла завершившегоÑÑ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ° pid %s, вÑÑ‘ ещё ожидает pid %s\n"
-#: job.c:2275
-#, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: %s: Команда не найдена\n"
-
-#: job.c:2277
+#: src/job.c:2623
#, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s[%u]: %s: Команда не найдена\n"
-
-#: job.c:2337
-#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: Командный процеÑÑор не найден"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr "spawnvpe: вероÑтно, закончилоÑÑŒ меÑто под окружение"
-#: job.c:2584
+#: src/job.c:2862
#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $SHELL изменилаÑÑŒ (было «%s», теперь «%s»)\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr "СоздаётÑÑ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¹ пакетный файл %s\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
@@ -802,7 +806,7 @@ msgstr ""
"Содержимое файла пакетных заданий:\n"
"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
@@ -811,59 +815,56 @@ msgstr ""
"Содержимое файла пакетных заданий:%s\n"
"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr ""
"%s (Ñтрока %d) Плохой контекÑÑ‚ командного процеÑÑора (!unixy && !"
"batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr "-O[ТИП] (--output-sync[=ТИП]) не наÑтроен в данной Ñборке."
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr "Ðе удалоÑÑŒ открыть глобальную таблицу Ñимволов: %s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr "Загруженный объект %s не объÑвлено как ÑовмеÑтимый Ñ GPL"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr "Ðе удалоÑÑŒ загрузить Ñимвол %s из %s: %s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr "ПуÑтое Ð¸Ð¼Ñ Ñимвола Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸: %s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr "ЗагружаетÑÑ Ñимвол %s из %s\n"
-#: load.c:256
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Â«load» не поддерживаетÑÑ Ð½Ð° Ñтой платформе."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "Ключи:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr " -b, -m ИгнорируетÑÑ Ð´Ð»Ñ ÑовмеÑтимоÑти.\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr " -B, --always-make Без уÑловий отрабатывать вÑе цели.\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
@@ -871,18 +872,18 @@ msgstr ""
" -C КÐТÐЛОГ, --directory=КÐТÐЛОГ\n"
" Перейти в КÐТÐЛОГ перед выполнением дейÑтвий.\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr " -d Выводить маÑÑу отладочных Ñообщений.\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
" --debug[=ФЛÐГИ] Выводить различные типы отладочной "
"информации.\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
@@ -891,13 +892,13 @@ msgstr ""
" Переменные Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ð·Ð°Ð¼ÐµÐ½ÑÑŽÑ‚ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ "
"makefile.\n"
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
-" --eval=СТРОКРВычиÑлить СТРОКУ как предложение makefile.\n"
+" -E СТРОКÐ, --eval=СТРОКРВычиÑлить СТРОКУ как предложение makefile.\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -905,15 +906,15 @@ msgstr ""
" -f ФÐЙЛ, --file=ФÐЙЛ, --makefile=ФÐЙЛ\n"
" ИÑпользовать ФÐЙЛ в качеÑтве makefile.\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help Показать Ñту Ñправку и выйти.\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr " -i, --ignore-errors Игнорировать ошибки ÑпоÑобов.\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
@@ -921,7 +922,7 @@ msgstr ""
" -I КÐТÐЛОГ, --include-dir=КÐТÐЛОГ\n"
" ИÑкать включаемые make-файлы в КÐТÐЛОГЕ.\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
@@ -930,14 +931,14 @@ msgstr ""
" еÑли N не указано, чиÑло заданий "
"неограничено.\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
" -k, --keep-going Продолжать работу, даже еÑли некоторые цели\n"
" не могут быть доÑтигнуты.\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
@@ -946,7 +947,7 @@ msgstr ""
" -l [N], --load-average[=N], --max-load[=N] Ðе запуÑкать\n"
" неÑколько заданий, еÑли загрузка больше N.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
@@ -954,7 +955,7 @@ msgstr ""
" -L, --check-symlink-times ИÑпользовать поÑледнее mtime при выборе между\n"
" ÑимволичеÑкими ÑÑылками и целью.\n"
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
@@ -964,7 +965,7 @@ msgstr ""
" Ðе применÑÑ‚ÑŒ ÑпоÑоб на Ñамом деле; проÑто\n"
" напечатать его.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
@@ -974,7 +975,7 @@ msgstr ""
" Считать ФÐЙЛ очень Ñтарым и не переделывать "
"его.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
@@ -983,12 +984,12 @@ msgstr ""
" Синхронизировать вывод параллельных\n"
" заданий Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼ ТИП.\n"
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr ""
" -p, --print-data-base Ðапечатать внутреннюю базу данных make.\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
@@ -997,23 +998,29 @@ msgstr ""
" код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚, вÑÑ‘ ли уже "
"Ñделано.\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr ""
" -r, --no-builtin-rules Ðе иÑпользовать вÑтроенные неÑвные правила.\n"
# Что такое "variable settings"?
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr ""
" -R, --no-builtin-variables Выключить уÑтановку вÑтроенных\n"
" значений переменных.\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr " -s, --silent, --quiet Ðе показывать Ñами ÑпоÑобы.\n"
-#: main.c:393
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" --no-silent Показывать ÑпоÑобы (отключает режим --"
+"silent).\n"
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
@@ -1021,26 +1028,26 @@ msgstr ""
" -S, --no-keep-going, --stop\n"
" Отменить ключ -k.\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
" -t, --touch УÑтановить Ð²Ñ€ÐµÐ¼Ñ Ð´Ð¾Ñтупа целей в текущее,\n"
" а не переÑобирать их.\n"
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
msgstr " --trace Выводить траÑÑировочную информацию.\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr " -v, --version Показать информацию о верÑии и выйти.\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory Ðапечатать текущий каталог.\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
@@ -1048,7 +1055,7 @@ msgstr ""
" --no-print-directory Отменить ключ -w, даже еÑли он был Ñвно "
"указан.\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1056,7 +1063,7 @@ msgstr ""
" -W ФÐЙЛ, --what-if=ФÐЙЛ, --new-file=ФÐЙЛ, --assume-new=ФÐЙЛ\n"
" Считать ФÐЙЛ вÑегда новым.\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
@@ -1064,26 +1071,27 @@ msgstr ""
" --warn-undefined-variables Выдавать предупреждение при ÑÑылке\n"
" на неопределённую переменную.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "пуÑÑ‚Ð°Ñ Ñтрока недопуÑтима в качеÑтве имени файла"
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
msgstr "задан неизвеÑтный уровень отладки «%s»"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr "неизвеÑтный тип output-sync «%s»"
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr "%s: поймано прерывание или иÑключение (код = 0x%lx, Ð°Ð´Ñ€ÐµÑ = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1098,136 +1106,146 @@ msgstr ""
"Флаги иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ = %lx\n"
"ÐÐ´Ñ€ÐµÑ Ð¸ÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "Ðарушение доÑтупа: Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñи по адреÑу 0x%p\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "Ðарушение доÑтупа: Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð°Ð´Ñ€ÐµÑа 0x%p\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell() уÑтанавливает default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, 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:1538
+#: src/main.c:1609
#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s приоÑтанавливаетÑÑ Ð½Ð° 30 Ñекунд..."
-
-#: main.c:1540
-#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "sleep(30) завершён. Продолжаем.\n"
-
-#: main.c:1627
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
"предупреждение: Ñервер заданий недоÑтупен: иÑпользуетÑÑ -j1. Добавьте «+» к "
"правилу в родительÑком make."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
msgstr ""
-"предупреждение: в Ñуб-Makefile принудительно задан -jN; режим Ñервера "
-"заданий запрещён"
+"предупреждение: в Ñуб-Makefile принудительно задан -j%d; ÑÐ±Ñ€Ð¾Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° "
+"Ñервера заданий"
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr "Makefile из Ñтандартного ввода указан дважды."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (временный файл)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (временный файл)"
-#: main.c:2048
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr ""
+"предупреждение: в makefile принудительно задан -j%d; ÑÐ±Ñ€Ð¾Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° Ñервера "
+"заданий"
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr "Параллельные Ð·Ð°Ð´Ð°Ð½Ð¸Ñ (-j) не поддерживаютÑÑ Ð½Ð° Ñтой платформе."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "ВозвращаетÑÑ Ñ€ÐµÐ¶Ð¸Ð¼ одиночного Ð·Ð°Ð´Ð°Ð½Ð¸Ñ (-j1)."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr "СимволичеÑкие ÑÑылки не поддерживаютÑÑ: отменÑетÑÑ ÐºÐ»ÑŽÑ‡ -L."
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "Обновление make-файлов....\n"
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr "Make-файл «%s», возможно, зациклен, он не будет переÑобиратьÑÑ.\n"
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
msgstr "Попытка переÑобрать make-файл «%s» завершилаÑÑŒ неудачно."
-#: main.c:2299
+#: src/main.c:2323
#, c-format
msgid "Included makefile '%s' was not found."
msgstr "Включаемый make-файл «%s» не найден."
-#: main.c:2304
+#: src/main.c:2328
#, c-format
msgid "Makefile '%s' was not found"
msgstr "Make-файл «%s» не найден"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "Ðевозможно перейти в первоначальный каталог."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "Повторное выполнение[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (временный файл)"
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ".DEFAULT_GOAL Ñодержит более одной цели"
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Ðе заданы цели и не найден make-файл"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "Ðет целей"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Ðе заданы цели и не найден make-файл"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "Обновление целей результата...\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr "предупреждение: Ðеправильный ход чаÑов. Сборка может быть неполной."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "ИÑпользование: %s [КЛЮЧ]... [ЦЕЛЬ]...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1236,7 +1254,7 @@ msgstr ""
"\n"
"Эта программа Ñобрана Ð´Ð»Ñ %s\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1245,32 +1263,32 @@ msgstr ""
"\n"
"Эта программа Ñобрана Ð´Ð»Ñ %s (%s)\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr "Сообщайте об ошибках по адреÑу <bug-make@gnu.org>\n"
-#: main.c:2870
+#: src/main.c:2901
#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "длÑ ключа «%s%s» нужно указать аргументом непуÑтую Ñтроку"
-#: main.c:2934
+#: src/main.c:2965
#, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "ключ «-%c» должен иÑпользоватьÑÑ Ñ Ñ†ÐµÐ»Ñ‹Ð¼ положительным аргументом"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%sЭта программа Ñобрана Ð´Ð»Ñ %s\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%sЭта программа Ñобрана Ð´Ð»Ñ %s (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1283,7 +1301,7 @@ msgstr ""
"%sЭто Ñвободное программное обеÑпечение: вы можете Ñвободно изменÑÑ‚ÑŒ его и\n"
"%sраÑпроÑтранÑÑ‚ÑŒ. ÐЕТ ÐИКÐКИХ ГÐРÐÐТИЙ вне пределов, допуÑтимых законом.\n"
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1292,7 +1310,7 @@ msgstr ""
"\n"
"# База данных Make, напечатана %s"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1301,346 +1319,382 @@ msgstr ""
"\n"
"# Печать базы данных Make завершена %s\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr ""
"%s: пользователь %lu (дейÑтвительный %lu),\n"
"группа %lu (дейÑÑ‚Ð²Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "ДоÑтуп инициализации"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr "ДоÑтуп пользователÑ"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "ДоÑтуп make"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "ДоÑтуп потомка"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: Вход в неизвеÑтный каталог\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: Выход из неизвеÑтного каталога\n"
-#: output.c:109
+#: src/output.c:102
#, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "%s: вход в каталог «%s»\n"
-#: output.c:111
+#: src/output.c:104
#, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "%s: выход из каталога «%s»\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: вход в неизвеÑтный каталог\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: выход из неизвеÑтного каталога\n"
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr "%s[%u]: вход в каталог «%s»\n"
-#: output.c:122
+#: src/output.c:115
#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "%s[%u]: выход из каталога «%s»\n"
-#: output.c:495 output.c:497
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
msgstr "ошибка запиÑи: stdout"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". ОÑтанов.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr "-O[ТИП] (--output-sync[=ТИП]) не наÑтроен в данной Ñборке."
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "ÑоздаётÑÑ ÐºÐ°Ð½Ð°Ð» заданий"
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
msgstr "делаетÑÑ ÐºÐ¾Ð¿Ð¸Ñ ÐºÐ°Ð½Ð°Ð»Ð° заданий"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ ÐºÐ°Ð½Ð°Ð»Ð° Ñервера заданий"
-#: posixos.c:90
+#: src/posixos.c:119
#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ñтрока --jobserver-auth «%s»"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr "Клиент Ñервера заданий (fds %d,%d)\n"
-#: posixos.c:109
+#: src/posixos.c:138
msgid "jobserver pipeline"
msgstr "конвейер Ñервера заданий"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr "запиÑÑŒ Ñервера заданий"
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr "Ñервер заданий выключен"
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
msgstr "pselect из канала заданий"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "чтение канала заданий"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "Чтение make-файлов...\n"
-#: read.c:329
+#: src/read.c:336
#, c-format
msgid "Reading makefile '%s'"
msgstr "Чтение make-файла «%s»"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (нет цели по умолчанию)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (путь поиÑка)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (игнорировать ошибки)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (не раÑкрывать Ñимвол `~') "
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr "ПропуÑк UTF-8 BOM в make-файле «%s»\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr "ПропуÑк UTF-8 BOM в буфере make-файла\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "неверный ÑинтакÑÐ¸Ñ Ð² уÑловном выражении"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr "%s: не удалоÑÑŒ загрузить"
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
msgstr "обнаружен ÑпоÑоб до первого Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ†ÐµÐ»Ð¸"
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
msgstr "перед ÑпоÑобом отÑутÑтвует правило"
-#: read.c:1124
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr "пропущен разделитель (возможно нужен TAB вмеÑто воÑьми пробелов?)"
-#: read.c:1126
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
msgstr "пропущен разделитель"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "пропущен образец цели"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "неÑколько образцов цели"
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
msgstr "образец цели не Ñодержит «%%»"
-#: read.c:1390
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
msgstr "отÑутÑтвует «endif»"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "пуÑтое Ð¸Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹"
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
msgstr "излишний текÑÑ‚ поÑле директивы «define»"
-#: read.c:1488
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "отÑутÑтвует «endif», Ð½ÐµÐ·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½Ð½Ð°Ñ Â«define»"
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
msgstr "излишний текÑÑ‚ поÑле директивы «endef»"
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
msgstr "Излишний текÑÑ‚ поÑле директивы «%s»"
-#: read.c:1589
+#: src/read.c:1604
#, c-format
msgid "extraneous '%s'"
msgstr "излишнÑÑ Â«%s»"
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
msgstr "в уÑловном выражении возможна только одна «else»"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr "Ðеправильный формат Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ цели"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr "в ÑпоÑобах не могут задаватьÑÑ Ð·Ð°Ð²Ð¸ÑимоÑти"
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr "Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ñ‹Ñ… целей должен предоÑтавлÑÑ‚ÑŒÑÑ ÑпоÑоб"
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr "Ñмешаны неÑвные правила и правила Ñо ÑтатичеÑкими образцами"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "Ñмешаны неÑвные и обычные правила"
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr "цель «%s» не ÑоответÑтвует образцу целей"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
msgstr "целевой файл «%s» имеет Ð²Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¸ Ñ :, и Ñ ::"
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
msgstr "цель «%s» указана неÑколько раз в одном правиле"
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr "предупреждение: переопределение ÑпоÑоба Ð´Ð»Ñ Ñ†ÐµÐ»Ð¸ «%s»"
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr "предупреждение: Ñтарый ÑпоÑоб Ð´Ð»Ñ Ñ†ÐµÐ»Ð¸ «%s» игнорируютÑÑ"
-#: read.c:2223
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr "*** Ñмешаны неÑвные и обычные правила: уÑтаревший ÑинтакÑиÑ"
-#: read.c:2542
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "предупреждение: переопределение членÑтва группы Ð´Ð»Ñ Ñ†ÐµÐ»Ð¸ «%s»"
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr "предупреждение: вÑтречен Ñимвол NUL; игнорируетÑÑ Ð´Ð¾ конца Ñтроки"
-#: remake.c:226
+#: src/remake.c:226
#, c-format
msgid "Nothing to be done for '%s'."
msgstr "Цель «%s» не требует Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´."
-#: remake.c:227
+#: src/remake.c:227
#, c-format
msgid "'%s' is up to date."
msgstr "«%s» не требует обновлениÑ."
-#: remake.c:323
+#: src/remake.c:323
#, c-format
msgid "Pruning file '%s'.\n"
msgstr "ОбрезаетÑÑ Ñ„Ð°Ð¹Ð» «%s».\n"
-#: remake.c:406
+#: src/remake.c:389
#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr "%sÐет правила Ð´Ð»Ñ Ñборки цели «%s», требуемой Ð´Ð»Ñ Â«%s»%s"
-#: remake.c:416
+#: src/remake.c:399
#, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%sÐет правила Ð´Ð»Ñ Ñборки цели «%s»%s"
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
msgstr "Обработка целевого файла «%s».\n"
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° обновить файл «%s» завершилаÑÑŒ неудачно.\n"
-#: remake.c:461
+#: src/remake.c:444
#, c-format
msgid "File '%s' was considered already.\n"
msgstr "Файл «%s» уже был обработан.\n"
-#: remake.c:471
+#: src/remake.c:454
#, c-format
msgid "Still updating file '%s'.\n"
msgstr "Файл «%s» обновлÑетÑÑ Ð² данный момент.\n"
-#: remake.c:474
+#: src/remake.c:457
#, c-format
msgid "Finished updating file '%s'.\n"
msgstr "Обновление файла «%s» завершено.\n"
-#: remake.c:503
+#: src/remake.c:486
#, c-format
msgid "File '%s' does not exist.\n"
msgstr "Файл «%s» не ÑущеÑтвует.\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
@@ -1648,147 +1702,147 @@ msgstr ""
"*** Предупреждение: у файла «%s» параметр LOW_RESOLUTION_TIME Ñодержит метку "
"времени Ñ Ð²Ñ‹Ñокой точноÑтью"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr "Ðайдено неÑвное правило Ð´Ð»Ñ Â«%s».\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr "Ðе найдено неÑвного правила Ð´Ð»Ñ Â«%s».\n"
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
msgstr "ИÑпользование ÑпоÑоба по умолчанию Ð´Ð»Ñ Â«%s».\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "ЦикличеÑÐºÐ°Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑ‚ÑŒ %s <- %s пропущена."
-#: remake.c:691
+#: src/remake.c:674
#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr "Обновление целей, от которых завиÑит целевой файл «%s», завершено.\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr "Цели, от которых завиÑит «%s», в наÑтоÑщий момент ÑобираютÑÑ.\n"
-#: remake.c:711
+#: src/remake.c:694
#, c-format
msgid "Giving up on target file '%s'.\n"
msgstr "Ðварийный оÑтанов на целевом файле «%s».\n"
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
msgstr "Цель «%s» не была переÑобрана из-за ошибок."
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr "ЗавиÑимоÑÑ‚ÑŒ «%s» Ð´Ð»Ñ Ñ†ÐµÐ»Ð¸ «%s» завиÑит от порÑдка.\n"
-#: remake.c:773
+#: src/remake.c:756
#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr "ЗавиÑимоÑÑ‚ÑŒ «%s» цели «%s» не ÑущеÑтвует.\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr "ЗавиÑимоÑÑ‚ÑŒ «%s» новее, чем цель «%s».\n"
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr "ЗавиÑимоÑÑ‚ÑŒ «%s» Ñтарее, чем цель «%s».\n"
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr "Цель «%s» объÑвлена Ñ Ð´Ð²ÑƒÐ¼Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ñми и не имеет завиÑимоÑтей.\n"
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr "СпоÑоб Ð´Ð»Ñ Â«%s» не задан, и начальные уÑÐ»Ð¾Ð²Ð¸Ñ Ð½Ðµ изменены.\n"
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr "ПереÑборка «%s» из-за уÑтановленного флага always-make.\n"
-#: remake.c:819
+#: src/remake.c:802
#, c-format
msgid "No need to remake target '%s'"
msgstr "Ðет необходимоÑти переÑобирать цель «%s»"
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
msgstr "; иÑпользуетÑÑ VPATH-Ð¸Ð¼Ñ Â«%s»"
-#: remake.c:841
+#: src/remake.c:824
#, c-format
msgid "Must remake target '%s'.\n"
msgstr "Ðеобходимо переÑобрать цель «%s».\n"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr " ИгнорируетÑÑ VPATH-Ð¸Ð¼Ñ Â«%s».\n"
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr "Ð’ наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÑетÑÑ ÑпоÑоб «%s».\n"
-#: remake.c:863
+#: src/remake.c:846
#, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr "Ðе удалоÑÑŒ переÑоздать файл цели «%s».\n"
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr "Целевой файл «%s» уÑпешно переÑоздан.\n"
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr "Целевой файл «%s» требует переÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð¼ -q.\n"
-#: remake.c:1064
+#: src/remake.c:1047
#, c-format
msgid "Using default commands for '%s'.\n"
msgstr "ИÑпользование команд по умолчанию Ð´Ð»Ñ Â«%s».\n"
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "Предупреждение: Ð²Ñ€ÐµÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» находитÑÑ Ð² будущем"
-
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr "Предупреждение: Ð²Ñ€ÐµÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» находитÑÑ Ð² будущем (%s)"
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr "Элемент .LIBPATTERNS «%s» не ÑвлÑетÑÑ Ð¾Ð±Ñ€Ð°Ð·Ñ†Ð¾Ð¼"
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr "Ðе ÑкÑпортируемые наÑтройки: %s\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -1796,7 +1850,7 @@ msgstr ""
"\n"
"# ÐеÑвные правила"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1804,181 +1858,177 @@ msgstr ""
"\n"
"# ÐеÑвных правил нет."
-#: rule.c:514
+#: src/rule.c:548
#, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
-"# ÐеÑвных правил: %u, терминальных: %u"
+"# ÐеÑвных правил: %u, терминальных: %u (%.1f%%)"
-#: rule.c:523
-msgid " terminal."
-msgstr " терминал."
-
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "ОШИБКÐ: неверное значение num_pattern_rules! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "неизвеÑтный Ñигнал"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Обрыв терминальной линии"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "Прерывание"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Ðварийное прерывание"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¸Ð½ÑтрукциÑ"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "Прерывание на контрольной точке"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Прервано"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "Ошибка IOT"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "Ошибка ÑмулÑции"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "Ошибка операции Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Уничтожение"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "Ðеверное обращение к памÑти"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Ðарушение прав доÑтупа к памÑти"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "Ðеправильный ÑиÑтемный вызов"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "Обрыв канала"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Сигнал по таймеру"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "Завершение"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "ОпределÑемый пользователем Ñигнал 1"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "ОпределÑемый пользователем Ñигнал 2"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "Потомок завершил работу"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Отказ питаниÑ"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "ОÑтанов"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "ОÑтанов (ввод Ñ Ñ‚ÐµÑ€Ð¼Ð¸Ð½Ð°Ð»Ð°) "
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "ОÑтанов (вывод на терминал)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "ОÑтанов (Ñигнал)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "Превышен предел процеÑÑорного времени"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "Превышен предел размера файла"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "Виртуальное Ð²Ñ€ÐµÐ¼Ñ Ð¸Ñтекло"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ñтекло"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "Окно изменено"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Возобновление"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "УÑÐ»Ð¾Ð²Ð¸Ñ ÑкÑтренного ввода/вывода"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "Возможен ввод/вывод"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "РеÑÑƒÑ€Ñ Ð¿Ð¾Ñ‚ÐµÑ€Ñн"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Сигнал опаÑноÑти"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "СопроцеÑÑор Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой недоÑтупен"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
@@ -1987,7 +2037,7 @@ msgstr ""
"\n"
"%s без буферов strcache\n"
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -1998,21 +2048,21 @@ msgstr ""
"%s буферы strcache: %lu (%lu) / Ñтрок = %lu / хранилище = %lu Б / Ñред = %lu "
"Б\n"
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
"%s текущий buf: размер = %hu Б / иÑпользуетÑÑ = %hu Б / кол-во = %hu / Ñред "
-"= %hu Б\n"
+"= %u Б\n"
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr ""
"%s Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ иÑпользуетÑÑ: вÑего = %lu Б / кол-во = %lu / Ñред = %lu Б\n"
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
@@ -2020,7 +2070,7 @@ msgstr ""
"%s Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñвободно: вÑего = %lu Б / макÑ. = %lu Б / мин. = %lu Б / "
"Ñред. = %hu Б\n"
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
@@ -2029,7 +2079,7 @@ msgstr ""
"\n"
"%s производительноÑÑ‚ÑŒ strcache: поиÑков = %lu / найдено = %lu%%\n"
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
@@ -2037,44 +2087,44 @@ msgstr ""
"# ÑоÑтоÑние хеш-таблицы:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "автоматичеÑкаÑ"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "по умолчанию"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "определена в Ñреде"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "make-файл"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "окружение Ñ -e"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "определена в командной Ñтроке"
-#: variable.c:1647
+#: src/variable.c:1671
msgid "'override' directive"
msgstr "Директива «override»"
-#: variable.c:1658
+#: src/variable.c:1682
#, c-format
msgid " (from '%s', line %lu)"
msgstr " (из «%s», Ñтрока %lu)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr "# ÑоÑтоÑние переменных в хеш-таблице:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2082,7 +2132,7 @@ msgstr ""
"\n"
"# Переменные\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
@@ -2090,7 +2140,7 @@ msgstr ""
"\n"
"# Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… оÑобенные Ð´Ð»Ñ Ð¼Ð°Ñки"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2098,7 +2148,7 @@ msgstr ""
"\n"
"# Ðет значений переменных оÑобенных Ð´Ð»Ñ Ð¼Ð°Ñки."
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
@@ -2107,49 +2157,49 @@ msgstr ""
"\n"
"# %u значений переменных оÑобенных Ð´Ð»Ñ Ð¼Ð°Ñки"
-#: variable.h:224
+#: src/variable.h:229
#, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "предупреждение: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Â«%.*s»"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr "sys$search() вернула код ошибки %d\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr ""
"-предупреждение, возможно вам потребуетÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ разрешить\n"
"обработку CTRL-Y из DCL.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "ВСТРОЕÐÐЫЙ CD %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr "DCL: %s\n"
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr "Стандартный вывод добавлен в %s\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr "Добавить %.*s и очиÑтить\n"
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "ВмеÑто заданного выполнÑетÑÑ %s\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2157,11 +2207,11 @@ msgstr ""
"\n"
"# Пути поиÑка VPATH\n"
-#: vpath.c:620
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
msgstr "# Ðе определён путь поиÑка «vpath»."
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
@@ -2170,7 +2220,7 @@ msgstr ""
"\n"
"# %u путей поиÑка по «vpath»\n"
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
@@ -2178,7 +2228,7 @@ msgstr ""
"\n"
"# Ðе определён общий (Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Â«VPATH») путь поиÑка."
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
@@ -2188,17 +2238,17 @@ msgstr ""
"# Общий (Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Â«VPATH») путь поиÑка:\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr "КоличеÑтво Ñлотов Ñервера заданий ограничено %d\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr "Ñоздание Ñемафора Ñервера заданий: (ошибка %ld: %s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
@@ -2206,21 +2256,45 @@ msgstr ""
"внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: не удалоÑÑŒ открыть Ñемафор Ñервера заданий «%s»: (ошибка "
"%ld: %s)"
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr "Клиент Ñервера заданий (Ñемафор %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr "оÑвобождение Ñемафора Ñервера заданий: (ошибка %ld: %s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr "ожидание Ñемафора или процеÑÑа-потомка: (ошибка %ld: %s)"
+#~ msgid "%s: %s: Command not found\n"
+#~ msgstr "%s: %s: Команда не найдена\n"
+
+#~ msgid "%s[%u]: %s: Command not found\n"
+#~ msgstr "%s[%u]: %s: Команда не найдена\n"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s: Командный процеÑÑор не найден"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s приоÑтанавливаетÑÑ Ð½Ð° 30 Ñекунд..."
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "sleep(30) завершён. Продолжаем.\n"
+
+#~ msgid "Unknown error %d"
+#~ msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° %d"
+
+#~ msgid "Warning: File '%s' has modification time in the future"
+#~ msgstr "Предупреждение: Ð²Ñ€ÐµÐ¼Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» находитÑÑ Ð² будущем"
+
+#~ msgid " terminal."
+#~ msgstr " терминал."
+
#~ msgid "%s: recipe for target '%s' failed"
#~ msgstr "%s: ошибка Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñ€ÐµÑ†ÐµÐ¿Ñ‚Ð° Ð´Ð»Ñ Ñ†ÐµÐ»Ð¸ «%s»"
diff --git a/po/sr.gmo b/po/sr.gmo
new file mode 100644
index 0000000..42ba5ef
--- /dev/null
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
new file mode 100644
index 0000000..2ec9769
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,2274 @@
+# Serbian translation for make.
+# Copyright (C) 2016 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
+# МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>, 2016.
+msgid ""
+msgstr ""
+"Project-Id-Version: make-4.2.1\n"
+"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2016-12-17 12:09+0200\n"
+"Last-Translator: МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>\n"
+"Language-Team: Serbian <(nothing)>\n"
+"Language: sr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: src/ar.c:46
+#, c-format
+msgid "attempt to use unsupported feature: '%s'"
+msgstr "покушавам да кориÑтим неподржану функцију: „%s“"
+
+#: src/ar.c:123
+#, c-format
+msgid "touch archive member is not available on VMS"
+msgstr "члан архиве додирника није доÑтупан на ВМС-у"
+
+#: src/ar.c:147
+#, c-format
+msgid "touch: Archive '%s' does not exist"
+msgstr "touch: Ðрхива „%s“ не поÑтоји"
+
+#: src/ar.c:150
+#, c-format
+msgid "touch: '%s' is not a valid archive"
+msgstr "touch: „%s“ није иÑправна архива"
+
+#: src/ar.c:157
+#, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
+msgstr "touch: Члан „%s“ не поÑтоји у „%s“"
+
+#: src/ar.c:164
+#, c-format
+msgid "touch: Bad return code from ar_member_touch on '%s'"
+msgstr "touch: Лош повратни код из „ar_member_touch“ на „%s“"
+
+#: src/arscan.c:130
+#, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
+msgstr ""
+"Функција „lbr$set_module()“ није уÑпела да извуче податке модула, Ñтање = %d"
+
+#: src/arscan.c:236
+#, c-format
+msgid "lbr$ini_control() failed with status = %d"
+msgstr "Функција „lbr$ini_control()“ није уÑпела Ñа Ñтањем = %d"
+
+#: src/arscan.c:261
+#, c-format
+msgid "unable to open library '%s' to lookup member status %d"
+msgstr "не могу да отворим библиотеку „%s“ да потражим Ñтање члана %d"
+
+#: src/arscan.c:944
+#, c-format
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "Члан „%s“%s: %ld бајта при %ld (%ld).\n"
+
+#: src/arscan.c:945
+msgid " (name might be truncated)"
+msgstr " (назив је можда Ñкраћен)"
+
+#: src/arscan.c:947
+#, c-format
+msgid " Date %s"
+msgstr " Датум %s"
+
+#: src/arscan.c:948
+#, c-format
+msgid " uid = %d, gid = %d, mode = 0%o.\n"
+msgstr " уид = %d, гид = %d, режим = 0%o.\n"
+
+#: src/commands.c:403
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr "Рецепт има превише редова (%ud)"
+
+#: src/commands.c:504
+msgid "*** Break.\n"
+msgstr "*** Прекид.\n"
+
+#: src/commands.c:628
+#, c-format
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
+msgstr "*** [%s] Члан архиве „%s“ је можда лажан; није обриÑан"
+
+#: src/commands.c:632
+#, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
+msgstr "*** Члан архиве „%s“ је можда лажан; није обриÑан"
+
+#: src/commands.c:646
+#, c-format
+msgid "*** [%s] Deleting file '%s'"
+msgstr "*** [%s] Бришем датотеку „%s“"
+
+#: src/commands.c:648
+#, c-format
+msgid "*** Deleting file '%s'"
+msgstr "*** Бришем датотеку „%s“"
+
+#: src/commands.c:684
+msgid "# recipe to execute"
+msgstr "# рецепт за извршавање"
+
+#: src/commands.c:687
+msgid " (built-in):"
+msgstr " (уграђено):"
+
+#: src/commands.c:689
+#, c-format
+msgid " (from '%s', line %lu):\n"
+msgstr " (од „%s“, %lu. ред):\n"
+
+#: src/dir.c:1073
+msgid ""
+"\n"
+"# Directories\n"
+msgstr ""
+"\n"
+"# Директоријуми\n"
+
+#: src/dir.c:1085
+#, c-format
+msgid "# %s: could not be stat'd.\n"
+msgstr "# %s: не могу да добавим податке.\n"
+
+#: src/dir.c:1089
+msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
+msgstr "# %s (кључ „%s“, м-време %I64u): не могу да отворим.\n"
+
+#: src/dir.c:1094
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
+msgstr "# %s (уређај %d, и-чвор [%d,%d,%d]): не могу да отворим.\n"
+
+#: src/dir.c:1099
+#, c-format
+msgid "# %s (device %ld, inode %ld): could not be opened.\n"
+msgstr "# %s (уређај %ld, и-чвор %ld): не могу да отворим.\n"
+
+#: src/dir.c:1126
+msgid "# %s (key %s, mtime %I64u): "
+msgstr "# %s (кључ „%s“, м-време %I64u): "
+
+#: src/dir.c:1131
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): "
+msgstr "# %s (уређај %d, и-чвор [%d,%d,%d]): "
+
+#: src/dir.c:1136
+#, c-format
+msgid "# %s (device %ld, inode %ld): "
+msgstr "# %s (уређај %ld, и-чвор %ld): "
+
+#: src/dir.c:1142 src/dir.c:1163
+msgid "No"
+msgstr "Ðе"
+
+#: src/dir.c:1145 src/dir.c:1166
+msgid " files, "
+msgstr " датотеке, "
+
+#: src/dir.c:1147 src/dir.c:1168
+msgid "no"
+msgstr "не"
+
+#: src/dir.c:1150
+msgid " impossibilities"
+msgstr " немогућноÑти"
+
+#: src/dir.c:1154
+msgid " so far."
+msgstr " за Ñада."
+
+#: src/dir.c:1171
+#, c-format
+msgid " impossibilities in %lu directories.\n"
+msgstr " немогућноÑти у %lu директоријума.\n"
+
+#: src/expand.c:125
+#, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
+msgstr "ДубинÑка променљива „%s“ упућује на Ñебе (евентуално)"
+
+#: src/expand.c:271
+#, c-format
+msgid "unterminated variable reference"
+msgstr "недовршена упута променљиве"
+
+#: src/file.c:278
+#, c-format
+msgid "Recipe was specified for file '%s' at %s:%lu,"
+msgstr "Рецепт је наведен за датотеку „%s“ у %s:%lu,"
+
+#: src/file.c:283
+#, c-format
+msgid "Recipe for file '%s' was found by implicit rule search,"
+msgstr "Ðашао Ñам рецепт за датотеку „%s“ изричитом претрагом правила,"
+
+#: src/file.c:287
+#, c-format
+msgid "but '%s' is now considered the same file as '%s'."
+msgstr "али Ñе „%s“ Ñада Ñматра иÑтом датотеком као „%s“."
+
+#: src/file.c:290
+#, c-format
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
+msgstr "Рецепат за „%s“ биће замењен у кориÑÑ‚ једног за „%s“."
+
+#: src/file.c:310
+#, c-format
+msgid "can't rename single-colon '%s' to double-colon '%s'"
+msgstr "не могу да преименујем једну двотачку „%s“ у две двотачке „%s“"
+
+#: src/file.c:316
+#, c-format
+msgid "can't rename double-colon '%s' to single-colon '%s'"
+msgstr "не могу да преименујем две двотачке „%s“ у једну двотачку „%s“"
+
+#: src/file.c:408
+#, c-format
+msgid "*** Deleting intermediate file '%s'"
+msgstr "*** Бришем поÑредничку датотеку „%s“"
+
+#: src/file.c:412
+#, c-format
+msgid "Removing intermediate files...\n"
+msgstr "Уклањам поÑредничке датотеке...\n"
+
+#: src/file.c:872
+msgid "Current time"
+msgstr "Тренутно време"
+
+#: src/file.c:876
+#, c-format
+msgid "%s: Timestamp out of range; substituting %s"
+msgstr "%s: ВременÑка ознака је ван опÑега; замењујем „%s“"
+
+#: src/file.c:1016
+msgid "# Not a target:"
+msgstr "# Ðије мета:"
+
+#: src/file.c:1021
+msgid "# Precious file (prerequisite of .PRECIOUS)."
+msgstr "# Драгоцена датотека (предуÑлов од „.PRECIOUS“)."
+
+#: src/file.c:1023
+msgid "# Phony target (prerequisite of .PHONY)."
+msgstr "# Лажна мета (предуÑлов од „.PHONY“)."
+
+#: src/file.c:1025
+msgid "# Command line target."
+msgstr "# Мета линије наредби."
+
+#: src/file.c:1027
+msgid "# A default, MAKEFILES, or -include/sinclude makefile."
+msgstr "# ОÑновно, „MAKEFILES“, или „-include/sinclude makefile“."
+
+#: src/file.c:1029
+msgid "# Builtin rule"
+msgstr "# Правило изградње"
+
+#: src/file.c:1031
+msgid "# Implicit rule search has been done."
+msgstr "# Претрага по изричитом правилу је обављена."
+
+#: src/file.c:1032
+msgid "# Implicit rule search has not been done."
+msgstr "# Претрага по изричитом правилу није обављена."
+
+#: src/file.c:1034
+#, c-format
+msgid "# Implicit/static pattern stem: '%s'\n"
+msgstr "# Изричити/Ñтатички корен шаблона: '%s'\n"
+
+#: src/file.c:1036
+msgid "# File is an intermediate prerequisite."
+msgstr "# Датотека је прелазни предуÑлов."
+
+#: src/file.c:1040
+msgid "# Also makes:"
+msgstr "# Такође твори:"
+
+#: src/file.c:1046
+msgid "# Modification time never checked."
+msgstr "# Време измене није никада проверено."
+
+#: src/file.c:1048
+msgid "# File does not exist."
+msgstr "# Датотека не поÑтоји."
+
+#: src/file.c:1050
+msgid "# File is very old."
+msgstr "# Датотека је превише Ñтара."
+
+#: src/file.c:1055
+#, c-format
+msgid "# Last modified %s\n"
+msgstr "# ПоÑледња измена „%s“\n"
+
+#: src/file.c:1058
+msgid "# File has been updated."
+msgstr "# Датотека је оÑвежена."
+
+#: src/file.c:1058
+msgid "# File has not been updated."
+msgstr "# Датотека није оÑвежена."
+
+#: src/file.c:1062
+msgid "# Recipe currently running (THIS IS A BUG)."
+msgstr "# Рецепт тренутно ради (ОВО ЈЕ ГРЕШКÐ)."
+
+#: src/file.c:1065
+msgid "# Dependencies recipe running (THIS IS A BUG)."
+msgstr "# Рецепт завиÑноÑти ради (ОВО ЈЕ ГРЕШКÐ)."
+
+#: src/file.c:1074
+msgid "# Successfully updated."
+msgstr "# УÑпешно је оÑвежена."
+
+#: src/file.c:1078
+msgid "# Needs to be updated (-q is set)."
+msgstr "# Треба да Ñе оÑвежи („-q“ је подешено)."
+
+#: src/file.c:1081
+msgid "# Failed to be updated."
+msgstr "# Ðије уÑпела да Ñе оÑвежи."
+
+#: src/file.c:1086
+msgid "# Invalid value in 'command_state' member!"
+msgstr "# ÐеиÑправна вередноÑÑ‚ у члану „command_state“!"
+
+#: src/file.c:1105
+msgid ""
+"\n"
+"# Files"
+msgstr ""
+"\n"
+"# Датотеке"
+
+#: src/file.c:1109
+msgid ""
+"\n"
+"# files hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# ÑтатиÑтика хеш-табеле датотека:\n"
+"# "
+
+#: src/file.c:1119
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr "%s: Поље „%s“ није у оÑтави: %s"
+
+#: src/function.c:794
+msgid "non-numeric first argument to 'word' function"
+msgstr "не-бројевни први аргумент за функцију „word“"
+
+#: src/function.c:799
+#, c-format
+msgid "first argument to 'word' function must be greater than 0"
+msgstr "први аргумент за функцију „word“ мора бити број већи од 0"
+
+#: src/function.c:819
+msgid "non-numeric first argument to 'wordlist' function"
+msgstr "не-бројевни први аргумент за функцију „wordlist“"
+
+#: src/function.c:821
+msgid "non-numeric second argument to 'wordlist' function"
+msgstr "не-бројевни други аргумент за функцију „wordlist“"
+
+#: src/function.c:1533
+#, c-format
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe: „DuplicateHandle(In)“ није уÑпело (e=%ld)\n"
+
+#: src/function.c:1557
+#, c-format
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "windows32_openpipe: „DuplicateHandle(Err)“ није уÑпело (e=%ld)\n"
+
+#: src/function.c:1564
+#, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "„CreatePipe()“ није уÑпело (e=%ld)\n"
+
+#: src/function.c:1572
+#, c-format
+msgid "windows32_openpipe(): process_init_fd() failed\n"
+msgstr "windows32_openpipe(): „process_init_fd()“ није уÑпело\n"
+
+#: src/function.c:1857
+#, c-format
+msgid "Cleaning up temporary batch file %s\n"
+msgstr "Бришем привремену датотеку групе „%s“\n"
+
+#: src/function.c:2230 src/function.c:2255
+#, c-format
+msgid "file: missing filename"
+msgstr "file: недоÑтаје назив датотеке"
+
+#: src/function.c:2234 src/function.c:2265
+#, c-format
+msgid "open: %s: %s"
+msgstr "open: %s: %s"
+
+#: src/function.c:2242
+#, c-format
+msgid "write: %s: %s"
+msgstr "write: %s: %s"
+
+#: src/function.c:2245 src/function.c:2282
+#, c-format
+msgid "close: %s: %s"
+msgstr "close: %s: %s"
+
+#: src/function.c:2258
+#, c-format
+msgid "file: too many arguments"
+msgstr "file: превише аргумената"
+
+#
+#: src/function.c:2277
+#, c-format
+msgid "read: %s: %s"
+msgstr "read: %s: %s"
+
+#: src/function.c:2290
+#, c-format
+msgid "file: invalid file operation: %s"
+msgstr "file: неиÑправна радња датотеке: %s"
+
+#: src/function.c:2405
+#, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
+msgstr "недовољан број аргумената (%d) за функцију „%s“"
+
+#: src/function.c:2417
+#, c-format
+msgid "unimplemented on this platform: function '%s'"
+msgstr "није примењено на овој платформи: функција „%s“"
+
+#: src/function.c:2483
+#, c-format
+msgid "unterminated call to function '%s': missing '%c'"
+msgstr "недовршен позив за функцију „%s“: недоÑтаје „%c“"
+
+#: src/function.c:2667
+#, c-format
+msgid "Empty function name"
+msgstr "Празан назив функције"
+
+#: src/function.c:2669
+#, c-format
+msgid "Invalid function name: %s"
+msgstr "ÐеиÑправан назив функције: %s"
+
+#: src/function.c:2671
+#, c-format
+msgid "Function name too long: %s"
+msgstr "Ðазив функције је предуг: %s"
+
+#: src/function.c:2674
+#, c-format
+msgid "Invalid minimum argument count (%u) for function %s"
+msgstr "ÐеиÑправан најмањи број аргумената (%u) за функцију „%s“"
+
+#: src/function.c:2677
+#, c-format
+msgid "Invalid maximum argument count (%u) for function %s"
+msgstr "ÐеиÑправан највећи број аргумената (%u) за функцију „%s“"
+
+#: src/getopt.c:659
+#, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s: опција „%s“ је нејаÑна\n"
+
+#: src/getopt.c:683
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: опција „--%s“ не дозвољава аргумент\n"
+
+#: src/getopt.c:688
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: опција „%c%s“ не дозвољава аргумент\n"
+
+#: src/getopt.c:705 src/getopt.c:878
+#, c-format
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s: опција „%s“ захтева аргумент\n"
+
+#: src/getopt.c:734
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: непозната опција „--%s“\n"
+
+#: src/getopt.c:738
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: непозната опција „%c%s“\n"
+
+#: src/getopt.c:764
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: неиÑправна опција -- %c\n"
+
+#: src/getopt.c:767
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s: неиÑправна опција -- %c\n"
+
+#: src/getopt.c:797 src/getopt.c:927
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: опција захтева аргумент -- %c\n"
+
+#: src/getopt.c:844
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: опција „-W %s“ је нејаÑна\n"
+
+#: src/getopt.c:862
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: опција „-W %s“ не дозвољава аргумент\n"
+
+#: src/guile.c:58
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr "guile: Проширујем „%s“\n"
+
+#: src/guile.c:74
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr "guile: Процењујем „%s“\n"
+
+#: src/hash.c:50
+#, c-format
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
+msgstr "не могу да доделим %lu бајта за хеш табелу: меморија је потрошена"
+
+#: src/hash.c:280
+#, fuzzy, c-format
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "Учитавам=%ld/%ld=%.0f%%, "
+
+#: src/hash.c:282
+#, fuzzy, c-format
+msgid "Rehash=%u, "
+msgstr "Поново хеширам=%d, "
+
+#: src/hash.c:283
+#, fuzzy, c-format
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "Сукоби=%ld/%ld=%.0f%%"
+
+#: src/implicit.c:38
+#, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
+msgstr "Тражим изричито правило за „%s“.\n"
+
+#: src/implicit.c:54
+#, c-format
+msgid "Looking for archive-member implicit rule for '%s'.\n"
+msgstr "Тражим изричито правило члана архиве за „%s“.\n"
+
+#: src/implicit.c:311
+#, c-format
+msgid "Avoiding implicit rule recursion.\n"
+msgstr "Избегавам дубачење изричитог правила.\n"
+
+#: src/implicit.c:484
+#, fuzzy, c-format
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "Корен је предуг: „%.*s“.\n"
+
+#: src/implicit.c:490
+#, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
+msgstr "Пробам правило шаблона Ñа кореном „%.*s“.\n"
+
+#: src/implicit.c:717
+#, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
+msgstr "Одбацујем немогућ предуÑлов правила „%s“.\n"
+
+#: src/implicit.c:718
+#, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
+msgstr "Одбацујем немогућ изричити предуÑлов „%s“.\n"
+
+#: src/implicit.c:732
+#, c-format
+msgid "Trying rule prerequisite '%s'.\n"
+msgstr "Покушавам Ñа предуÑловом правила „%s“.\n"
+
+#: src/implicit.c:733
+#, c-format
+msgid "Trying implicit prerequisite '%s'.\n"
+msgstr "Покушавам изричити предуÑлов „%s“.\n"
+
+#: src/implicit.c:772
+#, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
+msgstr "Ðађох предуÑлов „%s“ као „VPATH“ „%s“\n"
+
+#: src/implicit.c:786
+#, c-format
+msgid "Looking for a rule with intermediate file '%s'.\n"
+msgstr "Тражим правило Ñа Ñредњом датотеком „%s“.\n"
+
+#: src/job.c:370
+msgid "Cannot create a temporary file\n"
+msgstr "Ðе могу да направим привремену датотеку\n"
+
+#: src/job.c:548
+msgid " (core dumped)"
+msgstr " (језгрени избачај)"
+
+#: src/job.c:553
+msgid " (ignored)"
+msgstr " (занемарено)"
+
+#: src/job.c:557 src/job.c:1892
+msgid "<builtin>"
+msgstr "<уграђено>"
+
+#: src/job.c:573
+#, c-format
+msgid "%s[%s: %s] Error %d%s"
+msgstr "%s[%s: %s] грешка %d%s"
+
+#: src/job.c:662
+#, c-format
+msgid "*** Waiting for unfinished jobs...."
+msgstr "*** Чекам на недовршене поÑлове...."
+
+#: src/job.c:704
+#, c-format
+msgid "Live child %p (%s) PID %s %s\n"
+msgstr "Ðктиван Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ (%s) ПИД %s %s\n"
+
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
+msgid " (remote)"
+msgstr " (удаљено)"
+
+#: src/job.c:898
+#, c-format
+msgid "Reaping winning child %p PID %s %s\n"
+msgstr "ПочиÑтио Ñам уÑпели Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ ПИД %s %s\n"
+
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "ПочиÑтио Ñам неуÑпели Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ ПИД %s %s\n"
+
+#: src/job.c:950
+#, c-format
+msgid "Cleaning up temp batch file %s\n"
+msgstr "Бришем привремену датотеку групе „%s“\n"
+
+#: src/job.c:956
+#, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "ÐиÑам уÑпео да обришем привремену датотеку групе „%s“ (%d)\n"
+
+#: src/job.c:1071
+#, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
+msgstr "Уклањам Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ ПИД %s%s из ланца.\n"
+
+#: src/job.c:1120
+#, c-format
+msgid "Released token for child %p (%s).\n"
+msgstr "Отпуштен прÑтен за Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ (%s).\n"
+
+#: src/job.c:1575 src/job.c:2487
+#, c-format
+msgid "process_easy() failed to launch process (e=%ld)\n"
+msgstr "Функција „process_easy()“ није уÑпела да покрене Ð¿Ñ€Ð¾Ñ†ÐµÑ (e=%ld)\n"
+
+#: src/job.c:1579 src/job.c:2491
+#, c-format
+msgid ""
+"\n"
+"Counted %d args in failed launch\n"
+msgstr ""
+"\n"
+"Избројах %d аргумента у неуÑпелом покретању\n"
+
+#: src/job.c:1642
+#, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
+msgstr "Стављам Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ (%s) ПИД %s%s у ланац.\n"
+
+#: src/job.c:1875
+#, c-format
+msgid "Obtained token for child %p (%s).\n"
+msgstr "Добијен прÑтен за Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ â€ž%p“ (%s).\n"
+
+#: src/job.c:1902
+#, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "%s: мета „%s“ не поÑтоји"
+
+#: src/job.c:1905
+#, c-format
+msgid "%s: update target '%s' due to: %s"
+msgstr "%s: оÑвежавам мету „%s“ уÑлед: %s"
+
+#: src/job.c:2108
+#, c-format
+msgid "cannot enforce load limits on this operating system"
+msgstr "не могу да Ñпроведем ограничења оптерећења на овом оперативном ÑиÑтему"
+
+#: src/job.c:2110
+msgid "cannot enforce load limit: "
+msgstr "не могу да Ñпроведем ограничење оптерећења: "
+
+#: src/job.c:2200
+#, c-format
+msgid "no more file handles: could not duplicate stdin\n"
+msgstr "нема више ручки датотеке: не могу да удвоÑтручим Ñтандардни улаз\n"
+
+#: src/job.c:2212
+#, c-format
+msgid "no more file handles: could not duplicate stdout\n"
+msgstr "нема више ручки датотеке: не могу да удвоÑтручим Ñтандардни излаз\n"
+
+#: src/job.c:2226
+#, c-format
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr "нема више ручки датотеке: не могу да удвоÑтручим Ñтандардну грешку\n"
+
+#: src/job.c:2241
+#, c-format
+msgid "Could not restore stdin\n"
+msgstr "Ðе могу да повратим Ñтандардни улаз\n"
+
+#: src/job.c:2249
+#, c-format
+msgid "Could not restore stdout\n"
+msgstr "Ðе могу да повратим Ñтандардни излаз\n"
+
+#: src/job.c:2257
+#, c-format
+msgid "Could not restore stderr\n"
+msgstr "Ðе могу да повратим Ñтандардну грешку\n"
+
+#: src/job.c:2520
+#, c-format
+msgid "make reaped child pid %s, still waiting for pid %s\n"
+msgstr "мејк је почиÑтио Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñа пид-ом %s, још увек чекам на пид %s\n"
+
+#: src/job.c:2623
+#, c-format
+msgid "spawnvpe: environment space might be exhausted"
+msgstr "spawnvpe: можда је потрошен проÑтор окружења"
+
+#: src/job.c:2862
+#, c-format
+msgid "$SHELL changed (was '%s', now '%s')\n"
+msgstr "„$SHELL“ је промењена (беше „%s“, Ñада је „%s“)\n"
+
+#: src/job.c:3300 src/job.c:3485
+#, c-format
+msgid "Creating temporary batch file %s\n"
+msgstr "Правим привремену датотеку групе „%s“\n"
+
+#: src/job.c:3308
+#, c-format
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+"Садржај датотеке групе:\n"
+"\t@echo off\n"
+
+#: src/job.c:3497
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+"Садржај датотеке групе:%s\n"
+"\t%s\n"
+
+#: src/job.c:3605
+#, c-format
+msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
+msgstr "%s (%d. ред) Лош контекÑÑ‚ шкољке (!unixy && !batch_mode_shell)\n"
+
+#: src/load.c:60
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr "ÐиÑам уÑпео да отворим општу табелу Ñимбола: %s"
+
+#: src/load.c:97
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr "Учитани објекат „%s“ није проглашен да је ÑаглаÑан Ñа ОЈЛ-ом"
+
+#: src/load.c:104
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr "ÐиÑам уÑпео да учитам Ñимбол „%s“ из „%s“: %s"
+
+#: src/load.c:149
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr "Празан назив Ñимбола за учитано: „%s“"
+
+#: src/load.c:204
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr "Учитавам Ñимбол „%s“ из „%s“\n"
+
+#: src/load.c:256
+#, c-format
+msgid "The 'load' operation is not supported on this platform."
+msgstr "Радња „load“ није подржана на овој платформи."
+
+#: src/main.c:335
+msgid "Options:\n"
+msgstr "Опције:\n"
+
+#: src/main.c:336
+msgid " -b, -m Ignored for compatibility.\n"
+msgstr " -b, -m Занемарено зарад ÑаглаÑноÑти.\n"
+
+#: src/main.c:338
+msgid " -B, --always-make Unconditionally make all targets.\n"
+msgstr " -B, --always-make БезуÑловно одрађује Ñве мете.\n"
+
+#: src/main.c:340
+msgid ""
+" -C DIRECTORY, --directory=DIRECTORY\n"
+" Change to DIRECTORY before doing anything.\n"
+msgstr ""
+" -C ДИР, --directory=ДИР\n"
+" Прелази у ДИРЕКТОРИЈУМ пре него што било шта "
+"уради.\n"
+
+#: src/main.c:343
+msgid " -d Print lots of debugging information.\n"
+msgstr ""
+" -d ИÑпиÑује доÑта података за уклањање грешака.\n"
+
+#: src/main.c:345
+msgid ""
+" --debug[=FLAGS] Print various types of debugging information.\n"
+msgstr ""
+" --debug[=ЗÐСТÐВИЦЕ] ИÑпиÑује разне врÑте података за уклањање "
+"грешака.\n"
+
+#: src/main.c:347
+msgid ""
+" -e, --environment-overrides\n"
+" Environment variables override makefiles.\n"
+msgstr ""
+" -e, --environment-overrides\n"
+" Променљиве окружења превазилазе "
+"мејк_датотеке.\n"
+
+#: src/main.c:350
+#, fuzzy
+msgid ""
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
+msgstr ""
+" --eval=ÐИСКРПроцењује ÐИСКУ као изјаву мејк_датотеке.\n"
+
+#: src/main.c:352
+msgid ""
+" -f FILE, --file=FILE, --makefile=FILE\n"
+" Read FILE as a makefile.\n"
+msgstr ""
+" -f ДТТКÐ, --file=ДТТКÐ, --makefile=ДТТКÐ\n"
+" Чита ДÐТОТЕКУ као мејк_датотеку.\n"
+
+#: src/main.c:355
+msgid " -h, --help Print this message and exit.\n"
+msgstr " -h, --help Приказује ову помоћ и излази.\n"
+
+#: src/main.c:357
+msgid " -i, --ignore-errors Ignore errors from recipes.\n"
+msgstr " -i, --ignore-errors Занемарује грешке из рецепата.\n"
+
+#: src/main.c:359
+msgid ""
+" -I DIRECTORY, --include-dir=DIRECTORY\n"
+" Search DIRECTORY for included makefiles.\n"
+msgstr ""
+" -I ДИР, --include-dir=ДИР\n"
+" Тражи у ДИРЕКТОРИЈУМУ укључене мејк_датотеке.\n"
+
+#: src/main.c:362
+msgid ""
+" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
+"arg.\n"
+msgstr ""
+" -j [Бр.], --jobs[=Бр.] Допушта БРОЈ поÑла одједном; беÑконачан број "
+"поÑлова без аргумената.\n"
+
+#: src/main.c:364
+msgid ""
+" -k, --keep-going Keep going when some targets can't be made.\n"
+msgstr ""
+" -k, --keep-going ÐаÑтавља и даље када неке мете не могу бити "
+"одрађене.\n"
+
+#: src/main.c:366
+msgid ""
+" -l [N], --load-average[=N], --max-load[=N]\n"
+" Don't start multiple jobs unless load is below "
+"N.\n"
+msgstr ""
+" -l [Бр.], --load-average[=Бр.], --max-load[=Бр.]\n"
+" Ðе започиње више поÑлова оÑим ако оптерећење "
+"није иÑпод БРОЈÐ.\n"
+
+#: src/main.c:369
+msgid ""
+" -L, --check-symlink-times Use the latest mtime between symlinks and "
+"target.\n"
+msgstr ""
+" -L, --check-symlink-times КориÑти поÑледње м-време између Ñимболичких "
+"веза и мете.\n"
+
+#: src/main.c:371
+msgid ""
+" -n, --just-print, --dry-run, --recon\n"
+" Don't actually run any recipe; just print "
+"them.\n"
+msgstr ""
+" -n, --just-print, --dry-run, --recon\n"
+" Ðе покреће никакав рецепт; Ñамо их иÑпиÑује.\n"
+
+#: src/main.c:374
+msgid ""
+" -o FILE, --old-file=FILE, --assume-old=FILE\n"
+" Consider FILE to be very old and don't remake "
+"it.\n"
+msgstr ""
+" -o ДТТКÐ, --old-file=ДТТКÐ, --assume-old=ДТТКÐ\n"
+" Сматра да је ДÐТОТЕКРврло Ñтара и не одрађује "
+"је.\n"
+
+#: src/main.c:377
+msgid ""
+" -O[TYPE], --output-sync[=TYPE]\n"
+" Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+" -O[ВРСТÐ], --output-sync[=ВРСТÐ]\n"
+" УÑаглашава излаз паралелних поÑлова ВРСТОМ.\n"
+
+#: src/main.c:380
+msgid " -p, --print-data-base Print make's internal database.\n"
+msgstr ""
+" -p, --print-data-base ИÑпиÑује унутрашњу базу података мејка.\n"
+
+#: src/main.c:382
+msgid ""
+" -q, --question Run no recipe; exit status says if up to "
+"date.\n"
+msgstr ""
+" -q, --question Ðе покреће ниједан рецепт; излазно Ñтање "
+"говори да ли је оÑвежен.\n"
+
+#: src/main.c:384
+msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
+msgstr " -r, --no-builtin-rules ИÑкључује уграђена изричита правила.\n"
+
+#: src/main.c:386
+msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
+msgstr ""
+" -R, --no-builtin-variables ИÑкључује уграђена подешавања променљиве.\n"
+
+#: src/main.c:388
+msgid " -s, --silent, --quiet Don't echo recipes.\n"
+msgstr " -s, --silent, --quiet Ðе приказује рецепте.\n"
+
+#: src/main.c:390
+#, fuzzy
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" -q, --question Ðе покреће ниједан рецепт; излазно Ñтање "
+"говори да ли је оÑвежен.\n"
+
+#: src/main.c:392
+msgid ""
+" -S, --no-keep-going, --stop\n"
+" Turns off -k.\n"
+msgstr ""
+" -S, --no-keep-going, --stop\n"
+" ИÑкључује „-k“.\n"
+
+#: src/main.c:395
+msgid " -t, --touch Touch targets instead of remaking them.\n"
+msgstr ""
+" -t, --touch Додирује мете умеÑто да их поново одрађује.\n"
+
+#: src/main.c:397
+msgid " --trace Print tracing information.\n"
+msgstr " --trace ИÑпиÑује податке о праћењу.\n"
+
+#: src/main.c:399
+msgid ""
+" -v, --version Print the version number of make and exit.\n"
+msgstr " -v, --version ИÑпиÑује издање програма и излази.\n"
+
+#: src/main.c:401
+msgid " -w, --print-directory Print the current directory.\n"
+msgstr " -w, --print-directory ИÑпиÑује тренутни директоријум.\n"
+
+#: src/main.c:403
+msgid ""
+" --no-print-directory Turn off -w, even if it was turned on "
+"implicitly.\n"
+msgstr ""
+" --no-print-directory ИÑкључује „-w“, чак и ако је изричито "
+"укључена.\n"
+
+#: src/main.c:405
+msgid ""
+" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
+" Consider FILE to be infinitely new.\n"
+msgstr ""
+" -W ДТТКÐ, --what-if=ДТТКÐ, --new-file=ДТТКÐ, --assume-new=ДТТКÐ\n"
+" Сматра да је ДÐТОТЕКРбеÑконачно нова.\n"
+
+#: src/main.c:408
+msgid ""
+" --warn-undefined-variables Warn when an undefined variable is "
+"referenced.\n"
+msgstr ""
+" --warn-undefined-variables Упозорава када Ñе упућује на неодређену "
+"променљиву.\n"
+
+#: src/main.c:671
+#, c-format
+msgid "empty string invalid as file name"
+msgstr "празна ниÑка је неиÑправна као назив датотеке"
+
+#: src/main.c:754
+#, c-format
+msgid "unknown debug level specification '%s'"
+msgstr "непозната одредба нивоа прочишћавања „%s“"
+
+#: src/main.c:794
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr "непозната врÑта уÑклађивања излаза „%s“"
+
+#: src/main.c:849
+#, c-format
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
+msgstr "%s: Добих прекид/изузетак (код = 0x%lx, адреÑа = 0x%p)\n"
+
+#: src/main.c:856
+#, c-format
+msgid ""
+"\n"
+"Unhandled exception filter called from program %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = 0x%p\n"
+msgstr ""
+"\n"
+"Ðеобрадив филтер изузеткаје позван из програма „%s“\n"
+"Код изузетка = %lx\n"
+"ЗаÑтавице изузетка = %lx\n"
+"ÐдреÑа изузетка = 0x%p\n"
+
+#: src/main.c:864
+#, c-format
+msgid "Access violation: write operation at address 0x%p\n"
+msgstr "Повреда приÑтупа: радња пиÑања на адреÑи 0x%p\n"
+
+#: src/main.c:865
+#, c-format
+msgid "Access violation: read operation at address 0x%p\n"
+msgstr "Повреда приÑтупа: радња читања на адреÑи 0x%p\n"
+
+#: src/main.c:941 src/main.c:956
+#, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
+msgstr "Функција „нађи_и_подеÑи_шкољку()“ подешава „оÑновну_шкољку“ = %s\n"
+
+#: src/main.c:1009
+#, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
+msgstr ""
+"Претрага путање „нађи_и_подеÑи_шкољку()“ подешава „оÑновну_шкољку“ = %s\n"
+
+#: src/main.c:1609
+#, c-format
+msgid ""
+"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
+msgstr ""
+"упозорење: поÑлужитељ поÑла није доÑтупан: кориÑтим „-j1“. Додајте + да "
+"родитељ одреди правило."
+
+#: src/main.c:1617
+#, fuzzy, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
+msgstr ""
+"упозорење: „-jN“ је приÑиљено у Ñубмејку: иÑкључујем режим поÑлужитеља поÑла."
+
+#: src/main.c:1781
+#, c-format
+msgid "Makefile from standard input specified twice."
+msgstr "Мејк_датотека Ñа Ñтандардног улаза је наведена два пута."
+
+#: src/main.c:1819 src/vmsjobs.c:1248
+msgid "fopen (temporary file)"
+msgstr "отвори датотеку (привремена датотека)"
+
+#: src/main.c:1825
+msgid "fwrite (temporary file)"
+msgstr "запиши датотеку (привремена датотека)"
+
+#: src/main.c:2004
+#, fuzzy, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr ""
+"упозорење: „-jN“ је приÑиљено у Ñубмејку: иÑкључујем режим поÑлужитеља поÑла."
+
+#: src/main.c:2068
+#, c-format
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "Паралелни поÑлови (-j) ниÑу подржани на овој платформи."
+
+#: src/main.c:2069
+#, c-format
+msgid "Resetting to single job (-j1) mode."
+msgstr "Враћам на режим једног поÑла (-j1) mode."
+
+#: src/main.c:2109
+#, c-format
+msgid "Symbolic links not supported: disabling -L."
+msgstr "Симболичке везе ниÑу подржане: иÑкључујем „-L“."
+
+#: src/main.c:2190
+#, c-format
+msgid "Updating makefiles....\n"
+msgstr "ОÑвежавам мејк_датотеке...\n"
+
+#: src/main.c:2226
+#, c-format
+msgid "Makefile '%s' might loop; not remaking it.\n"
+msgstr "Мејк_датотека „%s“ Ñе можда понавља; неђу је поново одрадити.\n"
+
+#: src/main.c:2303
+#, c-format
+msgid "Failed to remake makefile '%s'."
+msgstr "ÐиÑам уÑпео поново да одрадим мејк_датотеку „%s“."
+
+#: src/main.c:2323
+#, c-format
+msgid "Included makefile '%s' was not found."
+msgstr "ÐиÑам нашао укључену мејк_датотеку „%s“."
+
+#: src/main.c:2328
+#, c-format
+msgid "Makefile '%s' was not found"
+msgstr "ÐиÑам нашао мејк_датотеку „%s“"
+
+#: src/main.c:2394
+#, c-format
+msgid "Couldn't change back to original directory."
+msgstr "Ðе могу да Ñе вратим у изворни директоријум."
+
+#: src/main.c:2402
+#, c-format
+msgid "Re-executing[%u]:"
+msgstr "Поново-извршавам[%u]:"
+
+#: src/main.c:2522
+msgid "unlink (temporary file): "
+msgstr "поништавам везу (привремена датотека): "
+
+#: src/main.c:2555
+#, c-format
+msgid ".DEFAULT_GOAL contains more than one target"
+msgstr "„.DEFAULT_GOAL“ Ñадржи више од једне мете"
+
+#: src/main.c:2579
+#, c-format
+msgid "No targets"
+msgstr "Ðема мета"
+
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "ÐиÑу наведене мете и ниÑам нашао мејк_датотеку"
+
+#: src/main.c:2586
+#, c-format
+msgid "Updating goal targets....\n"
+msgstr "ОÑвежавам циљне мете...\n"
+
+#: src/main.c:2610
+#, c-format
+msgid "warning: Clock skew detected. Your build may be incomplete."
+msgstr ""
+"упозорење: Откривен је проблем Ñа чаÑовником. Ваша изградња може бити "
+"недовршена."
+
+#: src/main.c:2804
+#, c-format
+msgid "Usage: %s [options] [target] ...\n"
+msgstr "Употреба: %s [опције] [мета] ...\n"
+
+#: src/main.c:2810
+#, c-format
+msgid ""
+"\n"
+"This program built for %s\n"
+msgstr ""
+"\n"
+"Овај програм је изграђен за „%s“\n"
+
+#: src/main.c:2812
+#, c-format
+msgid ""
+"\n"
+"This program built for %s (%s)\n"
+msgstr ""
+"\n"
+"Овај програм је изграђен за „%s“ (%s)\n"
+
+#: src/main.c:2815
+#, c-format
+msgid "Report bugs to <bug-make@gnu.org>\n"
+msgstr "Грешке пријавите на <bug-make@gnu.org>\n"
+
+#: src/main.c:2901
+#, c-format
+msgid "the '%s%s' option requires a non-empty string argument"
+msgstr "Опција „%s%s“ захтева аргумент не-празне ниÑке"
+
+#: src/main.c:2965
+#, c-format
+msgid "the '-%c' option requires a positive integer argument"
+msgstr "Опција „-%c“ захтева аргумент позитивног целог броја"
+
+#: src/main.c:3363
+#, c-format
+msgid "%sBuilt for %s\n"
+msgstr "%sИзградња за „%s“\n"
+
+#: src/main.c:3365
+#, c-format
+msgid "%sBuilt for %s (%s)\n"
+msgstr "%sИзградња за „%s“(%s)\n"
+
+#: src/main.c:3376
+#, c-format
+msgid ""
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"%sДозвола ОЈЛи3+: Гнуова ОЈЛ 3. издање или новије <http://gnu.org/licenses/"
+"gpl.html>\n"
+"%sОво је Ñлободан Ñофтвер: можете Ñлободно да га мењате и раÑподељујете.\n"
+"%sÐема ÐИКÐКВЕ ГÐРÐÐЦИЈЕ, у Ñкалду Ñа законом.\n"
+
+#: src/main.c:3397
+#, c-format
+msgid ""
+"\n"
+"# Make data base, printed on %s"
+msgstr ""
+"\n"
+"# База података мејка, штампана %s"
+
+#: src/main.c:3407
+#, c-format
+msgid ""
+"\n"
+"# Finished Make data base on %s\n"
+msgstr ""
+"\n"
+"# База података мејка је завршена %s\n"
+
+#: src/misc.c:643
+#, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s: кориÑник „%lu“ (Ñтварни „%lu“), група „%lu“ (Ñтварна „%lu“)\n"
+
+#: src/misc.c:664
+msgid "Initialized access"
+msgstr "Покренут приÑтуп"
+
+#: src/misc.c:743
+msgid "User access"
+msgstr "ПриÑтуп кориÑника"
+
+#: src/misc.c:791
+msgid "Make access"
+msgstr "ПриÑтуп мејка"
+
+#: src/misc.c:825
+msgid "Child access"
+msgstr "ПриÑтуп подпроцеÑа"
+
+#: src/output.c:97
+#, c-format
+msgid "%s: Entering an unknown directory\n"
+msgstr "%s: Улазим у непознат директоријум\n"
+
+#: src/output.c:99
+#, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "%s: Ðапуштам непознат директоријум\n"
+
+#: src/output.c:102
+#, c-format
+msgid "%s: Entering directory '%s'\n"
+msgstr "%s: Улазим у директоријум „%s“\n"
+
+#: src/output.c:104
+#, c-format
+msgid "%s: Leaving directory '%s'\n"
+msgstr "%s: Ðапуштам директоријум „%s“\n"
+
+#: src/output.c:108
+#, c-format
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]: Улазим у непознат директоријум\n"
+
+#: src/output.c:110
+#, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]: Ðапуштам непознат директоријум\n"
+
+#: src/output.c:113
+#, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr "%s[%u]: Улазим у директоријум „%s“\n"
+
+#: src/output.c:115
+#, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
+msgstr "%s[%u]: Ðапуштам директоријум „%s“\n"
+
+#: src/output.c:442 src/output.c:444
+#, c-format
+msgid "write error: stdout"
+msgstr "грешка пиÑања: Ñтандардни излаз"
+
+#: src/output.c:624
+msgid ". Stop.\n"
+msgstr ". Стајем.\n"
+
+#: src/output.c:658
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: src/output.c:667
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr "„-O[ВРСТÐ]“ (--output-sync[=ВРСТÐ]) није подешено за ову изградњу."
+
+#: src/posixos.c:90
+msgid "creating jobs pipe"
+msgstr "Ñтварам Ñпојку поÑла"
+
+#: src/posixos.c:98 src/posixos.c:251
+msgid "duping jobs pipe"
+msgstr "удвоÑтручавам Ñпојку поÑлова"
+
+#: src/posixos.c:104
+msgid "init jobserver pipe"
+msgstr "почетна Ñпојка поÑлужитеља поÑла"
+
+#: src/posixos.c:119
+#, c-format
+msgid "internal error: invalid --jobserver-auth string '%s'"
+msgstr "унутрашња грешка: неиÑправна „--jobserver-auth“ ниÑка „%s“"
+
+#: src/posixos.c:122
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr "Клијент поÑлужитеља поÑла (опиÑници датотека %d,%d)\n"
+
+#: src/posixos.c:138
+msgid "jobserver pipeline"
+msgstr "Ñпојни ред поÑлужитеља поÑла"
+
+#: src/posixos.c:186
+msgid "write jobserver"
+msgstr "пишем поÑлужитеља поÑла"
+
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr ""
+
+#: src/posixos.c:303
+msgid "pselect jobs pipe"
+msgstr "п-бира Ñпојку поÑлова"
+
+#: src/posixos.c:319 src/posixos.c:433
+msgid "read jobs pipe"
+msgstr "читам Ñпојку поÑла"
+
+#: src/read.c:181
+#, c-format
+msgid "Reading makefiles...\n"
+msgstr "Читам мејк_датотеке...\n"
+
+#: src/read.c:336
+#, c-format
+msgid "Reading makefile '%s'"
+msgstr "Читам мејк_датотеку „%s“"
+
+#: src/read.c:338
+#, c-format
+msgid " (no default goal)"
+msgstr " (нема оÑновног циља)"
+
+#: src/read.c:340
+#, c-format
+msgid " (search path)"
+msgstr " (претражујем путању)"
+
+#: src/read.c:342
+#, c-format
+msgid " (don't care)"
+msgstr " (не марим)"
+
+#: src/read.c:344
+#, c-format
+msgid " (no ~ expansion)"
+msgstr " (нема ~ проширења)"
+
+#: src/read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr "ПреÑкачем УТФ-8 БОМ у мејк_датотеци „%s“\n"
+
+#: src/read.c:658
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr "ПреÑкачем УТФ-8 БОМ у међумеморији мејк_датотеке\n"
+
+#: src/read.c:787
+#, c-format
+msgid "invalid syntax in conditional"
+msgstr "неиÑправна ÑинтакÑа у уÑлову"
+
+#: src/read.c:960
+#, c-format
+msgid "%s: failed to load"
+msgstr "%s: ниÑам уÑпео да учитам"
+
+#: src/read.c:986
+#, c-format
+msgid "recipe commences before first target"
+msgstr "рецепт долази пре прве мете"
+
+#: src/read.c:1035
+#, c-format
+msgid "missing rule before recipe"
+msgstr "недоÑтаје правило пре рецепта"
+
+#: src/read.c:1136
+#, c-format
+msgid "missing separator (did you mean TAB instead of 8 spaces?)"
+msgstr "недоÑтаје раздвајач (да ли Ñте миÑлили ТÐБУЛÐТОР умеÑто 8 размака?)"
+
+#: src/read.c:1138
+#, c-format
+msgid "missing separator"
+msgstr "недоÑтаје раздвојник"
+
+#: src/read.c:1283
+#, c-format
+msgid "missing target pattern"
+msgstr "недоÑтаје шаблон мете"
+
+#: src/read.c:1285
+#, c-format
+msgid "multiple target patterns"
+msgstr "више шаблона мете"
+
+#: src/read.c:1289
+#, c-format
+msgid "target pattern contains no '%%'"
+msgstr "шаблон мете не Ñадржи „%%“"
+
+#: src/read.c:1404
+#, c-format
+msgid "missing 'endif'"
+msgstr "недоÑтаје „endif“"
+
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
+msgid "empty variable name"
+msgstr "празан назив променљиве"
+
+#: src/read.c:1478
+#, c-format
+msgid "extraneous text after 'define' directive"
+msgstr "Ñувишан текÑÑ‚ након директиве „define“"
+
+#: src/read.c:1503
+#, c-format
+msgid "missing 'endef', unterminated 'define'"
+msgstr "недоÑтаје „endef“, неокончано „define“"
+
+#: src/read.c:1531
+#, c-format
+msgid "extraneous text after 'endef' directive"
+msgstr "Ñувишан текÑÑ‚ након директиве „endef“"
+
+#: src/read.c:1603
+#, c-format
+msgid "extraneous text after '%s' directive"
+msgstr "Ñувишан текÑÑ‚ након директиве „%s“"
+
+#: src/read.c:1604
+#, c-format
+msgid "extraneous '%s'"
+msgstr "Ñувишно „%s“"
+
+#: src/read.c:1632
+#, c-format
+msgid "only one 'else' per conditional"
+msgstr "Ñамо једно „else“ по уÑлову"
+
+#: src/read.c:1908
+#, c-format
+msgid "Malformed target-specific variable definition"
+msgstr "Лоша одредница променљиве Ñпецифичне мети"
+
+#: src/read.c:1968
+#, c-format
+msgid "prerequisites cannot be defined in recipes"
+msgstr "предуÑлови Ñе не могу одредити у рецептима"
+
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr ""
+
+#: src/read.c:2029
+#, c-format
+msgid "mixed implicit and static pattern rules"
+msgstr "помешана правила изричитог и Ñтатичког шаблона"
+
+#: src/read.c:2052
+#, c-format
+msgid "mixed implicit and normal rules"
+msgstr "помешана изричита и обична правила"
+
+#: src/read.c:2107
+#, c-format
+msgid "target '%s' doesn't match the target pattern"
+msgstr "мета „%s“ не одговара шаблону мете"
+
+#: src/read.c:2122 src/read.c:2168
+#, c-format
+msgid "target file '%s' has both : and :: entries"
+msgstr "датотека мете „%s“ има и : и :: уноÑе"
+
+#: src/read.c:2128
+#, c-format
+msgid "target '%s' given more than once in the same rule"
+msgstr "мета „%s“ је дата више од једном у иÑтом правилу"
+
+#: src/read.c:2138
+#, c-format
+msgid "warning: overriding recipe for target '%s'"
+msgstr "упозорење: препиÑујем рецепт за мету „%s“"
+
+#: src/read.c:2141
+#, c-format
+msgid "warning: ignoring old recipe for target '%s'"
+msgstr "упозорење: занемарујем Ñтари рецепт за мету „%s“"
+
+#: src/read.c:2254
+#, c-format
+msgid "*** mixed implicit and normal rules: deprecated syntax"
+msgstr "*** помешана изричита и обична правила: заÑтарела ÑинтакÑа"
+
+#: src/read.c:2271
+#, fuzzy, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "упозорење: препиÑујем рецепт за мету „%s“"
+
+#: src/read.c:2636
+#, c-format
+msgid "warning: NUL character seen; rest of line ignored"
+msgstr "упозорење: видех ÐИШТÐÐ’ÐРзнак; оÑтатак реда је занемарен"
+
+#: src/remake.c:226
+#, c-format
+msgid "Nothing to be done for '%s'."
+msgstr "Ðишта неће бити урађено за „%s“."
+
+#: src/remake.c:227
+#, c-format
+msgid "'%s' is up to date."
+msgstr "„%s“ је оÑвежено."
+
+#: src/remake.c:323
+#, c-format
+msgid "Pruning file '%s'.\n"
+msgstr "ЧиÑтим датотеку „%s“.\n"
+
+#: src/remake.c:389
+#, c-format
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
+msgstr "%sÐема правила за одрађивање мете „%s“, треба га „%s“%s"
+
+#: src/remake.c:399
+#, c-format
+msgid "%sNo rule to make target '%s'%s"
+msgstr "%sÐема правила за одрађивање мете „%s“%s"
+
+#: src/remake.c:425
+#, c-format
+msgid "Considering target file '%s'.\n"
+msgstr "Разматрам датотеку мете „%s“.\n"
+
+#: src/remake.c:432
+#, c-format
+msgid "Recently tried and failed to update file '%s'.\n"
+msgstr "Ðедавно Ñам покушао и ниÑам уÑпео да оÑвежим датотеку „%s“.\n"
+
+#: src/remake.c:444
+#, c-format
+msgid "File '%s' was considered already.\n"
+msgstr "Датотека „%s“ је већ разматрана.\n"
+
+#: src/remake.c:454
+#, c-format
+msgid "Still updating file '%s'.\n"
+msgstr "Још увек оÑвежавам датотеку „%s“.\n"
+
+#: src/remake.c:457
+#, c-format
+msgid "Finished updating file '%s'.\n"
+msgstr "Завршио Ñам оÑвежавање датотеке „%s“.\n"
+
+#: src/remake.c:486
+#, c-format
+msgid "File '%s' does not exist.\n"
+msgstr "Датотека „%s“ не поÑтоји.\n"
+
+#: src/remake.c:494
+#, c-format
+msgid ""
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
+msgstr ""
+"*** Упозорење: „.LOW_RESOLUTION_TIME“ датотека „%s“ има виÑоку резолуцију "
+"временÑке ознаке"
+
+#: src/remake.c:507 src/remake.c:1039
+#, c-format
+msgid "Found an implicit rule for '%s'.\n"
+msgstr "Ðађох изричито правило за „%s“.\n"
+
+#: src/remake.c:509 src/remake.c:1041
+#, c-format
+msgid "No implicit rule found for '%s'.\n"
+msgstr "ÐиÑам нашао изричито правило за „%s“.\n"
+
+#: src/remake.c:515
+#, c-format
+msgid "Using default recipe for '%s'.\n"
+msgstr "КориÑтим оÑновни рецепт за „%s“.\n"
+
+#: src/remake.c:549 src/remake.c:1088
+#, c-format
+msgid "Circular %s <- %s dependency dropped."
+msgstr "Кружна „%s <— %s“ завиÑноÑÑ‚ је одбачена."
+
+#: src/remake.c:674
+#, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
+msgstr "Завршио Ñам предуÑлове датотеке мете „%s“.\n"
+
+#: src/remake.c:680
+#, c-format
+msgid "The prerequisites of '%s' are being made.\n"
+msgstr "ПреудÑлови од „%s“ Ñу одрађени.\n"
+
+#: src/remake.c:694
+#, c-format
+msgid "Giving up on target file '%s'.\n"
+msgstr "ОдуÑтајем над датотеком мете „%s“.\n"
+
+#: src/remake.c:699
+#, c-format
+msgid "Target '%s' not remade because of errors."
+msgstr "Мета „%s“ није поново одрађена због грешака."
+
+#: src/remake.c:751
+#, c-format
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
+msgstr "ПредуÑлов „%s“ је Ñамо по поретку за мету „%s“.\n"
+
+#: src/remake.c:756
+#, c-format
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
+msgstr "ПреудÑлов „%s“ мете „%s“ не поÑтоји.\n"
+
+#: src/remake.c:761
+#, c-format
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
+msgstr "ПредуÑлов „%s“ је новији од мете „%s“.\n"
+
+#: src/remake.c:764
+#, c-format
+msgid "Prerequisite '%s' is older than target '%s'.\n"
+msgstr "ПредуÑлов „%s“ је Ñтарији од мете „%s“.\n"
+
+#: src/remake.c:782
+#, c-format
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
+msgstr "Мета „%s“ је двоÑтрука двотачка и нема предуÑлове.\n"
+
+#: src/remake.c:789
+#, c-format
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
+msgstr "Ðема рецепта за „%s“ и никакви предуÑлови заправо ниÑу мењани.\n"
+
+#: src/remake.c:794
+#, c-format
+msgid "Making '%s' due to always-make flag.\n"
+msgstr "Одрађујем „%s“ због заÑтавице увек-одради.\n"
+
+#: src/remake.c:802
+#, c-format
+msgid "No need to remake target '%s'"
+msgstr "Ðема потребе за поновнм одрађивањем мете „%s“"
+
+#: src/remake.c:804
+#, c-format
+msgid "; using VPATH name '%s'"
+msgstr "; кориÑтим „VPATH“ назив „%s“"
+
+#: src/remake.c:824
+#, c-format
+msgid "Must remake target '%s'.\n"
+msgstr "Морам поново да одрадим мету „%s“.\n"
+
+#: src/remake.c:830
+#, c-format
+msgid " Ignoring VPATH name '%s'.\n"
+msgstr " Занемарујем „VPATH“ назив „%s“.\n"
+
+#: src/remake.c:839
+#, c-format
+msgid "Recipe of '%s' is being run.\n"
+msgstr "Рецепт од „%s“ је покренут.\n"
+
+#: src/remake.c:846
+#, c-format
+msgid "Failed to remake target file '%s'.\n"
+msgstr "ÐиÑам уÑпео поново да одрадим датотеку мете „%s“.\n"
+
+#: src/remake.c:849
+#, c-format
+msgid "Successfully remade target file '%s'.\n"
+msgstr "УÑпешно Ñам одрадио датотеку мете „%s“.\n"
+
+#: src/remake.c:852
+#, c-format
+msgid "Target file '%s' needs to be remade under -q.\n"
+msgstr "Датотека мете „%s“ треба поново да Ñе одради под „-q“.\n"
+
+#: src/remake.c:1047
+#, c-format
+msgid "Using default commands for '%s'.\n"
+msgstr "КориÑтим оÑновне наредбе за „%s“.\n"
+
+#: src/remake.c:1422
+#, c-format
+msgid "Warning: File '%s' has modification time %s s in the future"
+msgstr "Упозорење: Датотека „%s“ има време измене %s Ñек. у будућноÑти"
+
+#: src/remake.c:1662
+#, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
+msgstr "„.LIBPATTERNS“ елемент „%s“ није шаблон"
+
+#: src/remote-cstms.c:122
+#, c-format
+msgid "Customs won't export: %s\n"
+msgstr "Прилагођени неће извеÑти: %s\n"
+
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
+msgid ""
+"\n"
+"# Implicit Rules"
+msgstr ""
+"\n"
+"# Изричита правила"
+
+#: src/rule.c:545
+msgid ""
+"\n"
+"# No implicit rules."
+msgstr ""
+"\n"
+"# Ðема изричитих правила."
+
+#: src/rule.c:548
+#, fuzzy, c-format
+msgid ""
+"\n"
+"# %u implicit rules, %u (%.1f%%) terminal."
+msgstr ""
+"\n"
+"# %u изричита правила, %u"
+
+#: src/rule.c:557
+#, c-format
+msgid "BUG: num_pattern_rules is wrong! %u != %u"
+msgstr "ГРЕШКÐ: број_правила_шаблона је погрешан! %u != %u"
+
+#: src/signame.c:84
+msgid "unknown signal"
+msgstr "непознати Ñигнал"
+
+#: src/signame.c:92
+msgid "Hangup"
+msgstr "ОбуÑтави"
+
+#: src/signame.c:95
+msgid "Interrupt"
+msgstr "Прекини"
+
+#: src/signame.c:98
+msgid "Quit"
+msgstr "Изађи"
+
+#: src/signame.c:101
+msgid "Illegal Instruction"
+msgstr "ÐеиÑправна инÑтрукција"
+
+#: src/signame.c:104
+msgid "Trace/breakpoint trap"
+msgstr "Замка праћења/тачке прекида"
+
+#: src/signame.c:109
+msgid "Aborted"
+msgstr "Прекинуто"
+
+#: src/signame.c:112
+msgid "IOT trap"
+msgstr "ИОТ замка"
+
+#: src/signame.c:115
+msgid "EMT trap"
+msgstr "ЕМТ замка"
+
+#: src/signame.c:118
+msgid "Floating point exception"
+msgstr "Изузетак покретног зареза"
+
+#: src/signame.c:121
+msgid "Killed"
+msgstr "Убијен"
+
+#: src/signame.c:124
+msgid "Bus error"
+msgstr "Грешка Ñабирнице"
+
+#: src/signame.c:127
+msgid "Segmentation fault"
+msgstr "Грешка Ñегментације"
+
+#: src/signame.c:130
+msgid "Bad system call"
+msgstr "Лош ÑиÑтемÑки позив"
+
+#: src/signame.c:133
+msgid "Broken pipe"
+msgstr "Оштећена Ñпојка"
+
+#: src/signame.c:136
+msgid "Alarm clock"
+msgstr "Будилник"
+
+#: src/signame.c:139
+msgid "Terminated"
+msgstr "Окончан"
+
+#: src/signame.c:142
+msgid "User defined signal 1"
+msgstr "КориÑнички одређени Ñигнал 1"
+
+#: src/signame.c:145
+msgid "User defined signal 2"
+msgstr "КориÑнички одређени Ñигнал 2"
+
+#: src/signame.c:150 src/signame.c:153
+msgid "Child exited"
+msgstr "ÐŸÐ¾Ñ‚Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñ˜Ðµ напуштен"
+
+#: src/signame.c:156
+msgid "Power failure"
+msgstr "ÐеуÑпех напајања"
+
+#: src/signame.c:159
+msgid "Stopped"
+msgstr "ЗауÑтављен"
+
+#: src/signame.c:162
+msgid "Stopped (tty input)"
+msgstr "ЗауÑтављен (улаз конзоле)"
+
+#: src/signame.c:165
+msgid "Stopped (tty output)"
+msgstr "ЗауÑтављен (излаз конзоле)"
+
+#: src/signame.c:168
+msgid "Stopped (signal)"
+msgstr "ЗауÑтављен (Ñигнал)"
+
+#: src/signame.c:171
+msgid "CPU time limit exceeded"
+msgstr "Прекорачено је временÑко ограничење процеÑора"
+
+#: src/signame.c:174
+msgid "File size limit exceeded"
+msgstr "Прекорачено је ограничење величине датотеке"
+
+#: src/signame.c:177
+msgid "Virtual timer expired"
+msgstr "Виртуелни одбројавач је иÑтекао"
+
+#: src/signame.c:180
+msgid "Profiling timer expired"
+msgstr "Одбројавач профилиÑања је иÑтекао"
+
+#: src/signame.c:186
+msgid "Window changed"
+msgstr "Прозор је измењен"
+
+#: src/signame.c:189
+msgid "Continued"
+msgstr "ÐаÑтављен"
+
+#: src/signame.c:192
+msgid "Urgent I/O condition"
+msgstr "Хитни У/И уÑлов"
+
+#: src/signame.c:199 src/signame.c:208
+msgid "I/O possible"
+msgstr "I/O је могућ"
+
+#: src/signame.c:202
+msgid "SIGWIND"
+msgstr "СИГВИÐД"
+
+#: src/signame.c:205
+msgid "SIGPHONE"
+msgstr "СИГФОÐ"
+
+#: src/signame.c:211
+msgid "Resource lost"
+msgstr "Губитак изворишта"
+
+#: src/signame.c:214
+msgid "Danger signal"
+msgstr "ОпаÑан Ñигнал"
+
+#: src/signame.c:217
+msgid "Information request"
+msgstr "Захтев за информацијама"
+
+#: src/signame.c:220
+msgid "Floating point co-processor not available"
+msgstr "Ко-процеÑор покретног зареза није доÑтупан"
+
+#: src/strcache.c:274
+#, c-format
+msgid ""
+"\n"
+"%s No strcache buffers\n"
+msgstr ""
+"\n"
+"%s Ðема међумеморија причуваних ниÑки\n"
+
+#: src/strcache.c:304
+#, c-format
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
+msgstr ""
+"\n"
+"%s међумеморије причуваних ниÑки: %lu (%lu) / ниÑке = %lu / Ñмештај = %lu "
+"B / проÑек = %lu B\n"
+
+#: src/strcache.c:308
+#, fuzzy, c-format
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
+msgstr ""
+"%s текућа међумеморија: величина = %hu B / коришћено = %hu B / број = %hu / "
+"проÑек = %hu B\n"
+
+#: src/strcache.c:319
+#, c-format
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
+msgstr "%s оÑталих коришћених: укупно = %lu B / број = %lu / проÑек = %lu B\n"
+
+#: src/strcache.c:322
+#, c-format
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
+msgstr ""
+"%s оÑталих Ñлободних: укупно = %lu B / највише = %lu B / најмање = %lu B / "
+"проÑек = %hu B\n"
+
+#: src/strcache.c:326
+#, c-format
+msgid ""
+"\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+"\n"
+"%s учинковитоÑÑ‚ причуваних ниÑки: тражења = %lu / проÑек погодака = %lu%%\n"
+
+#: src/strcache.c:328
+msgid ""
+"# hash-table stats:\n"
+"# "
+msgstr ""
+"# ÑтатиÑтика хеш-табеле:\n"
+"# "
+
+#: src/variable.c:1653
+msgid "automatic"
+msgstr "аутоматÑки"
+
+#: src/variable.c:1656
+msgid "default"
+msgstr "оÑновно"
+
+#: src/variable.c:1659
+msgid "environment"
+msgstr "окружење"
+
+#: src/variable.c:1662
+msgid "makefile"
+msgstr "мејк_датотека"
+
+#: src/variable.c:1665
+msgid "environment under -e"
+msgstr "окружење под „-e“"
+
+#: src/variable.c:1668
+msgid "command line"
+msgstr "линија наредби"
+
+#: src/variable.c:1671
+msgid "'override' directive"
+msgstr "директива „override“"
+
+#: src/variable.c:1682
+#, c-format
+msgid " (from '%s', line %lu)"
+msgstr " (од „%s“, %lu. ред)"
+
+#: src/variable.c:1745
+msgid "# variable set hash-table stats:\n"
+msgstr "# променљива подешава ÑтатиÑтику хеш табеле:\n"
+
+#: src/variable.c:1756
+msgid ""
+"\n"
+"# Variables\n"
+msgstr ""
+"\n"
+"# Променљиве\n"
+
+#: src/variable.c:1760
+msgid ""
+"\n"
+"# Pattern-specific Variable Values"
+msgstr ""
+"\n"
+"# ВредноÑти променљиве према шаблону"
+
+#: src/variable.c:1774
+msgid ""
+"\n"
+"# No pattern-specific variable values."
+msgstr ""
+"\n"
+"# Ðема вредноÑти променљиве према шаблону."
+
+#: src/variable.c:1776
+#, c-format
+msgid ""
+"\n"
+"# %u pattern-specific variable values"
+msgstr ""
+"\n"
+"# %u вредноÑти променљиве према шаблону"
+
+#: src/variable.h:229
+#, c-format
+msgid "warning: undefined variable '%.*s'"
+msgstr "упозорење: неодређена променљива „%.*s“"
+
+#: src/vmsfunctions.c:91
+#, c-format
+msgid "sys$search() failed with %d\n"
+msgstr "Функција „sys$search()“ није уÑпела Ñа %d\n"
+
+#: src/vmsjobs.c:244
+#, c-format
+msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
+msgstr "-упозорење, мораћете поново да укључите „КТРЛ-Y“ руковање из ДЦЛ-а.\n"
+
+#: src/vmsjobs.c:681
+#, c-format
+msgid "BUILTIN CD %s\n"
+msgstr "ЦД ИЗГРÐДЊЕ „%s“\n"
+
+#: src/vmsjobs.c:1224
+#, c-format
+msgid "DCL: %s\n"
+msgstr "ДЦЛ: %s\n"
+
+#: src/vmsjobs.c:1284
+#, c-format
+msgid "Append output to %s\n"
+msgstr "Придодајем излаз на „%s“\n"
+
+#: src/vmsjobs.c:1309
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr "Придодајем „%.*s“ и чиÑтим\n"
+
+#: src/vmsjobs.c:1322
+#, c-format
+msgid "Executing %s instead\n"
+msgstr "УмеÑто тога извршавам „%s“\n"
+
+#: src/vpath.c:603
+msgid ""
+"\n"
+"# VPATH Search Paths\n"
+msgstr ""
+"\n"
+"# „VPATH“ путање претраге\n"
+
+#: src/vpath.c:620
+msgid "# No 'vpath' search paths."
+msgstr "# Ðема „vpath“ путања претраге."
+
+#: src/vpath.c:622
+#, c-format
+msgid ""
+"\n"
+"# %u 'vpath' search paths.\n"
+msgstr ""
+"\n"
+"# %u „vpath“ путање претраге.\n"
+
+#: src/vpath.c:625
+msgid ""
+"\n"
+"# No general ('VPATH' variable) search path."
+msgstr ""
+"\n"
+"# Ðема опште (променљиве „VPATH“) путање претраге."
+
+#: src/vpath.c:631
+msgid ""
+"\n"
+"# General ('VPATH' variable) search path:\n"
+"# "
+msgstr ""
+"\n"
+"# Општа (променљиве „VPATH“) путања претраге:\n"
+"# "
+
+#: src/w32/w32os.c:44
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr "Подножја поÑлужитеља поÑла Ñу ограничена на %d\n"
+
+#: src/w32/w32os.c:60
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr "правим Ñемафор поÑлужитеља поÑла: (грешка %ld: %s)"
+
+#: src/w32/w32os.c:79
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr ""
+"унутрашња грешка: не могу да отворим Ñемафор поÑлужитеља поÑла „%s“: (грешка "
+"%ld: %s)"
+
+#: src/w32/w32os.c:82
+#, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr "Клијент поÑлужитеља поÑла (Ñемафор „%s“)\n"
+
+#: src/w32/w32os.c:123
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr "отпуштам Ñемафор поÑлужитеља поÑла: (грешка %ld: %s)"
+
+#: src/w32/w32os.c:194
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr "Ñемафор или Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¿Ð¾Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑа чека: (грешка %ld: %s)"
+
+#~ msgid "%s: %s: Command not found\n"
+#~ msgstr "%s: %s: Ðема такве наредбе\n"
+
+#~ msgid "%s[%u]: %s: Command not found\n"
+#~ msgstr "%s[%u]: %s: Ðема такве наредбе\n"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s: ÐиÑам нашао програм шкољке"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "„%s“ је обуÑтављен за 30 Ñекунде..."
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "обављено је „Ñпавај(30)“. ÐаÑтављам.\n"
+
+#~ msgid "Unknown error %d"
+#~ msgstr "Ðепозната грешка %d"
+
+#~ msgid "Warning: File '%s' has modification time in the future"
+#~ msgstr "Упозорење: Датотека „%s“ има време измене у будућноÑти"
+
+#~ msgid " terminal."
+#~ msgstr " терминал."
diff --git a/po/sv.gmo b/po/sv.gmo
index 883a38e..c85b068 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index 0ef7fe2..a08eb49 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,132 +1,134 @@
# Swedish messages translation of make
-# Copyright © 2002, 2007, 2011, 2013, 2014, 2016 Free Software Foundation, Inc.
+# Copyright © 2002, 2007, 2011, 2013, 2014, 2016, 2019, 2020 Free Software Foundation, Inc.
# This file is distributed under the same license as the make package.
#
# Tomas Gradin <tg@df.lth.se>, 1996-2002.
# Christer Andersson <klamm@comhem.se>, 2007.
-# Göran Uddeborg <goeran@uddeborg.se>, 2011, 2013, 2014, 2016.
+# Göran Uddeborg <goeran@uddeborg.se>, 2011, 2013, 2014, 2016, 2019, 2020.
#
-# $Id: make.po,v 1.21 2016-05-22 22:46:49+02 göran Exp $
+# $Id: make.po,v 1.27 2020-01-06 16:22:49+01 göran Exp $
msgid ""
msgstr ""
-"Project-Id-Version: make 4.2\n"
+"Project-Id-Version: make 4.2.93\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
-"PO-Revision-Date: 2016-05-22 22:45+0200\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2020-01-06 16:19+0100\n"
"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
-#: ar.c:46
+#: src/ar.c:46
#, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "försök att använda en funktion som inte stöds: â€%sâ€"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "att nudda en arkivmedlem är inte tillgängligt i VMS"
-#: ar.c:147
+#: src/ar.c:147
#, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "nudda: Arkivet â€%s†finns inte"
-#: ar.c:150
+#: src/ar.c:150
#, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "nudda: â€%s†är inte nÃ¥got giltigt arkiv"
-#: ar.c:157
+#: src/ar.c:157
#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "nudda: medlemmen â€%s†finns inte i â€%sâ€"
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr "nudda: Felaktig returkod frÃ¥n ar_member_touch pÃ¥ â€%sâ€"
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr ""
"lbr$set_module() misslyckades med att extrahera modulinformation, status = %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "lbr$ini_control() misslyckades och gav status = %d"
-#: arscan.c:261
+#: src/arscan.c:261
#, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr "kan inte öppna biblioteket â€%s†för att slÃ¥ upp medlemsstatus %d"
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr "Medlem â€%sâ€%s: %ld byte vid %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (namnet kan vara avkortat)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Datum %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, flaggor = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr "Receptet har för många rader (%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** Avbrott.\n"
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr "*** [%s] Arkivmedlemmen â€%s†kan vara felaktig; ej borttagen"
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr "*** Arkivmedlemmen â€%s†kan vara felaktig; ej borttagen"
-#: commands.c:645
+#: src/commands.c:646
#, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] Tar bort filen â€%sâ€"
-#: commands.c:647
+#: src/commands.c:648
#, c-format
msgid "*** Deleting file '%s'"
msgstr "*** Tar bort filen â€%sâ€"
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
msgstr "# recept att utföra"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (inbyggd):"
-#: commands.c:688
+#: src/commands.c:689
#, c-format
msgid " (from '%s', line %lu):\n"
msgstr " (frÃ¥n â€%sâ€, rad %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -134,221 +136,221 @@ msgstr ""
"\n"
"# Kataloger\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: kunde inte ta status.\n"
-#: dir.c:1085
-#, fuzzy
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
-msgstr "# %s (nyckel %s, mtid %ull): kunde inte öppnas.\n"
+msgstr "# %s (nyckel %s, mtid %I64u): kunde inte öppnas.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr "# %s (enhet %d, inod [%d,%d,%d]): kunde inte öppnas.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr "# %s (enhet %ld, inod %ld): kunde inte öppnas.\n"
-#: dir.c:1122
-#, fuzzy
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
-msgstr "# %s (nyckel %s, mtid %ull): "
+msgstr "# %s (nyckel %s, mtid %I64u): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (enhet %d, inod [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (enhet %ld, inod %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "Inga"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " filer, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "inga"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " omöjligheter"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " hittills."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " omöjligheter i %lu kataloger.\n"
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr "Den rekursiva variabeln â€%s†hänvisar till sig själv (sÃ¥ smÃ¥ningom)"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "oavslutad variabelreferens"
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr "Recept angavs för filen â€%s†pÃ¥ %s:%lu,"
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr "Recept för filen â€%s†hittades genom sökning efter implicit regel,"
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr "men â€%s†anses nu vara samma fil som â€%sâ€."
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr ""
"Kommer att bortse frÃ¥n recept för â€%s†till förmÃ¥n för det som gäller â€%sâ€."
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr "kan inte ändra namn frÃ¥n enkelkolon â€%s†till dubbelkolon â€%sâ€"
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr "kan inte ändra namn frÃ¥n dubbelkolon â€%s†till enkelkolon â€%sâ€"
-#: file.c:408
+#: src/file.c:408
#, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "*** Tar bort mellanfilen â€%sâ€"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "Tar bort mellanfiler …\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "Nuvarande tid"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: Tidsvärde utanför gränser; ersätter med %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# Inte ett mål:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# Värdefull fil (nödvändig för .PRECIOUS)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# Låtsasmål (nödvändig för .PHONY)."
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# Kommandoradsmål."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr ""
"# En standardmakefil, eller enligt MAKEFILES, eller en -include/sinclude-"
"makefil."
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
msgstr "# Inbyggd regel"
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# Implicit regelsökning har genomförts."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# Implicit regelsökning har inte genomförts."
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr "# Implicit/statisk mönsterstam: â€%sâ€\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr "# Filen är ett övergående beroende."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# Skapar också:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# Ändringstiden har inte kontrollerats."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# Filen finns inte."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# Filen är mycket gammal."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# Senast ändrad %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# Filen har uppdaterats."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# Filen har inte uppdaterats."
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# Recept körs just nu (DETTA ÄR ETT FEL)."
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr "# Beroenderecept körs (DETTA ÄR ETT FEL)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# Uppdateringen lyckades."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# Behöver uppdateras (-q har angivits)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# Uppdateringen misslyckades."
-#: file.c:1032
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
msgstr "# Ogiltigt värde i medlemmen â€command_stateâ€!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -356,7 +358,7 @@ msgstr ""
"\n"
"# Filer"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -366,332 +368,340 @@ msgstr ""
"# statistik för filhashtabell:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr "%s: Fältet â€%s†cachas inte: %s"
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
msgstr "icke-numeriskt första argument till funktionen â€wordâ€"
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr "det första argumentet till funktionen â€word†mÃ¥ste vara större än 0"
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
msgstr "icke-numeriskt första argument till funktionen â€wordlistâ€"
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
msgstr "icke-numeriskt andra argument till funktionen â€wordlistâ€"
-#: function.c:1525
+#: src/function.c:1533
#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "windows32_openpipe: DuplicateHandle(In) misslyckades (e=%ld)\n"
-#: function.c:1549
+#: src/function.c:1557
#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr "windows32_openpipe: DuplicateHandle(Fel) misslyckades (e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "CreatePipe() misslyckades (e=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe(): process_init_fd() misslyckades\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "Städar bort tillfällig satsfil %s\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr "file: filnamn saknas"
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
msgstr "öppna: %s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
msgstr "skriv: %s: %s"
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, c-format
msgid "close: %s: %s"
msgstr "stäng: %s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr "file: för många argument"
-#: function.c:2262
+#: src/function.c:2277
#, c-format
msgid "read: %s: %s"
msgstr "läs: %s: %s"
-#: function.c:2275
+#: src/function.c:2290
#, c-format
msgid "file: invalid file operation: %s"
msgstr "file: felaktig filåtgärd: %s"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr "otillräckligt antal argument (%d) till funktionen â€%sâ€"
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "ej implementerat pÃ¥ denna plattform: funktionen â€%sâ€"
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr "oavslutat funktionsanrop â€%sâ€: â€%c†saknas"
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr "Tomt funktionsnamn"
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr "Felaktigt funktionsnamn: %s"
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr "Funktionsnamnet är för långt: %s"
-#: function.c:2657
+#: src/function.c:2674
#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
msgstr "Felaktigt minsta antal argument (%u) till funktionen â€%sâ€"
-#: function.c:2660
+#: src/function.c:2677
#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
msgstr "Felaktigt största antal argument (%u) till funktionen â€%sâ€"
-#: getopt.c:659
+#: src/getopt.c:659
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: flaggan â€%s†är tvetydig\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: flaggan â€--%s†tar inget argument\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: flaggan â€%c%s†tar inget argument\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: flaggan â€%s†kräver ett argument\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: okänd flagga â€--%sâ€\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: okänd flagga â€%c%sâ€\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: otillåten flagga -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: ogiltig flagga -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: flaggan kräver ett argument -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: flaggan â€-W %s†är tvetydig\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: flaggan â€-W %s†tar inget argument\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr "guile: Expanderar â€%sâ€\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr "guile: Evaluerar â€%sâ€\n"
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr "kan inte allokera %lu byte för hashtabell: minnet slut"
-#: hash.c:280
+#: src/hash.c:280
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "Fyllnadsgrad=%ld/%ld=%.0f%%, "
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "Fyllnadsgrad=%lu/%lu=%.0f %%, "
-#: hash.c:282
+#: src/hash.c:282
#, c-format
-msgid "Rehash=%d, "
-msgstr "Omhash=%d, "
+msgid "Rehash=%u, "
+msgstr "Omhash=%u, "
-#: hash.c:283
+#: src/hash.c:283
#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "Kollisioner=%ld/%ld=%.0f%%"
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "Kollisioner=%lu/%lu=%.0f %%"
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr "Letar efter en implicit regel för â€%sâ€.\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr "Letar efter en implicit regel för arkivmedlemmen â€%sâ€.\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr "Undviker rekursion orsakad av implicit regel.\n"
-#: implicit.c:486
+#: src/implicit.c:484
#, c-format
-msgid "Stem too long: '%.*s'.\n"
-msgstr "Stammen är för lÃ¥ng: â€%.*sâ€.\n"
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "Stammen är för lÃ¥ng: â€%s%.*sâ€.\n"
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr "Prövar mönsterregel med stammen â€%.*sâ€.\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr "Avvisar den omöjliga regelförutsättningen â€%sâ€.\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr "Avvisar den omöjliga implicita förutsättningen â€%sâ€.\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr "Prövar det regelförutsättningen â€%sâ€.\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr "Prövar den implicita förutsättningen â€%sâ€.\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr "Hittade förutsättningen â€%s†som VPATH â€%sâ€\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr "Letar efter en regel med mellanfilen â€%sâ€.\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr "Kan inte skapa en temporärfil\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (minnesdump)"
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr " (ignoreras)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
msgstr "<inbyggd>"
-#: job.c:510
+#: src/job.c:573
#, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "%s[%s: %s] Fel %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** Inväntar oavslutade jobb..."
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "Levande barnprocess %p (%s) PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (fjärr)"
-#: job.c:831
-#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Inhöstar misslyckad barnprocess: %p PID %s %s\n"
-
-#: job.c:832
+#: src/job.c:898
#, c-format
msgid "Reaping winning child %p PID %s %s\n"
msgstr "Inhöstar lyckad barnprocess: %p PID %s %s\n"
-#: job.c:839
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Inhöstar misslyckad barnprocess: %p PID %s %s\n"
+
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "Städar bort tillfällig satsfil %s\n"
-#: job.c:845
+#: src/job.c:956
#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr "Bortstädning av tillfällig satsfil %s misslyckades (%d)\n"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr "Tar bort barnprocessen %p PID %s%s från kedjan.\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr "Frigjorde symbol för barnprocessen %p (%s).\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "process_easy() misslyckades med processtart (e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -700,93 +710,87 @@ msgstr ""
"\n"
"Räknade till %d argument vid misslyckad start\n"
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr "För upp barnprocessen %p (%s) PID %s%s på kedjan.\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "Erhöll symbol för barnprocessen %p (%s).\n"
-#: job.c:1838
+#: src/job.c:1902
#, c-format
msgid "%s: target '%s' does not exist"
msgstr "%s: mÃ¥let â€%s†finns inte"
-#: job.c:1841
+#: src/job.c:1905
#, c-format
msgid "%s: update target '%s' due to: %s"
msgstr "%s: uppdatera mÃ¥let â€%s†pÃ¥ grund av: %s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr "kan inte upprätthålla lastbegränsningar i detta operativsystem"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "kan inte upprätthålla lastbegränsning: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr "inga fler filhandtag: kunde inte duplicera standard in\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr "inga fler filhandtag: kunde inte duplicera standard ut\n"
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr "inga fler filhandtag: kunde inte duplicera standard fel\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr "Kunde inte återställa standard in\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr "Kunde inte återställa standard ut\n"
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr "Kunde inte återställa standard fel\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr "make inhöstade barn-pid %s, inväntar fortfarande pid %s\n"
-#: job.c:2275
+#: src/job.c:2623
#, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: %s: Kommandot hittades inte\n"
-
-#: job.c:2277
-#, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s[%u]: %s: Kommandot hittades inte\n"
-
-#: job.c:2337
-#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: Skalprogrammet hittades inte"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr "spawnvpe: miljöutrymmet kanske är slut"
-#: job.c:2584
+#: src/job.c:2862
#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "$SHELL ändrades (var â€%sâ€, är nu â€%sâ€)\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr "Skapar tillfällig satsfil %s\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
@@ -794,7 +798,7 @@ msgstr ""
"Satsfilinnehåll:\n"
"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
@@ -803,57 +807,54 @@ msgstr ""
"Satsfilinnehåll:%s\n"
"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr "%s (rad %d) Felaktigt skalsammanhang (!unixy && !batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr "-O[TYP] (--output-sync[=TYP]) är inte konfigurerat för detta bygge."
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr "Misslyckades att öppna den globala symboltabellen: %s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr "Laddat objekt %s är inte deklarerat att vara GPL-kompatibelt"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr "Misslyckades att ladda symbolen %s från %s: %s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr "Tomt symbolnamn för laddning: %s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr "Laddar symbol %s från %s\n"
-#: load.c:256
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr "Operationen â€load†stödjs inte pÃ¥ denna plattform."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "Flaggor:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr " -b, -m Ignoreras av kompatibilitetsskäl.\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr " -B, --always-make Bygg ovillkorligen alla mål.\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
@@ -861,19 +862,19 @@ msgstr ""
" -C KATALOG, --directory=KATALOG\n"
" Byt katalog till KATALOG innan något görs.\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr ""
" -d Skriv ut massor av felsökningsinformation.\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
" --debug[=FLAGGOR] Skriv ut olika sorters "
"felsökningsinformation.\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
@@ -881,12 +882,12 @@ msgstr ""
" -e, --environment-overrides\n"
" Miljövariabler åsidosätter makefiler.\n"
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
-msgstr " --eval=STRÄNG Evaluera STRÄNG som en makefile-sats.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
+msgstr " -E STRÄNG, --eval=STRÄNG Evaluera STRÄNG som en makefile-sats.\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -894,15 +895,15 @@ msgstr ""
" -f FIL, --file=FIL, --makefile=FIL\n"
" Använd FIL som makefil.\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help Skriv ut detta meddelande och avsluta.\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr " -i, --ignore-errors Ignorera fel från recept.\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
@@ -910,7 +911,7 @@ msgstr ""
" -I KATALOG, --include-dir=KATALOG\n"
" Genomsök KATALOG efter inkluderade makefiler.\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
@@ -918,13 +919,13 @@ msgstr ""
" -j [N], --jobs[=N] Tillåt N samtidiga jobb; oändligt många om "
"inget antal anges.\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
" -k, --keep-going Fortsätt även om vissa mål inte kan skapas.\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
@@ -934,7 +935,7 @@ msgstr ""
" Påbörja fler jobb endast om lasten understiger "
"N.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
@@ -942,7 +943,7 @@ msgstr ""
" -L, --check-symlink-times Använd den senaste av mtiderna för symboliska "
"länkar eller mål.\n"
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
@@ -951,7 +952,7 @@ msgstr ""
" -n, --just-print, --dry-run, --recon\n"
" Kör inte något recept, skriv bara ut dem.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
@@ -961,7 +962,7 @@ msgstr ""
" Betrakta FIL som mycket gammal och återskapa "
"den inte.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
@@ -970,11 +971,11 @@ msgstr ""
" Synkronisera utmatningen av parallella jobb\n"
" enligt TYP.\n"
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr " -p, --print-data-base Skriv ut makes interna databas.\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
@@ -982,22 +983,27 @@ msgstr ""
" -q, --question Kör inga recept; slutstatus visar om det är "
"aktuellt.\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr ""
" -r, --no-builtin-rules Inaktivera de inbyggda implicita reglerna.\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr ""
" -R, --no-builtin-variables Inaktivera de inbyggda "
"variabelinställningarna.\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr " -s, --silent, --quiet Ã…terge inte recept.\n"
-#: main.c:393
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" --no-silent Skriv recept (avaktivera --silent-läge).\n"
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
@@ -1005,26 +1011,26 @@ msgstr ""
" -S, --no-keep-going, --stop\n"
" Stäng av -k.\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
" -t, --touch Nydatera mål i stället för att återskapa dem.\n"
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
msgstr " --trace Skriv spårningsinformation.\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr ""
" -v, --version Skriv ut makes versionsnummer och avsluta.\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory Skriv ut aktuell katalog.\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
@@ -1032,7 +1038,7 @@ msgstr ""
" --no-print-directory Stäng av -w, även om det är implicit "
"påslaget.\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1040,7 +1046,7 @@ msgstr ""
" -W FIL, --what-if=FIL, --new-file=FIL, --assume-new=FIL\n"
" Betrakta FIL som hur ny som helst.\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
@@ -1048,26 +1054,27 @@ msgstr ""
" --warn-undefined-variables Varna vid användning av en odefinierad "
"variabel.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "en tom sträng är ett ogiltigt filnamn"
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
msgstr "okänd felsökningsnivÃ¥ â€%s†angiven"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr "okänd typ av utmatningssynkronisering â€%sâ€"
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr "%s: Avbrott/Undantag fångat (kod = 0x%lx, adress = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1082,135 +1089,143 @@ msgstr ""
"Undantagsflaggor = %lx\n"
"Undantagsadress = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "Åtkomstförseelse: skrivinstruktion på adressen 0x%p\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "Åtkomstförseelse: läsinstruktion på adressen 0x%p\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell() ger default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr "sökvägen för find_and_set_shell() gav default_shell = %s\n"
-#: main.c:1538
+#: src/main.c:1609
#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s suspenderas i 30 sekunder..."
-
-#: main.c:1540
-#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "färdig med sleep(30). Fortsätter.\n"
-
-#: main.c:1627
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
"varning: jobbserver otillgänglig: använder -j1. Lägg till â€+†i "
"föräldraregeln."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
-msgstr "varning: -jN framtvingat i del-make: inaktiverar jobbserverläge."
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
+msgstr "varning: -j%d framtvingat i del-make: återställer jobbserverläge."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr "Makefil från standard in angavs dubbelt."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (temporärfil)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (temporärfil)"
-#: main.c:2048
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr "varning: -j%d framtvingat i makefile: återställer jobbserverläge."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr "Parallella jobb (-j) stöds inte på denna plattform."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "Återställer till enkeljobbsläge (-j1)."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr "Symboliska länkar stöds inte: inaktiverar -L."
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "Uppdaterar makefiler...\n"
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr "Makefilen â€%s†kan loopa; Ã¥terskapas inte.\n"
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
msgstr "Misslyckades med att Ã¥terskapa makefilen â€%sâ€."
-#: main.c:2299
+#: src/main.c:2323
#, c-format
msgid "Included makefile '%s' was not found."
msgstr "Den inkluderade makefilen â€%s†fanns inte."
-#: main.c:2304
+#: src/main.c:2328
#, c-format
msgid "Makefile '%s' was not found"
msgstr "Makefilen â€%s†fanns inte"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "Kunde inte återgå till ursprungskatalogen."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "Utför på nytt[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "avlänka (temporärfil): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ".DEFAULT_GOAL innehåller fler än ett mål"
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Inga mål angavs och ingen makefil hittades"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "Inga mål"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Inga mål angavs och ingen makefil hittades"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "Uppdaterar slutmål...\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr ""
"varning: Klockförskjutning upptäckt. Bygget kan ha blivit ofullständigt."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "Användning: %s [flaggor] [mål] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1219,7 +1234,7 @@ msgstr ""
"\n"
"Detta program byggdes för %s\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1228,34 +1243,34 @@ msgstr ""
"\n"
"Detta program byggdes för %s (%s)\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr ""
"Anmäl fel till <bug-make@gnu.org>.\n"
"Skicka synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
-#: main.c:2870
+#: src/main.c:2901
#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "flaggan â€%s%s†kräver ett strängargument som inte är tomt"
-#: main.c:2934
+#: src/main.c:2965
#, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "flaggan â€-%c†kräver ett positivt heltal som argument"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%sByggt för %s\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%sByggt för %s (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1268,7 +1283,7 @@ msgstr ""
"%sDetta är fri programvara. du får lov att ändra och vidaredistribuera den.\n"
"%sDet finns INGEN GARANTI, så långt lagen tillåter.\n"
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1277,7 +1292,7 @@ msgstr ""
"\n"
"# Make-databas, utskriven %s"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1286,491 +1301,527 @@ msgstr ""
"\n"
"# Färdigställde Make-databas %s\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Okänt fel %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: användare %lu (verklig %lu), grupp %lu (verklig %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "Ã…tkomst inledd"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr "Användaråtkomst"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "Make-Ã¥tkomst"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "Barnåtkomst"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: Går till en okänd katalog\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: Lämnar en okänd katalog\n"
-#: output.c:109
+#: src/output.c:102
#, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "%s: GÃ¥r till katalogen â€%sâ€\n"
-#: output.c:111
+#: src/output.c:104
#, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "%s: Lämnar katalogen â€%sâ€\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: Går till en okänd katalog\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: Lämnar en okänd katalog\n"
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr "%s[%u]: GÃ¥r till katalogen â€%sâ€\n"
-#: output.c:122
+#: src/output.c:115
#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "%s[%u]: Lämnar katalogen â€%sâ€\n"
-#: output.c:495 output.c:497
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
msgstr "skrivfel: standard ut"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". Stannar.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr "-O[TYP] (--output-sync[=TYP]) är inte konfigurerat för detta bygge."
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "skapar jobbrör"
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
msgstr "duplicerar jobbrör"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr "iordningställer rör till jobbserver"
-#: posixos.c:90
+#: src/posixos.c:119
#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr "internt fel: ogiltig sträng --jobserver-auth â€%sâ€"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr "Jobbserverklient (fb %d,%d)\n"
-#: posixos.c:109
+#: src/posixos.c:138
msgid "jobserver pipeline"
msgstr "rör till jobbserver"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr "skriver till jobbserver"
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr "jobbservern stängdes ner"
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
msgstr "pselect jobbrör"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "läser från jobbledning"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "Läser makefiler...\n"
-#: read.c:329
+#: src/read.c:336
#, c-format
msgid "Reading makefile '%s'"
msgstr "Läser makefilen â€%sâ€"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (inget standardmål)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (sökväg)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (oviktigt)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (ingen ~-expansion)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr "Hoppar över UTF-8-BOM i makefilen â€%sâ€\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr "Hoppar över UTF-8-BOM i makefile-buffert\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "ogiltig syntax i villkorssats"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr "%s: misslyckades att ladda"
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
msgstr "recept inleds före första målet"
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
msgstr "regel saknas före recept"
-#: read.c:1124
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr "separator saknas (var avsikten TAB i stället för 8 mellanslag?)"
-#: read.c:1126
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
msgstr "separator saknas"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "målmönster saknas"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "flera målmönster"
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
msgstr "mÃ¥lmönstret innehÃ¥ller inget â€%%â€"
-#: read.c:1390
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
msgstr "â€endif†saknas"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "tomt variabelnamn"
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
msgstr "överflödig text efter direktivet â€defineâ€"
-#: read.c:1488
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "â€endef†saknas, oavslutad â€defineâ€"
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
msgstr "överflödig text efter direktivet â€endefâ€"
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
msgstr "överflödig text efter direktivet â€%sâ€"
-#: read.c:1589
+#: src/read.c:1604
#, c-format
msgid "extraneous '%s'"
msgstr "överflödigt â€%sâ€"
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
msgstr "endast ett â€else†per villkor"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr "Felformad målberoende variabeldefinition"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr "beroenden kan inte definieras i recept"
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr "grupperade mål måste tillhandahålla ett recept"
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr "blandade implicita regler och statiska mönsterregler"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "blandade implicita regler och normala regler"
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr "mÃ¥let â€%s†motsvarar inte mÃ¥lmönstret"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
msgstr "mÃ¥lfilen â€%s†har bÃ¥de poster med : och ::"
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
msgstr "mÃ¥let â€%s†anges flera gÃ¥nger i samma regel"
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr "varning: Ã¥sidosätter recept för mÃ¥let â€%sâ€"
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr "varning: ignorerar gammalt recept för mÃ¥let â€%sâ€"
-#: read.c:2223
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr "*** blandade implicita regler och normala regler: föråldrad syntax"
-#: read.c:2542
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "varning: Ã¥sidosätter gruppmedlemskap för mÃ¥let â€%sâ€"
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr "varning: NUL-tecken upptäckt, bortser från resten av raden"
-#: remake.c:226
+#: src/remake.c:226
#, c-format
msgid "Nothing to be done for '%s'."
msgstr "Inget behöver göras för â€%sâ€."
-#: remake.c:227
+#: src/remake.c:227
#, c-format
msgid "'%s' is up to date."
msgstr "â€%s†är aktuell."
-#: remake.c:323
+#: src/remake.c:323
#, c-format
msgid "Pruning file '%s'.\n"
msgstr "Beskär filen â€%sâ€.\n"
-#: remake.c:406
+#: src/remake.c:389
#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr "%sIngen regel för att skapa mÃ¥let â€%sâ€, som behövs av â€%sâ€%s"
-#: remake.c:416
+#: src/remake.c:399
#, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%sIngen regel för att skapa mÃ¥let â€%sâ€%s"
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
msgstr "Överväger mÃ¥lfilen â€%sâ€.\n"
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr "Misslyckades nyligen med att uppdatera filen â€%sâ€.\n"
-#: remake.c:461
+#: src/remake.c:444
#, c-format
msgid "File '%s' was considered already.\n"
msgstr "Filen â€%s†har redan övervägts.\n"
-#: remake.c:471
+#: src/remake.c:454
#, c-format
msgid "Still updating file '%s'.\n"
msgstr "Uppdaterar fortfarande filen â€%sâ€.\n"
-#: remake.c:474
+#: src/remake.c:457
#, c-format
msgid "Finished updating file '%s'.\n"
msgstr "Slutförde uppdaterandet av filen â€%sâ€.\n"
-#: remake.c:503
+#: src/remake.c:486
#, c-format
msgid "File '%s' does not exist.\n"
msgstr "Filen â€%s†finns inte.\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
msgstr ""
"*** Varning: .LOW_RESOLUTION_TIME-filen â€%s†har en högupplöst tidsstämpel"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr "Hittade en implicit regel för â€%sâ€.\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr "Hittade ingen implicit regel för â€%sâ€.\n"
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
msgstr "Använder standardrecept för â€%sâ€.\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "Det cirkulära beroendet %s <- %s släpptes."
-#: remake.c:691
+#: src/remake.c:674
#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr "Avslutade förutsättningarna för mÃ¥lfilen â€%sâ€.\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr "Förutsättningarna för â€%s†skapas.\n"
-#: remake.c:711
+#: src/remake.c:694
#, c-format
msgid "Giving up on target file '%s'.\n"
msgstr "Ger upp med mÃ¥lfilen â€%sâ€.\n"
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
msgstr "MÃ¥let â€%s†återskapades inte pÃ¥ grund av fel."
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr "Förutsättningen â€%s†för mÃ¥let â€%s†är endast ordning.\n"
-#: remake.c:773
+#: src/remake.c:756
#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr "Förutsättningen â€%s†för mÃ¥let â€%s†finns inte.\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr "Förutsättningen â€%s†är nyare än mÃ¥let â€%sâ€.\n"
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr "Förutsättningen â€%s†är äldre än mÃ¥let â€%sâ€.\n"
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr "MÃ¥let â€%s†är dubbelkolon och har inga förutsättningar.\n"
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr "Inget recept för â€%s†och inga förutsättningar har förändrats.\n"
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr "Skapar â€%s†pÃ¥ grund av flaggan always-make.\n"
-#: remake.c:819
+#: src/remake.c:802
#, c-format
msgid "No need to remake target '%s'"
msgstr "Inget behov att Ã¥terskapa mÃ¥let â€%sâ€"
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
msgstr "; använder VPATH-namnet â€%sâ€"
-#: remake.c:841
+#: src/remake.c:824
#, c-format
msgid "Must remake target '%s'.\n"
msgstr "MÃ¥ste Ã¥terskapa mÃ¥let â€%sâ€.\n"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr " Bortser frÃ¥n VPATH-namnet â€%sâ€.\n"
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr "Receptet för â€%s†körs.\n"
-#: remake.c:863
+#: src/remake.c:846
#, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr "Misslyckades med att Ã¥terskapa mÃ¥lfilen â€%sâ€.\n"
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr "Ã…terskapade mÃ¥lfilen â€%sâ€.\n"
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr "MÃ¥lfilen â€%s†behöver Ã¥terskapas med -q.\n"
-#: remake.c:1064
+#: src/remake.c:1047
#, c-format
msgid "Using default commands for '%s'.\n"
msgstr "Använder standardkommandon för â€%sâ€.\n"
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "Varning: Filen â€%s†har en ändringstid i framtiden"
-
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr "Varning: Filen â€%s†har en ändringstid %s s i framtiden"
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr ".LIBPATTERNS-elementet â€%s†är inte ett mönster"
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr "Customs kommer inte att exportera %s\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -1778,7 +1829,7 @@ msgstr ""
"\n"
"# Implicita regler"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1786,181 +1837,177 @@ msgstr ""
"\n"
"# Inga implicita regler."
-#: rule.c:514
+#: src/rule.c:548
#, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
-"# %u implicita regler, %u"
-
-#: rule.c:523
-msgid " terminal."
-msgstr " slutregler."
+"# %u implicita regler, %u (%.1f %%) slutliga."
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "FEL: num_pattern_rules är felaktigt! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "okänd signal"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Avringd"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "Avbrott"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Avslutad"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "Otillåten instruktion"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "Spårningsfälla"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Avbruten"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "IO-fälla"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "Emulatorfälla"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "Flyttalsundantag"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Dödad"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "Bussfel"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Segmenteringsfel"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "Felaktigt systemanrop"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "Ledningsbrott"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Alarmklocka"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "Avslutad"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "Användarsignal 1"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "Användarsignal 2"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "Barn avslutades"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Strömavbrott"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Stoppades"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Stoppades (tty-läsning)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Stoppades (tty-utskrift)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Stoppades (signal)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "CPU-tidsgräns överskreds"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "Filstorleksgräns överskreds"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "Virtuellt tidur löpte ut"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "Profileringstidur löpte ut"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "Fönster ändrat"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Fortsatte"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "Brådskande I/O-läge"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "I/O-tillfälle"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "Miste resurs"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Farosignal"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Informationsbegäran"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "Flyttalsprocessor inte tillgänglig"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
@@ -1969,7 +2016,7 @@ msgstr ""
"\n"
"%s Inga strcache-buffertar\n"
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -1980,27 +2027,27 @@ msgstr ""
"%s strcache-buffertar: totalt = %lu (%lu) / strängar = %lu / lagring = %lu "
"B / snitt = %lu B\n"
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
-"%s aktuell buf: storlek = %hu B / använt = %hu B / antal = %hu / snitt = %hu "
+"%s aktuell buf: storlek = %hu B / använt = %hu B / antal = %hu / snitt = %u "
"B\n"
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr "%s annat använt: totalt = %lu B / antal = %lu / snitt = %lu B\n"
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
msgstr ""
"%s annat ledigt: totalt = %lu B / max = %lu B / min = %lu B / snitt = %hu B\n"
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
@@ -2009,7 +2056,7 @@ msgstr ""
"\n"
"%s strcache-prestanda: uppslagningar = %lu / träffsäkerhet = %lu %%\n"
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
@@ -2017,44 +2064,44 @@ msgstr ""
"# statistik för hashtabell:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "automatisk"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "normal"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "miljö"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "makefil"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "miljö enligt -e"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "kommandorad"
-#: variable.c:1647
+#: src/variable.c:1671
msgid "'override' directive"
msgstr "â€overrideâ€-direktiv"
-#: variable.c:1658
+#: src/variable.c:1682
#, c-format
msgid " (from '%s', line %lu)"
msgstr " (frÃ¥n â€%sâ€, rad %lu)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr "# statistik för variabelmängd-hashtabell:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2062,7 +2109,7 @@ msgstr ""
"\n"
"# Variabler\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
@@ -2070,7 +2117,7 @@ msgstr ""
"\n"
"# Mönsterspecifika variabelvärden"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2078,7 +2125,7 @@ msgstr ""
"\n"
"# Inga mönsterspecifika variabelvärden."
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
@@ -2087,47 +2134,47 @@ msgstr ""
"\n"
"# %u mönsterspecifika variabelvärden"
-#: variable.h:224
+#: src/variable.h:229
#, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "varning: odefinierad variabel â€%.*sâ€"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr "sys$search() misslyckades med %d\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr "-varning, CTRL-Y-hantering kanske behöver återställas från DCL.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "INBYGGT CD %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr "DCL: %s\n"
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr "Lägg till utdata till %s\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr "Lägg till %.*s och rensa upp\n"
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "Utför %s i stället\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2135,11 +2182,11 @@ msgstr ""
"\n"
"# VPATH-sökvägar\n"
-#: vpath.c:620
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
msgstr "# Inga â€vpathâ€-sökvägar."
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
@@ -2148,7 +2195,7 @@ msgstr ""
"\n"
"# %u â€vpathâ€-sökvägar.\n"
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
@@ -2156,7 +2203,7 @@ msgstr ""
"\n"
"# Ingen allmän sökväg (enligt â€VPATHâ€-variabeln)."
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
@@ -2166,33 +2213,33 @@ msgstr ""
"# Allmän sökväg (enligt â€VPATHâ€-variabeln):\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr "Jobbserverfack begränsat till %d\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr "skapar jobbserversemafor: (Fel %ld: %s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr "Internt fel: kan inte öppna jobbserversemaforen â€%sâ€: (Fel %ld: %s)"
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr "Jobbserverklient (semafor %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr "släpp jobbserversemafor: (Fel %ld: %s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr "väntan på semafor eller barnprocess: (Fel %ld: %s)"
diff --git a/po/tr.gmo b/po/tr.gmo
index 9fa6b2d..b795bb1 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index 5c648bb..648b59b 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: make 3.81\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
"PO-Revision-Date: 2006-04-23 08:45+0300\n"
"Last-Translator: Nilgün Belma Bugüner <nilgun@buguner.name.tr>\n"
"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
@@ -14,116 +14,118 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"X-Generator: KBabel 1.9.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ar.c:46
+#: src/ar.c:46
#, fuzzy, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "desteklenmeyen özelliği kullanmaya çalışıyor: `%s'"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "VMS'de işe yaramayan arşiv üyesine dokunup geçiyor"
-#: ar.c:147
+#: src/ar.c:147
#, fuzzy, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "Dokunulup geçildi: Arşiv `%s' yok"
-#: ar.c:150
+#: src/ar.c:150
#, fuzzy, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "Dokunulup geçildi: `%s' geçerli bir arşiv değil"
-#: ar.c:157
+#: src/ar.c:157
#, fuzzy, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "Dokunulup geçildi: Üye `%s', `%s' içinde yok"
-#: ar.c:164
+#: src/ar.c:164
#, fuzzy, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr "Dokunulup geçildi: `%s' deki ar_member_touch'dan dönen kod hatalı"
-#: arscan.c:130
+#: src/arscan.c:130
#, fuzzy, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr "lbr$set_module modül bilgisini çıkarırken başarısız oldu, durum = %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, fuzzy, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "lbr$ini_control durum =%d ile başarısız oldu"
-#: arscan.c:261
+#: src/arscan.c:261
#, fuzzy, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr "`%s' kaynakçası `%s' üyesine bakmak için açılamadı"
-#: arscan.c:965
+#: src/arscan.c:944
#, fuzzy, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr "Ãœye `%s'%s: %ld bayt %ld 'de (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr "(isim kırpılmış olmalı)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Tarih %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " Kull-kim = %d, Grup-kim = %d, kip = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr ""
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** Bırakıldı.\n"
-#: commands.c:627
+#: src/commands.c:628
#, fuzzy, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr "*** [%s] Arşiv üyesi `%s' sahte olabilir; silinmedi"
-#: commands.c:631
+#: src/commands.c:632
#, fuzzy, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr "*** Arşiv üyesi `%s' sahte olabilir; silinmedi"
-#: commands.c:645
+#: src/commands.c:646
#, fuzzy, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] `%s' dosyası siliniyor"
-#: commands.c:647
+#: src/commands.c:648
#, fuzzy, c-format
msgid "*** Deleting file '%s'"
msgstr "*** `%s' dosyası siliniyor"
-#: commands.c:683
+#: src/commands.c:684
#, fuzzy
msgid "# recipe to execute"
msgstr "# çalıştırma komutları"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (paket içinde):"
-#: commands.c:688
+#: src/commands.c:689
#, fuzzy, c-format
msgid " (from '%s', line %lu):\n"
msgstr " (`%s'den, satır %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -131,228 +133,230 @@ msgstr ""
"\n"
"# Dizin\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: durumlanamadı.\n"
-#: dir.c:1085
+#: src/dir.c:1089
#, fuzzy
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
msgstr "# %s (anahtar (key) %s, değişiklik tarihi (mtime) %d): açılamadı.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr "# %s (aygıt %d, i-düğüm [%d,%d,%d]): açılamadı.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr "# %s (aygıt %ld, i-düğüm %ld): açılamadı.\n"
-#: dir.c:1122
+#: src/dir.c:1126
#, fuzzy
msgid "# %s (key %s, mtime %I64u): "
msgstr "# %s (anahtar (key) %s, deÄŸiÅŸiklik tarihi (mtime) %d):"
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (aygıt %d, i-düğüm [%d,%d,%d]):"
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (aygıt %ld, i-düğüm %ld):"
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "Hayır"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " dosyaları,"
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "hayır"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr "olanaksızlıklar"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " çok uzak."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " %lu dizinde olanaksızlıklar.\n"
-#: expand.c:125
+#: src/expand.c:125
#, fuzzy, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr "Çevrimsel değişken `%s' tekrar kendine bağıntılı (sonuçta)"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "sonlandırılmamış değişken bağıntısı"
-#: file.c:278
+#: src/file.c:278
#, fuzzy, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr "`%s' dosyası için komutlar %s:%lu de belirtildi,"
-#: file.c:283
+#: src/file.c:283
#, fuzzy, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr "`%s' dosyası için komutlar örtük kural aramasında bulundu,"
-#: file.c:287
+#: src/file.c:287
#, fuzzy, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr "fakat `%s' şimdi `%s' dosyası ile aynı dosya olarak düşünülmeli."
-#: file.c:290
+#: src/file.c:290
#, fuzzy, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr "`%s' dosyası için komutlar `%s' lehine yoksayılmış olacak."
-#: file.c:310
+#: src/file.c:310
#, fuzzy, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr "tek-sütun `%s', çift-sütun `%s' olarak yeniden adlandırılamaz"
-#: file.c:316
+#: src/file.c:316
#, fuzzy, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr "çift-sütun `%s', tek-sütun `%s' olarak yeniden adlandırılamaz"
-#: file.c:408
+#: src/file.c:408
#, fuzzy, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "*** Aracı dosya `%s' siliniyor"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "Aracı dosyalar siliniyor...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "Åžu an"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: Tarih damgası kapsamdışı; yerine %s kullanılıyor"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# Bir hedef deÄŸil:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# Kıymetli dosya (.PRECIOUS önceden gerekliliği)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# Sahte hedef (.PHONY önceden gerekliliği)."
-#: file.c:971
+#: src/file.c:1025
#, fuzzy
msgid "# Command line target."
msgstr "# Komut-satırı hedefi."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr "# Bir öntanımlı,MAKEFILES veya -include/sinclude makefile."
-#: file.c:975
+#: src/file.c:1029
#, fuzzy
msgid "# Builtin rule"
msgstr ""
"\n"
"# Örtük kural yok."
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# Örtük kural araştırması yapılmıştı."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# Örtük kural araştırması yapılmamıştı."
-#: file.c:980
+#: src/file.c:1034
#, fuzzy, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr "# Örtük/değişmeyen kalıp kökü: `%s'\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr ""
"# Orta seviyede önceden gerekli bir dosya (öncelikle gerekli dosyalara "
"aracılık eden dosya)"
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# OluÅŸtursa da:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# Değişiklik zamanı hiç kontrol edilmedi."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# Dosya yok."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# Dosya çok eski."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# Son deÄŸiÅŸiklik tarihi %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# Dosya güncelleştirilmişti."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# Dosya güncelleştirilmemişti."
-#: file.c:1008
+#: src/file.c:1062
#, fuzzy
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# Komutlar şu an işlemlerini sürdürüyor (BU BİR YAZILIM HATASI)."
-#: file.c:1011
+#: src/file.c:1065
#, fuzzy
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr ""
"# Bağımlılıkların komutları işlemlerini sürdürüyor (BU BİR YAZILIM HATASI)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# Tamamen güncellendi."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# Güncellenmiş olması gerekir (-q verildi)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# Güncellenmiş olamadı."
-#: file.c:1032
+#: src/file.c:1086
#, fuzzy
msgid "# Invalid value in 'command_state' member!"
msgstr "# `command_state' üyesinde geçersiz değer!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -360,7 +364,7 @@ msgstr ""
"\n"
"# Dosyalar"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -370,339 +374,345 @@ msgstr ""
"# dosyaların hash tablosu durumları:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr ""
-#: function.c:790
+#: src/function.c:794
#, fuzzy
msgid "non-numeric first argument to 'word' function"
msgstr "`word' işlevinde sayısal olmayan ilk argüman"
-#: function.c:795
-#, fuzzy
+#: src/function.c:799
+#, fuzzy, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr "`word' işlevinin ilk argümanı sıfırdan büyük olmalı"
-#: function.c:815
+#: src/function.c:819
#, fuzzy
msgid "non-numeric first argument to 'wordlist' function"
msgstr "`wordlist' işlevinde sayısal olmayan ilk argüman"
-#: function.c:817
+#: src/function.c:821
#, fuzzy
msgid "non-numeric second argument to 'wordlist' function"
msgstr "`wordlist' işlevinde sayısal olmayan ikinci argüman"
-#: function.c:1525
+#: src/function.c:1533
#, fuzzy, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "create_child_process: DuplicateHandle(In) başarısız (e=%ld)\n"
-#: function.c:1549
+#: src/function.c:1557
#, fuzzy, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr "create_child_process: DuplicateHandle(Err) başarısız (e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "CreatePipe() başarısız (e=%ld)\n"
-#: function.c:1564
-#, fuzzy
+#: src/function.c:1572
+#, fuzzy, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe (): process_init_fd() başarısız\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "Geçici komut-listesi (batch) dosyası %s temizleniyor\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr ""
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, fuzzy, c-format
msgid "open: %s: %s"
msgstr "%s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, fuzzy, c-format
msgid "write: %s: %s"
msgstr "yazma hatası: %s"
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, fuzzy, c-format
msgid "close: %s: %s"
msgstr "%s%s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr ""
-#: function.c:2262
+#: src/function.c:2277
#, fuzzy, c-format
msgid "read: %s: %s"
msgstr "%s: %s"
-#: function.c:2275
+#: src/function.c:2290
#, fuzzy, c-format
msgid "file: invalid file operation: %s"
msgstr "%s: geçersiz seçenek -- %c\n"
-#: function.c:2390
+#: src/function.c:2405
#, fuzzy, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr "argüman sayısı (%d) `%s' işlevinde yetersiz"
-#: function.c:2402
+#: src/function.c:2417
#, fuzzy, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "bu platformda gerçekleştirilmemiş: işlev `%s'"
-#: function.c:2466
+#: src/function.c:2483
#, fuzzy, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr "`%s' işlemine çağrı sonlandırılmamış: `%c' kayıp"
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr ""
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr ""
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr ""
-#: function.c:2657
+#: src/function.c:2674
#, fuzzy, c-format
msgid "Invalid minimum argument count (%u) for function %s"
msgstr "argüman sayısı (%d) `%s' işlevinde yetersiz"
-#: function.c:2660
+#: src/function.c:2677
#, fuzzy, c-format
msgid "Invalid maximum argument count (%u) for function %s"
msgstr "argüman sayısı (%d) `%s' işlevinde yetersiz"
-#: getopt.c:659
+#: src/getopt.c:659
#, fuzzy, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: `%s' seçeneği belirsiz\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, fuzzy, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: `--%s' seçeneği argümansız kullanılır\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, fuzzy, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: seçenek `%c%s' argümansız kullanılır\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, fuzzy, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: `%s' seçeneği bir argümanla kullanılır\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, fuzzy, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: `--%s' seçeneği bilinmiyor\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, fuzzy, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: `%c%s' seçeneği bilinmiyor\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: kuraldışı seçenek -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: geçersiz seçenek -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: seçenek bir argümanla kullanılır -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, fuzzy, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: `-W %s' seçeneği belirsiz\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, fuzzy, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: `-W %s' seçeneği argümansız kullanılır\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr ""
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr ""
-#: hash.c:49
+#: src/hash.c:50
#, fuzzy, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr "hash tablosu için %ld bayt ayrılamıyor: bellek tükendi"
-#: hash.c:280
-#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
+#: src/hash.c:280
+#, fuzzy, c-format
+msgid "Load=%lu/%lu=%.0f%%, "
msgstr "Yük=%ld/%ld=%.0f%%, "
-#: hash.c:282
-#, c-format
-msgid "Rehash=%d, "
+#: src/hash.c:282
+#, fuzzy, c-format
+msgid "Rehash=%u, "
msgstr "Rehash=%d, "
-#: hash.c:283
-#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
+#: src/hash.c:283
+#, fuzzy, c-format
+msgid "Collisions=%lu/%lu=%.0f%%"
msgstr "Çakışmalar=%ld/%ld=%.0f%%"
-#: implicit.c:38
+#: src/implicit.c:38
#, fuzzy, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr "`%s' için bir örtük kural arıyor.\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, fuzzy, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr "`%s' için arşiv-üyesi örtük kural arıyor.\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr "Örtük kural çevrimi görmezden geliniyor.\n"
-#: implicit.c:486
+#: src/implicit.c:484
#, c-format
-msgid "Stem too long: '%.*s'.\n"
+msgid "Stem too long: '%s%.*s'.\n"
msgstr ""
-#: implicit.c:491
+#: src/implicit.c:490
#, fuzzy, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr "`%.*s' köküyle kalıp kuralı deneniyor.\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, fuzzy, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr "Kural önceden gerekliliği `%s' olanaksız olduğundan reddediliyor.\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, fuzzy, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr "Örtük önceden gereklilik `%s' olanaksız olduğundan reddediliyor.\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, fuzzy, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr "Kural önceden gerekliliği `%s' deneniyor.\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, fuzzy, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr "Örtük önceden gereklilik `%s' deneniyor.\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, fuzzy, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr "Önceden gereklilik `%s' VPATH `%s' olarak bulundu.\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, fuzzy, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr "Aracı dosya `%s' ile bir kural arıyor.\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr "Bir geçici dosya oluşturulamıyor\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (bellek kopyası - core dosyası - diske yazıldı)"
-#: job.c:490
+#: src/job.c:553
#, fuzzy
msgid " (ignored)"
msgstr "[%s] Hata %d (yoksayıldı)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
#, fuzzy
msgid "<builtin>"
msgstr " (paket içinde):"
-#: job.c:510
+#: src/job.c:573
#, fuzzy, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "*** [%s] Hata %d"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** Bitmemiş işler için bekliyor...."
-#: job.c:629
+#: src/job.c:704
#, fuzzy, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "Ast dosya işini sürdürüyor: 0x%08lx (%s) PID %ld %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (karşıdan)"
-#: job.c:831
-#, fuzzy, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Kaybeden ast dosya sağlanıyor: 0x%08lx PID %ld %s\n"
-
-#: job.c:832
+#: src/job.c:898
#, fuzzy, c-format
msgid "Reaping winning child %p PID %s %s\n"
msgstr "Kazanan ast dosya sağlanıyor: 0x%08lx PID %ld %s\n"
-#: job.c:839
+#: src/job.c:899
+#, fuzzy, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Kaybeden ast dosya sağlanıyor: 0x%08lx PID %ld %s\n"
+
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "Geçici komut-listesi dosyası %s temizleniyor\n"
-#: job.c:845
+#: src/job.c:956
#, fuzzy, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr "Geçici komut-listesi dosyası %s temizleniyor\n"
-#: job.c:951
+#: src/job.c:1071
#, fuzzy, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr "Ast 0x%08lx PID %ld%s zincirden kaldırılıyor\n"
-#: job.c:1006
+#: src/job.c:1120
#, fuzzy, c-format
msgid "Released token for child %p (%s).\n"
msgstr "Ast 0x%08lx (%s) için simge (token) kullanıma sunuldu.\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "Süreci başlatacak process_easy() başarısız oldu (e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -711,190 +721,178 @@ msgstr ""
"\n"
"Sayılan %d argüman ile başarısız oldu\n"
-#: job.c:1581
+#: src/job.c:1642
#, fuzzy, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr "Ast 0x%08lx (%s) PID %ld%s zincire konuluyor.\n"
-#: job.c:1811
+#: src/job.c:1875
#, fuzzy, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "Ast 0x%08lx (%s) için simge (token) sağlandı.\n"
-#: job.c:1838
+#: src/job.c:1902
#, fuzzy, c-format
msgid "%s: target '%s' does not exist"
msgstr "Dokunulup geçildi: Arşiv `%s' yok"
-#: job.c:1841
+#: src/job.c:1905
#, fuzzy, c-format
msgid "%s: update target '%s' due to: %s"
msgstr ""
"%sHedef `%s' i derlemek için hiçbir kural yok, `%s' tarafından gereksinim "
"duyuluyor%s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr "işletim sisteminde yük sınırlarına ulaşılamadı "
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "ulaşılamayan yük sınırı: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr "başka dosya tutucu yok: standart girdi kopyalanamadı\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr "başka dosya tutucu yok: standart çıktı kopyalanamadı\n"
-#: job.c:2074
-#, fuzzy
+#: src/job.c:2226
+#, fuzzy, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr "başka dosya tutucu yok: standart girdi kopyalanamadı\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr "Standart girdi eski haline getirilemedi\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr "Standart çıktı eski haline getirilemedi\n"
-#: job.c:2105
-#, fuzzy
+#: src/job.c:2257
+#, fuzzy, c-format
msgid "Could not restore stderr\n"
msgstr "Standart girdi eski haline getirilemedi\n"
-#: job.c:2234
+#: src/job.c:2520
#, fuzzy, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr "make %ld pid'li ast süreci kaldırdı ama hala pid %ld için bekliyor\n"
-#: job.c:2275
-#, fuzzy, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: Komut bulunamadı"
-
-#: job.c:2277
-#, fuzzy, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s: Komut bulunamadı"
-
-#: job.c:2337
+#: src/job.c:2623
#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: Kabuk uygulaması bulunamadı"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr "spawnvpe: ortam alanı tükenmiş olabilir"
-#: job.c:2584
+#: src/job.c:2862
#, fuzzy, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "$SHELL deÄŸiÅŸti (`%s' idi, ÅŸimdi `%s')\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr "%s geçici komut-liste dosyasını oluşturuyor\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
msgstr ""
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
"\t%s\n"
msgstr ""
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr "%s (satır %d) kabuk bağlamı hatalı (!unixy && !batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr ""
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr ""
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr ""
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr ""
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr ""
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr ""
-#: load.c:256
-#, fuzzy
+#: src/load.c:256
+#, fuzzy, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr "Bu platformda paralel iÅŸler (-j) desteklenmiyor."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "Seçenekler:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr " -b, -m Uyumluluk için yoksayıldı.\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr ""
" -B, --always-make Tüm hedefler koşulsuz olarak oluşturulur.\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
msgstr " -C DİZİN, --directory=DIZIN Birşey yapmadan önce DİZİNe geçilir.\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr " -b, -m Bir sürü hata ayıklama bilgisi basar.\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
" --debug[=SEÇENEKLER] Çeşitli türde hata ayıklama bilgileri basar.\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
msgstr ""
" -e, --environment-overrides Ortam değişkenleri makefile'ları değiştirir.\n"
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -902,16 +900,16 @@ msgstr ""
" -f DOSYA, --file=DOSYA, --makefile=DOSYA\n"
" DOSYAyı bir makefile olarak okur.\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help Bu iletiyi basar ve çıkar.\n"
-#: main.c:360
+#: src/main.c:357
#, fuzzy
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr " -i, --ignore-errors Komutların ürettiği hataları yoksayar.\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
@@ -919,7 +917,7 @@ msgstr ""
" -I DÄ°ZÄ°N, --include-dir=DÄ°ZÄ°N\n"
" Eklenecek makefile'ları DİZİNde arar.\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
@@ -927,13 +925,13 @@ msgstr ""
" -j [N], --jobs[=N] Bir defada N işe izin verir; argumansız iş\n"
" sayısı sınırsızdır.\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
" -k, --keep-going Bazı hedefler yapılmadığında devam eder.\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
@@ -943,7 +941,7 @@ msgstr ""
" Yük N'den az olmadıkça çoklu işler "
"başlatılmaz.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
@@ -951,7 +949,7 @@ msgstr ""
" -L, --check-symlink-times sembolik bağlarla hedef arasında en son mtime\n"
" kullanılır\n"
-#: main.c:374
+#: src/main.c:371
#, fuzzy
msgid ""
" -n, --just-print, --dry-run, --recon\n"
@@ -961,7 +959,7 @@ msgstr ""
" -n, --just-print, --dry-run, --recon\n"
" Gerçekte komutlar çalıştırılmaz, gösterilir.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
@@ -971,17 +969,17 @@ msgstr ""
" DOSYAnın çok eski olduğu varsayılır ve\n"
" yeniden işlem yapılmaz.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
msgstr ""
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr " -p, --print-data-base make'in içsel veritabanını basar.\n"
-#: main.c:385
+#: src/main.c:382
#, fuzzy
msgid ""
" -q, --question Run no recipe; exit status says if up to "
@@ -989,49 +987,53 @@ msgid ""
msgstr ""
" -q, --question Komut çalıştırmaz; güncelse çıkışta belirtir\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr ""
" -r, --no-builtin-rules Oluşumiçi örtük kuralları etkisizleştirir.\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr ""
" -R, --no-builtin-variables Oluşumiçi değişken ayarlarını etkisizleştirir\n"
-#: main.c:391
+#: src/main.c:388
#, fuzzy
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr " -s, --silent, --quiet Komutlar işlenirken gösterilmez.\n"
-#: main.c:393
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
msgstr ""
" -S, --no-keep-going, --stop Bazı hedefler yapılmadığında devam etmez.\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
" -t, --touch Yeniden derlemek yerine hedeflere bakıp "
"geçer.\n"
-#: main.c:398
+#: src/main.c:397
#, fuzzy
msgid " --trace Print tracing information.\n"
msgstr " -b, -m Bir sürü hata ayıklama bilgisi basar.\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr " -v, --version make sürüm numarasını basar ve çıkar.\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory Kullanılan dizini basar.\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
@@ -1039,7 +1041,7 @@ msgstr ""
" --no-print-directory Dolaylı olarak açılmış olsa bile -w 'yi "
"kapatır\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1047,7 +1049,7 @@ msgstr ""
" -W DOSYA, --what-if=DOSYA, --new-file=DOSYA, --assume-new=DOSYA\n"
" DOSYA sonsuz yeni varsayılır.\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
@@ -1055,26 +1057,27 @@ msgstr ""
" --warn-undefined-variables Atanmamış bir değişkene bağıntı yapıldığında\n"
" uyarır.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "dosyaismi olarak boş dizge geçersiz"
-#: main.c:766
+#: src/main.c:754
#, fuzzy, c-format
msgid "unknown debug level specification '%s'"
msgstr "Hata ayıklama düzeyi özelliği `%s' bilinmiyor"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr ""
-#: main.c:861
+#: src/main.c:849
#, fuzzy, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr "%s: Kesinti/Olağandışı durum saptandı (kod = 0x%lx, adres = 0x%lx)\n"
-#: main.c:868
+#: src/main.c:856
#, fuzzy, c-format
msgid ""
"\n"
@@ -1089,136 +1092,143 @@ msgstr ""
"OlağandışılıkBayrakları = %lx\n"
"OlağandışılıkAdresi = %lx\n"
-#: main.c:876
+#: src/main.c:864
#, fuzzy, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "EriÅŸim uyumsuzluÄŸu: %lx adresinde yazma iÅŸlemi\n"
-#: main.c:877
+#: src/main.c:865
#, fuzzy, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "EriÅŸim uyumsuzluÄŸu: %lx adresinde okuma iÅŸlemi\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, fuzzy, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell default_shell = %s olarak belirliyor\n"
-#: main.c:1021
+#: src/main.c:1009
#, fuzzy, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr ""
"find_and_set_shell yol aramasını default_shell = %s olarak belirliyor\n"
-#: main.c:1538
-#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s 30 saniyeliğine askıya alınıyor..."
-
-#: main.c:1540
-#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "sleep(30) bitti. Devam ediliyor.\n"
-
-#: main.c:1627
-#, fuzzy
+#: src/main.c:1609
+#, fuzzy, c-format
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
"uyarı: iş sunucusu kullanımdışı: -j1 kullanılıyor. Üst make kuralına `+' "
"ekle."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
+#: src/main.c:1617
+#, fuzzy, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
msgstr "uyarı: alt derlemede -jN zorlandı: iş sunucusu kipi kapatılıyor."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr "Makefile standart girdiden iki kez belirtildi."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (geçici dosya)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (geçici dosya)"
-#: main.c:2048
+#: src/main.c:2004
+#, fuzzy, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr "uyarı: alt derlemede -jN zorlandı: iş sunucusu kipi kapatılıyor."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr "Bu platformda paralel iÅŸler (-j) desteklenmiyor."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "Tek iş kipi (-j1) için make'i başlatma konumuna alıyor"
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr "Sembolik baÄŸlar desteklenmiyor: -L iptal ediliyor"
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "makefile'ları güncelliyor...\n"
-#: main.c:2195
+#: src/main.c:2226
#, fuzzy, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr "`%s' make dosyası çevrime girdi; yeniden derlenemez.\n"
-#: main.c:2279
+#: src/main.c:2303
#, fuzzy, c-format
msgid "Failed to remake makefile '%s'."
msgstr "`%s' make dosyası yeniden derlenemiyor."
-#: main.c:2299
+#: src/main.c:2323
#, fuzzy, c-format
msgid "Included makefile '%s' was not found."
msgstr "İçerilen make dosyası `%s' bulunamadı."
-#: main.c:2304
+#: src/main.c:2328
#, fuzzy, c-format
msgid "Makefile '%s' was not found"
msgstr "`%s' make dosyası bulunamadı"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "Geriye, özgün dizine geçilemiyor."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "Yeniden çalıştırılıyor[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (geçici dosya): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ".DEFAULT_GOAL bir hedeften fazlasını içeriyor"
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Hedefler belirtilmediğinden make dosyası yok"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "Hedef yok"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Hedefler belirtilmediğinden make dosyası yok"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "Amaçlanan hedefler güncelleniyor...\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr "uyarı: Clock skew saptandı. Derleme tamamlanamayabilir."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "Kullanım: %s [seçenekler] [hedef] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1227,7 +1237,7 @@ msgstr ""
"\n"
"Bu program %s için kurgulanmış\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1236,38 +1246,38 @@ msgstr ""
"\n"
"Bu program %s için kurgulanmış (%s)\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr ""
"Yazılım hatalarını <bug-make@gnu.org> adresine,\n"
"çeviri hatalarını <gnu-tr@belgeler.org> adresine bildiriniz.\n"
-#: main.c:2870
+#: src/main.c:2901
#, fuzzy, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "`-%c' seçeneği bir boş olmayan dizge argüman gerektirir"
-#: main.c:2934
+#: src/main.c:2965
#, fuzzy, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "`-%c' seçeneği bir pozitif tümleyici bağımsız değişkenle kullanılır"
-#: main.c:3332
+#: src/main.c:3363
#, fuzzy, c-format
msgid "%sBuilt for %s\n"
msgstr ""
"\n"
"%sBu program %s için derlenmiş\n"
-#: main.c:3334
+#: src/main.c:3365
#, fuzzy, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr ""
"\n"
"%sBu program %s için derlenmiş (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1276,7 +1286,7 @@ msgid ""
"%sThere is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1285,7 +1295,7 @@ msgstr ""
"\n"
"# Make veri tabanı, %s üzerine basıldı"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1294,361 +1304,385 @@ msgstr ""
"\n"
"# %s üzerindeki Make veri tabanı tamamlandı\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Bilinmeyen hata %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: kullanıcı %lu (gerçekte %lu), grup %lu (gerçekte %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "Ä°lklendirilmiÅŸ eriÅŸim"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr "Kullanıcı erişimi"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "Make eriÅŸimi"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "Asta eriÅŸim"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: bilinmeyen bir dizine giriliyor\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: bilinmeyen dizinden çıkılıyor\n"
-#: output.c:109
+#: src/output.c:102
#, fuzzy, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "%s: `%s' dizine giriliyor\n"
-#: output.c:111
+#: src/output.c:104
#, fuzzy, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "%s: `%s' dizininden çıkılıyor\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: Bilinmeyen bir dizine giriliyor\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: Bilinmeyen dizinden çıkılıyor\n"
-#: output.c:120
+#: src/output.c:113
#, fuzzy, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr "%s[%u]:`%s' dizinine giriliyor\n"
-#: output.c:122
+#: src/output.c:115
#, fuzzy, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "%s[%u]: `%s' dizininden çıkılıyor\n"
-#: output.c:495 output.c:497
-#, fuzzy
+#: src/output.c:442 src/output.c:444
+#, fuzzy, c-format
msgid "write error: stdout"
msgstr "yazma hatası: %s"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". Durdu.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "işleri yaratıyor"
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
#, fuzzy
msgid "duping jobs pipe"
msgstr "işleri yaratıyor"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr "işleri hazırlıyor"
-#: posixos.c:90
+#: src/posixos.c:119
#, fuzzy, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr "içsel hata: --jobserver-fds dizgesi `%s' geçersiz"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr ""
-#: posixos.c:109
+#: src/posixos.c:138
#, fuzzy
msgid "jobserver pipeline"
msgstr "işleri hazırlıyor"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr "iş-sunucusu yazıyor"
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr ""
+
+#: src/posixos.c:303
#, fuzzy
msgid "pselect jobs pipe"
msgstr "görev listesi okunuyor"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "görev listesi okunuyor"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "Makefile'lar okunuyor...\n"
-#: read.c:329
+#: src/read.c:336
#, fuzzy, c-format
msgid "Reading makefile '%s'"
msgstr "`%s' make dosyası okunuyor"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (öntanımlı amaç yok)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (arama yolu)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (umurunda deÄŸil)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr "( ~ uzantısı yok)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr ""
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr ""
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "şartlı ifade de yazılış hatası"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr ""
-#: read.c:985
-#, fuzzy
+#: src/read.c:986
+#, fuzzy, c-format
msgid "recipe commences before first target"
msgstr "komutlar ilk hedeften önce başlıyor"
-#: read.c:1034
-#, fuzzy
+#: src/read.c:1035
+#, fuzzy, c-format
msgid "missing rule before recipe"
msgstr "komutlardan önceki kural kayıp"
-#: read.c:1124
-#, fuzzy
+#: src/read.c:1136
+#, fuzzy, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr "(8 boşluğu TAB'mı zannettiniz?)"
-#: read.c:1126
-#, fuzzy
+#: src/read.c:1138
+#, fuzzy, c-format
msgid "missing separator"
msgstr "kayıp ayraç%s"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "hedef kalıp kayıp"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "çok sayıda hedef kalıp"
-#: read.c:1268
+#: src/read.c:1289
#, fuzzy, c-format
msgid "target pattern contains no '%%'"
msgstr "hedef kalıp `%%' içermiyor"
-#: read.c:1390
-#, fuzzy
+#: src/read.c:1404
+#, fuzzy, c-format
msgid "missing 'endif'"
msgstr "`endif' kayıp"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "boÅŸ deÄŸiÅŸken ismi"
-#: read.c:1463
-#, fuzzy
+#: src/read.c:1478
+#, fuzzy, c-format
msgid "extraneous text after 'define' directive"
msgstr "`endef' yönergesinden sonraki metin yersiz"
-#: read.c:1488
-#, fuzzy
+#: src/read.c:1503
+#, fuzzy, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "`endef' kayıp, `define' sonlandırılmamış"
-#: read.c:1516
-#, fuzzy
+#: src/read.c:1531
+#, fuzzy, c-format
msgid "extraneous text after 'endef' directive"
msgstr "`endef' yönergesinden sonraki metin yersiz"
-#: read.c:1588
+#: src/read.c:1603
#, fuzzy, c-format
msgid "extraneous text after '%s' directive"
msgstr "`%s' yönergesinden sonraki metin yersiz"
-#: read.c:1589
+#: src/read.c:1604
#, fuzzy, c-format
msgid "extraneous '%s'"
msgstr "`%s' yersiz"
-#: read.c:1617
-#, fuzzy
+#: src/read.c:1632
+#, fuzzy, c-format
msgid "only one 'else' per conditional"
msgstr "her şartlı ifade de sadece bir `else'"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr "Hedefe özgü değişken tanımı bozuk"
-#: read.c:1950
-#, fuzzy
+#: src/read.c:1968
+#, fuzzy, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr "öngereksinimler komut betiklerinde tanımlanamaz"
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr ""
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr "örtük ve durağan kalıp kuralları karışmış"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "örtük ve normal kurallar karışmış"
-#: read.c:2085
+#: src/read.c:2107
#, fuzzy, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr "hedef `%s' hedef kalıpla eşleşmiyor"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, fuzzy, c-format
msgid "target file '%s' has both : and :: entries"
msgstr "hedef dosya `%s'hem : hem de :: girdilerine sahip"
-#: read.c:2106
+#: src/read.c:2128
#, fuzzy, c-format
msgid "target '%s' given more than once in the same rule"
msgstr "hedef `%s' aynı kuralda birden fazla belirtilmiş."
-#: read.c:2116
+#: src/read.c:2138
#, fuzzy, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr "uyarı: hedef `%s' için komutlar geçersiz kılınıyor"
-#: read.c:2119
+#: src/read.c:2141
#, fuzzy, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr "uyarı: hedef `%s' için eski komutlar yoksayılıyor"
-#: read.c:2223
-#, fuzzy
+#: src/read.c:2254
+#, fuzzy, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr "örtük ve normal kurallar karışmış"
-#: read.c:2542
+#: src/read.c:2271
+#, fuzzy, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "uyarı: hedef `%s' için komutlar geçersiz kılınıyor"
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr "uyarı: NUL karakteri görüldü; satırın geri kalanı yoksayılıyor"
-#: remake.c:226
+#: src/remake.c:226
#, fuzzy, c-format
msgid "Nothing to be done for '%s'."
msgstr "`%s' için hiçbir şey yapılmadı."
-#: remake.c:227
+#: src/remake.c:227
#, fuzzy, c-format
msgid "'%s' is up to date."
msgstr "`%s' güncel"
-#: remake.c:323
+#: src/remake.c:323
#, fuzzy, c-format
msgid "Pruning file '%s'.\n"
msgstr "Budanmış dosya `%s'.\n"
-#: remake.c:406
+#: src/remake.c:389
#, fuzzy, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr ""
"%sHedef `%s' i derlemek için hiçbir kural yok, `%s' tarafından gereksinim "
"duyuluyor%s"
-#: remake.c:416
+#: src/remake.c:399
#, fuzzy, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%sHedef `%s' i derlemek için hiçbir kural yok%s"
-#: remake.c:442
+#: src/remake.c:425
#, fuzzy, c-format
msgid "Considering target file '%s'.\n"
msgstr "hedef dosya `%s' hesaba katılıyor.\n"
-#: remake.c:449
+#: src/remake.c:432
#, fuzzy, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr "En son `%s'dosyasının güncellenmesi denendi ve başarısız oldu.\n"
-#: remake.c:461
+#: src/remake.c:444
#, fuzzy, c-format
msgid "File '%s' was considered already.\n"
msgstr "`%s' dosyası zaten hesaba katıldı.\n"
-#: remake.c:471
+#: src/remake.c:454
#, fuzzy, c-format
msgid "Still updating file '%s'.\n"
msgstr "`%s' dosyası hala güncelleniyor.\n"
-#: remake.c:474
+#: src/remake.c:457
#, fuzzy, c-format
msgid "Finished updating file '%s'.\n"
msgstr "`%s' dosyasının güncellenmesi tamamlandı.\n"
-#: remake.c:503
+#: src/remake.c:486
#, fuzzy, c-format
msgid "File '%s' does not exist.\n"
msgstr "`%s' dosyası yok.\n"
-#: remake.c:511
+#: src/remake.c:494
#, fuzzy, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
@@ -1656,147 +1690,147 @@ msgstr ""
"*** Uyarı: .LOW_RESOLUTION_TIME dosyası `%s' yüksek çözünürlüklü bir zaman "
"damgası içeriyor"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, fuzzy, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr "`%s' için bir örtük kural bulundu.\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, fuzzy, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr "`%s' için bir örtük kural yok.\n"
-#: remake.c:532
+#: src/remake.c:515
#, fuzzy, c-format
msgid "Using default recipe for '%s'.\n"
msgstr "`%s' için öntanımlı komutlar kullanılıyor.\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "Çevrimsel %s <- %s bağımlılığı iptal edildi."
-#: remake.c:691
+#: src/remake.c:674
#, fuzzy, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr "`%s' hedef dosyasının önceden gereklilikleri tamamlandı.\n"
-#: remake.c:697
+#: src/remake.c:680
#, fuzzy, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr "`%s' için önceden gereklilikler derlenmeye devam ediyor.\n"
-#: remake.c:711
+#: src/remake.c:694
#, fuzzy, c-format
msgid "Giving up on target file '%s'.\n"
msgstr "`%s' hedef dosyasında umut kesiliyor.\n"
-#: remake.c:716
+#: src/remake.c:699
#, fuzzy, c-format
msgid "Target '%s' not remade because of errors."
msgstr "Hedef `%s' hatalardan dolayı yeniden derlenemez."
-#: remake.c:768
+#: src/remake.c:751
#, fuzzy, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr "Önceden gerekli `%s' hedef `%s' için şart.\n"
-#: remake.c:773
+#: src/remake.c:756
#, fuzzy, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr "Hedef `%s' in önceden gereklisi `%s' mevcut değil.\n"
-#: remake.c:778
+#: src/remake.c:761
#, fuzzy, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr "Önceden gerekli `%s' hedef `%s' den daha yeni.\n"
-#: remake.c:781
+#: src/remake.c:764
#, fuzzy, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr "Önceden gerekli `%s' hedef `%s' den daha eski.\n"
-#: remake.c:799
+#: src/remake.c:782
#, fuzzy, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr "Hedef `%s' çift-sütunlu ve önceden gereklilikler gerektirmiyor.\n"
-#: remake.c:806
+#: src/remake.c:789
#, fuzzy, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr "`%s' için komutlar ve önceden gerekliliklerde bir değişiklik yok.\n"
-#: remake.c:811
+#: src/remake.c:794
#, fuzzy, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr "Daima derle seçeneğinden dolayı `%s' derleniyor.\n"
-#: remake.c:819
+#: src/remake.c:802
#, fuzzy, c-format
msgid "No need to remake target '%s'"
msgstr "Hedef `%s' nin yeniden derlenmesine gerek yok"
-#: remake.c:821
+#: src/remake.c:804
#, fuzzy, c-format
msgid "; using VPATH name '%s'"
msgstr "; VPATH ismi `%s' kullanılıyor"
-#: remake.c:841
+#: src/remake.c:824
#, fuzzy, c-format
msgid "Must remake target '%s'.\n"
msgstr "Hedef `%s' yeniden derlenmeli.\n"
-#: remake.c:847
+#: src/remake.c:830
#, fuzzy, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr " VPATH ismi `%s' yoksayılıyor.\n"
-#: remake.c:856
+#: src/remake.c:839
#, fuzzy, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr "`%s' nin komutları çalışmaya devam ediyor.\n"
-#: remake.c:863
+#: src/remake.c:846
#, fuzzy, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr "Hedef dosya `%s' yeniden derlenirken hata oluÅŸtu.\n"
-#: remake.c:866
+#: src/remake.c:849
#, fuzzy, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr "Hedef dosya `%s' yeniden derlenmesi başarıyla tamamlandı.\n"
-#: remake.c:869
+#: src/remake.c:852
#, fuzzy, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr "`%s' hedef dosyasının -q ile yeniden derlenmesi gerekir.\n"
-#: remake.c:1064
+#: src/remake.c:1047
#, fuzzy, c-format
msgid "Using default commands for '%s'.\n"
msgstr "`%s' için öntanımlı komutlar kullanılıyor.\n"
-#: remake.c:1430
-#, fuzzy, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "Uyarı: `%s' dosyası gelecekteki bir değişiklik tarihini içeriyor"
-
-#: remake.c:1444
+#: src/remake.c:1422
#, fuzzy, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr "Uyarı: `%s' dosyasının değişiklik tarihi %.2g s kadar gelecekte"
-#: remake.c:1647
+#: src/remake.c:1662
#, fuzzy, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr ".LIBPATTERNS elemanı `%s' bir kalıp değil"
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr "Özelleştirilmiş olanlar dışarı aktarılmayacak: %s\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -1804,7 +1838,7 @@ msgstr ""
"\n"
"# Örtük Kurallar"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1812,188 +1846,184 @@ msgstr ""
"\n"
"# Örtük kural yok."
-#: rule.c:514
-#, c-format
+#: src/rule.c:548
+#, fuzzy, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
"# %u örtük kural, %u"
-#: rule.c:523
-msgid " terminal."
-msgstr " terminal."
-
-#: rule.c:531
+#: src/rule.c:557
#, fuzzy, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "YAZILIM HATASI: num_pattern_rules yanlış! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "bilinmeyen sinyal"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Tıkanma"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "Kesme"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Çık"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "Yönergeler uygun değil"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "İzleme/kesmenoktası yakalayıcı"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Ä°ptal edildi"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "IOT tuzağı"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "EMT tuzağı"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "Gerçek sayı olağandışı durumu"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Süreç durduruldu"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "Veri yolu hatası"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Parçalama arızası"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "Sistem çağrısı hatalı"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "Veri alınamıyor"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Alarm saati"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "Sonlandırıldı"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "Kullanıcı tanımlı sinyal 1"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "Kullanıcı tanımlı sinyal 2"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "Ast bıraktı"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Güç kesilmesi"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Durduruldu"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Durduruldu (konsol girdisi)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Durduruldu (konsol çıktısı)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Durduruldu (sinyal)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "CPU zaman sınırı aşıldı"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "Dosya uzunluğu sınırı aşıldı"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "Sanal süreölçer kullanım süresi doldu"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "Tanıtım süreölçer kullanım süresi doldu"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "Pencere boyutları değiştirildi"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Devam ediliyor"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "Acil G/Ç koşulu"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "G/Ç mümkün"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "Kaynak kaybı"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Tehlike sinyali"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Bilgi isteÄŸi"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "Aritmetik işlemci kullanılabilir değil"
-#: strcache.c:274
+#: src/strcache.c:274
#, fuzzy, c-format
msgid ""
"\n"
"%s No strcache buffers\n"
msgstr "%s dizge belleği tamponlarının sayısı: %d\n"
-#: strcache.c:304
+#: src/strcache.c:304
#, fuzzy, c-format
msgid ""
"\n"
@@ -2001,31 +2031,31 @@ msgid ""
"B\n"
msgstr "%s dizge belleÄŸi boÅŸ: toplam = %d / max = %d / min = %d / ort = %d\n"
-#: strcache.c:308
-#, c-format
+#: src/strcache.c:308
+#, fuzzy, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
-msgstr ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
+msgstr "%s dizge belleÄŸi boyu: toplam = %d / max = %d / min = %d / ort = %d\n"
-#: strcache.c:319
+#: src/strcache.c:319
#, fuzzy, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr "%s dizge belleÄŸi boyu: toplam = %d / max = %d / min = %d / ort = %d\n"
-#: strcache.c:322
+#: src/strcache.c:322
#, fuzzy, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
msgstr "%s dizge belleÄŸi boÅŸ: toplam = %d / max = %d / min = %d / ort = %d\n"
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
msgstr ""
-#: strcache.c:328
+#: src/strcache.c:328
#, fuzzy
msgid ""
"# hash-table stats:\n"
@@ -2035,45 +2065,45 @@ msgstr ""
"# dosyaların hash tablosu durumları:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "otomatik"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "öntanımlı"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "çevre"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "derleme dosyası"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "çevre -e altında"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "komut satırı"
-#: variable.c:1647
+#: src/variable.c:1671
#, fuzzy
msgid "'override' directive"
msgstr "`override' yönergesi"
-#: variable.c:1658
+#: src/variable.c:1682
#, fuzzy, c-format
msgid " (from '%s', line %lu)"
msgstr " (`%s'den, satır %lu)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr "# değişken kümesi hash tablosunun durumu:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2081,7 +2111,7 @@ msgstr ""
"\n"
"# DeÄŸiÅŸkenler\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
@@ -2089,7 +2119,7 @@ msgstr ""
"\n"
"# Kalıba özgü Değişken Değerleri"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2097,7 +2127,7 @@ msgstr ""
"\n"
"# Örneğe duyarlı değişken değeri yok."
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
@@ -2106,49 +2136,49 @@ msgstr ""
"\n"
"# %u örneğe duyarlı değişken değeri"
-#: variable.h:224
+#: src/variable.h:229
#, fuzzy, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "uyarı: `%.*s' değişkeni atanmamış"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, fuzzy, c-format
msgid "sys$search() failed with %d\n"
msgstr "sys$search %d ile başarısız\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr ""
"-uyarı, DCL den yönetimi almak için CTRL-Y'yi yeniden "
"etkinleÅŸtirebilirsiniz.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "OLUŞUMİÇİ CD %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr ""
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, fuzzy, c-format
msgid "Append output to %s\n"
msgstr "%s e yönlendirilmiş çıktı\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr ""
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "%s yerine çalıştırılıyor\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2156,12 +2186,12 @@ msgstr ""
"\n"
"# VPATH Arama yolu\n"
-#: vpath.c:620
+#: src/vpath.c:620
#, fuzzy
msgid "# No 'vpath' search paths."
msgstr "# `vpath' arama yolları yok"
-#: vpath.c:622
+#: src/vpath.c:622
#, fuzzy, c-format
msgid ""
"\n"
@@ -2170,7 +2200,7 @@ msgstr ""
"\n"
"# %u `vpath' arama yolu.\n"
-#: vpath.c:625
+#: src/vpath.c:625
#, fuzzy
msgid ""
"\n"
@@ -2179,7 +2209,7 @@ msgstr ""
"\n"
"# Genel arama yolu (`VPATH' çevre değişkeni) yok."
-#: vpath.c:631
+#: src/vpath.c:631
#, fuzzy
msgid ""
"\n"
@@ -2190,33 +2220,33 @@ msgstr ""
"# Genel (`VPATH' çevre değişkeni) arama yolu:\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr ""
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr ""
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr ""
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr ""
@@ -2233,6 +2263,18 @@ msgstr ""
#~ msgid "process_easy() failed failed to launch process (e=%ld)\n"
#~ msgstr "Süreci başlatmada process_easy() başarısız oldu (e=%ld)\n"
+#~ msgid "%s: Command not found"
+#~ msgstr "%s: Komut bulunamadı"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s: Kabuk uygulaması bulunamadı"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s 30 saniyeliğine askıya alınıyor..."
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "sleep(30) bitti. Devam ediliyor.\n"
+
#~ msgid "internal error: multiple --jobserver-fds options"
#~ msgstr "içsel hata: çok sayıda --jobserver-fds seçeneği"
@@ -2250,6 +2292,9 @@ msgstr ""
#~ "KULLANIMINIZA\n"
#~ "%sUYGUNLUĞU için bile garanti verilmez.\n"
+#~ msgid "Unknown error %d"
+#~ msgstr "Bilinmeyen hata %d"
+
#~ msgid "virtual memory exhausted"
#~ msgstr "sanal bellek tükendi"
@@ -2265,6 +2310,12 @@ msgstr ""
#~ msgid "invalid `override' directive"
#~ msgstr "`override' yönergesi geçersiz"
+#~ msgid "Warning: File `%s' has modification time in the future"
+#~ msgstr "Uyarı: `%s' dosyası gelecekteki bir değişiklik tarihini içeriyor"
+
+#~ msgid " terminal."
+#~ msgstr " terminal."
+
#~ msgid ""
#~ "\n"
#~ "%s # of strings in strcache: %d\n"
diff --git a/po/uk.gmo b/po/uk.gmo
index 538256c..3112ee8 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index 3a8e796..2ed7e54 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -3,130 +3,132 @@
# This file is distributed under the same license as the make package.
#
# Volodymyr M. Lisivka <lvm@mystery.lviv.net>, 2001-2012.
-# Yuri Chornoivan <yurchor@ukr.net>, 2012, 2013, 2014, 2016.
+# Yuri Chornoivan <yurchor@ukr.net>, 2012, 2013, 2014, 2016, 2019, 2020.
msgid ""
msgstr ""
-"Project-Id-Version: make 4.2\n"
+"Project-Id-Version: make 4.2.93\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
-"PO-Revision-Date: 2016-05-22 21:55+0300\n"
-"Last-Translator: Volodymyr M. Lisivka <lvm@mystery.lviv.net>\n"
-"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2020-01-03 12:37+0200\n"
+"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
+"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Lokalize 1.5\n"
+"X-Generator: Lokalize 19.11.70\n"
-#: ar.c:46
+#: src/ar.c:46
#, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "Ñпроба вжити можливіÑÑ‚ÑŒ, підтримки Ñкої не передбачено: \"%s\""
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу зміни члена архіву неможливо у ÑиÑтемі VMS"
-#: ar.c:147
+#: src/ar.c:147
#, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу зміни: Ðрхів \"%s\" не Ñ–Ñнує"
-#: ar.c:150
+#: src/ar.c:150
#, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу зміни: некоректний архів: \"%s\""
-#: ar.c:157
+#: src/ar.c:157
#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу зміни: Член \"%s\" не міÑтитьÑÑ Ñƒ \"%s\""
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr ""
"Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу зміни: Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ ar_member_touch повернула\n"
"помилковий код відповіді Ð´Ð»Ñ \"%s\""
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr "lbr$set_module() не вдалоÑÑ Ð²Ð¸Ð´Ð¾Ð±ÑƒÑ‚Ð¸ дані модулÑ, Ñтан = %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "Помилка lbr$ini_control() з повідомленнÑм Ñтану = %d"
-#: arscan.c:261
+#: src/arscan.c:261
#, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ бібліотеку «%s» Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ Ñтану елемента %d"
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr "Елемент «%s»%s: %ld байтів з %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (ім'Ñ Ð¼Ð¾Ð¶Ðµ бути обрізано)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Дата %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, режим = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr "У рецепті забагато Ñ€Ñдків (%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** Зупинка.\n"
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr "*** [%s] Елемент архіву, «%s», можливо є фіктивним; не вилучено"
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr "*** Елемент архіву, «%s», можливо є фіктивним; не вилучено"
-#: commands.c:645
+#: src/commands.c:646
#, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] Вилучаємо файл \"%s\""
-#: commands.c:647
+#: src/commands.c:648
#, c-format
msgid "*** Deleting file '%s'"
msgstr "*** Вилучаємо файл \"%s\""
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
msgstr "# ÑпоÑіб, Ñкий Ñлід заÑтоÑувати"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (вбудоване):"
-#: commands.c:688
+#: src/commands.c:689
#, c-format
msgid " (from '%s', line %lu):\n"
msgstr " (з \"%s\", Ñ€Ñдок %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -134,223 +136,223 @@ msgstr ""
"\n"
"# Каталоги\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: неможливо отримати інформацію (stat).\n"
-#: dir.c:1085
-#, fuzzy
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
-msgstr "# %s (ключ %s, Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ %ull): не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸.\n"
+msgstr "# %s (ключ %s, Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ %I64u): не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr "# %s (приÑтрій %d, івузол [%d,%d,%d]): неможливо відкрити.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr "# %s (приÑтрій %ld, івузол %ld): не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸.\n"
-#: dir.c:1122
-#, fuzzy
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
-msgstr "# %s (ключ %s, Ñ‡Ð°Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ— %ull): "
+msgstr "# %s (ключ %s, Ñ‡Ð°Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ— %I64u): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (приÑтрій %d, івузол [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (приÑтрій %ld, івузол %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "ÐÑ–"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " файлів, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "ні"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " недоÑÑжних цілей"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " на поточний момент."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " недоÑÑжних цілей у %lu каталогах.\n"
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr "РекурÑивна змінна \"%s\" поÑилаєтьÑÑ Ñама на Ñебе (у результаті)"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "незавершена поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° змінну"
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr "СпоÑіб Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» було задано %s:%lu,"
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr ""
"СпоÑіб Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° «%s» було знайдено за допомогою пошуку неÑвних правил,"
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr "але \"%s\" Ñ– \"%s\" тепер вважаютьÑÑ Ð¾Ð´Ð½Ð¸Ð¼ Ñ– тим же ж файлом. "
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr "СпоÑіб Ð´Ð»Ñ Â«%s» буде проігноровано на кориÑÑ‚ÑŒ ÑпоÑобу Ð´Ð»Ñ Â«%s»."
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr ""
"неможливо перейменувати \"%s\" з однією двокрапкою у \"%s\" з двома "
"двокрапками"
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr ""
"неможливо перейменувати \"%s\" з двома двокрапками у \"%s\" з однією "
"двокрапкою"
-#: file.c:408
+#: src/file.c:408
#, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "*** Вилучаємо проміжний файл «%s»"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "Вилучаємо проміжні файли...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "Поточний чаÑ"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: чаÑова позначка поза допуÑтимим діапазоном; замінюємо на %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# Ðе Ñ” метою:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# ВартіÑний файл (залежніÑÑ‚ÑŒ .PRECIOUS)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# ПÑевдоціль (залежніÑÑ‚ÑŒ .PHONY)."
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# Мета, що викликаєтьÑÑ Ð· командного Ñ€Ñдка."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr "# Типово, MAKEFILES, або -include/sinclude makefile."
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
msgstr "# Вбудоване правило"
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# Пошук неÑвних правил виконано."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# Пошук неÑвних правил не було виконано."
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr "# ОÑнова неÑвного або Ñтатичного шаблону: \"%s\"\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr "# Файл Ñ” проміжною залежніÑÑ‚ÑŽ."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# Збирає також:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# Ð§Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ ніколи не перевірÑвÑÑ."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# Файл не Ñ–Ñнує."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# Файл дуже Ñтарий."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# ВоÑтаннє оновлено %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# Файл був оновлений."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# Файл не було оновлено."
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# ВиконуєтьÑÑ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ° (ЦЕ ПОМИЛКÐ)"
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr "# Ці залежноÑÑ‚Ñ– вже оброблÑÑŽÑ‚ÑŒÑÑ (ЦЕ ПОМИЛКÐ)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# УÑпішно оновлено."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# Повинно бути оновлено (вÑтановлений ключ -q)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# Спроба Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð±ÐµÐ·ÑƒÑпішна."
-#: file.c:1032
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
msgstr "# Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð»ÐµÐ½Ð° \"command_state\"!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -358,7 +360,7 @@ msgstr ""
"\n"
"# Файли"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -368,333 +370,341 @@ msgstr ""
"# ÑтатиÑтика щодо таблиці хешів файлів:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr "%s: поле «%s» не кешовано: %s"
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
msgstr "не чиÑловий перший аргумент Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— \"word\""
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr "першим аргументом функції «word» має бути чиÑло, більше за 0"
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
msgstr "не чиÑловий перший аргумент Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— \"wordlist\""
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
msgstr "не чиÑловий другий аргумент Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— \"wordlist\""
-#: function.c:1525
+#: src/function.c:1533
#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "windows32_openpipe: помилка DuplicateHandle(In) (e=%ld)\n"
-#: function.c:1549
+#: src/function.c:1557
#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr "windows32_openpipe: помилка DuplicateHandle(Err) (e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "Помилка CreatePipe() (e=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe(): помилка process_init_fd()\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "Спорожнюємо тимчаÑовий пакетний файл %s\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr "file: не вказано назви файла"
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
msgstr "open: %s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
msgstr "write: %s: %s"
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, c-format
msgid "close: %s: %s"
msgstr "close: %s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr "file: надто багато аргументів"
-#: function.c:2262
+#: src/function.c:2277
#, c-format
msgid "read: %s: %s"
msgstr "read: %s: %s"
-#: function.c:2275
+#: src/function.c:2290
#, c-format
msgid "file: invalid file operation: %s"
msgstr "file: некоректна Ð´Ñ–Ñ Ð½Ð°Ð´ файлом: %s"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr "недоÑÑ‚Ð°Ñ‚Ð½Ñ ÐºÑ–Ð»ÑŒÐºÑ–ÑÑ‚ÑŒ аргументів (%d) функції «%s»"
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "не реалізовано на цій платформі: Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Â«%s»"
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr "незавершений виклик функції \"%s\"; пропущено \"%c\""
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr "ÐŸÐ¾Ñ€Ð¾Ð¶Ð½Ñ Ð½Ð°Ð·Ð²Ð° функції"
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr "Ðекоректна назва функції: %s"
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr "Ðазва функції Ñ” задовгою: %s"
-#: function.c:2657
+#: src/function.c:2674
#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
msgstr "Ðекоректна мінімальна кількіÑÑ‚ÑŒ аргументів (%u) функції %s"
-#: function.c:2660
+#: src/function.c:2677
#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
msgstr "Ðекоректна макÑимальна кількіÑÑ‚ÑŒ аргументів (%u) функції %s"
-#: getopt.c:659
+#: src/getopt.c:659
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: параметр «%s» не є однозначним\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² до параметра «--%s» не передбачено\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² до параметра «%c%s» не передбачено\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: до параметра «%s» Ñлід додати аргумент\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: невідомий параметр «--%s»\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: невідомий параметр «%c%s»\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: невірний параметр -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: невірний параметр -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: параметру необхідний аргумент -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: параметр «-W %s» не є однозначним\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² до параметра «-W %s» не передбачено\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr "guile: розгортаємо «%s»\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr "guile: обчиÑлюємо «%s»\n"
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¼Ñ–Ñтити %lu байтів Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– хешів: вичерпано пам’ÑÑ‚ÑŒ"
-#: hash.c:280
+#: src/hash.c:280
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "ЗавантаженнÑ=%ld/%ld=%.0f%%, "
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "ЗавантаженнÑ=%lu/%lu=%.0f%%, "
-#: hash.c:282
+#: src/hash.c:282
#, c-format
-msgid "Rehash=%d, "
-msgstr "Повторне хешуваннÑ=%d, "
+msgid "Rehash=%u, "
+msgstr "Повторне хешуваннÑ=%u, "
-#: hash.c:283
+#: src/hash.c:283
#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "Збіги=%ld/%ld=%.0f%%"
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "Збіги=%lu/%lu=%.0f%%"
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr "Пошук неÑвного правила Ð´Ð»Ñ \"%s\".\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr "Пошук неÑвного правила Ð´Ð»Ñ Ñ‡Ð»ÐµÐ½Ð° архіву \"%s\".\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr "Ð—Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñ€ÐµÐºÑƒÑ€Ñивного виклику неÑвного правила.\n"
-#: implicit.c:486
+#: src/implicit.c:484
#, c-format
-msgid "Stem too long: '%.*s'.\n"
-msgstr "Занадто довгий шаблон: «%.*s».\n"
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "Занадто довгий шаблон: «%s%.*s».\n"
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr "Спроба заÑтоÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð° зі зразком, оÑнова \"%.*s\".\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr "Ð’Ñ–Ð´ÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ñ— залежноÑÑ‚Ñ– правила «%s».\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr "Ð’Ñ–Ð´ÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ñ— неÑвної залежноÑÑ‚Ñ– «%s».\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr "Пробую залежніÑÑ‚ÑŒ правило \"%s\".\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr "Пробую неÑвні залежноÑÑ‚Ñ– \"%s\".\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr "ВиÑвлено залежніÑÑ‚ÑŒ «%s» у форматі VPATH «%s»\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr "Пошук правила з проміжним файлом \"%s\".\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr "Ðе вдалоÑÑ Ñтворити тимчаÑовий файл\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (зроблений дамп пам'ÑÑ‚Ñ–)"
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr " (ігноруєтьÑÑ)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
msgstr "<вбудований>"
-#: job.c:510
+#: src/job.c:573
#, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "%s[%s: %s] Помилка %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** ÐžÑ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½ÑŒ..."
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "Ðезавершений дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ %p (%s) PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (віддалений)"
-#: job.c:831
-#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Підбираємо невдалий дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð· PID %p %s %s\n"
-
-#: job.c:832
+#: src/job.c:898
#, c-format
msgid "Reaping winning child %p PID %s %s\n"
msgstr "Підбираємо вдалий дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð· PID %p %s %s\n"
-#: job.c:839
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Підбираємо невдалий дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð· PID %p %s %s\n"
+
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "Ð—Ð½Ð¸Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñового командного файла %s\n"
-#: job.c:845
+#: src/job.c:956
#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr ""
"Спроба Ð²Ð¸Ñ‚Ð¸ÐºÐ°Ð½Ð½Ñ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñового файла пакетної обробки %s зазнала невдачі (%d)\n"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr "Вилучаємо PID дочірнього процеÑу %p %s%s з ланцюжка.\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr "Звільнено Ñимвол Ð´Ð»Ñ Ð´Ð¾Ñ‡Ñ–Ñ€Ð½ÑŒÐ¾Ð³Ð¾ процеÑу %p (%s).\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "process_easy() не вдалоÑÑ Ð·Ð°Ð¿ÑƒÑтити Ð¿Ñ€Ð¾Ñ†ÐµÑ (e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -703,96 +713,90 @@ msgstr ""
"\n"
"Під Ñ‡Ð°Ñ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾Ð³Ð¾ запуÑку кількіÑÑ‚ÑŒ аргументів дорівнювала %d\n"
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr "Додаємо дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð· PID %p (%s) %s%s до ланцюжка.\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "Отримано Ñимвол Ð´Ð»Ñ Ð´Ð¾Ñ‡Ñ–Ñ€Ð½ÑŒÐ¾Ð³Ð¾ процеÑу %p (%s).\n"
-#: job.c:1838
+#: src/job.c:1902
#, c-format
msgid "%s: target '%s' does not exist"
msgstr "%s: мети «%s» не Ñ–Ñнує"
-#: job.c:1841
+#: src/job.c:1905
#, c-format
msgid "%s: update target '%s' due to: %s"
msgstr "%s: Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¼ÐµÑ‚Ð¸ «%s» з такої причини: %s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr ""
"Ñ†Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ð¹Ð½Ð° ÑиÑтема не дозволÑÑ” вÑтановлювати Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ð° завантаженнÑ"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "неможливо вÑтановити Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ð° завантаженнÑ: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr "не виÑтачає файлових деÑкрипторів: не вдалоÑÑ Ð·Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ñ‚Ð¸ stdin\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr "не виÑтачає файлових деÑкрипторів: не вдалоÑÑ Ð·Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ñ‚Ð¸ stdout\n"
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr "не виÑтачає файлових деÑкрипторів: не вдалоÑÑ Ð·Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ñ‚Ð¸ stderr\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ stdin\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ stdout\n"
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ stderr\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr ""
"make підібрано дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð· pid %s, Ñкий вÑе ще чекає на Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ "
"процеÑу з pid %s\n"
-#: job.c:2275
+#: src/job.c:2623
#, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: %s: не знайдено команди\n"
-
-#: job.c:2277
-#, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s[%u]: %s: не знайдено команди\n"
-
-#: job.c:2337
-#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: Командний процеÑор не знайдений"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr "spawnvpe: ймовірно, завершилоÑÑ Ð¼Ñ–Ñце у Ñередовищі"
-#: job.c:2584
+#: src/job.c:2862
#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "$SHELL змінено (було «%s», тепер «%s»)\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr "Створюємо тимчаÑовий пакетний файл %s\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
@@ -800,7 +804,7 @@ msgstr ""
"ВміÑÑ‚ файла пакетної обробки:\n"
"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
@@ -809,59 +813,55 @@ msgstr ""
"ВміÑÑ‚ пакетного файла:%s\n"
"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr ""
"%s (Ñ€Ñдок %d) Поганий контекÑÑ‚ оболонки (!unixy && !batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr ""
-"-O[ТИП] (--output-sync[=ТИП]) Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ ÑеанÑу Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð½Ðµ налаштовано."
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ таблицю загальних Ñимволів: %s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr "Завантажений об’єкт %s не оголошено Ñк ÑуміÑний з GPL"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñимвол %s з %s: %s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr "ÐŸÐ¾Ñ€Ð¾Ð¶Ð½Ñ Ð½Ð°Ð·Ð²Ð° Ñимволу Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ: %s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr "Завантажуємо Ñимвол %s з %s\n"
-#: load.c:256
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr "Ðа цій платформі Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð´Ñ–Ñ— «load» не передбачено."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "Ключі:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr " -b, -m ІгноруєтьÑÑ, Ð´Ð»Ñ ÑуміÑноÑÑ‚Ñ–.\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr " -B, --always-make безумовно оброблÑти вÑÑ– запиÑи мети.\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
@@ -870,18 +870,18 @@ msgstr ""
" Перейти до каталогу до Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð±ÑƒÐ´ÑŒ-Ñких "
"дій.\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr " -d ВивеÑти діагноÑтичні повідомленнÑ.\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
" --debug[=ПРÐПОРЦІ] ВивеÑти діагноÑтичні Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð¸Ñ… "
"типів.\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
@@ -890,12 +890,12 @@ msgstr ""
" Змінні Ñередовища мають вищий пріоритет за "
"змінні makefile.\n"
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
-msgstr " --eval=РЯДОК Обробити РЯДОК Ñк інÑтрукцію makefile.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
+msgstr " -E РЯДОК, --eval=РЯДОК Обробити РЯДОК Ñк інÑтрукцію makefile.\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -903,16 +903,16 @@ msgstr ""
" -f ФÐЙЛ, --file=ФÐЙЛ, --makefile=ФÐЙЛ\n"
" ВикориÑтати ФÐЙЛ Ñк makefile.\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help ВивеÑти це Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ– вийти.\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr ""
" -i, --ignore-errors Ігнорувати помилки від ÑпоÑобів збираннÑ.\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
@@ -920,7 +920,7 @@ msgstr ""
" -I КÐТÐЛОГ, --include-dir=КÐТÐЛОГ\n"
" Виконати пошук включених makefile у каталозі.\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
@@ -928,14 +928,14 @@ msgstr ""
" -j [N], --jobs[=N] Виконувати одночаÑно N завдань; Ñкщо не "
"вказано — необмежену кількіÑÑ‚ÑŒ.\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr ""
" -k, --keep-going Продовжувати роботу, Ñкщо Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ ÑкоїÑÑŒ мети "
"неможливе.\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
@@ -945,7 +945,7 @@ msgstr ""
" Ðе запуÑкати декількох завдань, Ñкщо "
"Ð½Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” N.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
@@ -953,7 +953,7 @@ msgstr ""
" -L, --check-symlink-times ВикориÑтовувати новіший Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ з чаÑів "
"зміни поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñ– мети.\n"
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
@@ -963,7 +963,7 @@ msgstr ""
" Ðе заÑтоÑовувати ÑпоÑобів збираннÑ, проÑто "
"вивеÑти назви ÑпоÑобів.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
@@ -973,7 +973,7 @@ msgstr ""
" Вважати ФÐЙЛ дуже Ñтарим Ñ– не виконувати його "
"повторного збираннÑ.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
@@ -982,11 +982,11 @@ msgstr ""
" Ñинхронізувати виведені дані паралельних "
"завдань за ТИПом.\n"
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr " -p, --print-data-base ВивеÑти внутрішню базу даних make.\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
@@ -995,19 +995,25 @@ msgstr ""
"ÑпоÑобів; код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ”, чи вÑе вже "
"зроблено.\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr " -r, --no-builtin-rules Вимкнути вбудовані неÑвні правила.\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr " -R, --no-builtin-variables Вимкнути вбудовані параметри змінних.\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr " -s, --silent, --quiet Ðе виводити ÑпоÑоби збираннÑ.\n"
-#: main.c:393
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr ""
+" --no-silent Виводити ÑпоÑоби Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ (вимкнути режим --"
+"silent).\n"
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
@@ -1015,26 +1021,26 @@ msgstr ""
" -S, --no-keep-going, --stop\n"
" Вимкнути -k.\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
" -t, --touch Змінювати Ñ‡Ð°Ñ Ð´Ð¾Ñтупу до мети заміÑÑ‚ÑŒ Ñ—Ñ— "
"повторного збираннÑ.\n"
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
msgstr " --trace ВивеÑти дані щодо траÑуваннÑ.\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr " -v, --version ВивеÑти дані щодо верÑÑ–Ñ— make Ñ– вийти.\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory Виводити дані щодо поточного каталогу.\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
@@ -1042,7 +1048,7 @@ msgstr ""
" --no-print-directory Вимкнути -w, навіть Ñкщо Ð²Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð±ÑƒÐ»Ð¾ "
"виконано неÑвним чином.\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1050,7 +1056,7 @@ msgstr ""
" -W ФÐЙЛ, --what-if=ФÐЙЛ, --new-file=ФÐЙЛ, --assume-new=ФÐЙЛ\n"
" Вважати ФÐЙЛ завжди новим.\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
@@ -1058,26 +1064,27 @@ msgstr ""
" --warn-undefined-variables Попереджати про поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° невизначену "
"змінну.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "порожній Ñ€Ñдок не може бути назвою файла"
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
msgstr "невідома ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ñ€Ñ–Ð²Ð½Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтики, «%s»"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr "невідомий тип Ñинхронізації виведених даних, «%s»"
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr "%s: ÑталоÑÑ Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ (код = 0x%lx, адреÑа = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1092,139 +1099,146 @@ msgstr ""
"Прапорці Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ = %lx\n"
"ÐдреÑа Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "ÐŸÐ¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð» доÑтупу: Ð´Ñ–Ñ Ð· запиÑу за адреÑою 0x%p\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "ÐŸÐ¾Ñ€ÑƒÑˆÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð» доÑтупу: Ð´Ñ–Ñ Ð· Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð° адреÑою 0x%p\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell() вÑтановлює default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, 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:1538
+#: src/main.c:1609
#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s призупинÑєтьÑÑ Ð½Ð° 30 Ñекунд..."
-
-#: main.c:1540
-#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "виконано sleep(30). Продовжуємо.\n"
-
-#: main.c:1627
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
"попередженнÑ: Ñервер завдань недоÑтупний: викориÑтовуємо -j1. Додайте «+» до "
"батьківÑького правила збираннÑ."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
-msgstr ""
-"попередженнÑ: у вкладеному файлів Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ -jN: вимикаємо режим "
-"Ñервера завдань."
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
+msgstr "попередженнÑ: у submake вказано -j%d: вимикаємо режим Ñервера завдань."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr "Makefile зі Ñтандартного джерела вхідних даних вказано двічі."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (тимчаÑовий файл)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (тимчаÑовий файл)"
-#: main.c:2048
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr ""
+"попередженнÑ: у makefile вказано -j%d: вимикаємо режим Ñервера завдань."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr "Ðа цій платформі паралельної обробки завдань (-j) не передбачено."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "ПовертаємоÑÑ Ð´Ð¾ режиму єдиного Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ (-j1)."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr "Підтримки Ñимволічних поÑилань не передбачено: вимикаємо -L."
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ make-файлів...\n"
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr "Make-файл \"%s\", можливо, зациклений, він не перезбиратиметьÑÑ.\n"
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
msgstr "Спроба перезібрати make-файл \"%s\" безуÑпішна."
-#: main.c:2299
+#: src/main.c:2323
#, c-format
msgid "Included makefile '%s' was not found."
msgstr "Make-файл \"%s\", Ñкий включаєтьÑÑ, не було знайдено."
-#: main.c:2304
+#: src/main.c:2328
#, c-format
msgid "Makefile '%s' was not found"
msgstr "Make-файл \"%s\" не було знайдено"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "Ðеможливо перейти у первіÑний каталог."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "Повторне виконаннÑ[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (тимчаÑовий файл): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ".DEFAULT_GOAL міÑтить декілька запиÑів мети"
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Ðе задані цілі Ñ– не знайдений make-файл"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "Ðема цілей"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Ðе задані цілі Ñ– не знайдений make-файл"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ†Ñ–Ð»ÐµÐ¹ мети...\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr ""
"попередженнÑ: виÑвлено Ð²Ñ–Ð´Ñ…Ð¸Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾ÐºÐ°Ð·Ñ–Ð² годинника. Ð—Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶Ðµ бути "
"неповним."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "ВикориÑтаннÑ: %s [КЛЮЧІ]... [ЦІЛЬ]...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1233,7 +1247,7 @@ msgstr ""
"\n"
"Цю програму зібрано Ð´Ð»Ñ %s\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1242,32 +1256,32 @@ msgstr ""
"\n"
"Цю програму зібрано Ð´Ð»Ñ %s (%s)\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr "Повідомлюйте про помилки до <bug-make@gnu.org>\n"
-#: main.c:2870
+#: src/main.c:2901
#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "разом з «%s%s» мало бути вказано непорожній Ñ€Ñдковий аргумент"
-#: main.c:2934
+#: src/main.c:2965
#, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "ключ \"-%c\" повинен викориÑтовуватиÑÑ Ð· цілим додатним аргументом"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%sЗібрано Ð´Ð»Ñ %s\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%sЗібрано Ð´Ð»Ñ %s (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1282,7 +1296,7 @@ msgstr ""
"%sВам не надаєтьÑÑ Ð–ÐžÐ”ÐИХ ГÐРÐÐТІЙ, окрім гарантій передбачених "
"законодавÑтвом.\n"
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1291,7 +1305,7 @@ msgstr ""
"\n"
"# База даних Make, надрукована %s"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1300,344 +1314,381 @@ msgstr ""
"\n"
"# Друк бази даних Make завершено %s\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Ðевідома помилка %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: кориÑтувач %lu (наÑправді %lu), група %lu (наÑправді %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "Ініціалізований доÑтуп"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr "ДоÑтуп кориÑтувача"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "ДоÑтуп make"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "ДоÑтуп дочірнього процеÑу"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: входимо до невідомого каталогу\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: виходимо з невідомого каталогу\n"
-#: output.c:109
+#: src/output.c:102
#, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "%s: входимо до каталогу «%s»\n"
-#: output.c:111
+#: src/output.c:104
#, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "%s: Залишаю каталог \"%s\"\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: входимо до невідомого каталогу\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: залишаємо невідомий каталог\n"
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr "%s[%u]: входимо до каталогу «%s»\n"
-#: output.c:122
+#: src/output.c:115
#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "%s[%u]: Залишаю каталог \"%s\"\n"
-#: output.c:495 output.c:497
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
msgstr "помилка запиÑу: stdout"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". Зупинка.\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr ""
+"-O[ТИП] (--output-sync[=ТИП]) Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ ÑеанÑу Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð½Ðµ налаштовано."
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "Ñтворюємо канал завдань"
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
msgstr "дублюємо канал завдань"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr "ініціалізуємо канал Ñервера завдань"
-#: posixos.c:90
+#: src/posixos.c:119
#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: некоректний Ñ€Ñдок --jobserver-auth, «%s»"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr "Клієнт Ñервера завдань (fd %d,%d)\n"
-#: posixos.c:109
+#: src/posixos.c:138
msgid "jobserver pipeline"
msgstr "канал Ñервера завдань"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr "Ð·Ð°Ð¿Ð¸Ñ Ð´Ð¾ Ñервера завдань"
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr "Ñервер завдань вимкнено"
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
msgstr "Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pselect Ð´Ð»Ñ ÐºÐ°Ð½Ð°Ð»Ñƒ завдань"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñів з потоку завдань"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ make-файлів...\n"
-#: read.c:329
+#: src/read.c:336
#, c-format
msgid "Reading makefile '%s'"
msgstr "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ make-файла \"%s\""
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (немає типової мети)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (шлÑÑ… пошуку)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (не зважати)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (не розширювати ~)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr "ПропуÑкаємо мітку UTF-8 у файлі makefile «%s»\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr "ПропуÑкаємо мітку UTF-8 у буфері файла makefile\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "невірний ÑинтакÑÐ¸Ñ Ñƒ умовному вираженні"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr "%s: не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸"
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
msgstr "Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑпоÑобу Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð¿Ð¾Ñ‡Ð¸Ð½Ð°Ñ”Ñ‚ÑŒÑÑ Ð´Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÑˆÐ¾Ñ— мети"
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
msgstr "пропущено правило до ÑпоÑобу"
-#: read.c:1124
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr "пропущено роздільник (ви хотіли ввеÑти TAB заміÑÑ‚ÑŒ 8 пробілів?)"
-#: read.c:1126
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
msgstr "пропущено розділювач"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "пропущений шаблон цілі"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "не один шаблон цілі"
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
msgstr "шаблон цілі не міÑтить \"%%\""
-#: read.c:1390
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
msgstr "пропущена \"endif\""
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "порожнє ім'Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ—"
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
msgstr "зайвий текÑÑ‚ піÑÐ»Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð¸ «define»"
-#: read.c:1488
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "пропущена \"endif\", незавершена \"define\""
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
msgstr "зайвий текÑÑ‚ піÑÐ»Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð¸ «endef»"
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
msgstr "зайвий текÑÑ‚ піÑÐ»Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð¸ \"%s\""
-#: read.c:1589
+#: src/read.c:1604
#, c-format
msgid "extraneous '%s'"
msgstr "зайва \"%s\""
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
msgstr "в умовному виразі можлива лише одна директива `else'"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr "Помилкове Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñпецифічного Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¸ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ—"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr "у ÑпоÑобах Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð½Ðµ можна вказувати залежноÑтей"
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr "Ð´Ð»Ñ Ð·Ð³Ñ€ÑƒÐ¿Ð¾Ð²Ð°Ð½Ð¸Ñ… цілей має бути надано ÑпоÑіб збираннÑ"
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr "змішані неÑвні правила Ñ– правила зі Ñтатичними зразками"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "змішані неÑвні Ñ– звичайні правила"
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr "ціль \"%s\" не відповідає зразку цілей"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
msgstr "цільовий файл \"%s\" має Ð²Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ñ– з \":\", Ñ– з \"::\" "
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
msgstr "ціль \"%s\" зазначено декілька разів у одному правилі"
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr "попередженнÑ: замінюємо ÑпоÑіб Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¸ «%s»"
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr "попередженнÑ: ігноруємо заÑтарілий ÑпоÑіб Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¸ «%s»"
-#: read.c:2223
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr "*** змішані неÑвні Ñ– звичайні правила: заÑтарілий ÑинтакÑиÑ"
-#: read.c:2542
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "попередженнÑ: перевизначаємо учаÑÑ‚ÑŒ у групах Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¸ «%s»"
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr "попередженнÑ: зуÑтрінутий Ñимвол NUL; ігноруєтьÑÑ Ð´Ð¾ ÐºÑ–Ð½Ñ†Ñ Ñ€Ñдки"
-#: remake.c:226
+#: src/remake.c:226
#, c-format
msgid "Nothing to be done for '%s'."
msgstr "Ціль \"%s\" не вимагає Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´."
-#: remake.c:227
+#: src/remake.c:227
#, c-format
msgid "'%s' is up to date."
msgstr "\"%s\" не вимагає оновленнÑ."
-#: remake.c:323
+#: src/remake.c:323
#, c-format
msgid "Pruning file '%s'.\n"
msgstr "Обрізаємо файл «%s».\n"
-#: remake.c:406
+#: src/remake.c:389
#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr "%sÐема правила Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ†Ñ–Ð»Ñ– \"%s\", необхідної Ð´Ð»Ñ \"%s\"%s"
-#: remake.c:416
+#: src/remake.c:399
#, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%sÐема правила Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ†Ñ–Ð»Ñ– \"%s\"%s"
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
msgstr "Обробка цільового файла \"%s\".\n"
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ñпроба оновити файл \"%s\" завершилаÑÑ Ð±ÐµÐ·ÑƒÑпішно.\n"
-#: remake.c:461
+#: src/remake.c:444
#, c-format
msgid "File '%s' was considered already.\n"
msgstr "Файл \"%s\" вже було оброблено.\n"
-#: remake.c:471
+#: src/remake.c:454
#, c-format
msgid "Still updating file '%s'.\n"
msgstr "Ð’Ñе ще оновлюєтьÑÑ Ñ„Ð°Ð¹Ð» \"%s\".\n"
-#: remake.c:474
+#: src/remake.c:457
#, c-format
msgid "Finished updating file '%s'.\n"
msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° \"%s\" завершено.\n"
-#: remake.c:503
+#: src/remake.c:486
#, c-format
msgid "File '%s' does not exist.\n"
msgstr "Ðе виÑвлено файла з назвою «%s».\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
@@ -1645,147 +1696,147 @@ msgstr ""
"*** ПопередженнÑ: файл .LOW_RESOLUTION_TIME «%s» має чаÑову позначку виÑокої "
"точноÑÑ‚Ñ–"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr "Знайдено неÑвне правило Ð´Ð»Ñ \"%s\".\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr "Ðе знайдено неÑвних правил Ð´Ð»Ñ \"%s\".\n"
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
msgstr "ВикориÑтовуємо типовий ÑпоÑіб Ð´Ð»Ñ Â«%s».\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "Циклічна залежніÑÑ‚ÑŒ %s <- %s пропущена."
-#: remake.c:691
+#: src/remake.c:674
#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr "Завершено обробку попередніх залежноÑтей файла мети «%s».\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr "Цілі, від Ñких залежить \"%s\", збираютьÑÑ.\n"
-#: remake.c:711
+#: src/remake.c:694
#, c-format
msgid "Giving up on target file '%s'.\n"
msgstr "Ðварійний зупинка на цільовому файлі \"%s\".\n"
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
msgstr "Ціль \"%s\" не була перезібрана через помилки."
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr "ЗалежніÑÑ‚ÑŒ «%s» визначено Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¸ «%s» лише порÑдком збираннÑ.\n"
-#: remake.c:773
+#: src/remake.c:756
#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr "ЗалежноÑÑ‚Ñ– «%s» мети «%s» не Ñ–Ñнує.\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr "ЗалежніÑÑ‚ÑŒ «%s» Ñ” новішою за мету «%s».\n"
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr "ЗалежніÑÑ‚ÑŒ «%s» Ñ” Ñтарішою за мету «%s».\n"
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr "Ціль \"%s\" оголошена з двома двокрапками Ñ– не має залежноÑтей.\n"
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr "Ðемає ÑпоÑобу Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Â«%s», вÑÑ– попередні залежноÑÑ‚Ñ– не змінено.\n"
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr "Збираємо «%s» через вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð° always-make.\n"
-#: remake.c:819
+#: src/remake.c:802
#, c-format
msgid "No need to remake target '%s'"
msgstr "Потреби у повторному збиранні мети «%s» немає"
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
msgstr "; викориÑтовуємо назву VPATH «%s»"
-#: remake.c:841
+#: src/remake.c:824
#, c-format
msgid "Must remake target '%s'.\n"
msgstr "Ðеобхідно перезібрати ціль \"%s\".\n"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr " Ігноруємо назву VPATH «%s».\n"
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr "ЗаÑтоÑовуємо ÑпоÑіб «%s».\n"
-#: remake.c:863
+#: src/remake.c:846
#, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr "Спроба перезібрати цільовий файл \"%s\" безуÑпішна.\n"
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr "Цільовий файл \"%s\" уÑпішно перезібраний.\n"
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr "Цільовий файл \"%s\" вимагає Ð¿ÐµÑ€ÐµÐ·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð· ключем -q.\n"
-#: remake.c:1064
+#: src/remake.c:1047
#, c-format
msgid "Using default commands for '%s'.\n"
msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¸Ñ… команд Ð´Ð»Ñ Â«%s».\n"
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "Увага: Файл \"%s\" має майбутній Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸"
-
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr "Увага: Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ файла «%s» перебуває на %s Ñ Ñƒ майбутньому"
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr "Елемент .LIBPATTERNS «%s» не є зразком"
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr "ÐеекÑпортовні налаштуваннÑ: %s\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -1793,7 +1844,7 @@ msgstr ""
"\n"
"# ÐеÑвні правила"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1801,181 +1852,177 @@ msgstr ""
"\n"
"# ÐеÑвних правил нема."
-#: rule.c:514
+#: src/rule.c:548
#, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
-"# ÐеÑвних правил: %u, термінальних: %u"
-
-#: rule.c:523
-msgid " terminal."
-msgstr "."
+"# ÐеÑвних правил: %u, термінальних: %u (%.1f%%)."
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "ПОМИЛКÐ: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ num_pattern_rules Ñ” помилковим! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "невідомий Ñигнал"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Обрив"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "ПерериваннÑ"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Вихід"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "ÐеприпуÑтима інÑтрукціÑ"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "ПаÑтка траÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ‡Ð¸ точки зупинки"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Припинено"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "ПаÑтка IOT"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "ПаÑтка EMT"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "Помилка операції з крапкою, що плаває"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "ЗнищеннÑ"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "Помилка на шині"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Збій Ñегментації"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "Поганий ÑиÑтемний виклик"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "Обрив каналу"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Сигнал по таймеру"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "Завершено"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "Обумовлений кориÑтувачем Ñигнал 1"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "Обумовлений кориÑтувачем Ñигнал 2"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "Ðащадок завершив роботу"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Збій живленнÑ"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Зупинено"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Зупинено (ввід з термінала) "
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Зупинено (вивід на термінал)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Зупинено (Ñигнал)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "Перевищене Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ð° процеÑорний чаÑ"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "Перевищений межа розміру файла"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "Віртуальний Ñ‡Ð°Ñ Ð¼Ð¸Ð½ÑƒÐ²"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "Ð§Ð°Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð¼Ð¸Ð½ÑƒÐ²"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "Вікно змінено"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Продовжено"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "Умова екÑтреного вводу/виводу"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "Можливий ввід/вивід"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "РеÑÑƒÑ€Ñ Ð²Ñ‚Ñ€Ð°Ñ‡ÐµÐ½Ð¾"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Сигнал небезпеки"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Запит інформації"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "Допоміжний процеÑор Ð´Ð»Ñ Ð¾Ð±Ñ‡Ð¸Ñлень з рухомою комою недоÑтупний"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
@@ -1984,7 +2031,7 @@ msgstr ""
"\n"
"%s немає буферів strcache\n"
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -1995,27 +2042,27 @@ msgstr ""
"Буфери strcache %s: %lu (%lu) / Ñ€Ñдків = %lu / Ñховище = %lu Б / Ñер = %lu "
"Б\n"
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
"Поточний буфер %s: розмір = %hu Б / викориÑтано = %hu Б / кількіÑÑ‚ÑŒ = %hu / "
-"Ñер = %hu Б\n"
+"Ñер = %u Б\n"
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr "Інше викориÑтане %s: загалом = %lu B / кількіÑÑ‚ÑŒ = %lu / Ñер = %lu Б\n"
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
msgstr ""
"Інше вільне %s: загалом = %lu Б / Ð¼Ð°ÐºÑ = %lu Б / мін = %lu Б / Ñер = %hu Б\n"
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
@@ -2024,7 +2071,7 @@ msgstr ""
"\n"
"Ð¨Ð²Ð¸Ð´ÐºÐ¾Ð´Ñ–Ñ strcache %s: циклів пошуку = %lu / відÑоток знайденого = %lu%%\n"
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
@@ -2032,44 +2079,44 @@ msgstr ""
"# ÑтатиÑтика щодо таблиці хешів:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "автоматична"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "типовий"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "визначена у Ñередовищі"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "файл make"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "заданий ключ -e"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "визначена у командному Ñ€Ñдку"
-#: variable.c:1647
+#: src/variable.c:1671
msgid "'override' directive"
msgstr "Директива «override»"
-#: variable.c:1658
+#: src/variable.c:1682
#, c-format
msgid " (from '%s', line %lu)"
msgstr " (з \"%s\", Ñ€Ñдок %lu)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr "# Ñтан змінних у хеш-таблиці:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2077,7 +2124,7 @@ msgstr ""
"\n"
"# Змінні\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
@@ -2085,7 +2132,7 @@ msgstr ""
"\n"
"# Специфічні Ð´Ð»Ñ Ð·Ñ€Ð°Ð·ÐºÐ° Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¸Ñ…"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2093,7 +2140,7 @@ msgstr ""
"\n"
"# Ðемає Ñпецифічних Ð´Ð»Ñ Ð·Ñ€Ð°Ð·ÐºÐ° значень змінних."
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
@@ -2102,48 +2149,48 @@ msgstr ""
"\n"
"# %u Ñпецифічних Ð´Ð»Ñ Ð·Ñ€Ð°Ð·ÐºÐ° значень змінних"
-#: variable.h:224
+#: src/variable.h:229
#, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "попередженнÑ: невизначена змінна \"%.*s\""
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr "sys$search() повернуто код помилки %d\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr ""
"-попередженнÑ, ймовірно, вам варто повторно увімкнути обробку CTRL-Y з DCL.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "ВБУДОВÐÐИЙ CD %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr "DCL: %s\n"
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr "ДопиÑати виведенні дані до %s\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr "ДопиÑати %.*s Ñ– Ñпорожнити\n"
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "ЗаміÑÑ‚ÑŒ заданого виконуєтьÑÑ %s\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2151,11 +2198,11 @@ msgstr ""
"\n"
"# ШлÑхи пошуку VPATH\n"
-#: vpath.c:620
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
msgstr "# Ðе визначено шлÑÑ… пошуку \"vpath\"."
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
@@ -2164,7 +2211,7 @@ msgstr ""
"\n"
"# %u шлÑхи пошуку \"vpath\".\n"
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
@@ -2172,7 +2219,7 @@ msgstr ""
"\n"
"# Ðе визначено загальний шлÑÑ… пошуку (змінна \"VPATH\")."
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
@@ -2182,17 +2229,17 @@ msgstr ""
"# Загальний шлÑÑ… пошуку (змінна \"VPATH\"):\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr "Слоти Ñервера завдань обмежено значеннÑм %d\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr "Ñтворюємо Ñемафор Ñервера завдань: (помилка %ld: %s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
@@ -2200,21 +2247,45 @@ msgstr ""
"Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ñемафор Ñервера завдань «%s»: "
"(помилка %ld: %s)"
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr "Клієнт Ñервера завдань (Ñемафор %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr "ÑпуÑкаємо Ñемафор Ñервера завдань: (Помилка %ld: %s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr "Ð¾Ñ‡Ñ–ÐºÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñемафора або дочірнього процеÑу: (помилка %ld: %s)"
+#~ msgid "%s: %s: Command not found\n"
+#~ msgstr "%s: %s: не знайдено команди\n"
+
+#~ msgid "%s[%u]: %s: Command not found\n"
+#~ msgstr "%s[%u]: %s: не знайдено команди\n"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s: Командний процеÑор не знайдений"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s призупинÑєтьÑÑ Ð½Ð° 30 Ñекунд..."
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "виконано sleep(30). Продовжуємо.\n"
+
+#~ msgid "Unknown error %d"
+#~ msgstr "Ðевідома помилка %d"
+
+#~ msgid "Warning: File '%s' has modification time in the future"
+#~ msgstr "Увага: Файл \"%s\" має майбутній Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸"
+
+#~ msgid " terminal."
+#~ msgstr "."
+
#~ msgid "%s: recipe for target '%s' failed"
#~ msgstr "%s: Ñпроба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ€ÐµÑ†ÐµÐ¿Ñ‚Ð° Ð´Ð»Ñ Ð¼ÐµÑ‚Ð¸ «%s» зазнала невдачі"
diff --git a/po/vi.gmo b/po/vi.gmo
index da4099b..53aac6b 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 6c12dc4..29fc1f2 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -4,132 +4,134 @@
# This file is distributed under the same license as the make package.
# Clytie Siddall <clytie@riverland.net.au>, 2006-2010.
# Nguyá»…n Thái Ngá»c Duy <pclouds@gmail.com>, 2012.
-# Trần Ngá»c Quân <vnwildman@gmail.com>, 2012-2014, 2016.
+# Trần Ngá»c Quân <vnwildman@gmail.com>, 2012-2014, 2016, 2020.
#
msgid ""
msgstr ""
-"Project-Id-Version: make 4.2\n"
+"Project-Id-Version: make 4.2.93\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
-"PO-Revision-Date: 2016-05-23 07:10+0700\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2020-01-04 15:04+0700\n"
"Last-Translator: Trần Ngá»c Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
"Language: vi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Language-Team-Website: <http://translationproject.org/team/vi.html>\n"
-"X-Generator: Gtranslator 2.91.7\n"
+"X-Generator: Poedit 2.2.4\n"
"X-Poedit-SourceCharset: UTF-8\n"
-#: ar.c:46
+#: src/ar.c:46
#, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "đã dùng tính năng chÆ°a được há»— trợ: “%sâ€"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "“touch†thành viên kho không có trên VMS"
-#: ar.c:147
+#: src/ar.c:147
#, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "touch: Kho “%s†không tồn tại"
-#: ar.c:150
+#: src/ar.c:150
#, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "touch: “%s†không phải là kho hợp lệ"
-#: ar.c:157
+#: src/ar.c:157
#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "touch: Thành viên “%s†không tồn tại trong “%sâ€"
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr "touch: Gặp mã trả lại sai từ ar_member_touch trên “%sâ€"
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr ""
"lbr$set_module() đã không giải nén thông tin vỠmô-đun, trạng thái = %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "lbr$ini_control() bị lỗi với trạng thái = %d"
-#: arscan.c:261
+#: src/arscan.c:261
#, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr "không thể mở thÆ° viện “%s†để tra tìm thành viên “%dâ€"
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr "Thành viên “%sâ€%s: %ld byte tại %ld (%ld).\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (có lẽ tên đã bị cắt ngắn)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " Ngày %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d, gid = %d, chế độ = 0%o.\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr "Công thức có quá nhiá»u dòng (%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** Ngắt.\n"
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr "*** [%s] Thành phần kho “%s†có thể là giả; chÆ°a bị xóa bá»"
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr "*** Thành viên kho “%s†có thể là giả; chÆ°a bị xóa bá»"
-#: commands.c:645
+#: src/commands.c:646
#, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] Äang xóa tập tin “%sâ€"
-#: commands.c:647
+#: src/commands.c:648
#, c-format
msgid "*** Deleting file '%s'"
msgstr "*** Äang xóa tập tin “%sâ€"
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
msgstr "# công thức cần thực hiện"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (dựng-sẵn):"
-#: commands.c:688
+#: src/commands.c:689
#, c-format
msgid " (from '%s', line %lu):\n"
msgstr " (từ “%sâ€, dòng %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -137,219 +139,219 @@ msgstr ""
"\n"
"# Thư mục\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s: không thể lấy thống kê.\n"
-#: dir.c:1085
-#, fuzzy
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
-msgstr "# %s (khóa %s, mtime %ull): không thể mở.\n"
+msgstr "# %s (khóa %s, mtime %I64u): không thể mở.\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr "# %s (thiết bị %d, nút thông tin [%d,%d,%d]): không thể mở.\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr "# %s (thiết bị %ld, nút thông tin %ld): không thể mở.\n"
-#: dir.c:1122
-#, fuzzy
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
-msgstr "# %s (khóa %s, mtime %ull): "
+msgstr "# %s (khóa %s, mtime %I64u): "
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (thiết bị %d, inode [%d,%d,%d]): "
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (thiết bị %ld, inode %ld): "
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "Không"
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " tập tin, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "không"
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " việc không thể làm được"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " cho đến giá»."
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " việc không thể làm được trong %lu thư mục.\n"
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr "Biến đệ quy “%s†(cuối cùng) lại tham chiếu đến chính nó"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "tham chiếu biến chưa chấm dứt"
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr "Công thức được chỉ định cho tập tin “%s†tại %s:%lu,"
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr "Tìm thấy công thức cho tập tin “%s†nhỠquy tắc tìm kiếm ngầm,"
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr "nhÆ°ng “%s†bây giỠđược cÅ©ng được xem là cùng tập tin “%sâ€."
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
msgstr ""
"Công thức cho “%s†sẽ bị bá» qua trong sá»± chấp thuận của má»™t cái cho “%sâ€."
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr "không thể đổi tên “%s†hai chấm đơn thành “%s†hai chấm đôi"
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr "không thể đổi tên “%s†hai chấm đôi thành “%s†hai chấm đơn"
-#: file.c:408
+#: src/file.c:408
#, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "*** Äang xóa tập tin trung gian “%sâ€"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "Xóa các tập tin trung gian…\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "GiỠhiện tại"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%s: Thá»i gian của tập tin ở ngoài phạm vi nên thay thế bằng %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# Không phải là đích:"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# Tập tin giá trị (Ä‘iá»u kiện tiên quyết của .PRECIOUS)."
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# Äích giả (Ä‘iá»u kiện tiên quyết của .PHONY)."
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# Äích dòng lệnh."
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr "# Mặc định, MAKEFILES, hoặc makefile kiểu -include/sinclude."
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
msgstr "# Quy tắc dựng sẵn"
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# Hoàn tất tìm quy tắc ngầm."
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# Chưa hoàn tất tìm quy tắc ngầm."
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr "# Cuống mẫu ngầm/tÄ©nh: “%sâ€\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr "# Tập tin là má»™t Ä‘iá»u kiện tiên quyết trung gian."
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# Cũng tạo:"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# Chưa kiểm tra giỠsửa đổi."
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# Tập tin không tồn tại."
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# Tập tin rất cũ."
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# Lần sửa cuối cùng %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# Tập tin đã được cập nhật."
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# Tập tin chưa được cập nhật."
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# Công thức Ä‘ang chạy (ÄÂY LÀ MỘT Lá»–I)."
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr "# Công thức phụ thuá»™c Ä‘ang chạy (ÄÂY LÀ MỘT Lá»–I)."
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# Cập nhật thành công."
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# Cần được cập nhật (-q được đặt)."
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# Gặp lỗi khi cập nhật."
-#: file.c:1032
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
msgstr "# Gặp giá trị sai trong thành viên “command_stateâ€!"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -357,7 +359,7 @@ msgstr ""
"\n"
"# Tập tin"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -367,334 +369,342 @@ msgstr ""
"# thống kê bảng băm tập tin:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr "%s: TrÆ°á»ng “%s†chÆ°a được nhá»› đệm: %s"
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
msgstr "đối số thứ nhất không phải dạng số cho hàm “wordâ€"
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr "đối số thứ nhất cho hàm “word†phải lớn hơn 0"
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
msgstr "đối số thứ nhất không phải số cho hàm “wordlistâ€"
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
msgstr "đối số thứ hai không phải số cho hàm “wordlistâ€"
-#: function.c:1525
+#: src/function.c:1533
#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "windows32_openpipe: DuplicateHandle(In) gặp lỗi (e=%ld)\n"
-#: function.c:1549
+#: src/function.c:1557
#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr "windows32_openpipe: DuplicateHandle(Err) gặp lỗi (e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "CreatePipe() bị lỗi (e=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe(): process_init_fd() gặp lỗi\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "Dá»n dẹp tập tin bó tạm %s\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr "file: thiết tên tập tin"
# Variable: do not translate/ biến: đừng dịch
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
msgstr "mở: %s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
msgstr "ghi: %s: %s"
# Variable: do not translate/ biến: đừng dịch
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, c-format
msgid "close: %s: %s"
msgstr "đóng: %s: %s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr "file: quá ít đối số"
-#: function.c:2262
+#: src/function.c:2277
#, c-format
msgid "read: %s: %s"
msgstr "read: %s: %s"
-#: function.c:2275
+#: src/function.c:2290
#, c-format
msgid "file: invalid file operation: %s"
-msgstr "Tập tin: Thao tác tập tin không hợp lệ: %s"
+msgstr "tập tin: Thao tác tập tin không hợp lệ: %s"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr "không đủ số đối số (%d) cho hàm “%sâ€"
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "chÆ°a được viết mã thi hành trên hệ thống này: hàm “%sâ€"
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr "cuá»™c gá»i chÆ°a được chấm dứt cho hàm “%sâ€: thiếu “%câ€"
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr "Tên hàm trống rỗng"
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr "Tên hàm không hợp lệ: %s"
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr "Tên hàm quá dài: %s"
-#: function.c:2657
+#: src/function.c:2674
#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
msgstr "Số lượng đối số tối thiểu (%u) là không hợp lệ cho hàm “%sâ€"
-#: function.c:2660
+#: src/function.c:2677
#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
msgstr "Số lượng đối số tối Ä‘a (%u) là không hợp lệ cho hàm “%sâ€"
-#: getopt.c:659
+#: src/getopt.c:659
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s: tùy chá»n “%s†chÆ°a rõ ràng\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s: tùy chá»n “--%s†không nhận đối số\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s: tùy chá»n “%c%s†không nhận đối số\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s: tùy chá»n “%s†cần má»™t đối số\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s: không nhận ra tùy chá»n “--%sâ€\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s: không nhận ra tùy chá»n “%c%sâ€\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: tùy chá»n không hợp lệ -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: tùy chá»n không hợp lệ -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: tùy chá»n cần má»™t đối số -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s: tùy chá»n “-W %s†chÆ°a rõ ràng\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s: tùy chá»n “-W %s†không nhận má»™t đối số\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr "guile: Äang khai triển “%sâ€\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr "guile: Äang định giá “%sâ€\n"
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr "không thể cấp phát %lu byte cho bảng băm: hết bộ nhớ"
-#: hash.c:280
+#: src/hash.c:280
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "Tải =%ld/%ld=%.0f%%, "
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "Tải =%lu/%lu=%.0f%%, "
-#: hash.c:282
+#: src/hash.c:282
#, c-format
-msgid "Rehash=%d, "
-msgstr "Băm lại=%d, "
+msgid "Rehash=%u, "
+msgstr "Băm lại=%u, "
-#: hash.c:283
+#: src/hash.c:283
#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "Xung Ä‘á»™t =%ld/%ld=%.0f%%"
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "Xung Ä‘á»™t =%lu/%lu=%.0f%%"
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr "Tìm quy tắc ngầm cho “%sâ€.\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr "Tìm quy tắc ngầm vá» thành phần kho cho “%sâ€.\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr "Tránh quy tắc ngầm đệ quy.\n"
-#: implicit.c:486
+#: src/implicit.c:484
#, c-format
-msgid "Stem too long: '%.*s'.\n"
-msgstr "Stem quá dài: “%.*sâ€.\n"
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "Stem quá dài: “%s%.*sâ€.\n"
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr "Thá»­ quy tắc mẫu vá»›i cuống “%.*sâ€.\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr "Từ chối Ä‘iá»u kiện tiên quyết không thể thá»a “%sâ€.\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr "Từ chối Ä‘iá»u kiện tiên quyết ngầm không thể “%sâ€.\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr "Thá»­ Ä‘iá»u kiện tiên quyết quy tắc “%sâ€.\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr "Thá»­ Ä‘iá»u kiện tiên quyết ngầm “%sâ€.\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr "Tìm thấy Ä‘iá»u kiện tiên quyết “%s†làm VPATH “%sâ€\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr "Tìm quy tắc có tập tin trung gian “%sâ€.\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr "Không thể tạo tập tin tạm\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
msgstr " (đổ lõi)"
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr " (bá» qua)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
msgstr "<dựng-sẵn>"
-#: job.c:510
+#: src/job.c:573
#, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "%s[%s: %s] Lá»—i %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** Äang đợi những công việc chÆ°a hoàn tất…"
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "Tiến trình con còn sống %p (%s) PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (máy chủ)"
-#: job.c:831
-#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "Äang mất tiến trình con %p PID %s %s\n"
-
-#: job.c:832
+#: src/job.c:898
#, c-format
msgid "Reaping winning child %p PID %s %s\n"
msgstr "Äang thắng lại tiến trình con %p PID %s %s\n"
-#: job.c:839
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "Äang mất tiến trình con %p PID %s %s\n"
+
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "Dá»n dẹp tập tin bó tạm %s\n"
-#: job.c:845
+#: src/job.c:956
#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr "Dá»n dẹp tập tin bó tạm %s gặp lá»—i (%d)\n"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr "Bá» tiến trình con %p PID %s%s khá»i xâu.\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr "Äã giải phóng thẻ bài cho tiến trình con %p (%s).\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "process_easy() gặp lỗi khi chạy tiến trình (e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -703,96 +713,90 @@ msgstr ""
"\n"
"Äếm được %d đối số trong lần khởi chạy bị lá»—i\n"
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr "Äặt tiến trình con %p (%s) PID %s%s vào xâu.\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "Äã lấy thẻ bài cho Ä‘iá»u con %p (%s).\n"
-#: job.c:1838
+#: src/job.c:1902
#, c-format
msgid "%s: target '%s' does not exist"
msgstr "%s: đích “%s†không tồn tại"
-#: job.c:1841
+#: src/job.c:1905
#, c-format
msgid "%s: update target '%s' due to: %s"
msgstr "%s: cập nhật đích “%sâ€, cần bởi: %s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr "không thể buá»™c giá»›i hạn tải trên hệ Ä‘iá»u hành này"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "không thể buộc giới hạn tải: "
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr ""
"không thể xử lý thêm tập tin nào nữa: không thể nhân đôi đầu vào chuẩn\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr ""
"không thể xử lý thêm tập tin nào nữa: không thể nhân đôi đầu ra chuẩn\n"
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr ""
"không thể xử lý thêm tập tin nào nữa: không thể nhân đôi đầu ra lỗi chuẩn\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr "Không thể phục hồi đầu vào chuẩn\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr "Không thể phục hồi đầu ra chuẩn\n"
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr "Không thể phục hồi đầu ra lỗi tiêu chuẩn\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr "đặt Ä‘iá»u con đã bắt là PID %s, vẫn còn đợi PID %s\n"
-#: job.c:2275
-#, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s: %s: Không tìm thấy lệnh\n"
-
-#: job.c:2277
+#: src/job.c:2623
#, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s[%u]: %s: Không tìm thấy lệnh\n"
-
-#: job.c:2337
-#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s: Không tìm thấy chÆ°Æ¡ng trình hệ vá»"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr "spawnvpe: cạn không gian dành cho biến môi trÆ°á»ng"
-#: job.c:2584
+#: src/job.c:2862
#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "$SHELL thay đổi (trÆ°á»›c là “%sâ€, giá» là “%sâ€)\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr "Tạo tập tin bó lệnh tạm: %s\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
@@ -800,7 +804,7 @@ msgstr ""
"Nội dung tập tin bó lệnh:\n"
"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
@@ -809,57 +813,54 @@ msgstr ""
"Nội dung tập tin bó lệnh:%s\n"
"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr "%s (dòng %d) Ngữ cảnh shell sai (!unixy && !batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr "-O[KIỂU] (--output-sync[=KIỂU]) chưa được cấu hình cho lần dịch này."
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr "Gặp lỗi khi mở bảng ký hiệu toàn cục: %s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr "Äối tượng %s đã được tải không được công bố là tÆ°Æ¡ng thích GPL"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr "Gặp lỗi khi tải ký hiệu %s từ %s: %s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr "Tên ký hiệu là trống rỗng cho việc tải: %s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr "Äang tải ký hiệu %s từ %s\n"
-#: load.c:256
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
-msgstr "không hỗ trợ thao tác “load†trên hệ thống này."
+msgstr "Không hỗ trợ thao tác “load†trên hệ thống này."
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "Tùy chá»n:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr " -b, -m BỠqua để tương thích.\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr " -B, --always-make Tạo má»i đích vô Ä‘iá»u kiện.\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
@@ -867,17 +868,17 @@ msgstr ""
" -C THƯ_MỤC, --directory=THƯ_MỤC\n"
" Chuyển sang THƯ MỤC này trước khi làm.\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr " -d In rất nhiá»u thông tin gỡ rối.\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr ""
" --debug[=CỜ…] In nhiá»u loại thông tin gỡ rối khác nhau.\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
@@ -885,13 +886,13 @@ msgstr ""
" -e, --environment-overrides\n"
" Biến môi trÆ°á»ng đè tập tin makefile.\n"
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
msgstr ""
-" --eval=CHUá»–I Äịnh lượng CHUá»–I nhÆ° má»™t lệnh makefile.\n"
+" -E STRING, --eval=CHUá»–I Äịnh lượng CHUá»–I nhÆ° má»™t lệnh makefile.\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -899,15 +900,15 @@ msgstr ""
" -f TẬP-TIN, --file=TẬP-TIN, --makefile=TẬP-TIN\n"
" Äá»c TẬP-TIN dạng makefile.\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help Hiển thị trợ giúp này và thoát.\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr " -i, --ignore-errors BỠqua lỗi từ công thức.\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
@@ -915,7 +916,7 @@ msgstr ""
" -I THƯ_MỤC, --include-dir=THƯ_MỤC\n"
" Quét THƯ-MỤC này tìm makefile con.\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
@@ -923,12 +924,12 @@ msgstr ""
" -j [N], --jobs[=N] Cho phép N công việc đồng thá»i; không có đối "
"số thì vô hạn.\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr " -k, --keep-going Cứ tiếp tục khi không thể tạo đích.\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
@@ -937,14 +938,14 @@ msgstr ""
" -l [Sá»], --load-average[=N], --max-load[=N]\n"
" Chỉ chạy nhiá»u công việc nếu tải dÆ°á»›i N.\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
msgstr ""
" -L, --check-symlink-times Dùng mtime mới nhất giữa liên kết và đích.\n"
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
@@ -953,7 +954,7 @@ msgstr ""
" -n, --just-print, --dry-run, --recon\n"
" Không chạy công thức; chỉ in chúng ra.\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
@@ -962,7 +963,7 @@ msgstr ""
" -o TẬP-TIN, --old-file=TẬP-TIN, --assume-old=TẬP-TIN\n"
" Coi TẬP-TIN là rất cũ và không tạo lại.\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
@@ -971,30 +972,34 @@ msgstr ""
" Äồng bá»™ hóa kết xuất công việc song song theo "
"KIỂU.\n"
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr " -p, --print-data-base In cơ sở dữ liệu nội bộ của make.\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
msgstr ""
" -q, --question Không chạy; mã thoát là \"đã cập nhật\".\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr " -r, --no-builtin-rules Tắt quy tắc ngầm dựng sẵn.\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr " -R, --no-builtin-variables Tắt đặt biến dựng sẵn.\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr " -s, --silent, --quiet Không in lại công thức.\n"
-#: main.c:393
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr " --no-silent In ra công thức (tắt chế độ --silent).\n"
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
@@ -1002,30 +1007,30 @@ msgstr ""
" -S, --no-keep-going, --stop\n"
" Tắt -k.\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr " -t, --touch Chạm đích thay vì tạo lại.\n"
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
msgstr " --trace Hiển thị thông tin dấu vết.\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr " -v, --version Hiển thị phiên bản make rồi thoát.\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory Hiển thị thÆ° mục hiện thá»i.\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
msgstr " --no-print-directory Tắt -w, thậm chí nếu được bật ngầm.\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1033,33 +1038,34 @@ msgstr ""
" -W TẬP-TIN, --what-if=TẬP-TIN, --new-file=TẬP-TIN, --assume-new=TẬP-TIN\n"
" Giả định TẬP-TIN là mới vô hạn.\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
msgstr ""
" --warn-undefined-variables Cảnh báo tham chiếu đến biến chưa xác định.\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "chuỗi rỗng không hợp lệ làm tên tập tin"
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
msgstr "không hiểu đặc tả cấp gỡ rối “%sâ€"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr "không hiểu kiểu output-sync “%sâ€"
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr "%s: Bắt được ngắt/ngoại lệ (mã = 0x%lx, địa chỉ = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1074,135 +1080,145 @@ msgstr ""
"ExceptionFlags (các cỠngoại lệ) = %lx\n"
"ExceptionAddress (địa chỉ ngoại lệ) = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "Vi phạm truy cập: thao tác ghi tại địa chỉ 0x%p\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "Vi phạm truy cập: thao tác Ä‘á»c tại địa chỉ 0x%p\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell() đang đặt default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, c-format
msgid "find_and_set_shell() path search set default_shell = %s\n"
msgstr "find_and_set_shell() đã quét Ä‘Æ°á»ng dẫn thì đặt default_shell = %s\n"
-#: main.c:1538
+#: src/main.c:1609
#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s đang ngưng trong 30 giây…"
-
-#: main.c:1540
-#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "đã ngủ(30). Tiếp tục.\n"
-
-#: main.c:1627
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr ""
"cảnh báo: trình jobserver không sẵn sàng: dùng -j1. Thêm “+†vào quy tắc "
"make cha."
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
-msgstr "cảnh báo: -jN bị ép buộc trong make con: tắt chế độ jobserver."
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
+msgstr ""
+"cảnh báo: -j%d bị ép buộc trong make con: đang đặt lại chế độ jobserver."
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr "Tập tin makefile từ đầu vào chuẩn được ghi hai lần."
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (tập tin tạm)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (tập tin tạm)"
-#: main.c:2048
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr ""
+"cảnh báo: -j%d bị ép buộc trong make con: đang đặt lại chế độ jobserver."
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr "Không hỗ trợ công việc song song (-j) trên hệ thống này."
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "Äặt lại thành chế Ä‘á»™ công việc Ä‘Æ¡n (-j1)."
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
msgstr "Không há»— trợ liên kết má»m: tắt -L."
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "Cập nhật makefile…\n"
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr "Makefile “%s†bị lặp; không tạo lại nó.\n"
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
msgstr "Gặp lá»—i khi làm lại makefile “%sâ€."
-#: main.c:2299
+#: src/main.c:2323
#, c-format
msgid "Included makefile '%s' was not found."
msgstr "Không tìm thấy makefile bao gồm “%sâ€."
-#: main.c:2304
+#: src/main.c:2328
#, c-format
msgid "Makefile '%s' was not found"
-msgstr "Không tìm thấy makefile “%sâ€."
+msgstr "Không tìm thấy makefile “%sâ€"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "Không thể chuyển vỠthư mục gốc."
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "Thực hiện lại[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "unlink (bỠliên kết tập tin tạm): "
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ".DEFAULT_GOAL chứa nhiá»u đích"
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "Chưa chỉ định đích, và không tìm thấy makefile"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "Không có đích"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "Chưa chỉ định đích, và không tìm thấy makefile"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "Äang cập nhật đích mong muốn…\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr ""
"cảnh báo: Phát hiện lệch giá». Bản dịch của bạn có thể không hoàn thiện."
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "Cách dùng: %s [các_tùy_chá»n] [đích] …\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1211,7 +1227,7 @@ msgstr ""
"\n"
"Chương trình này đã được dịch cho %s\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1220,34 +1236,34 @@ msgstr ""
"\n"
"Chương trình này đã được dịch cho %s (%s)\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr ""
"Hãy thông báo lỗi cho <bug-make@gnu.org>\n"
"Hãy thông báo lỗi dịch cho <http://translationproject.org/team/vi.html>.\n"
-#: main.c:2870
+#: src/main.c:2901
#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "tùy chá»n “%s%s†cần má»™t đối số là chuá»—i khác rá»—ng"
-#: main.c:2934
+#: src/main.c:2965
#, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "tùy chá»n “-%c†cần má»™t đối số số nguyên dÆ°Æ¡ng"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%sÄược biên dịch cho %s\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%sÄược biên dịch cho %s (%s)\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1260,7 +1276,7 @@ msgstr ""
"%sÄây là phần má»m tá»± do: bạn có quyá»n sá»­a đổi và phát hành lại nó.\n"
"%sKHÔNG CÓ BẢO HÀNH GÃŒ CẢ, vá»›i Ä‘iá»u kiện được pháp luật cho phép.\n"
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1269,7 +1285,7 @@ msgstr ""
"\n"
"# Cơ sở dữ liệu Make, in lúc %s"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1278,347 +1294,383 @@ msgstr ""
"\n"
"# Hoàn tất cơ sở dữ liệu Make lúc %s\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "Lỗi chưa biết %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: ngÆ°á»i dùng %lu (thật %lu), nhóm %lu (thật %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "Truy cập đã được khởi tạo"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr "Truy cập ngÆ°á»i dùng"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "Truy cập Make"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "Truy cập con"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: Vào thư mục lạ\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: Rá»i khá»i thÆ° mục lạ\n"
-#: output.c:109
+#: src/output.c:102
#, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "%s: Vào thÆ° mục “%sâ€\n"
-#: output.c:111
+#: src/output.c:104
#, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "%s: Rá»i thÆ° mục “%sâ€\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: Vào thư mục chưa biết\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: Rá»i khá»i thÆ° mục lạ\n"
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr "%s[%u]: Vào thÆ° mục “%sâ€\n"
-#: output.c:122
+#: src/output.c:115
#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "%s[%u]: Rá»i khá»i thÆ° mục “%sâ€\n"
-#: output.c:495 output.c:497
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
msgstr "lỗi ghi: đầu ra tiêu chuẩn"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr ". Dừng.\n"
# Variable: don't translate / Biến: đừng dịch
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
# Variable: do not translate/ biến: đừng dịch
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr "-O[KIỂU] (--output-sync[=KIỂU]) chưa được cấu hình cho lần dịch này."
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "tạo ống dẫn công việc"
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
msgstr "nhân bản ống dẫn công việc"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
msgstr "khởi tạo Ä‘Æ°á»ng ống “jobserverâ€"
-#: posixos.c:90
+#: src/posixos.c:119
#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr "lỗi nội bộ: gặp chuỗi --jobserver-auth “%s†không hợp lệ"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
msgstr "Ứng dụng khách jobserver (fds %d,%d)\n"
-#: posixos.c:109
+#: src/posixos.c:138
msgid "jobserver pipeline"
msgstr "Ä‘Æ°á»ng ống “jobserverâ€"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr "ghi lại trình phục vụ công việc"
-#: posixos.c:268
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr "tắt máy phục vụ công việc"
+
+#: src/posixos.c:303
msgid "pselect jobs pipe"
msgstr "pselect (chá»n tiến trình?) ống dẫn công việc"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "Ä‘á»c ống dẫn công việc"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "Äang Ä‘á»c makefile…\n"
-#: read.c:329
+#: src/read.c:336
#, c-format
msgid "Reading makefile '%s'"
msgstr "Äang Ä‘á»c makefile “%sâ€"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (không có mục đích mặc định)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (Ä‘Æ°á»ng dẫn tìm kiếm)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (không quan tâm)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (không nối thêm ~)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr "Bá» qua “UTF-8 BOM†trong makefile “%sâ€\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr "BỠqua “UTF-8 BOM†trong bộ đệm của tập tin makefile\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "cú pháp không hợp lệ trong biểu thức Ä‘iá»u kiện"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr "%s: gặp lỗi khi tải"
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
msgstr "công thức bắt đầu trước đích thứ nhất"
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
msgstr "thiếu quy tắc trước công thức"
-#: read.c:1124
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr ""
"thiếu dấu phân cách (bạn đã định dùng TAB thay vì 8 khoảng trắng phải không?)"
-#: read.c:1126
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
msgstr "thiếu dấu phân cách"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "thiếu mẫu đích"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "nhiá»u mẫu đích"
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
msgstr "mẫu đích không chứa “%%â€"
-#: read.c:1390
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
msgstr "thiếu chỉ thị “endifâ€"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "tên biến rỗng"
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
msgstr "gặp các ký tá»± thừa đằng sau chỉ thị “defineâ€"
-#: read.c:1488
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "thiếu “endefâ€, chỉ thị “define†chÆ°a hoàn thiện"
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
msgstr "gặp các ký tá»± thừa đằng sau chỉ thị “endefâ€"
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
msgstr "gặp các ký tá»± thừa đằng sau chỉ thị “%sâ€"
-#: read.c:1589
+#: src/read.c:1604
#, c-format
msgid "extraneous '%s'"
msgstr "gặp “%s†thừa"
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
msgstr "chỉ cho phép má»™t “else†cho má»—i biểu thức Ä‘iá»u kiện"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr "Äịnh nghÄ©a biến đích riêng biệt bị há»ng"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr "không thể định nghÄ©a Ä‘iá»u kiện tiên quyết cho công thức"
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr "các đích đã nhóm phải cung cấp một công thức"
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr "trộn lẫn quy tắc ngầm và mẫu tĩnh"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "trá»™n quy tắc ngầm và thÆ°á»ng"
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr "đích “%s†không tương ứng với mẫu đích"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
-msgstr "tập tin đích “%s†có cả hai mục nhập : và ::"
+msgstr "tập tin đích “%s†có cả hai hạng mục : và ::"
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
msgstr "đích “%s†có nhiá»u hÆ¡n má»™t trong cùng má»™t quy tắc"
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr "cảnh báo: đè công thức cho đích “%sâ€"
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr "cảnh báo: bá» qua công thức cÅ© cho đích “%sâ€"
-#: read.c:2223
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr "*** trá»™n quy tắc ngầm và thÆ°á»ng: cú pháp này đã lạc hậu"
-#: read.c:2542
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "cảnh báo: đè thành viên nhóm cho đích “%sâ€"
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr "cảnh báo: thấy ký tự NUL; bỠqua phần còn lại của dòng"
-#: remake.c:226
+#: src/remake.c:226
#, c-format
msgid "Nothing to be done for '%s'."
msgstr "Không cần làm gì cho “%sâ€."
-#: remake.c:227
+#: src/remake.c:227
#, c-format
msgid "'%s' is up to date."
msgstr "“%s†đã cập nhật rồi."
-#: remake.c:323
+#: src/remake.c:323
#, c-format
msgid "Pruning file '%s'.\n"
msgstr "Xén bá»›t tập tin “%sâ€.\n"
-#: remake.c:406
+#: src/remake.c:389
#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr "%sKhông có quy tắc để tạo đích “%sâ€, cần bởi “%sâ€%s"
-#: remake.c:416
+#: src/remake.c:399
#, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%sKhông có quy tắc để tạo đích “%sâ€%s"
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
msgstr "Coi tập tin đích “%sâ€.\n"
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr "Vừa thá»­ và thất bại khi cập nhật “%sâ€.\n"
-#: remake.c:461
+#: src/remake.c:444
#, c-format
msgid "File '%s' was considered already.\n"
msgstr "Coi tập tin “%s†là đã sẵn có rồi.\n"
-#: remake.c:471
+#: src/remake.c:454
#, c-format
msgid "Still updating file '%s'.\n"
msgstr "Vẫn Ä‘ang cập nhật tập tin “%sâ€.\n"
-#: remake.c:474
+#: src/remake.c:457
#, c-format
msgid "Finished updating file '%s'.\n"
msgstr "Hoàn tất cập nhật tập tin “%sâ€.\n"
-#: remake.c:503
+#: src/remake.c:486
#, c-format
msgid "File '%s' does not exist.\n"
msgstr "Tập tin “%s†không tồn tại.\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
@@ -1626,148 +1678,148 @@ msgstr ""
"*** Cảnh báo: tập tin .LOW_RESOLUTION_TIME “%s†có nhãn thá»i gian Ä‘á»™ phân "
"giải cao"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr "Tìm thấy quy tắc ngầm cho “%sâ€.\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr "Không tìm thấy quy tắc ngầm cho “%sâ€.\n"
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
msgstr "Dùng công thức mặc định cho “%sâ€.\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "BỠphụ thuộc vòng tròn %s <- %s."
-#: remake.c:691
+#: src/remake.c:674
#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr "Hoàn tất Ä‘iá»u kiện tiên quyết của tập tin đích “%sâ€.\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr "Äang tạo Ä‘iá»u kiện tiên quyết của “%sâ€.\n"
-#: remake.c:711
+#: src/remake.c:694
#, c-format
msgid "Giving up on target file '%s'.\n"
msgstr "Chịu thua tập tin đích “%sâ€.\n"
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
msgstr "Äích “%s†không được tạo lại do lá»—i."
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr "Äiá»u kiện tiên quyết “%s†là order-only (chỉ thứ tá»±) cho đích “%sâ€.\n"
-#: remake.c:773
+#: src/remake.c:756
#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr "Äiá»u kiện tiên quyết “%s†của đích “%s†không tồn tại.\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr "Äiá»u kiện tiên quyết “%s†là má»›i hÆ¡n đích “%s†.\n"
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr "Äiá»u kiện tiên quyết “%s†cÅ© hÆ¡n đích “%s†.\n"
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr "Äích “%s†là hai chấm đôi và không có Ä‘iá»u kiện tiên quyết.\n"
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr ""
"Không có công thức cho “%s†và chÆ°a thay đổi Ä‘iá»u kiện tiên quyết nào.\n"
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr "Tạo “%s†do cỠ“always-makeâ€.\n"
-#: remake.c:819
+#: src/remake.c:802
#, c-format
msgid "No need to remake target '%s'"
msgstr "Không cần tạo lại đích “%sâ€."
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
msgstr "; dùng tên VPATH “%sâ€"
-#: remake.c:841
+#: src/remake.c:824
#, c-format
msgid "Must remake target '%s'.\n"
msgstr "Phải tạo lại đích “%sâ€.\n"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr " Bá» qua tên VPATH “%sâ€.\n"
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr "Äang chạy công thức của “%sâ€.\n"
-#: remake.c:863
+#: src/remake.c:846
#, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr "Gặp lá»—i khi tạo lại được tập tin đích “%sâ€.\n"
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr "Tạo lại thành công tập tin đích “%sâ€.\n"
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr "Tập tin đích “%s†cần được tạo lại dÆ°á»›i tùy chá»n “-qâ€.\n"
-#: remake.c:1064
+#: src/remake.c:1047
#, c-format
msgid "Using default commands for '%s'.\n"
msgstr "Dùng lệnh mặc định cho “%sâ€.\n"
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "Cảnh báo: Tập tin “%s†có giỠsửa đổi ở thì tương lai."
-
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
-msgstr "Cảnh báo: Tập tin “%s†có giỠsửa đổi %s giây trong thì tương lai."
+msgstr "Cảnh báo: Tập tin “%s†có giỠsửa đổi %s giây trong thì tương lai"
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr "Phần tử .LIBPATTERNS “%s†không phải là một mẫu"
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr "Phần tùy chỉnh không xuất được: %s\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
@@ -1775,7 +1827,7 @@ msgstr ""
"\n"
"# Quy tắc ngầm"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1783,183 +1835,179 @@ msgstr ""
"\n"
"# Không có quy tắc ngầm."
-#: rule.c:514
+#: src/rule.c:548
#, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
-"# %u quy tắc ngầm, %u"
+"# %u quy tắc ngầm, %u (%.1f%%) đầu cuối."
-#: rule.c:523
-msgid " terminal."
-msgstr " thiết bị cuối."
-
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "LỖI: num_pattern_rules không đúng! %u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "tín hiệu lạ"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "Treo"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "Ngắt"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "Thoát"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "Chỉ lệnh không hợp lệ"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "Bẫy vết/điểm ngắt"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
msgstr "Bị hủy bá»"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "Bẫy IOT"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "Bẫy EMT"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "Ngoại lệ dấu chấm động"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "Bị buộc kết thúc"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "Lá»—i bus"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "Lỗi phân đoạn"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "Lệnh gá»i hệ thống sai"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "á»ng dẫn há»ng"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "Äồng hồ báo Ä‘á»™ng"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "Äã chấm dứt"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "Tín hiệu tự định nghĩa 1"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "Tín hiệu tự định nghĩa 2"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "Tiến trình con đã thoát"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "Mất điện đột ngột"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "Bị ngừng"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "Bị ngừng (đầu vào tty)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "Bị ngừng (đầu ra tty)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "Bị ngừng (tín hiệu)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "Vượt giá»›i hạn thá»i gian CPU"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "Vượt giới hạn kích cỡ tập tin"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "Bá»™ đếm thá»i gian ảo đã hết hạn"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "Hết hạn đếm thá»i gian khi theo dõi cách sá»­ dụng tiá»m năng hệ thống"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "Cửa sổ bị thay đổi"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "Äã tiếp tục"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "Äiá»u kiện I/O khẩn cấp"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "I/O có thể"
# Literal: don't translate / Nghĩa chữ: đừng dịch
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
# Literal: don't translate / Nghĩa chữ: đừng dịch
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "Tài nguyên bị mất"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "Tín hiệu nguy hiểm"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "Yêu cầu thông tin"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "Không có bộ đồng xử lý số thực dấu chấm động"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
@@ -1968,7 +2016,7 @@ msgstr ""
"\n"
"%s Không có bộ đệm strcache\n"
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -1979,20 +2027,20 @@ msgstr ""
"%s bộ đệm strcache: %lu (%lu) / chuỗi = %lu / lưu = %lu B / t.bình = "
"%lu B\n"
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
msgstr ""
-"%s đệm hiện tại: kcỡ = %hu B / đã dùng = %hu B / slượng = %hu / tbình = %hu "
+"%s đệm hiện tại: kcỡ = %hu B / đã dùng = %hu B / slượng = %hu / tbình = %u "
"B\n"
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr "%s được dùng khác: tổng = %lu B / s.lượng = %lu / t.bình = %lu B\n"
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
@@ -2000,7 +2048,7 @@ msgstr ""
"%s trống khác: tổng = %lu B / tđa = %lu B / t.thiểu = %lu B / t.bình = %hu "
"B\n"
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
@@ -2009,7 +2057,7 @@ msgstr ""
"\n"
"%s hiệu năng strcache: tra cứu = %lu / tỷ lệ trúng = %lu%%\n"
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
@@ -2017,44 +2065,44 @@ msgstr ""
"# thống kê bảng băm tập tin:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "tá»± Ä‘á»™ng"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "mặc định"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "môi trÆ°á»ng"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "makefile"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "môi trÆ°á»ng vá»›i -e"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "dòng lệnh"
-#: variable.c:1647
+#: src/variable.c:1671
msgid "'override' directive"
msgstr "chỉ thị “overrideâ€"
-#: variable.c:1658
+#: src/variable.c:1682
#, c-format
msgid " (from '%s', line %lu)"
msgstr " (từ “%sâ€, dòng %lu)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr "# thống kê bảng băm biến được đặt:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2062,7 +2110,7 @@ msgstr ""
"\n"
"# Biến\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
@@ -2070,15 +2118,15 @@ msgstr ""
"\n"
"# Giá trị biến đặc tả cho mẫu"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
msgstr ""
"\n"
-"# Không có giá trị biến đặc tả cho mẫu"
+"# Không có giá trị biến đặc tả cho mẫu."
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
@@ -2087,47 +2135,47 @@ msgstr ""
"\n"
"# %u giá trị biến đặc tả cho mẫu"
-#: variable.h:224
+#: src/variable.h:229
#, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "cảnh báo: biến “%.*s†chưa được định nghĩa"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr "sys$search() gặp lỗi với %d\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr "-warning, có lẽ bạn cần phải bật lại xử lý CTRL-Y từ DCL.\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "BUILTIN CD %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr "DCL: %s\n"
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr "Nối thêm đầu ra vào %s\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr "Nối thêm %.*s và dá»n dẹp\n"
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "Thực hiện %s để thay thế\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2135,11 +2183,11 @@ msgstr ""
"\n"
"# ÄÆ°á»ng dẫn tìm kiếm VPATH\n"
-#: vpath.c:620
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
msgstr "# Không có Ä‘Æ°á»ng dẫn tìm kiếm “vpathâ€."
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
@@ -2148,7 +2196,7 @@ msgstr ""
"\n"
"# %u Ä‘Æ°á»ng dẫn tìm kiếm “vpathâ€.\n"
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
@@ -2156,7 +2204,7 @@ msgstr ""
"\n"
"# Không có Ä‘Æ°á»ng dẫn tìm kiếm chung (biến “VPATHâ€)."
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
@@ -2166,38 +2214,62 @@ msgstr ""
"# ÄÆ°á»ng dẫn tìm kiếm chung (biến “VPATHâ€):\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
msgstr "Khe jobserver bị giới hạn thành %d\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr "đang tạo tín hiệu jobserver: (Lỗi %ld: %s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr ""
"lá»—i ná»™i tại: không thể mở cá» hiệu máy phục vụ công việc “%sâ€: (Lá»—i %ld: %s)"
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
msgstr "Ứng dụng khách jobserver (cỠhiệu %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr "giải phóng tín hiệu jobserver: (Lỗi %ld: %s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr "chỠtín hiệu hay tiến trình con: (Lỗi %ld: %s)"
+#~ msgid "%s: %s: Command not found\n"
+#~ msgstr "%s: %s: Không tìm thấy lệnh\n"
+
+#~ msgid "%s[%u]: %s: Command not found\n"
+#~ msgstr "%s[%u]: %s: Không tìm thấy lệnh\n"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s: Không tìm thấy chÆ°Æ¡ng trình hệ vá»"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s đang ngưng trong 30 giây…"
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "đã ngủ(30). Tiếp tục.\n"
+
+#~ msgid "Unknown error %d"
+#~ msgstr "Lỗi chưa biết %d"
+
+#~ msgid "Warning: File '%s' has modification time in the future"
+#~ msgstr "Cảnh báo: Tập tin “%s†có giỠsửa đổi ở thì tương lai."
+
+#~ msgid " terminal."
+#~ msgstr " thiết bị cuối."
+
#~ msgid "%s: recipe for target '%s' failed"
#~ msgstr "%s: công thức cho đích “%s†gặp lỗi"
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index d1abf79..233ca38 100644
--- a/po/zh_CN.gmo
+++ b/po/zh_CN.gmo
Binary files differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
index a1ad5b8..2d15ff4 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -4,129 +4,132 @@
# Wang Li <charles@linux.net.cn>, 2002.
# LI Daobing <lidaobing@gmail.com>, 2008, 2013.
# Mingye Wang <arthur200126@gmail.com>, 2015, 2016.
+# Boyuan Yang <073plan@gmail.com>, 2018, 2019.
#
msgid ""
msgstr ""
-"Project-Id-Version: make 4.1.90\n"
+"Project-Id-Version: make 4.2.93\n"
"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
-"POT-Creation-Date: 2016-06-10 19:03-0400\n"
-"PO-Revision-Date: 2016-04-25 13:32-0400\n"
-"Last-Translator: Mingye Wang (Arthur2e5) <arthur200126@gmail.com>\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2020-01-05 15:27-0500\n"
+"Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.7\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 2.2.4\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: ar.c:46
+#: src/ar.c:46
#, c-format
msgid "attempt to use unsupported feature: '%s'"
msgstr "试图使用ä¸æ”¯æŒçš„功能:“%sâ€"
-#: ar.c:123
+#: src/ar.c:123
+#, c-format
msgid "touch archive member is not available on VMS"
msgstr "VMS 系统上ä¸æ”¯æŒ touch å½’æ¡£æˆå‘˜"
-#: ar.c:147
+#: src/ar.c:147
#, c-format
msgid "touch: Archive '%s' does not exist"
msgstr "touch:归档文件“%sâ€ä¸å­˜åœ¨"
-#: ar.c:150
+#: src/ar.c:150
#, c-format
msgid "touch: '%s' is not a valid archive"
msgstr "touch:“%sâ€ä¸æ˜¯åˆæ³•çš„归档文件"
-#: ar.c:157
+#: src/ar.c:157
#, c-format
msgid "touch: Member '%s' does not exist in '%s'"
msgstr "touch:在“%2$sâ€ä¸­ä¸å­˜åœ¨æˆå‘˜â€œ%1$sâ€"
-#: ar.c:164
+#: src/ar.c:164
#, c-format
msgid "touch: Bad return code from ar_member_touch on '%s'"
msgstr "touch:“%sâ€ä¸Šçš„ ar_member_touch 的返回ç ä¸å½“"
-#: arscan.c:130
+#: src/arscan.c:130
#, c-format
msgid "lbr$set_module() failed to extract module info, status = %d"
msgstr "lbr$set_modules() 获å–模å—ä¿¡æ¯å¤±è´¥ï¼Œè¿”å›žçŠ¶æ€ = %d"
-#: arscan.c:236
+#: src/arscan.c:236
#, c-format
msgid "lbr$ini_control() failed with status = %d"
msgstr "lbr$ini_control() å¤±è´¥ï¼Œè¿”å›žçŠ¶æ€ = %d"
-#: arscan.c:261
+#: src/arscan.c:261
#, c-format
msgid "unable to open library '%s' to lookup member status %d"
msgstr "无法打开库“%sâ€ä»¥å¯»æ‰¾æˆå‘˜ï¼ŒçŠ¶æ€ %d"
-#: arscan.c:965
+#: src/arscan.c:944
#, c-format
msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
msgstr "æˆå‘˜â€œ%sâ€%s: %ld 字节于 %ld (%ld)。\n"
-#: arscan.c:966
+#: src/arscan.c:945
msgid " (name might be truncated)"
msgstr " (å称å¯èƒ½è¢«æˆªæ–­)"
-#: arscan.c:968
+#: src/arscan.c:947
#, c-format
msgid " Date %s"
msgstr " 日期 %s"
-#: arscan.c:969
+#: src/arscan.c:948
#, c-format
msgid " uid = %d, gid = %d, mode = 0%o.\n"
msgstr " uid = %d,gid = %d,mode = 0%o。\n"
-#: commands.c:402
+#: src/commands.c:403
#, c-format
msgid "Recipe has too many lines (%ud)"
msgstr "命令é…方行数太多 (%ud)"
-#: commands.c:503
+#: src/commands.c:504
msgid "*** Break.\n"
msgstr "*** 中断。\n"
-#: commands.c:627
+#: src/commands.c:628
#, c-format
msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
msgstr "*** [%s] å½’æ¡£æˆå‘˜â€œ%sâ€å¯èƒ½æ˜¯å‡çš„;未删除"
# 是化学的æˆåˆ†ï¼Œæ˜¯ç‰¹æŠ€ï¼
-#: commands.c:631
+#: src/commands.c:632
#, c-format
msgid "*** Archive member '%s' may be bogus; not deleted"
msgstr "*** å½’æ¡£æˆå‘˜â€œ%sâ€å¯èƒ½æ˜¯å‡çš„;未删除"
-#: commands.c:645
+#: src/commands.c:646
#, c-format
msgid "*** [%s] Deleting file '%s'"
msgstr "*** [%s] 正在删除文件“%sâ€"
-#: commands.c:647
+#: src/commands.c:648
#, c-format
msgid "*** Deleting file '%s'"
msgstr "*** 正在删除文件“%sâ€"
-#: commands.c:683
+#: src/commands.c:684
msgid "# recipe to execute"
msgstr "# è¦æ‰§è¡Œçš„é…æ–¹"
-#: commands.c:686
+#: src/commands.c:687
msgid " (built-in):"
msgstr " (内置):"
-#: commands.c:688
+#: src/commands.c:689
#, c-format
msgid " (from '%s', line %lu):\n"
msgstr " (从“%sâ€ï¼Œè¡Œ %lu):\n"
-#: dir.c:1069
+#: src/dir.c:1073
msgid ""
"\n"
"# Directories\n"
@@ -134,218 +137,218 @@ msgstr ""
"\n"
"# 目录\n"
-#: dir.c:1081
+#: src/dir.c:1085
#, c-format
msgid "# %s: could not be stat'd.\n"
msgstr "# %s:无法对其进行 stat æ“作。\n"
-#: dir.c:1085
-#, fuzzy
+#: src/dir.c:1089
msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
-msgstr "# %s (关键字 %s,修改时间 %d):无法打开。\n"
+msgstr "# %s (关键字 %s,修改时间 %I64u):无法打开。\n"
-#: dir.c:1090
+#: src/dir.c:1094
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
msgstr "# %s (设备 %d,i-节点 [%d,%d,%d]):无法打开。\n"
-#: dir.c:1095
+#: src/dir.c:1099
#, c-format
msgid "# %s (device %ld, inode %ld): could not be opened.\n"
msgstr "# %s (设备 %ld,i-节点 %ld):无法打开。\n"
-#: dir.c:1122
-#, fuzzy
+#: src/dir.c:1126
msgid "# %s (key %s, mtime %I64u): "
-msgstr "# %s (关键字 %s,修改时间 %d):"
+msgstr "# %s (关键字 %s,修改时间 %I64u):"
-#: dir.c:1127
+#: src/dir.c:1131
#, c-format
msgid "# %s (device %d, inode [%d,%d,%d]): "
msgstr "# %s (设备 %d,i-节点 [%d,%d,%d]):"
-#: dir.c:1132
+#: src/dir.c:1136
#, c-format
msgid "# %s (device %ld, inode %ld): "
msgstr "# %s (设备 %ld,i-节点 %ld):"
-#: dir.c:1138 dir.c:1159
+#: src/dir.c:1142 src/dir.c:1163
msgid "No"
msgstr "æ— "
-#: dir.c:1141 dir.c:1162
+#: src/dir.c:1145 src/dir.c:1166
msgid " files, "
msgstr " 文件, "
-#: dir.c:1143 dir.c:1164
+#: src/dir.c:1147 src/dir.c:1168
msgid "no"
msgstr "æ— "
-#: dir.c:1146
+#: src/dir.c:1150
msgid " impossibilities"
msgstr " ä¸å¯èƒ½"
-#: dir.c:1150
+#: src/dir.c:1154
msgid " so far."
msgstr " 迄今为止。"
-#: dir.c:1167
+#: src/dir.c:1171
#, c-format
msgid " impossibilities in %lu directories.\n"
msgstr " ä¸å¯èƒ½åœ¨ %lu 目录中。\n"
-#: expand.c:125
+#: src/expand.c:125
#, c-format
msgid "Recursive variable '%s' references itself (eventually)"
msgstr "递归å˜é‡â€œ%sâ€ï¼ˆæœ€ç»ˆå°†ä¼šï¼‰å¼•ç”¨è‡ªèº«"
-#: expand.c:271
+#: src/expand.c:271
+#, c-format
msgid "unterminated variable reference"
msgstr "未终止的å˜é‡å¼•ç”¨"
-#: file.c:278
+#: src/file.c:278
#, c-format
msgid "Recipe was specified for file '%s' at %s:%lu,"
msgstr "关于文件“%sâ€çš„命令é…方在 %s:%lu 处指定,"
-#: file.c:283
+#: src/file.c:283
#, c-format
msgid "Recipe for file '%s' was found by implicit rule search,"
msgstr "关于文件“%sâ€çš„命令é…方通过éšå«è§„则æœç´¢è€Œæ‰¾åˆ°ï¼Œ"
-#: file.c:287
+#: src/file.c:287
#, c-format
msgid "but '%s' is now considered the same file as '%s'."
msgstr "但“%sâ€çŽ°åœ¨è¢«çœ‹åšâ€œ%sâ€çš„åŒä¸€ä¸ªæ–‡ä»¶ã€‚"
-#: file.c:290
+#: src/file.c:290
#, c-format
msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
-msgstr "“%sâ€çš„命令é…方被忽略,转而使用“%sâ€çš„"
+msgstr "“%sâ€çš„命令é…方被忽略,转而使用“%sâ€çš„。"
-#: file.c:310
+#: src/file.c:310
#, c-format
msgid "can't rename single-colon '%s' to double-colon '%s'"
msgstr "无法将å•å†’å·â€œ%sâ€é‡å‘½å为åŒå†’å·â€œ%sâ€"
-#: file.c:316
+#: src/file.c:316
#, c-format
msgid "can't rename double-colon '%s' to single-colon '%s'"
msgstr "无法将åŒå†’å·â€œ%sâ€é‡å‘½å为å•å†’å·â€œ%sâ€"
-#: file.c:408
+#: src/file.c:408
#, c-format
msgid "*** Deleting intermediate file '%s'"
msgstr "*** 正在删除中间文件“%sâ€"
-#: file.c:412
+#: src/file.c:412
+#, c-format
msgid "Removing intermediate files...\n"
msgstr "正在删除中间文件...\n"
-#: file.c:818
+#: src/file.c:872
msgid "Current time"
msgstr "当å‰æ—¶é—´"
-#: file.c:822
+#: src/file.c:876
#, c-format
msgid "%s: Timestamp out of range; substituting %s"
msgstr "%sï¼šæ—¶é—´æ ‡è®°è¶…å‡ºèŒƒå›´ï¼›æ­£åœ¨æ›¿æ¢ %s"
-#: file.c:962
+#: src/file.c:1016
msgid "# Not a target:"
msgstr "# ä¸æ˜¯ä¸€ä¸ªç›®æ ‡ï¼š"
-#: file.c:967
+#: src/file.c:1021
msgid "# Precious file (prerequisite of .PRECIOUS)."
msgstr "# é‡è¦æ–‡ä»¶ (.PRECIOUSçš„å‰æ)。"
-#: file.c:969
+#: src/file.c:1023
msgid "# Phony target (prerequisite of .PHONY)."
msgstr "# å‡ç›®æ ‡ (.PHONYçš„å‰æ)。"
-#: file.c:971
+#: src/file.c:1025
msgid "# Command line target."
msgstr "# 命令行目标。"
-#: file.c:973
+#: src/file.c:1027
msgid "# A default, MAKEFILES, or -include/sinclude makefile."
msgstr "# 缺çœçš„ã€MAKEFILES 指定的ã€-include/sinclude 包å«çš„ makefile。"
-#: file.c:975
+#: src/file.c:1029
msgid "# Builtin rule"
msgstr "# 内建规则"
-#: file.c:977
+#: src/file.c:1031
msgid "# Implicit rule search has been done."
msgstr "# 对éšå«è§„则的æœç´¢å·²å®Œæˆã€‚"
-#: file.c:978
+#: src/file.c:1032
msgid "# Implicit rule search has not been done."
msgstr "# 对éšå«è§„则的æœç´¢å°šæœªå®Œæˆã€‚"
-#: file.c:980
+#: src/file.c:1034
#, c-format
msgid "# Implicit/static pattern stem: '%s'\n"
msgstr "# éšå«/é™æ€æ¨¡å¼ä¸»å¹²ï¼šâ€œ%sâ€\n"
-#: file.c:982
+#: src/file.c:1036
msgid "# File is an intermediate prerequisite."
msgstr "# 文件是一个中间å‰æ。"
-#: file.c:986
+#: src/file.c:1040
msgid "# Also makes:"
msgstr "# 还è¦åˆ¶ä½œï¼š"
-#: file.c:992
+#: src/file.c:1046
msgid "# Modification time never checked."
msgstr "# 从ä¸æ£€æŸ¥ä¿®æ”¹æ—¶é—´ã€‚"
-#: file.c:994
+#: src/file.c:1048
msgid "# File does not exist."
msgstr "# 文件ä¸å­˜åœ¨ã€‚"
-#: file.c:996
+#: src/file.c:1050
msgid "# File is very old."
msgstr "# 文件éžå¸¸é™ˆæ—§ã€‚"
-#: file.c:1001
+#: src/file.c:1055
#, c-format
msgid "# Last modified %s\n"
msgstr "# 最近更新 %s\n"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has been updated."
msgstr "# 文件已ç»è¢«æ›´æ–°ã€‚"
-#: file.c:1004
+#: src/file.c:1058
msgid "# File has not been updated."
msgstr "# 文件尚未被更新。"
-#: file.c:1008
+#: src/file.c:1062
msgid "# Recipe currently running (THIS IS A BUG)."
msgstr "# 正在è¿è¡Œçš„é…æ–¹ (这是 BUG)。"
-#: file.c:1011
+#: src/file.c:1065
msgid "# Dependencies recipe running (THIS IS A BUG)."
msgstr "# 正在è¿è¡Œçš„ä¾èµ–性é…æ–¹ (这是 BUG)。"
-#: file.c:1020
+#: src/file.c:1074
msgid "# Successfully updated."
msgstr "# æ›´æ–°æˆåŠŸã€‚"
-#: file.c:1024
+#: src/file.c:1078
msgid "# Needs to be updated (-q is set)."
msgstr "# 需è¦æ›´æ–° (用 -q 设定)。"
-#: file.c:1027
+#: src/file.c:1081
msgid "# Failed to be updated."
msgstr "# 更新失败。"
-#: file.c:1032
+#: src/file.c:1086
msgid "# Invalid value in 'command_state' member!"
msgstr "# “command_stateâ€æˆå‘˜ä¸­å­˜åœ¨æ— æ•ˆçš„值ï¼"
-#: file.c:1051
+#: src/file.c:1105
msgid ""
"\n"
"# Files"
@@ -353,7 +356,7 @@ msgstr ""
"\n"
"# 文件"
-#: file.c:1055
+#: src/file.c:1109
msgid ""
"\n"
"# files hash-table stats:\n"
@@ -363,333 +366,341 @@ msgstr ""
"# 文件æ‚凑表状æ€:\n"
"# "
-#: file.c:1065
+#: src/file.c:1119
#, c-format
msgid "%s: Field '%s' not cached: %s"
msgstr "%s:字段“%sâ€æœªè¢«ç¼“存:%s"
-#: function.c:790
+#: src/function.c:794
msgid "non-numeric first argument to 'word' function"
msgstr "“wordâ€å‡½æ•°çš„第一个å‚æ•°ä¸æ˜¯æ•°å­—"
-#: function.c:795
+#: src/function.c:799
+#, c-format
msgid "first argument to 'word' function must be greater than 0"
msgstr "“wordâ€å‡½æ•°çš„第一个å‚数必须大于 0"
-#: function.c:815
+#: src/function.c:819
msgid "non-numeric first argument to 'wordlist' function"
msgstr "“wordlistâ€å‡½æ•°çš„第一个å‚æ•°ä¸æ˜¯æ•°å­—"
-#: function.c:817
+#: src/function.c:821
msgid "non-numeric second argument to 'wordlist' function"
msgstr "“wordlistâ€å‡½æ•°çš„第二个å‚æ•°ä¸æ˜¯æ•°å­—"
# 程åºå‘˜çš„函数åæ示,还是ä¸è¦åŠ¨å§ã€‚
-#: function.c:1525
+#: src/function.c:1533
#, c-format
msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
msgstr "windows32_openpipe: DuplicateHandle(In) 失败 (e=%ld)\n"
-#: function.c:1549
+#: src/function.c:1557
#, c-format
msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
msgstr "windows32_openpipe: DuplicateHandle(Err) 失败 (e=%ld)\n"
-#: function.c:1556
+#: src/function.c:1564
#, c-format
msgid "CreatePipe() failed (e=%ld)\n"
msgstr "CreatePipe() 失败 (e=%ld)\n"
-#: function.c:1564
+#: src/function.c:1572
+#, c-format
msgid "windows32_openpipe(): process_init_fd() failed\n"
msgstr "windows32_openpipe(): process_init_fd() 失败\n"
-#: function.c:1858
+#: src/function.c:1857
#, c-format
msgid "Cleaning up temporary batch file %s\n"
msgstr "正在清除临时批处ç†æ–‡ä»¶ %s\n"
-#: function.c:2215 function.c:2240
+#: src/function.c:2230 src/function.c:2255
+#, c-format
msgid "file: missing filename"
msgstr "file:缺少文件å"
-#: function.c:2219 function.c:2250
+#: src/function.c:2234 src/function.c:2265
#, c-format
msgid "open: %s: %s"
msgstr "open: %s: %s"
-#: function.c:2227
+#: src/function.c:2242
#, c-format
msgid "write: %s: %s"
msgstr "write: %s: %s"
-#: function.c:2230 function.c:2267
+#: src/function.c:2245 src/function.c:2282
#, c-format
msgid "close: %s: %s"
msgstr "close:%s:%s"
-#: function.c:2243
+#: src/function.c:2258
+#, c-format
msgid "file: too many arguments"
msgstr "file:太多å‚æ•°"
-#: function.c:2262
+#: src/function.c:2277
#, c-format
msgid "read: %s: %s"
msgstr "read:%s:%s"
-#: function.c:2275
+#: src/function.c:2290
#, c-format
msgid "file: invalid file operation: %s"
msgstr "file:无效文件(file)æ“作:%s"
-#: function.c:2390
+#: src/function.c:2405
#, c-format
msgid "insufficient number of arguments (%d) to function '%s'"
msgstr "函数“%2$sâ€çš„å‚æ•°æ•°é‡ (%1$d) ä¸å¤Ÿ"
-#: function.c:2402
+#: src/function.c:2417
#, c-format
msgid "unimplemented on this platform: function '%s'"
msgstr "在本平å°ä¸Šæœªå®žçŽ°ï¼šå‡½æ•°â€œ%sâ€"
-#: function.c:2466
+#: src/function.c:2483
#, c-format
msgid "unterminated call to function '%s': missing '%c'"
msgstr "对函数“%sâ€çš„未终止的调用:é—æ¼â€œ%câ€"
-#: function.c:2650
+#: src/function.c:2667
+#, c-format
msgid "Empty function name"
msgstr "空函数å"
-#: function.c:2652
+#: src/function.c:2669
#, c-format
msgid "Invalid function name: %s"
msgstr "无效的函数å称:%s"
-#: function.c:2654
+#: src/function.c:2671
#, c-format
msgid "Function name too long: %s"
msgstr "函数å称太长:%s"
-#: function.c:2657
-#, fuzzy, c-format
+#: src/function.c:2674
+#, c-format
msgid "Invalid minimum argument count (%u) for function %s"
-msgstr "函数“%2$sâ€çš„最少å‚æ•°æ•°é‡ (%1$d) 无效"
+msgstr "函数“%2$sâ€çš„最少å‚æ•°æ•°é‡ (%1$u) 无效"
-#: function.c:2660
-#, fuzzy, c-format
+#: src/function.c:2677
+#, c-format
msgid "Invalid maximum argument count (%u) for function %s"
-msgstr "函数“%2$sâ€çš„最多å‚æ•°æ•°é‡ (%1$d) 无效"
+msgstr "函数“%2$sâ€çš„最多å‚æ•°æ•°é‡ (%1$u) 无效"
-#: getopt.c:659
+#: src/getopt.c:659
#, c-format
msgid "%s: option '%s' is ambiguous\n"
msgstr "%s:选项“%sâ€å«ä¹‰ä¸æ¸…\n"
-#: getopt.c:683
+#: src/getopt.c:683
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr "%s:选项“--%sâ€ä¸å…许å‚æ•°\n"
-#: getopt.c:688
+#: src/getopt.c:688
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr "%s:选项“%c%sâ€ä¸å…许å‚æ•°\n"
-#: getopt.c:705 getopt.c:878
+#: src/getopt.c:705 src/getopt.c:878
#, c-format
msgid "%s: option '%s' requires an argument\n"
msgstr "%s:选项“%sâ€éœ€è¦ä¸€ä¸ªå‚æ•°\n"
-#: getopt.c:734
+#: src/getopt.c:734
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr "%s:无法识别的选项“--%sâ€\n"
-#: getopt.c:738
+#: src/getopt.c:738
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr "%s:无法识别的选项“%c%sâ€\n"
-#: getopt.c:764
+#: src/getopt.c:764
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s:éžæ³•é€‰é¡¹ -- %c\n"
-#: getopt.c:767
+#: src/getopt.c:767
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s:éžæ³•é€‰é¡¹ -- %c\n"
-#: getopt.c:797 getopt.c:927
+#: src/getopt.c:797 src/getopt.c:927
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s:选项需è¦ä¸€ä¸ªå‚æ•° -- %c\n"
-#: getopt.c:844
+#: src/getopt.c:844
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr "%s:选项“-W %sâ€å«ä¹‰ä¸æ¸…\n"
-#: getopt.c:862
+#: src/getopt.c:862
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr "%s:选项“-W %sâ€ä¸å…许给出å‚æ•°\n"
-#: guile.c:58
+#: src/guile.c:58
#, c-format
msgid "guile: Expanding '%s'\n"
msgstr "guile: 正拓展 '%s'\n"
-#: guile.c:74
+#: src/guile.c:74
#, c-format
msgid "guile: Evaluating '%s'\n"
msgstr "guile: 正求值 '%s'\n"
-#: hash.c:49
+#: src/hash.c:50
#, c-format
msgid "can't allocate %lu bytes for hash table: memory exhausted"
msgstr "无法为æ‚å‡‘è¡¨åˆ†é… %lu 字节: 内存耗尽"
-#: hash.c:280
+#: src/hash.c:280
#, c-format
-msgid "Load=%ld/%ld=%.0f%%, "
-msgstr "è´Ÿè½½=%ld/%ld=%.0f%%, "
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "è´Ÿè½½=%lu/%lu=%.0f%%, "
-#: hash.c:282
+#: src/hash.c:282
#, c-format
-msgid "Rehash=%d, "
-msgstr "é‡æ–°æ‚凑=%d, "
+msgid "Rehash=%u, "
+msgstr "é‡æ–°æ‚凑=%u, "
-#: hash.c:283
+#: src/hash.c:283
#, c-format
-msgid "Collisions=%ld/%ld=%.0f%%"
-msgstr "碰撞=%ld/%ld=%.0f%%"
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "碰撞=%lu/%lu=%.0f%%"
-#: implicit.c:38
+#: src/implicit.c:38
#, c-format
msgid "Looking for an implicit rule for '%s'.\n"
msgstr "正在为“%sâ€å¯»æ‰¾éšå«è§„则。\n"
-#: implicit.c:54
+#: src/implicit.c:54
#, c-format
msgid "Looking for archive-member implicit rule for '%s'.\n"
msgstr "正在为“%sâ€å¯»æ‰¾å½’æ¡£æˆå‘˜éšå«è§„则。\n"
-#: implicit.c:311
+#: src/implicit.c:311
+#, c-format
msgid "Avoiding implicit rule recursion.\n"
msgstr "é¿å…éšå«è§„则递归。\n"
-#: implicit.c:486
+#: src/implicit.c:484
#, c-format
-msgid "Stem too long: '%.*s'.\n"
-msgstr "主干太长:'%.*s'.\n"
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "主干太长:'%s%.*s'.\n"
-#: implicit.c:491
+#: src/implicit.c:490
#, c-format
msgid "Trying pattern rule with stem '%.*s'.\n"
msgstr "用主干“%.*sâ€å°è¯•åŒ¹é…模å¼è§„则。\n"
-#: implicit.c:697
+#: src/implicit.c:717
#, c-format
msgid "Rejecting impossible rule prerequisite '%s'.\n"
msgstr "æ‹’ç»ä¸å¯èƒ½çš„规则å‰æ“%sâ€ã€‚\n"
-#: implicit.c:698
+#: src/implicit.c:718
#, c-format
msgid "Rejecting impossible implicit prerequisite '%s'.\n"
msgstr "æ‹’ç»ä¸å¯èƒ½çš„éšå«å‰æ“%sâ€ã€‚\n"
-#: implicit.c:711
+#: src/implicit.c:732
#, c-format
msgid "Trying rule prerequisite '%s'.\n"
msgstr "å°è¯•è§„则å‰æ“%sâ€ã€‚\n"
-#: implicit.c:712
+#: src/implicit.c:733
#, c-format
msgid "Trying implicit prerequisite '%s'.\n"
msgstr "å°è¯•éšå«å‰æ“%sâ€ã€‚\n"
-#: implicit.c:751
+#: src/implicit.c:772
#, c-format
msgid "Found prerequisite '%s' as VPATH '%s'\n"
msgstr "å‰æ“%sâ€åœ¨ VPATH“%sâ€ä¸­å‘现\n"
-#: implicit.c:765
+#: src/implicit.c:786
#, c-format
msgid "Looking for a rule with intermediate file '%s'.\n"
msgstr "正在寻找包å«ä¸­é—´æ–‡ä»¶â€œ%sâ€çš„规则。\n"
-#: job.c:363
+#: src/job.c:370
msgid "Cannot create a temporary file\n"
msgstr "无法创建临时文件\n"
-#: job.c:485
+#: src/job.c:548
msgid " (core dumped)"
-msgstr " (core dumped)"
+msgstr " (核心已转储)"
-#: job.c:490
+#: src/job.c:553
msgid " (ignored)"
msgstr " (已忽略)"
-#: job.c:494 job.c:1828
+#: src/job.c:557 src/job.c:1892
msgid "<builtin>"
msgstr "<内置>"
-#: job.c:510
+#: src/job.c:573
#, c-format
msgid "%s[%s: %s] Error %d%s"
msgstr "%s[%s:%s] 错误 %d%s"
-#: job.c:599
+#: src/job.c:662
+#, c-format
msgid "*** Waiting for unfinished jobs...."
msgstr "*** 正在等待未完æˆçš„任务...."
-#: job.c:629
+#: src/job.c:704
#, c-format
msgid "Live child %p (%s) PID %s %s\n"
msgstr "活跃å­è¿›ç¨‹ %p (%s) PID %s %s\n"
-#: job.c:631 job.c:833 job.c:952 job.c:1583
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
msgid " (remote)"
msgstr " (远程)"
-#: job.c:831
-#, c-format
-msgid "Reaping losing child %p PID %s %s\n"
-msgstr "正在中止失败的å­è¿›ç¨‹ %p PID %s %s\n"
-
-#: job.c:832
+#: src/job.c:898
#, c-format
msgid "Reaping winning child %p PID %s %s\n"
msgstr "正在中止获胜的å­è¿›ç¨‹ %p PID %s %s\n"
-#: job.c:839
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "正在中止失败的å­è¿›ç¨‹ %p PID %s %s\n"
+
+#: src/job.c:950
#, c-format
msgid "Cleaning up temp batch file %s\n"
msgstr "正在清除临时批文件 %s\n"
-#: job.c:845
+#: src/job.c:956
#, c-format
msgid "Cleaning up temp batch file %s failed (%d)\n"
msgstr "清ç†ä¸´æ—¶æ‰¹å¤„ç†æ–‡ä»¶ %s 失败 (%d)\n"
-#: job.c:951
+#: src/job.c:1071
#, c-format
msgid "Removing child %p PID %s%s from chain.\n"
msgstr "从链中删除å­è¿›ç¨‹ %p PID %s%s。\n"
-#: job.c:1006
+#: src/job.c:1120
#, c-format
msgid "Released token for child %p (%s).\n"
msgstr "为å­è¿›ç¨‹ %p (%s) 释放令牌 (token)。\n"
-#: job.c:1508 job.c:2201
+#: src/job.c:1575 src/job.c:2487
#, c-format
msgid "process_easy() failed to launch process (e=%ld)\n"
msgstr "process_easy() å¯åŠ¨è¿›ç¨‹å¤±è´¥ (e=%ld)\n"
-#: job.c:1512 job.c:2205
+#: src/job.c:1579 src/job.c:2491
#, c-format
msgid ""
"\n"
@@ -698,93 +709,87 @@ msgstr ""
"\n"
"失败执行中共有 %d 个å‚数。\n"
-#: job.c:1581
+#: src/job.c:1642
#, c-format
msgid "Putting child %p (%s) PID %s%s on the chain.\n"
msgstr "å°†å­è¿›ç¨‹ %p (%s) PID %s%s 放入链。\n"
-#: job.c:1811
+#: src/job.c:1875
#, c-format
msgid "Obtained token for child %p (%s).\n"
msgstr "获得至进程 %p (%s) 的标记。\n"
-#: job.c:1838
+#: src/job.c:1902
#, c-format
msgid "%s: target '%s' does not exist"
msgstr "%s: 目标文件“%sâ€ä¸å­˜åœ¨"
-#: job.c:1841
+#: src/job.c:1905
#, c-format
msgid "%s: update target '%s' due to: %s"
msgstr "%s:更新“%sâ€ï¼Œå› ä¸ºï¼š%s"
-#: job.c:1956
+#: src/job.c:2108
+#, c-format
msgid "cannot enforce load limits on this operating system"
msgstr "无法在本æ“作系统中实施负载é™åˆ¶"
-#: job.c:1958
+#: src/job.c:2110
msgid "cannot enforce load limit: "
msgstr "无法实施负载é™åˆ¶ï¼š"
-#: job.c:2048
+#: src/job.c:2200
+#, c-format
msgid "no more file handles: could not duplicate stdin\n"
msgstr "没有剩余的文件å¥æŸ„: 无法å¤åˆ¶æ ‡å‡†è¾“å…¥\n"
-#: job.c:2060
+#: src/job.c:2212
+#, c-format
msgid "no more file handles: could not duplicate stdout\n"
msgstr "没有剩余的文件å¥æŸ„: 无法å¤åˆ¶æ ‡å‡†è¾“出\n"
-#: job.c:2074
+#: src/job.c:2226
+#, c-format
msgid "no more file handles: could not duplicate stderr\n"
msgstr "没有剩余的文件å¥æŸ„: 无法å¤åˆ¶æ ‡å‡†é”™è¯¯\n"
-#: job.c:2089
+#: src/job.c:2241
+#, c-format
msgid "Could not restore stdin\n"
msgstr "无法还原标准输入\n"
-#: job.c:2097
+#: src/job.c:2249
+#, c-format
msgid "Could not restore stdout\n"
msgstr "无法还原标准输出\n"
-#: job.c:2105
+#: src/job.c:2257
+#, c-format
msgid "Could not restore stderr\n"
msgstr "无法还原标准错误\n"
-#: job.c:2234
+#: src/job.c:2520
#, c-format
msgid "make reaped child pid %s, still waiting for pid %s\n"
msgstr "make 已中止的å­è¿›ç¨‹ pid %s,ä»åœ¨ç­‰å¾… pid %s\n"
-#: job.c:2275
-#, c-format
-msgid "%s: %s: Command not found\n"
-msgstr "%s:%s:命令未找到\n"
-
-#: job.c:2277
+#: src/job.c:2623
#, c-format
-msgid "%s[%u]: %s: Command not found\n"
-msgstr "%s[%u]:%s:命令未找到\n"
-
-#: job.c:2337
-#, c-format
-msgid "%s: Shell program not found"
-msgstr "%s:未找到 shell 程åº"
-
-#: job.c:2346
msgid "spawnvpe: environment space might be exhausted"
msgstr "spawnvpe: 环境å˜é‡ç©ºé—´å¯èƒ½ä¼šè€—å°½"
-#: job.c:2584
+#: src/job.c:2862
#, c-format
msgid "$SHELL changed (was '%s', now '%s')\n"
msgstr "$SHELL å·²æ”¹å˜ (原为“%sâ€ï¼ŒçŽ°ä¸ºâ€œ%sâ€)\n"
-#: job.c:3022 job.c:3207
+#: src/job.c:3300 src/job.c:3485
#, c-format
msgid "Creating temporary batch file %s\n"
msgstr "正在创建临时批文件 %s\n"
-#: job.c:3030
+#: src/job.c:3308
+#, c-format
msgid ""
"Batch file contents:\n"
"\t@echo off\n"
@@ -792,7 +797,7 @@ msgstr ""
"批处ç†æ–‡ä»¶å†…容:\n"
"\t@echo off\n"
-#: job.c:3219
+#: src/job.c:3497
#, c-format
msgid ""
"Batch file contents:%s\n"
@@ -801,72 +806,69 @@ msgstr ""
"批处ç†æ–‡ä»¶å†…容:%s\n"
"\t%s\n"
-#: job.c:3327
+#: src/job.c:3605
#, c-format
msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
msgstr "%s (行 %d) 错误的 shell 上下文 (!unixy && !batch_mode_shell)\n"
-#: job.h:43
-msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
-msgstr "-O[类型] (--output-sync[=类型]) 并未é…置入此 make 构建。"
-
-#: load.c:60
+#: src/load.c:60
#, c-format
msgid "Failed to open global symbol table: %s"
msgstr "打开全局符å·è¡¨å¤±è´¥ï¼š%s"
-#: load.c:97
+#: src/load.c:97
#, c-format
msgid "Loaded object %s is not declared to be GPL compatible"
msgstr "已加载的对象 %s 未声明为 GPL 兼容"
-#: load.c:104
+#: src/load.c:104
#, c-format
msgid "Failed to load symbol %s from %s: %s"
msgstr "从 %2$s åŠ è½½ç¬¦å· %1$s 失败:%3$s"
-#: load.c:149
+#: src/load.c:149
#, c-format
msgid "Empty symbol name for load: %s"
msgstr "è¦åŠ è½½çš„符å·å为空:%s"
-#: load.c:204
+#: src/load.c:204
#, c-format
msgid "Loading symbol %s from %s\n"
msgstr "正从 %2$s åŠ è½½ç¬¦å· %1$s\n"
-#: load.c:256
+#: src/load.c:256
+#, c-format
msgid "The 'load' operation is not supported on this platform."
msgstr "本平å°ä¸æ”¯æŒâ€œloadâ€æ“作。"
-#: main.c:338
+#: src/main.c:335
msgid "Options:\n"
msgstr "选项:\n"
-#: main.c:339
+#: src/main.c:336
msgid " -b, -m Ignored for compatibility.\n"
msgstr " -b, -m 为兼容性而忽略。\n"
-#: main.c:341
+#: src/main.c:338
msgid " -B, --always-make Unconditionally make all targets.\n"
msgstr " -B, --always-make æ— æ¡ä»¶åˆ¶ä½œ (make) 所有目标。\n"
-#: main.c:343
+#: src/main.c:340
msgid ""
" -C DIRECTORY, --directory=DIRECTORY\n"
" Change to DIRECTORY before doing anything.\n"
msgstr " -C 目录, --directory=目录 在执行å‰å…ˆåˆ‡æ¢åˆ° <目录>。\n"
-#: main.c:346
+#: src/main.c:343
msgid " -d Print lots of debugging information.\n"
msgstr " -d 打å°å¤§é‡è°ƒè¯•ä¿¡æ¯ã€‚\n"
-#: main.c:348
+#: src/main.c:345
msgid ""
" --debug[=FLAGS] Print various types of debugging information.\n"
msgstr " --debug[=æ——æ ‡] 打å°å„ç§è°ƒè¯•ä¿¡æ¯ã€‚\n"
-#: main.c:350
+#: src/main.c:347
msgid ""
" -e, --environment-overrides\n"
" Environment variables override makefiles.\n"
@@ -874,12 +876,12 @@ msgstr ""
" -e, --environment-overrides\n"
" 环境å˜é‡è¦†ç›– makefile 中的å˜é‡ã€‚\n"
-#: main.c:353
+#: src/main.c:350
msgid ""
-" --eval=STRING Evaluate STRING as a makefile statement.\n"
-msgstr " --eval=字串 å°† <字串> 作为 makefile 语å¥ä¼°å€¼ã€‚\n"
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
+msgstr " -E 字串, --eval=字串 å°† <字串> 作为 makefile 语å¥ä¼°å€¼ã€‚\n"
-#: main.c:355
+#: src/main.c:352
msgid ""
" -f FILE, --file=FILE, --makefile=FILE\n"
" Read FILE as a makefile.\n"
@@ -887,33 +889,33 @@ msgstr ""
" -f 文件, --file=文件, --makefile=文件\n"
" 从 <文件> 中读入 makefile。\n"
-#: main.c:358
+#: src/main.c:355
msgid " -h, --help Print this message and exit.\n"
msgstr " -h, --help 打å°è¯¥æ¶ˆæ¯å¹¶é€€å‡ºã€‚\n"
-#: main.c:360
+#: src/main.c:357
msgid " -i, --ignore-errors Ignore errors from recipes.\n"
msgstr " -i, --ignore-errors 忽略æ¥è‡ªå‘½ä»¤é…方的错误。\n"
-#: main.c:362
+#: src/main.c:359
msgid ""
" -I DIRECTORY, --include-dir=DIRECTORY\n"
" Search DIRECTORY for included makefiles.\n"
msgstr " -I 目录, --include-dir=目录 在 <目录> 中æœç´¢è¢«åŒ…å«çš„ makefile。\n"
-#: main.c:365
+#: src/main.c:362
msgid ""
" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
"arg.\n"
msgstr ""
" -j [N], --jobs[=N] åŒæ—¶å…许 N 个任务;无å‚数表明å…许无é™ä¸ªä»»åŠ¡ã€‚\n"
-#: main.c:367
+#: src/main.c:364
msgid ""
" -k, --keep-going Keep going when some targets can't be made.\n"
msgstr " -k, --keep-going 当æŸäº›ç›®æ ‡æ— æ³•åˆ¶ä½œæ—¶ä»ç„¶ç»§ç»­ã€‚\n"
-#: main.c:369
+#: src/main.c:366
msgid ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" Don't start multiple jobs unless load is below "
@@ -922,14 +924,14 @@ msgstr ""
" -l [N], --load-average[=N], --max-load[=N]\n"
" 在系统负载高于 N æ—¶ä¸å¯åŠ¨å¤šä»»åŠ¡ã€‚\n"
-#: main.c:372
+#: src/main.c:369
msgid ""
" -L, --check-symlink-times Use the latest mtime between symlinks and "
"target.\n"
msgstr ""
" -L, --check-symlink-times 使用软链接åŠè½¯é“¾æŽ¥ç›®æ ‡ä¸­ä¿®æ”¹æ—¶é—´è¾ƒæ™šçš„一个。\n"
-#: main.c:374
+#: src/main.c:371
msgid ""
" -n, --just-print, --dry-run, --recon\n"
" Don't actually run any recipe; just print "
@@ -938,7 +940,7 @@ msgstr ""
" -n, --just-print, --dry-run, --recon\n"
" åªæ‰“å°å‘½ä»¤é…方,ä¸å®žé™…执行。\n"
-#: main.c:377
+#: src/main.c:374
msgid ""
" -o FILE, --old-file=FILE, --assume-old=FILE\n"
" Consider FILE to be very old and don't remake "
@@ -947,7 +949,7 @@ msgstr ""
" -o 文件, --old-file=文件, --assume-old=文件\n"
" å°† <文件> 当åšå¾ˆæ—§ï¼Œä¸å¿…é‡æ–°åˆ¶ä½œã€‚\n"
-#: main.c:380
+#: src/main.c:377
msgid ""
" -O[TYPE], --output-sync[=TYPE]\n"
" Synchronize output of parallel jobs by TYPE.\n"
@@ -955,30 +957,34 @@ msgstr ""
" -O[类型], --output-sync[=类型]\n"
" 使用 <类型> æ–¹å¼åŒæ­¥å¹¶è¡Œä»»åŠ¡è¾“出。\n"
-#: main.c:383
+#: src/main.c:380
msgid " -p, --print-data-base Print make's internal database.\n"
msgstr " -p, --print-data-base æ‰“å° make 的内部数æ®åº“。\n"
-#: main.c:385
+#: src/main.c:382
msgid ""
" -q, --question Run no recipe; exit status says if up to "
"date.\n"
msgstr ""
" -q, --question ä¸è¿è¡Œä»»ä½•é…方;退出状æ€è¯´æ˜Žæ˜¯å¦å·²å…¨éƒ¨æ›´æ–°ã€‚\n"
-#: main.c:387
+#: src/main.c:384
msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
msgstr " -r, --no-builtin-rules ç¦ç”¨å†…ç½®éšå«è§„则。\n"
-#: main.c:389
+#: src/main.c:386
msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
msgstr " -R, --no-builtin-variables ç¦ç”¨å†…ç½®å˜é‡è®¾ç½®ã€‚\n"
-#: main.c:391
+#: src/main.c:388
msgid " -s, --silent, --quiet Don't echo recipes.\n"
msgstr " -s, --silent, --quiet ä¸è¾“出é…方命令。\n"
-#: main.c:393
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr " --no-silent 对é…方进行回显(ç¦ç”¨ --silent 模å¼ï¼‰ã€‚\n"
+
+#: src/main.c:392
msgid ""
" -S, --no-keep-going, --stop\n"
" Turns off -k.\n"
@@ -986,32 +992,32 @@ msgstr ""
" -S, --no-keep-going, --stop\n"
" 关闭 -k。\n"
-#: main.c:396
+#: src/main.c:395
msgid " -t, --touch Touch targets instead of remaking them.\n"
msgstr ""
" -t, --touch touch 目标(更新修改时间)而ä¸æ˜¯é‡æ–°åˆ¶ä½œå®ƒ"
"们。\n"
-#: main.c:398
+#: src/main.c:397
msgid " --trace Print tracing information.\n"
msgstr " --trace 打å°è·Ÿè¸ªä¿¡æ¯ã€‚\n"
-#: main.c:400
+#: src/main.c:399
msgid ""
" -v, --version Print the version number of make and exit.\n"
msgstr " -v, --version æ‰“å° make 的版本å·å¹¶é€€å‡ºã€‚\n"
-#: main.c:402
+#: src/main.c:401
msgid " -w, --print-directory Print the current directory.\n"
msgstr " -w, --print-directory 打å°å½“å‰ç›®å½•ã€‚\n"
-#: main.c:404
+#: src/main.c:403
msgid ""
" --no-print-directory Turn off -w, even if it was turned on "
"implicitly.\n"
msgstr " --no-print-directory 关闭 -w,å³ä½¿ -w 默认开å¯ã€‚\n"
-#: main.c:406
+#: src/main.c:405
msgid ""
" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
" Consider FILE to be infinitely new.\n"
@@ -1019,32 +1025,33 @@ msgstr ""
" -W 文件, --what-if=文件, --new-file=文件, --assume-new=文件\n"
" å°† <文件> 当åšæœ€æ–°ã€‚\n"
-#: main.c:409
+#: src/main.c:408
msgid ""
" --warn-undefined-variables Warn when an undefined variable is "
"referenced.\n"
msgstr " --warn-undefined-variables 当引用未定义å˜é‡çš„时候å‘出警告。\n"
-#: main.c:683
+#: src/main.c:671
+#, c-format
msgid "empty string invalid as file name"
msgstr "空字符串是无效的文件å"
-#: main.c:766
+#: src/main.c:754
#, c-format
msgid "unknown debug level specification '%s'"
msgstr "未知的调试级别定义“%sâ€"
-#: main.c:806
+#: src/main.c:794
#, c-format
msgid "unknown output-sync type '%s'"
msgstr "ä¸æ˜Žè¾“出åŒæ­¥ç±»åž‹â€œ%sâ€"
-#: main.c:861
+#: src/main.c:849
#, c-format
msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
msgstr "%s:æ•èŽ·ä¸­æ–­/异常 (ä»£ç  = 0x%lx, åœ°å€ = 0x%p)\n"
-#: main.c:868
+#: src/main.c:856
#, c-format
msgid ""
"\n"
@@ -1059,132 +1066,140 @@ msgstr ""
"异常标志 = %lx\n"
"å¼‚å¸¸åœ°å€ = 0x%p\n"
-#: main.c:876
+#: src/main.c:864
#, c-format
msgid "Access violation: write operation at address 0x%p\n"
msgstr "访问冲çªï¼šåœ°å€ 0x%p 处的写æ“作\n"
-#: main.c:877
+#: src/main.c:865
#, c-format
msgid "Access violation: read operation at address 0x%p\n"
msgstr "访问冲çªï¼šåœ°å€ 0x%p 处的读æ“作\n"
-#: main.c:953 main.c:968
+#: src/main.c:941 src/main.c:956
#, c-format
msgid "find_and_set_shell() setting default_shell = %s\n"
msgstr "find_and_set_shell() 设置 default_shell = %s\n"
-#: main.c:1021
+#: src/main.c:1009
#, 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:1538
+#: src/main.c:1609
#, c-format
-msgid "%s is suspending for 30 seconds..."
-msgstr "%s 正在挂起 30 秒..."
-
-#: main.c:1540
-#, c-format
-msgid "done sleep(30). Continuing.\n"
-msgstr "ç¡çœ å®Œæˆ(30)。继续。\n"
-
-#: main.c:1627
msgid ""
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
msgstr "警告: jobserver ä¸å¯ç”¨: 正使用 -j1。添加 “+†到父 make 的规则。"
-#: main.c:1635
-msgid "warning: -jN forced in submake: disabling jobserver mode."
-msgstr "警告: å­ make 中强制 -jN: 关闭 jobserver 模å¼ã€‚"
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
+msgstr "警告: å­ make 中强制 -j%d: é‡ç½® jobserver 模å¼ã€‚"
-#: main.c:1805
+#: src/main.c:1781
+#, c-format
msgid "Makefile from standard input specified twice."
msgstr "两次指明æ¥è‡ªæ ‡å‡†è¾“入的 makefile。"
-#: main.c:1843 vmsjobs.c:1252
+#: src/main.c:1819 src/vmsjobs.c:1248
msgid "fopen (temporary file)"
msgstr "fopen (临时文件)"
-#: main.c:1849
+#: src/main.c:1825
msgid "fwrite (temporary file)"
msgstr "fwrite (临时文件)"
-#: main.c:2048
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr "警告: å­ make 中强制 -j%d: é‡ç½® jobserver 模å¼ã€‚"
+
+#: src/main.c:2068
+#, c-format
msgid "Parallel jobs (-j) are not supported on this platform."
msgstr "本平å°ä¸æ”¯æŒå¹¶è¡Œä»»åŠ¡ (-j)。"
-#: main.c:2049
+#: src/main.c:2069
+#, c-format
msgid "Resetting to single job (-j1) mode."
msgstr "é‡ç½®ä¸ºå•ä»»åŠ¡æ¨¡å¼ (-j1)。"
-#: main.c:2088
+#: src/main.c:2109
+#, c-format
msgid "Symbolic links not supported: disabling -L."
-msgstr "ä¸æ”¯æŒè½¯é“¾æŽ¥: 关闭 -L"
+msgstr "ä¸æ”¯æŒè½¯é“¾æŽ¥ï¼šç¦ç”¨ -L。"
-#: main.c:2170
+#: src/main.c:2190
+#, c-format
msgid "Updating makefiles....\n"
msgstr "正在更新 makefile....\n"
-#: main.c:2195
+#: src/main.c:2226
#, c-format
msgid "Makefile '%s' might loop; not remaking it.\n"
msgstr "Makefile “%sâ€å¯èƒ½å¾ªçŽ¯ï¼›ä¸ä¼šé‡æ–°æ‰§è¡Œå®ƒã€‚\n"
-#: main.c:2279
+#: src/main.c:2303
#, c-format
msgid "Failed to remake makefile '%s'."
msgstr "é‡æ–°æ‰§è¡Œ makefile“%sâ€å¤±è´¥ã€‚"
-#: main.c:2299
+#: src/main.c:2323
#, c-format
msgid "Included makefile '%s' was not found."
msgstr "找ä¸åˆ°è¢«å¼•å…¥çš„ makefile“%sâ€ã€‚"
-#: main.c:2304
+#: src/main.c:2328
#, c-format
msgid "Makefile '%s' was not found"
-msgstr "找ä¸åˆ° makefile “%sâ€ã€‚"
+msgstr "找ä¸åˆ° makefile “%sâ€"
-#: main.c:2372
+#: src/main.c:2394
+#, c-format
msgid "Couldn't change back to original directory."
msgstr "无法回到原始目录。"
-#: main.c:2380
+#: src/main.c:2402
#, c-format
msgid "Re-executing[%u]:"
msgstr "é‡æ–°æ‰§è¡Œ[%u]:"
-#: main.c:2492
+#: src/main.c:2522
msgid "unlink (temporary file): "
msgstr "删除 (临时文件):"
-#: main.c:2525
+#: src/main.c:2555
+#, c-format
msgid ".DEFAULT_GOAL contains more than one target"
msgstr ".DEFAULT_GOAL 包å«å¤šä½™ä¸€ä¸ªç›®æ ‡"
-#: main.c:2548
-msgid "No targets specified and no makefile found"
-msgstr "没有指明目标并且找ä¸åˆ° makefile"
-
-#: main.c:2550
+#: src/main.c:2579
+#, c-format
msgid "No targets"
msgstr "无目标"
-#: main.c:2555
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "没有指明目标并且找ä¸åˆ° makefile"
+
+#: src/main.c:2586
+#, c-format
msgid "Updating goal targets....\n"
msgstr "更新目标....\n"
-#: main.c:2579
+#: src/main.c:2610
+#, c-format
msgid "warning: Clock skew detected. Your build may be incomplete."
msgstr "警告:检测到时钟错误。您的构建版本å¯èƒ½æ˜¯ä¸å®Œæ•´çš„。"
-#: main.c:2773
+#: src/main.c:2804
#, c-format
msgid "Usage: %s [options] [target] ...\n"
msgstr "用法:%s [选项] [目标] ...\n"
-#: main.c:2779
+#: src/main.c:2810
#, c-format
msgid ""
"\n"
@@ -1193,7 +1208,7 @@ msgstr ""
"\n"
"该程åºä¸º %s 编译\n"
-#: main.c:2781
+#: src/main.c:2812
#, c-format
msgid ""
"\n"
@@ -1202,32 +1217,32 @@ msgstr ""
"\n"
"该程åºä¸º %s (%s) 编译\n"
-#: main.c:2784
+#: src/main.c:2815
#, c-format
msgid "Report bugs to <bug-make@gnu.org>\n"
msgstr "报告错误到 <bug-make@gnu.org>\n"
-#: main.c:2870
+#: src/main.c:2901
#, c-format
msgid "the '%s%s' option requires a non-empty string argument"
msgstr "“%s%sâ€é€‰é¡¹éœ€è¦éžç©ºå­—符串å‚æ•°"
-#: main.c:2934
+#: src/main.c:2965
#, c-format
msgid "the '-%c' option requires a positive integer argument"
msgstr "“-%câ€é€‰é¡¹éœ€è¦æ­£æ•´æ•°å‚æ•°"
-#: main.c:3332
+#: src/main.c:3363
#, c-format
msgid "%sBuilt for %s\n"
msgstr "%s为 %s 编译\n"
-#: main.c:3334
+#: src/main.c:3365
#, c-format
msgid "%sBuilt for %s (%s)\n"
msgstr "%s为 %s (%s) 编译\n"
-#: main.c:3345
+#: src/main.c:3376
#, c-format
msgid ""
"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
@@ -1240,7 +1255,7 @@ msgstr ""
"%s本软件是自由软件:您å¯ä»¥è‡ªç”±ä¿®æ”¹å’Œé‡æ–°å‘布它。\n"
"%s在法律å…许的范围内没有其他ä¿è¯ã€‚\n"
-#: main.c:3366
+#: src/main.c:3397
#, c-format
msgid ""
"\n"
@@ -1249,7 +1264,7 @@ msgstr ""
"\n"
"# make æ•°æ®åŸºç¡€ï¼Œæ‰“å°åœ¨ %s"
-#: main.c:3376
+#: src/main.c:3407
#, c-format
msgid ""
"\n"
@@ -1258,499 +1273,535 @@ msgstr ""
"\n"
"# 在 %s ä¸Šå®Œæˆ make æ•°æ®åŸºç¡€\n"
-#: misc.c:202
-#, c-format
-msgid "Unknown error %d"
-msgstr "未知错误 %d"
-
-#: misc.c:508
+#: src/misc.c:643
#, c-format
msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
msgstr "%s: 用户 %lu (真实用户 %lu), 组 %lu (真实组 %lu)\n"
-#: misc.c:529
+#: src/misc.c:664
msgid "Initialized access"
msgstr "åˆå§‹åŒ–æˆåŠŸ"
-#: misc.c:608
+#: src/misc.c:743
msgid "User access"
msgstr "用户æƒé™"
-#: misc.c:656
+#: src/misc.c:791
msgid "Make access"
msgstr "Make æƒé™"
-#: misc.c:690
+#: src/misc.c:825
msgid "Child access"
msgstr "å­è¿›ç¨‹ æƒé™"
-#: output.c:104
+#: src/output.c:97
#, c-format
msgid "%s: Entering an unknown directory\n"
msgstr "%s: 进入一个未知的目录\n"
-#: output.c:106
+#: src/output.c:99
#, c-format
msgid "%s: Leaving an unknown directory\n"
msgstr "%s: 离开一个未知的目录\n"
-#: output.c:109
+#: src/output.c:102
#, c-format
msgid "%s: Entering directory '%s'\n"
msgstr "%s: 进入目录“%sâ€\n"
-#: output.c:111
+#: src/output.c:104
#, c-format
msgid "%s: Leaving directory '%s'\n"
msgstr "%s: 离开目录“%sâ€\n"
-#: output.c:115
+#: src/output.c:108
#, c-format
msgid "%s[%u]: Entering an unknown directory\n"
msgstr "%s[%u]: 进入一个未知的目录\n"
-#: output.c:117
+#: src/output.c:110
#, c-format
msgid "%s[%u]: Leaving an unknown directory\n"
msgstr "%s[%u]: 离开一个未知的目录\n"
-#: output.c:120
+#: src/output.c:113
#, c-format
msgid "%s[%u]: Entering directory '%s'\n"
msgstr "%s[%u]: 进入目录“%sâ€\n"
-#: output.c:122
+#: src/output.c:115
#, c-format
msgid "%s[%u]: Leaving directory '%s'\n"
msgstr "%s[%u]: 离开目录“%sâ€\n"
-#: output.c:495 output.c:497
+#: src/output.c:442 src/output.c:444
+#, c-format
msgid "write error: stdout"
msgstr "写错误: 标准输出"
-#: output.c:677
+#: src/output.c:624
msgid ". Stop.\n"
msgstr "。 åœæ­¢ã€‚\n"
-#: output.c:711
+#: src/output.c:658
#, c-format
msgid "%s%s: %s"
msgstr "%s%s: %s"
-#: output.c:720
+#: src/output.c:667
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: posixos.c:69
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr "-O[类型] (--output-sync[=类型]) 并未é…置入此 make 构建。"
+
+#: src/posixos.c:90
msgid "creating jobs pipe"
msgstr "正在创建任务管é“"
-#: posixos.c:72 posixos.c:227
+#: src/posixos.c:98 src/posixos.c:251
msgid "duping jobs pipe"
msgstr "正在å¤åˆ¶ä»»åŠ¡ç®¡é“"
-#: posixos.c:78
+#: src/posixos.c:104
msgid "init jobserver pipe"
-msgstr "创始化任务æœåŠ¡å™¨ç®¡é“"
+msgstr "åˆå§‹åŒ–任务æœåŠ¡å™¨ç®¡é“"
-#: posixos.c:90
+#: src/posixos.c:119
#, c-format
msgid "internal error: invalid --jobserver-auth string '%s'"
msgstr "内部错误:éžæ³• --jobserver-auth 验è¯å­—符串“%sâ€"
-#: posixos.c:93
+#: src/posixos.c:122
#, c-format
msgid "Jobserver client (fds %d,%d)\n"
-msgstr "jobserver 客户端(文件æ述符 %d,%d)\n"
+msgstr "Jobserver 客户端(文件æ述符 %d,%d)\n"
-#: posixos.c:109
+#: src/posixos.c:138
msgid "jobserver pipeline"
msgstr "任务æœåŠ¡å™¨ç®¡é“"
-#: posixos.c:154
+#: src/posixos.c:186
msgid "write jobserver"
msgstr "写入任务æœåŠ¡å™¨"
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr "任务æœåŠ¡å™¨å…³é—­"
+
# , fuzzy
-#: posixos.c:268
+#: src/posixos.c:303
msgid "pselect jobs pipe"
msgstr "pselect 任务管é“"
-#: posixos.c:279 posixos.c:391
+#: src/posixos.c:319 src/posixos.c:433
msgid "read jobs pipe"
msgstr "读å–任务管é“"
-#: read.c:178
+#: src/read.c:181
+#, c-format
msgid "Reading makefiles...\n"
msgstr "正在读入 makefiles...\n"
-#: read.c:329
+#: src/read.c:336
#, c-format
msgid "Reading makefile '%s'"
msgstr "正在读入 makefile “%sâ€"
-#: read.c:331
+#: src/read.c:338
#, c-format
msgid " (no default goal)"
msgstr " (没有缺çœç›®æ ‡)"
-#: read.c:333
+#: src/read.c:340
#, c-format
msgid " (search path)"
msgstr " (æœç´¢è·¯å¾„)"
-#: read.c:335
+#: src/read.c:342
#, c-format
msgid " (don't care)"
msgstr " (ä¸ç”¨ç†)"
-#: read.c:337
+#: src/read.c:344
#, c-format
msgid " (no ~ expansion)"
msgstr " (没有 ~ 扩展)"
-#: read.c:651
+#: src/read.c:655
#, c-format
msgid "Skipping UTF-8 BOM in makefile '%s'\n"
msgstr "跳过 Makefile“%sâ€ä¸­çš„ UTF-8 BOM\n"
-#: read.c:654
+#: src/read.c:658
#, c-format
msgid "Skipping UTF-8 BOM in makefile buffer\n"
msgstr "跳过 Makefile 缓冲区中的 UTF-8 BOM\n"
-#: read.c:783
+#: src/read.c:787
+#, c-format
msgid "invalid syntax in conditional"
msgstr "æ¡ä»¶ä¸­å«æœ‰æ— æ•ˆè¯­æ³•"
-#: read.c:959
+#: src/read.c:960
#, c-format
msgid "%s: failed to load"
msgstr "%s: 加载失败"
-#: read.c:985
+#: src/read.c:986
+#, c-format
msgid "recipe commences before first target"
msgstr "é…方在第一个目标å‰å¼€å§‹"
-#: read.c:1034
+#: src/read.c:1035
+#, c-format
msgid "missing rule before recipe"
msgstr "é…方之å‰é—æ¼äº†è§„则"
-#: read.c:1124
+#: src/read.c:1136
+#, c-format
msgid "missing separator (did you mean TAB instead of 8 spaces?)"
msgstr "分隔符缺失 (你大概想用 TAB,而ä¸æ˜¯å…«ä¸ªç©ºæ ¼)"
-#: read.c:1126
+#: src/read.c:1138
+#, c-format
msgid "missing separator"
-msgstr "é—æ¼åˆ†éš”符 %s"
+msgstr "缺失分隔符"
-#: read.c:1262
+#: src/read.c:1283
+#, c-format
msgid "missing target pattern"
msgstr "无目标匹é…"
-#: read.c:1264
+#: src/read.c:1285
+#, c-format
msgid "multiple target patterns"
msgstr "多个目标匹é…"
-#: read.c:1268
+#: src/read.c:1289
#, c-format
msgid "target pattern contains no '%%'"
msgstr "目标模å¼ä¸å«æœ‰â€œ%%â€"
-#: read.c:1390
+#: src/read.c:1404
+#, c-format
msgid "missing 'endif'"
msgstr "é—æ¼â€œendifâ€"
-#: read.c:1428 read.c:1473 variable.c:1576
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
msgid "empty variable name"
msgstr "空å˜é‡å"
-#: read.c:1463
+#: src/read.c:1478
+#, c-format
msgid "extraneous text after 'define' directive"
msgstr "“endefâ€æŒ‡ä»¤åŽå«æœ‰ä¸è¯¥å‡ºçŽ°çš„文字"
-#: read.c:1488
+#: src/read.c:1503
+#, c-format
msgid "missing 'endef', unterminated 'define'"
msgstr "é—æ¼â€œendefâ€ï¼Œæœªç»ˆæ­¢çš„“defineâ€"
-#: read.c:1516
+#: src/read.c:1531
+#, c-format
msgid "extraneous text after 'endef' directive"
msgstr "“endefâ€æŒ‡ä»¤åŽå«æœ‰ä¸è¯¥å‡ºçŽ°çš„文字"
-#: read.c:1588
+#: src/read.c:1603
#, c-format
msgid "extraneous text after '%s' directive"
msgstr "在“%sâ€æŒ‡ä»¤ä¹‹åŽå«æœ‰ä¸è¯¥å‡ºçŽ°çš„文字"
-#: read.c:1589
+#: src/read.c:1604
#, c-format
msgid "extraneous '%s'"
msgstr "ä¸è¯¥å‡ºçŽ°çš„“%sâ€"
-#: read.c:1617
+#: src/read.c:1632
+#, c-format
msgid "only one 'else' per conditional"
msgstr "æ¯ä¸ªæ¡ä»¶åªèƒ½æœ‰ä¸€ä¸ªâ€œelseâ€"
-#: read.c:1892
+#: src/read.c:1908
+#, c-format
msgid "Malformed target-specific variable definition"
msgstr "畸形的针对目标的标é‡å®šä¹‰"
-#: read.c:1950
+#: src/read.c:1968
+#, c-format
msgid "prerequisites cannot be defined in recipes"
msgstr "ä¾èµ–无法在é…方脚本中定义"
-#: read.c:2009
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr "æˆç»„的目标必须æ供一个é…æ–¹"
+
+#: src/read.c:2029
+#, c-format
msgid "mixed implicit and static pattern rules"
msgstr "混和的éšå«å’Œé™æ€æ¨¡å¼è§„则"
-#: read.c:2032
+#: src/read.c:2052
+#, c-format
msgid "mixed implicit and normal rules"
msgstr "混和的éšå«å’Œæ™®é€šè§„则"
-#: read.c:2085
+#: src/read.c:2107
#, c-format
msgid "target '%s' doesn't match the target pattern"
msgstr "目标“%sâ€ä¸åŒ¹é…目标模å¼"
-#: read.c:2100 read.c:2146
+#: src/read.c:2122 src/read.c:2168
#, c-format
msgid "target file '%s' has both : and :: entries"
msgstr "目标文件“%sâ€å«æœ‰ : å’Œ :: 两ç§æ¡ç›®"
-#: read.c:2106
+#: src/read.c:2128
#, c-format
msgid "target '%s' given more than once in the same rule"
-msgstr "目标“%sâ€åœ¨åŒä¸€ä¸ªè§„则中给出了多次。"
+msgstr "目标“%sâ€åœ¨åŒä¸€ä¸ªè§„则中给出了多次"
-#: read.c:2116
+#: src/read.c:2138
#, c-format
msgid "warning: overriding recipe for target '%s'"
msgstr "警告:覆盖关于目标“%sâ€çš„é…æ–¹"
-#: read.c:2119
+#: src/read.c:2141
#, c-format
msgid "warning: ignoring old recipe for target '%s'"
msgstr "警告:忽略关于目标“%sâ€çš„æ—§é…æ–¹"
-#: read.c:2223
+#: src/read.c:2254
+#, c-format
msgid "*** mixed implicit and normal rules: deprecated syntax"
msgstr "*** éšå«å’Œæ™®é€šè§„则混åˆï¼šå·²å¼ƒç”¨çš„语法"
-#: read.c:2542
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "警告:覆盖关于目标“%sâ€çš„组æˆå‘˜"
+
+#: src/read.c:2636
+#, c-format
msgid "warning: NUL character seen; rest of line ignored"
msgstr "警告:é‡åˆ°äº† NUL 字符;忽略行的剩余部分"
-#: remake.c:226
+#: src/remake.c:226
#, c-format
msgid "Nothing to be done for '%s'."
msgstr "对“%sâ€æ— éœ€åšä»»ä½•äº‹ã€‚"
-#: remake.c:227
+#: src/remake.c:227
#, c-format
msgid "'%s' is up to date."
msgstr "“%sâ€å·²æ˜¯æœ€æ–°ã€‚"
-#: remake.c:323
+#: src/remake.c:323
#, c-format
msgid "Pruning file '%s'.\n"
msgstr "正删除文件“%sâ€ã€‚\n"
-#: remake.c:406
+#: src/remake.c:389
#, c-format
msgid "%sNo rule to make target '%s', needed by '%s'%s"
msgstr "%s没有规则å¯åˆ¶ä½œç›®æ ‡â€œ%sâ€ï¼Œç”±â€œ%sâ€%s 需求"
-#: remake.c:416
+#: src/remake.c:399
#, c-format
msgid "%sNo rule to make target '%s'%s"
msgstr "%s没有规则å¯åˆ¶ä½œç›®æ ‡â€œ%sâ€%s"
-#: remake.c:442
+#: src/remake.c:425
#, c-format
msgid "Considering target file '%s'.\n"
msgstr "正在考虑目标文件“%sâ€ã€‚\n"
-#: remake.c:449
+#: src/remake.c:432
#, c-format
msgid "Recently tried and failed to update file '%s'.\n"
msgstr "最近已å°è¯•è¿‡æ›´æ–°æ–‡ä»¶â€œ%sâ€å¹¶å¤±è´¥ã€‚\n"
-#: remake.c:461
+#: src/remake.c:444
#, c-format
msgid "File '%s' was considered already.\n"
msgstr "已考虑过文件“%sâ€ã€‚\n"
-#: remake.c:471
+#: src/remake.c:454
#, c-format
msgid "Still updating file '%s'.\n"
msgstr "ä»ç„¶åœ¨æ›´æ–°æ–‡ä»¶â€œ%sâ€ã€‚\n"
-#: remake.c:474
+#: src/remake.c:457
#, c-format
msgid "Finished updating file '%s'.\n"
msgstr "更新文件“%sâ€å®Œæˆã€‚\n"
-#: remake.c:503
+#: src/remake.c:486
#, c-format
msgid "File '%s' does not exist.\n"
msgstr "文件“%sâ€ä¸å­˜åœ¨ã€‚\n"
-#: remake.c:511
+#: src/remake.c:494
#, c-format
msgid ""
"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
msgstr "*** 警告: .LOW_RESOLUTION_TIME 文件 `%s' 有一个高精度的的时间标志"
-#: remake.c:524 remake.c:1056
+#: src/remake.c:507 src/remake.c:1039
#, c-format
msgid "Found an implicit rule for '%s'.\n"
msgstr "找到一æ¡å…³äºŽâ€œ%sâ€çš„éšå«è§„则。\n"
-#: remake.c:526 remake.c:1058
+#: src/remake.c:509 src/remake.c:1041
#, c-format
msgid "No implicit rule found for '%s'.\n"
msgstr "找ä¸åˆ°å…³äºŽâ€œ%sâ€çš„éšå«è§„则。\n"
-#: remake.c:532
+#: src/remake.c:515
#, c-format
msgid "Using default recipe for '%s'.\n"
msgstr "使用“%sâ€çš„默认é…方。\n"
-#: remake.c:566 remake.c:1105
+#: src/remake.c:549 src/remake.c:1088
#, c-format
msgid "Circular %s <- %s dependency dropped."
msgstr "放弃循环ä¾èµ– %s <- %s 。"
-#: remake.c:691
+#: src/remake.c:674
#, c-format
msgid "Finished prerequisites of target file '%s'.\n"
msgstr "目标文件“%sâ€çš„å‰æ已完æˆã€‚\n"
-#: remake.c:697
+#: src/remake.c:680
#, c-format
msgid "The prerequisites of '%s' are being made.\n"
msgstr "正在制作“%sâ€çš„å‰æ。\n"
-#: remake.c:711
+#: src/remake.c:694
#, c-format
msgid "Giving up on target file '%s'.\n"
msgstr "放弃目标文件“%sâ€ã€‚\n"
-#: remake.c:716
+#: src/remake.c:699
#, c-format
msgid "Target '%s' not remade because of errors."
msgstr "由于错误目标“%sâ€å¹¶æœªé‡æ–°åˆ¶ä½œã€‚"
-#: remake.c:768
+#: src/remake.c:751
#, c-format
msgid "Prerequisite '%s' is order-only for target '%s'.\n"
msgstr "å‰æ“%sâ€å¯¹ç›®æ ‡â€œ%sâ€æ¥è¯´ä»…ç”¨äºŽæŒ‡å®šæ‰§è¡Œé¡ºåº (order-only) 。\n"
-#: remake.c:773
+#: src/remake.c:756
#, c-format
msgid "Prerequisite '%s' of target '%s' does not exist.\n"
msgstr "目标“%2$sâ€çš„å‰æ“%1$sâ€ä¸å­˜åœ¨ã€‚\n"
-#: remake.c:778
+#: src/remake.c:761
#, c-format
msgid "Prerequisite '%s' is newer than target '%s'.\n"
msgstr "å‰æ“%sâ€æ¯”目标“%sâ€æ–°ã€‚\n"
-#: remake.c:781
+#: src/remake.c:764
#, c-format
msgid "Prerequisite '%s' is older than target '%s'.\n"
msgstr "å‰æ“%sâ€æ¯”目标“%sâ€æ—§ã€‚\n"
-#: remake.c:799
+#: src/remake.c:782
#, c-format
msgid "Target '%s' is double-colon and has no prerequisites.\n"
msgstr "目标“%sâ€æ˜¯åŒå†’å·ç›®æ ‡å¹¶ä¸”没有å‰æ。\n"
-#: remake.c:806
+#: src/remake.c:789
#, c-format
msgid "No recipe for '%s' and no prerequisites actually changed.\n"
msgstr "没有关于“%sâ€çš„é…方,并且没有实际改å˜çš„å‰æ。\n"
-#: remake.c:811
+#: src/remake.c:794
#, c-format
msgid "Making '%s' due to always-make flag.\n"
msgstr "由于 always-make 标志所以制作“%sâ€ã€‚\n"
-#: remake.c:819
+#: src/remake.c:802
#, c-format
msgid "No need to remake target '%s'"
msgstr "ä¸éœ€è¦é‡æ–°åˆ¶ä½œç›®æ ‡â€œ%sâ€"
-#: remake.c:821
+#: src/remake.c:804
#, c-format
msgid "; using VPATH name '%s'"
msgstr ";使用 VPATH å称“%sâ€"
-#: remake.c:841
+#: src/remake.c:824
#, c-format
msgid "Must remake target '%s'.\n"
msgstr "å¿…é¡»é‡æ–°åˆ¶ä½œç›®æ ‡â€œ%sâ€ã€‚\n"
-#: remake.c:847
+#: src/remake.c:830
#, c-format
msgid " Ignoring VPATH name '%s'.\n"
msgstr " 忽略 VPATH å称“%sâ€ã€‚\n"
-#: remake.c:856
+#: src/remake.c:839
#, c-format
msgid "Recipe of '%s' is being run.\n"
msgstr "“%sâ€çš„命令é…方正在被执行。\n"
-#: remake.c:863
+#: src/remake.c:846
#, c-format
msgid "Failed to remake target file '%s'.\n"
msgstr "é‡æ–°åˆ¶ä½œç›®æ ‡æ–‡ä»¶â€œ%sâ€å¤±è´¥ã€‚\n"
-#: remake.c:866
+#: src/remake.c:849
#, c-format
msgid "Successfully remade target file '%s'.\n"
msgstr "é‡æ–°åˆ¶ä½œç›®æ ‡æ–‡ä»¶â€œ%sâ€æˆåŠŸã€‚\n"
-#: remake.c:869
+#: src/remake.c:852
#, c-format
msgid "Target file '%s' needs to be remade under -q.\n"
msgstr "目标文件“%sâ€éœ€è¦ä»¥ -q 选项é‡æ–°åˆ¶ä½œã€‚\n"
-#: remake.c:1064
+#: src/remake.c:1047
#, c-format
msgid "Using default commands for '%s'.\n"
msgstr "使用关于“%sâ€çš„默认命令。\n"
-#: remake.c:1430
-#, c-format
-msgid "Warning: File '%s' has modification time in the future"
-msgstr "警告:文件“%sâ€çš„修改时间在未æ¥"
-
-#: remake.c:1444
+#: src/remake.c:1422
#, c-format
msgid "Warning: File '%s' has modification time %s s in the future"
msgstr "警告:文件“%sâ€çš„ä¿®æ”¹æ—¶é—´åœ¨æœªæ¥ %s 秒åŽ"
-#: remake.c:1647
+#: src/remake.c:1662
#, c-format
msgid ".LIBPATTERNS element '%s' is not a pattern"
msgstr ".LIBPATTERNS 的元素“%sâ€ä¸æ˜¯ä¸€ä¸ªæ¨¡å¼"
-#: remote-cstms.c:122
+#: src/remote-cstms.c:122
#, c-format
msgid "Customs won't export: %s\n"
msgstr "用户ä¸å¸Œæœ›å¯¼å‡ºï¼š%s\n"
-#: rule.c:496
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
msgid ""
"\n"
"# Implicit Rules"
msgstr ""
"\n"
-"# éšå«è§„则。"
+"# éšå«è§„则"
-#: rule.c:511
+#: src/rule.c:545
msgid ""
"\n"
"# No implicit rules."
@@ -1758,181 +1809,177 @@ msgstr ""
"\n"
"# 没有éšå«è§„则。"
-#: rule.c:514
+#: src/rule.c:548
#, c-format
msgid ""
"\n"
-"# %u implicit rules, %u"
+"# %u implicit rules, %u (%.1f%%) terminal."
msgstr ""
"\n"
-"# %u æ¡éšå«è§„则,%u"
-
-#: rule.c:523
-msgid " terminal."
-msgstr " 终端。"
+"# %u æ¡éšå«è§„则,%u (%.1f%%) 为末端。"
-#: rule.c:531
+#: src/rule.c:557
#, c-format
msgid "BUG: num_pattern_rules is wrong! %u != %u"
msgstr "BUG:num_pattern_rules 出错ï¼%u != %u"
-#: signame.c:84
+#: src/signame.c:84
msgid "unknown signal"
msgstr "未知的信å·"
-#: signame.c:92
+#: src/signame.c:92
msgid "Hangup"
msgstr "挂起"
-#: signame.c:95
+#: src/signame.c:95
msgid "Interrupt"
msgstr "中断"
-#: signame.c:98
+#: src/signame.c:98
msgid "Quit"
msgstr "退出"
-#: signame.c:101
+#: src/signame.c:101
msgid "Illegal Instruction"
msgstr "éžæ³•æŒ‡ä»¤"
-#: signame.c:104
+#: src/signame.c:104
msgid "Trace/breakpoint trap"
msgstr "跟踪/断点陷阱"
-#: signame.c:109
+#: src/signame.c:109
msgid "Aborted"
-msgstr "已失败"
+msgstr "已中止"
-#: signame.c:112
+#: src/signame.c:112
msgid "IOT trap"
msgstr "IOT 陷阱"
-#: signame.c:115
+#: src/signame.c:115
msgid "EMT trap"
msgstr "EMT 陷阱"
-#: signame.c:118
+#: src/signame.c:118
msgid "Floating point exception"
msgstr "浮点数异常"
-#: signame.c:121
+#: src/signame.c:121
msgid "Killed"
msgstr "å·²æ€æ­»"
-#: signame.c:124
+#: src/signame.c:124
msgid "Bus error"
msgstr "总线错误"
-#: signame.c:127
+#: src/signame.c:127
msgid "Segmentation fault"
msgstr "段错误"
-#: signame.c:130
+#: src/signame.c:130
msgid "Bad system call"
msgstr "错误的系统调用"
-#: signame.c:133
+#: src/signame.c:133
msgid "Broken pipe"
msgstr "断开的管é“"
-#: signame.c:136
+#: src/signame.c:136
msgid "Alarm clock"
msgstr "闹钟"
-#: signame.c:139
+#: src/signame.c:139
msgid "Terminated"
msgstr "已终止"
-#: signame.c:142
+#: src/signame.c:142
msgid "User defined signal 1"
msgstr "ç”¨æˆ·å®šä¹‰ä¿¡å· 1"
-#: signame.c:145
+#: src/signame.c:145
msgid "User defined signal 2"
msgstr "ç”¨æˆ·å®šä¹‰ä¿¡å· 2"
-#: signame.c:150 signame.c:153
+#: src/signame.c:150 src/signame.c:153
msgid "Child exited"
msgstr "å­è¿›ç¨‹å·²é€€å‡º"
-#: signame.c:156
+#: src/signame.c:156
msgid "Power failure"
msgstr "电æºå¤±æ•ˆ"
-#: signame.c:159
+#: src/signame.c:159
msgid "Stopped"
msgstr "å·²åœæ­¢"
-#: signame.c:162
+#: src/signame.c:162
msgid "Stopped (tty input)"
msgstr "å·²åœæ­¢ (tty 输入)"
-#: signame.c:165
+#: src/signame.c:165
msgid "Stopped (tty output)"
msgstr "å·²åœæ­¢ (tty 输出)"
-#: signame.c:168
+#: src/signame.c:168
msgid "Stopped (signal)"
msgstr "å·²åœæ­¢ (ä¿¡å·)"
-#: signame.c:171
+#: src/signame.c:171
msgid "CPU time limit exceeded"
msgstr "CPU 时间超出é™åˆ¶"
-#: signame.c:174
+#: src/signame.c:174
msgid "File size limit exceeded"
msgstr "文件大å°è¶…出é™åˆ¶"
-#: signame.c:177
+#: src/signame.c:177
msgid "Virtual timer expired"
msgstr "虚拟时钟超时"
-#: signame.c:180
+#: src/signame.c:180
msgid "Profiling timer expired"
msgstr "测试时钟超市"
-#: signame.c:186
+#: src/signame.c:186
msgid "Window changed"
msgstr "窗å£å·²æ”¹å˜"
-#: signame.c:189
+#: src/signame.c:189
msgid "Continued"
msgstr "继续"
-#: signame.c:192
+#: src/signame.c:192
msgid "Urgent I/O condition"
msgstr "紧急 I/O æ¡ä»¶"
-#: signame.c:199 signame.c:208
+#: src/signame.c:199 src/signame.c:208
msgid "I/O possible"
msgstr "I/O å¯è¡Œ"
-#: signame.c:202
+#: src/signame.c:202
msgid "SIGWIND"
msgstr "SIGWIND"
-#: signame.c:205
+#: src/signame.c:205
msgid "SIGPHONE"
msgstr "SIGPHONE"
-#: signame.c:211
+#: src/signame.c:211
msgid "Resource lost"
msgstr "资æºä¸¢å¤±"
-#: signame.c:214
+#: src/signame.c:214
msgid "Danger signal"
msgstr "å±é™©ä¿¡å·"
-#: signame.c:217
+#: src/signame.c:217
msgid "Information request"
msgstr "ä¿¡æ¯è¯·æ±‚"
-#: signame.c:220
+#: src/signame.c:220
msgid "Floating point co-processor not available"
msgstr "浮点数å处ç†å™¨ä¸å¯ç”¨"
-#: strcache.c:274
+#: src/strcache.c:274
#, c-format
msgid ""
"\n"
@@ -1941,7 +1988,7 @@ msgstr ""
"\n"
"%s 没有 strcache 缓冲区\n"
-#: strcache.c:304
+#: src/strcache.c:304
#, c-format
msgid ""
"\n"
@@ -1951,25 +1998,25 @@ msgstr ""
"\n"
"%s strcache 缓冲: %lu (%lu) / 字串 = %lu / 空间 = %lu B / å¹³å‡ = %lu B\n"
-#: strcache.c:308
+#: src/strcache.c:308
#, c-format
msgid ""
-"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"
-msgstr "%s ç›®å‰ç¼“冲: 尺寸 = %hu B / 已用 = %hu B / æ•°é‡ = %hu / å¹³å‡ = %hu B\n"
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
+msgstr "%s ç›®å‰ç¼“冲: 尺寸 = %hu B / 已用 = %hu B / æ•°é‡ = %hu / å¹³å‡ = %u B\n"
-#: strcache.c:319
+#: src/strcache.c:319
#, c-format
msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
msgstr "%s 其他已用: 总共 = %lu B / æ•°é‡ = %lu / å¹³å‡ = %lu B\n"
-#: strcache.c:322
+#: src/strcache.c:322
#, c-format
msgid ""
"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
msgstr ""
"%s 其他空余: 总共 = %lu B / 最大 = %lu B / æœ€å° = %lu B / å¹³å‡ = %hu B\n"
-#: strcache.c:326
+#: src/strcache.c:326
#, c-format
msgid ""
"\n"
@@ -1978,7 +2025,7 @@ msgstr ""
"\n"
"%s strcache 性能:查找 = %lu / 命中率 = %lu%%\n"
-#: strcache.c:328
+#: src/strcache.c:328
msgid ""
"# hash-table stats:\n"
"# "
@@ -1986,44 +2033,44 @@ msgstr ""
"# æ‚凑表统计数æ®:\n"
"# "
-#: variable.c:1629
+#: src/variable.c:1653
msgid "automatic"
msgstr "自动"
-#: variable.c:1632
+#: src/variable.c:1656
msgid "default"
msgstr "默认"
-#: variable.c:1635
+#: src/variable.c:1659
msgid "environment"
msgstr "环境"
-#: variable.c:1638
+#: src/variable.c:1662
msgid "makefile"
msgstr "makefile"
-#: variable.c:1641
+#: src/variable.c:1665
msgid "environment under -e"
msgstr "-e 指定的环境å˜é‡"
-#: variable.c:1644
+#: src/variable.c:1668
msgid "command line"
msgstr "命令行"
-#: variable.c:1647
+#: src/variable.c:1671
msgid "'override' directive"
msgstr "“overrideâ€æŒ‡ä»¤"
-#: variable.c:1658
+#: src/variable.c:1682
#, c-format
msgid " (from '%s', line %lu)"
msgstr " (从“%sâ€ï¼Œè¡Œ %lu)"
-#: variable.c:1721
+#: src/variable.c:1745
msgid "# variable set hash-table stats:\n"
msgstr "# å˜é‡çš„æ‚凑表状æ€:\n"
-#: variable.c:1732
+#: src/variable.c:1756
msgid ""
"\n"
"# Variables\n"
@@ -2031,7 +2078,7 @@ msgstr ""
"\n"
"# å˜é‡\n"
-#: variable.c:1736
+#: src/variable.c:1760
msgid ""
"\n"
"# Pattern-specific Variable Values"
@@ -2039,7 +2086,7 @@ msgstr ""
"\n"
"# Pattern-specific å˜é‡å€¼"
-#: variable.c:1750
+#: src/variable.c:1774
msgid ""
"\n"
"# No pattern-specific variable values."
@@ -2047,7 +2094,7 @@ msgstr ""
"\n"
"# 没有 pattern-specific å˜é‡çš„值。"
-#: variable.c:1752
+#: src/variable.c:1776
#, c-format
msgid ""
"\n"
@@ -2056,47 +2103,47 @@ msgstr ""
"\n"
"# %u 个 pattern-specific å˜é‡çš„值"
-#: variable.h:224
+#: src/variable.h:229
#, c-format
msgid "warning: undefined variable '%.*s'"
msgstr "警告:未定义的å˜é‡â€œ%.*sâ€"
-#: vmsfunctions.c:91
+#: src/vmsfunctions.c:91
#, c-format
msgid "sys$search() failed with %d\n"
msgstr "sys$search() 失败并返回 %d\n"
-#: vmsjobs.c:242
+#: src/vmsjobs.c:244
#, c-format
msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
msgstr "-警告, ä½ å¯èƒ½å¿…须从 DCL é‡æ–°å¯ç”¨ CTRL-Y 处ç†ã€‚\n"
-#: vmsjobs.c:679
+#: src/vmsjobs.c:681
#, c-format
msgid "BUILTIN CD %s\n"
msgstr "BUILTIN CD %s\n"
-#: vmsjobs.c:1228
+#: src/vmsjobs.c:1224
#, c-format
msgid "DCL: %s\n"
msgstr "DCL:%s\n"
-#: vmsjobs.c:1288
+#: src/vmsjobs.c:1284
#, c-format
msgid "Append output to %s\n"
msgstr "将输出追加到 %s\n"
-#: vmsjobs.c:1313
+#: src/vmsjobs.c:1309
#, c-format
msgid "Append %.*s and cleanup\n"
msgstr "追加 %.*s 并清ç†\n"
-#: vmsjobs.c:1326
+#: src/vmsjobs.c:1322
#, c-format
msgid "Executing %s instead\n"
msgstr "执行 %s 作为替代\n"
-#: vpath.c:603
+#: src/vpath.c:603
msgid ""
"\n"
"# VPATH Search Paths\n"
@@ -2104,11 +2151,11 @@ msgstr ""
"\n"
"# VPATH æœç´¢è·¯å¾„\n"
-#: vpath.c:620
+#: src/vpath.c:620
msgid "# No 'vpath' search paths."
msgstr "# 没有“vpathâ€æœç´¢è·¯å¾„。"
-#: vpath.c:622
+#: src/vpath.c:622
#, c-format
msgid ""
"\n"
@@ -2117,7 +2164,7 @@ msgstr ""
"\n"
"# %u “vpathâ€æœç´¢è·¯å¾„。\n"
-#: vpath.c:625
+#: src/vpath.c:625
msgid ""
"\n"
"# No general ('VPATH' variable) search path."
@@ -2125,7 +2172,7 @@ msgstr ""
"\n"
"# 没有通用æœç´¢è·¯å¾„(“VPATHâ€å˜é‡)。"
-#: vpath.c:631
+#: src/vpath.c:631
msgid ""
"\n"
"# General ('VPATH' variable) search path:\n"
@@ -2135,37 +2182,61 @@ msgstr ""
"# 通用æœç´¢è·¯å¾„(“VPATHâ€å˜é‡):\n"
"# "
-#: w32/w32os.c:46
+#: src/w32/w32os.c:44
#, c-format
msgid "Jobserver slots limited to %d\n"
-msgstr "jobserver 槽ä½æ•°é™åˆ¶ä¸º %d\n"
+msgstr "Jobserver 槽ä½æ•°é™åˆ¶ä¸º %d\n"
-#: w32/w32os.c:62
+#: src/w32/w32os.c:60
#, c-format
msgid "creating jobserver semaphore: (Error %ld: %s)"
msgstr "正创建 jobserver ä¿¡å·é‡ï¼šï¼ˆé”™è¯¯ %ld:%s)"
-#: w32/w32os.c:81
+#: src/w32/w32os.c:79
#, c-format
msgid ""
"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
msgstr "内部错误:无法打开 jobserver ä¿¡å·é‡â€œ%sâ€ï¼šï¼ˆé”™è¯¯ %ld:%s)"
-#: w32/w32os.c:84
+#: src/w32/w32os.c:82
#, c-format
msgid "Jobserver client (semaphore %s)\n"
-msgstr "jobserver 客户端(信å·é‡ %s)\n"
+msgstr "Jobserver 客户端(信å·é‡ %s)\n"
-#: w32/w32os.c:125
+#: src/w32/w32os.c:123
#, c-format
msgid "release jobserver semaphore: (Error %ld: %s)"
msgstr "释放 jobserver ä¿¡å·é‡ï¼šï¼ˆé”™è¯¯ %ld:%s)"
-#: w32/w32os.c:192
+#: src/w32/w32os.c:194
#, c-format
msgid "semaphore or child process wait: (Error %ld: %s)"
msgstr "ä¿¡å·é‡æˆ–å­è¿›ç¨‹ç­‰å¾…:(错误 %ld:%s)"
+#~ msgid "%s: %s: Command not found\n"
+#~ msgstr "%s:%s:命令未找到\n"
+
+#~ msgid "%s[%u]: %s: Command not found\n"
+#~ msgstr "%s[%u]:%s:命令未找到\n"
+
+#~ msgid "%s: Shell program not found"
+#~ msgstr "%s:未找到 shell 程åº"
+
+#~ msgid "%s is suspending for 30 seconds..."
+#~ msgstr "%s 正在挂起 30 秒..."
+
+#~ msgid "done sleep(30). Continuing.\n"
+#~ msgstr "ç¡çœ å®Œæˆ(30)。继续。\n"
+
+#~ msgid "Unknown error %d"
+#~ msgstr "未知错误 %d"
+
+#~ msgid "Warning: File '%s' has modification time in the future"
+#~ msgstr "警告:文件“%sâ€çš„修改时间在未æ¥"
+
+#~ msgid " terminal."
+#~ msgstr " 终端。"
+
#~ msgid "%s: recipe for target '%s' failed"
#~ msgstr "%s: '%s' 的命令é…方失败"
diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo
new file mode 100644
index 0000000..bf951d3
--- /dev/null
+++ b/po/zh_TW.gmo
Binary files differ
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100644
index 0000000..768ae37
--- /dev/null
+++ b/po/zh_TW.po
@@ -0,0 +1,2222 @@
+# Chinese (traditional) translation for make.
+# Copyright (C) 2002 Free Software Foundation, Inc.
+# This file is distributed under the same license as the make package.
+#
+# Wang Li <charles@linux.net.cn>, 2002.
+# LI Daobing <lidaobing@gmail.com>, 2008, 2013.
+# Mingye Wang <arthur200126@gmail.com>, 2015, 2016.
+# Y.C Cheng <mail@ycheng.net>, 2017.
+# Boyuan Yang <073plan@gmail.com>, 2018, 2019.
+# pan93412 <pan93412@gmail.com>, 2019, 2020.
+msgid ""
+msgstr ""
+"Project-Id-Version: make 4.2.93\n"
+"Report-Msgid-Bugs-To: bug-make@gnu.org\n"
+"POT-Creation-Date: 2020-01-19 15:34-0500\n"
+"PO-Revision-Date: 2020-01-03 20:13+0800\n"
+"Last-Translator: pan93412 <pan93412@gmail.com>\n"
+"Language-Team: Chinese (traditional) <zh-l10n@lists.linux.org.tw>\n"
+"Language: zh_TW\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Lokalize 19.12.0\n"
+"X-ZhConverter: ç¹åŒ–姬 dict-4ac8d2ed-r906 @ 2019/10/24 21:28:21 | https://"
+"zhconvert.org\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: src/ar.c:46
+#, c-format
+msgid "attempt to use unsupported feature: '%s'"
+msgstr "試圖使用ä¸æ”¯æ´çš„功能:「%sã€"
+
+#: src/ar.c:123
+#, c-format
+msgid "touch archive member is not available on VMS"
+msgstr "VMS 系統上ä¸æ”¯æ´ touch å°å­˜æˆå“¡"
+
+#: src/ar.c:147
+#, c-format
+msgid "touch: Archive '%s' does not exist"
+msgstr "touch:å°å­˜æª”案「%sã€ä¸å­˜åœ¨"
+
+#: src/ar.c:150
+#, c-format
+msgid "touch: '%s' is not a valid archive"
+msgstr "touch:「%sã€ä¸æ˜¯æœ‰æ•ˆçš„å°å­˜æª”案"
+
+#: src/ar.c:157
+#, c-format
+msgid "touch: Member '%s' does not exist in '%s'"
+msgstr "touch:在「%2$sã€ä¸­ä¸å­˜åœ¨æˆå“¡ã€Œ%1$sã€"
+
+#: src/ar.c:164
+#, c-format
+msgid "touch: Bad return code from ar_member_touch on '%s'"
+msgstr "touch:「%sã€ä¸Šçš„ ar_member_touch 的返回碼ä¸ç•¶"
+
+#: src/arscan.c:130
+#, c-format
+msgid "lbr$set_module() failed to extract module info, status = %d"
+msgstr "lbr$set_modules() å–得模組訊æ¯å¤±æ•—,返回狀態 = %d"
+
+#: src/arscan.c:236
+#, c-format
+msgid "lbr$ini_control() failed with status = %d"
+msgstr "lbr$ini_control() 失敗,返回狀態 = %d"
+
+#: src/arscan.c:261
+#, c-format
+msgid "unable to open library '%s' to lookup member status %d"
+msgstr "無法打開函å¼åº«ã€Œ%sã€ä»¥å°‹æ‰¾æˆå“¡ï¼Œç‹€æ…‹ %d"
+
+#: src/arscan.c:944
+#, c-format
+msgid "Member '%s'%s: %ld bytes at %ld (%ld).\n"
+msgstr "æˆå“¡ã€Œ%sã€%s: %ld ä½å…ƒçµ„æ–¼ %ld (%ld)。\n"
+
+#: src/arscan.c:945
+msgid " (name might be truncated)"
+msgstr " (å稱å¯èƒ½è¢«æˆªæ–·)"
+
+#: src/arscan.c:947
+#, c-format
+msgid " Date %s"
+msgstr " 日期 %s"
+
+#: src/arscan.c:948
+#, c-format
+msgid " uid = %d, gid = %d, mode = 0%o.\n"
+msgstr " uid = %d,gid = %d,mode = 0%o。\n"
+
+#: src/commands.c:403
+#, c-format
+msgid "Recipe has too many lines (%ud)"
+msgstr "指令方案行數太多 (%ud)"
+
+#: src/commands.c:504
+msgid "*** Break.\n"
+msgstr "*** 中斷。\n"
+
+#: src/commands.c:628
+#, c-format
+msgid "*** [%s] Archive member '%s' may be bogus; not deleted"
+msgstr "*** [%s] å°å­˜æˆå“¡ã€Œ%sã€å¯èƒ½æ˜¯å‡çš„;未刪除"
+
+# 是化學的æˆåˆ†ï¼Œæ˜¯ç‰¹æŠ€ï¼
+#: src/commands.c:632
+#, c-format
+msgid "*** Archive member '%s' may be bogus; not deleted"
+msgstr "*** å°å­˜æˆå“¡ã€Œ%sã€å¯èƒ½æ˜¯å‡çš„;未刪除"
+
+#: src/commands.c:646
+#, c-format
+msgid "*** [%s] Deleting file '%s'"
+msgstr "*** [%s] 正在刪除檔案「%sã€"
+
+#: src/commands.c:648
+#, c-format
+msgid "*** Deleting file '%s'"
+msgstr "*** 正在刪除檔案「%sã€"
+
+#: src/commands.c:684
+msgid "# recipe to execute"
+msgstr "# è¦åŸ·è¡Œçš„方案"
+
+#: src/commands.c:687
+msgid " (built-in):"
+msgstr " (內建):"
+
+#: src/commands.c:689
+#, c-format
+msgid " (from '%s', line %lu):\n"
+msgstr " (從「%sã€ï¼Œè¡Œ %lu):\n"
+
+#: src/dir.c:1073
+msgid ""
+"\n"
+"# Directories\n"
+msgstr ""
+"\n"
+"# 目錄\n"
+
+#: src/dir.c:1085
+#, c-format
+msgid "# %s: could not be stat'd.\n"
+msgstr "# %s:無法å°å…¶é€²è¡Œ stat 動作。\n"
+
+#: src/dir.c:1089
+msgid "# %s (key %s, mtime %I64u): could not be opened.\n"
+msgstr "# %s (é—œéµå­— %s,修改時間 %I64u):無法打開。\n"
+
+#: src/dir.c:1094
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): could not be opened.\n"
+msgstr "# %s (è£ç½® %d,i-節點 [%d,%d,%d]):無法打開。\n"
+
+#: src/dir.c:1099
+#, c-format
+msgid "# %s (device %ld, inode %ld): could not be opened.\n"
+msgstr "# %s (è£ç½® %ld,i-節點 %ld):無法打開。\n"
+
+#: src/dir.c:1126
+msgid "# %s (key %s, mtime %I64u): "
+msgstr "# %s (é—œéµå­— %s,修改時間 %I64u):"
+
+#: src/dir.c:1131
+#, c-format
+msgid "# %s (device %d, inode [%d,%d,%d]): "
+msgstr "# %s (è£ç½® %d,i-節點 [%d,%d,%d]):"
+
+#: src/dir.c:1136
+#, c-format
+msgid "# %s (device %ld, inode %ld): "
+msgstr "# %s (è£ç½® %ld,i-節點 %ld):"
+
+#: src/dir.c:1142 src/dir.c:1163
+msgid "No"
+msgstr "ç„¡"
+
+#: src/dir.c:1145 src/dir.c:1166
+msgid " files, "
+msgstr " 檔案, "
+
+#: src/dir.c:1147 src/dir.c:1168
+msgid "no"
+msgstr "ç„¡"
+
+#: src/dir.c:1150
+msgid " impossibilities"
+msgstr " ä¸å¯èƒ½"
+
+#: src/dir.c:1154
+msgid " so far."
+msgstr " 迄今為止。"
+
+#: src/dir.c:1171
+#, c-format
+msgid " impossibilities in %lu directories.\n"
+msgstr " ä¸å¯èƒ½åœ¨ %lu 目錄中。\n"
+
+#: src/expand.c:125
+#, c-format
+msgid "Recursive variable '%s' references itself (eventually)"
+msgstr "éžè¿´è®Šæ•¸ã€Œ%sã€ï¼ˆæœ€çµ‚將會)引用自身"
+
+#: src/expand.c:271
+#, c-format
+msgid "unterminated variable reference"
+msgstr "未終止的變數引用"
+
+#: src/file.c:278
+#, c-format
+msgid "Recipe was specified for file '%s' at %s:%lu,"
+msgstr "關於檔案「%sã€çš„指令方案在 %s:%lu 處指定,"
+
+#: src/file.c:283
+#, c-format
+msgid "Recipe for file '%s' was found by implicit rule search,"
+msgstr "關於檔案「%sã€çš„指令方案é€éŽéš±å«è¦å‰‡æœå°‹è€Œæ‰¾åˆ°ï¼Œ"
+
+#: src/file.c:287
+#, c-format
+msgid "but '%s' is now considered the same file as '%s'."
+msgstr "但「%sã€ç¾åœ¨è¢«çœ‹åšã€Œ%sã€çš„åŒä¸€å€‹æª”案。"
+
+#: src/file.c:290
+#, c-format
+msgid "Recipe for '%s' will be ignored in favor of the one for '%s'."
+msgstr "「%sã€çš„指令方案被忽略,轉而使用「%sã€çš„。"
+
+#: src/file.c:310
+#, c-format
+msgid "can't rename single-colon '%s' to double-colon '%s'"
+msgstr "無法將單冒號「%sã€é‡æ–°å‘½å為雙冒號「%sã€"
+
+#: src/file.c:316
+#, c-format
+msgid "can't rename double-colon '%s' to single-colon '%s'"
+msgstr "無法將雙冒號「%sã€é‡æ–°å‘½å為單冒號「%sã€"
+
+#: src/file.c:408
+#, c-format
+msgid "*** Deleting intermediate file '%s'"
+msgstr "*** 正在刪除中間檔案「%sã€"
+
+#: src/file.c:412
+#, c-format
+msgid "Removing intermediate files...\n"
+msgstr "正在刪除中間檔案...\n"
+
+#: src/file.c:872
+msgid "Current time"
+msgstr "ç›®å‰æ™‚é–“"
+
+#: src/file.c:876
+#, c-format
+msgid "%s: Timestamp out of range; substituting %s"
+msgstr "%s:時間標記超出範åœï¼›æ­£åœ¨å–代 %s"
+
+#: src/file.c:1016
+msgid "# Not a target:"
+msgstr "# ä¸æ˜¯ä¸€å€‹ç›®æ¨™ï¼š"
+
+#: src/file.c:1021
+msgid "# Precious file (prerequisite of .PRECIOUS)."
+msgstr "# é‡è¦æª”案 (.PRECIOUS çš„å‰æ)。"
+
+#: src/file.c:1023
+msgid "# Phony target (prerequisite of .PHONY)."
+msgstr "# å‡ç›®æ¨™ (.PHONY çš„å‰æ)。"
+
+#: src/file.c:1025
+msgid "# Command line target."
+msgstr "# 指令列目標。"
+
+#: src/file.c:1027
+msgid "# A default, MAKEFILES, or -include/sinclude makefile."
+msgstr "# é è¨­çš„ã€MAKEFILES 指定的ã€-include/sinclude 包å«çš„ makefile。"
+
+#: src/file.c:1029
+msgid "# Builtin rule"
+msgstr "# 內建è¦å‰‡"
+
+#: src/file.c:1031
+msgid "# Implicit rule search has been done."
+msgstr "# å°éš±å«è¦å‰‡çš„æœå°‹å·²å®Œæˆã€‚"
+
+#: src/file.c:1032
+msgid "# Implicit rule search has not been done."
+msgstr "# å°éš±å«è¦å‰‡çš„æœå°‹å°šæœªå®Œæˆã€‚"
+
+#: src/file.c:1034
+#, c-format
+msgid "# Implicit/static pattern stem: '%s'\n"
+msgstr "# éš±å«/éœæ…‹æ¨¡å¼ä¸»å¹¹ï¼šã€Œ%sã€\n"
+
+#: src/file.c:1036
+msgid "# File is an intermediate prerequisite."
+msgstr "# 檔案是一個中間å‰æ。"
+
+#: src/file.c:1040
+msgid "# Also makes:"
+msgstr "# é‚„è¦è£½ä½œï¼š"
+
+#: src/file.c:1046
+msgid "# Modification time never checked."
+msgstr "# 從ä¸æª¢æŸ¥ä¿®æ”¹æ™‚間。"
+
+#: src/file.c:1048
+msgid "# File does not exist."
+msgstr "# 檔案ä¸å­˜åœ¨ã€‚"
+
+#: src/file.c:1050
+msgid "# File is very old."
+msgstr "# 檔案éžå¸¸é™³èˆŠã€‚"
+
+#: src/file.c:1055
+#, c-format
+msgid "# Last modified %s\n"
+msgstr "# 最近更新 %s\n"
+
+#: src/file.c:1058
+msgid "# File has been updated."
+msgstr "# 檔案已經被更新。"
+
+#: src/file.c:1058
+msgid "# File has not been updated."
+msgstr "# 檔案尚未被更新。"
+
+#: src/file.c:1062
+msgid "# Recipe currently running (THIS IS A BUG)."
+msgstr "# 正在執行的方案 (這是 BUG)。"
+
+#: src/file.c:1065
+msgid "# Dependencies recipe running (THIS IS A BUG)."
+msgstr "# 正在執行的ä¾è³´æ€§æ–¹æ¡ˆ (這是 BUG)。"
+
+#: src/file.c:1074
+msgid "# Successfully updated."
+msgstr "# æ›´æ–°æˆåŠŸã€‚"
+
+#: src/file.c:1078
+msgid "# Needs to be updated (-q is set)."
+msgstr "# 需è¦æ›´æ–° (用 -q 設定)。"
+
+#: src/file.c:1081
+msgid "# Failed to be updated."
+msgstr "# 更新失敗。"
+
+#: src/file.c:1086
+msgid "# Invalid value in 'command_state' member!"
+msgstr "# 「command_stateã€æˆå“¡ä¸­å­˜åœ¨ç„¡æ•ˆçš„值ï¼"
+
+#: src/file.c:1105
+msgid ""
+"\n"
+"# Files"
+msgstr ""
+"\n"
+"# 檔案"
+
+#: src/file.c:1109
+msgid ""
+"\n"
+"# files hash-table stats:\n"
+"# "
+msgstr ""
+"\n"
+"# 檔案雜湊表狀態:\n"
+"# "
+
+#: src/file.c:1119
+#, c-format
+msgid "%s: Field '%s' not cached: %s"
+msgstr "%s:欄ä½ã€Œ%sã€æœªè¢«å¿«å–:%s"
+
+#: src/function.c:794
+msgid "non-numeric first argument to 'word' function"
+msgstr "「wordã€å‡½æ•¸çš„第一個åƒæ•¸ä¸æ˜¯æ•¸å­—"
+
+#: src/function.c:799
+#, c-format
+msgid "first argument to 'word' function must be greater than 0"
+msgstr "「wordã€å‡½æ•¸çš„第一個åƒæ•¸å¿…須大於 0"
+
+#: src/function.c:819
+msgid "non-numeric first argument to 'wordlist' function"
+msgstr "「wordlistã€å‡½æ•¸çš„第一個åƒæ•¸ä¸æ˜¯æ•¸å­—"
+
+#: src/function.c:821
+msgid "non-numeric second argument to 'wordlist' function"
+msgstr "「wordlistã€å‡½æ•¸çš„第二個åƒæ•¸ä¸æ˜¯æ•¸å­—"
+
+# 程å¼è¨­è¨ˆå¸«çš„函數åæ示,還是ä¸è¦å‹•å§ã€‚
+#: src/function.c:1533
+#, c-format
+msgid "windows32_openpipe: DuplicateHandle(In) failed (e=%ld)\n"
+msgstr "windows32_openpipe: DuplicateHandle(In) 失敗 (e=%ld)\n"
+
+#: src/function.c:1557
+#, c-format
+msgid "windows32_openpipe: DuplicateHandle(Err) failed (e=%ld)\n"
+msgstr "windows32_openpipe: DuplicateHandle(Err) 失敗 (e=%ld)\n"
+
+#: src/function.c:1564
+#, c-format
+msgid "CreatePipe() failed (e=%ld)\n"
+msgstr "CreatePipe() 失敗 (e=%ld)\n"
+
+#: src/function.c:1572
+#, c-format
+msgid "windows32_openpipe(): process_init_fd() failed\n"
+msgstr "windows32_openpipe(): process_init_fd() 失敗\n"
+
+#: src/function.c:1857
+#, c-format
+msgid "Cleaning up temporary batch file %s\n"
+msgstr "正在清除暫時批次檔 %s\n"
+
+#: src/function.c:2230 src/function.c:2255
+#, c-format
+msgid "file: missing filename"
+msgstr "file:缺少檔案å"
+
+#: src/function.c:2234 src/function.c:2265
+#, c-format
+msgid "open: %s: %s"
+msgstr "open: %s: %s"
+
+#: src/function.c:2242
+#, c-format
+msgid "write: %s: %s"
+msgstr "write: %s: %s"
+
+#: src/function.c:2245 src/function.c:2282
+#, c-format
+msgid "close: %s: %s"
+msgstr "close:%s:%s"
+
+#: src/function.c:2258
+#, c-format
+msgid "file: too many arguments"
+msgstr "file:太多åƒæ•¸"
+
+#: src/function.c:2277
+#, c-format
+msgid "read: %s: %s"
+msgstr "read:%s:%s"
+
+#: src/function.c:2290
+#, c-format
+msgid "file: invalid file operation: %s"
+msgstr "file:無效檔案(file)動作:%s"
+
+#: src/function.c:2405
+#, c-format
+msgid "insufficient number of arguments (%d) to function '%s'"
+msgstr "函數「%2$sã€çš„åƒæ•¸æ•¸é‡ (%1$d) ä¸å¤ "
+
+#: src/function.c:2417
+#, c-format
+msgid "unimplemented on this platform: function '%s'"
+msgstr "在本平å°ä¸Šæœªå¯¦ç¾ï¼šå‡½æ•¸ã€Œ%sã€"
+
+#: src/function.c:2483
+#, c-format
+msgid "unterminated call to function '%s': missing '%c'"
+msgstr "å°å‡½æ•¸ã€Œ%sã€çš„未終止的呼å«ï¼šéºæ¼ã€Œ%cã€"
+
+#: src/function.c:2667
+#, c-format
+msgid "Empty function name"
+msgstr "空函數å"
+
+#: src/function.c:2669
+#, c-format
+msgid "Invalid function name: %s"
+msgstr "無效的函數å稱:%s"
+
+#: src/function.c:2671
+#, c-format
+msgid "Function name too long: %s"
+msgstr "函數å稱太長:%s"
+
+#: src/function.c:2674
+#, c-format
+msgid "Invalid minimum argument count (%u) for function %s"
+msgstr "函數「%2$sã€çš„最少åƒæ•¸æ•¸é‡ (%1$u) 無效"
+
+#: src/function.c:2677
+#, c-format
+msgid "Invalid maximum argument count (%u) for function %s"
+msgstr "函數「%2$sã€çš„最多åƒæ•¸æ•¸é‡ (%1$u) 無效"
+
+#: src/getopt.c:659
+#, c-format
+msgid "%s: option '%s' is ambiguous\n"
+msgstr "%s:é¸é …「%sã€å«ç¾©ä¸æ¸…\n"
+
+#: src/getopt.c:683
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s:é¸é …「--%sã€ä¸å…許åƒæ•¸\n"
+
+#: src/getopt.c:688
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s:é¸é …「%c%sã€ä¸å…許åƒæ•¸\n"
+
+#: src/getopt.c:705 src/getopt.c:878
+#, c-format
+msgid "%s: option '%s' requires an argument\n"
+msgstr "%s:é¸é …「%sã€éœ€è¦ä¸€å€‹åƒæ•¸\n"
+
+#: src/getopt.c:734
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s:無法識別的é¸é …「--%sã€\n"
+
+#: src/getopt.c:738
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s:無法識別的é¸é …「%c%sã€\n"
+
+#: src/getopt.c:764
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s:é¸é …無效 ─ %c\n"
+
+#: src/getopt.c:767
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr "%s:無效é¸é … -- %c\n"
+
+#: src/getopt.c:797 src/getopt.c:927
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s:é¸é …需è¦ä¸€å€‹åƒæ•¸ -- %c\n"
+
+#: src/getopt.c:844
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s:é¸é …「-W %sã€å«ç¾©ä¸æ¸…\n"
+
+#: src/getopt.c:862
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s:é¸é …「-W %sã€ä¸å…許給出åƒæ•¸\n"
+
+#: src/guile.c:58
+#, c-format
+msgid "guile: Expanding '%s'\n"
+msgstr "guile: 正展開 '%s'\n"
+
+#: src/guile.c:74
+#, c-format
+msgid "guile: Evaluating '%s'\n"
+msgstr "guile: 正求值 '%s'\n"
+
+#: src/hash.c:50
+#, c-format
+msgid "can't allocate %lu bytes for hash table: memory exhausted"
+msgstr "ç„¡æ³•ç‚ºé›œæ¹Šè¡¨åˆ†é… %lu ä½å…ƒçµ„: 記憶體耗盡"
+
+#: src/hash.c:280
+#, c-format
+msgid "Load=%lu/%lu=%.0f%%, "
+msgstr "負載=%lu/%lu=%.0f%%, "
+
+#: src/hash.c:282
+#, c-format
+msgid "Rehash=%u, "
+msgstr "é‡æ–°é›œæ¹Š=%u, "
+
+#: src/hash.c:283
+#, c-format
+msgid "Collisions=%lu/%lu=%.0f%%"
+msgstr "碰撞=%lu/%lu=%.0f%%"
+
+#: src/implicit.c:38
+#, c-format
+msgid "Looking for an implicit rule for '%s'.\n"
+msgstr "正在為「%sã€å°‹æ‰¾éš±å«è¦å‰‡ã€‚\n"
+
+#: src/implicit.c:54
+#, c-format
+msgid "Looking for archive-member implicit rule for '%s'.\n"
+msgstr "正在為「%sã€å°‹æ‰¾å°å­˜æˆå“¡éš±å«è¦å‰‡ã€‚\n"
+
+#: src/implicit.c:311
+#, c-format
+msgid "Avoiding implicit rule recursion.\n"
+msgstr "é¿å…éš±å«è¦å‰‡éžè¿´ã€‚\n"
+
+#: src/implicit.c:484
+#, c-format
+msgid "Stem too long: '%s%.*s'.\n"
+msgstr "主幹太長:「%s%.*sã€ã€‚\n"
+
+#: src/implicit.c:490
+#, c-format
+msgid "Trying pattern rule with stem '%.*s'.\n"
+msgstr "用主幹「%.*sã€å˜—試符åˆæ¨¡å¼è¦å‰‡ã€‚\n"
+
+#: src/implicit.c:717
+#, c-format
+msgid "Rejecting impossible rule prerequisite '%s'.\n"
+msgstr "拒絕ä¸å¯èƒ½çš„è¦å‰‡å‰æ「%sã€ã€‚\n"
+
+#: src/implicit.c:718
+#, c-format
+msgid "Rejecting impossible implicit prerequisite '%s'.\n"
+msgstr "拒絕ä¸å¯èƒ½çš„éš±å«å‰æ「%sã€ã€‚\n"
+
+#: src/implicit.c:732
+#, c-format
+msgid "Trying rule prerequisite '%s'.\n"
+msgstr "嘗試è¦å‰‡å‰æ「%sã€ã€‚\n"
+
+#: src/implicit.c:733
+#, c-format
+msgid "Trying implicit prerequisite '%s'.\n"
+msgstr "嘗試隱å«å‰æ「%sã€ã€‚\n"
+
+#: src/implicit.c:772
+#, c-format
+msgid "Found prerequisite '%s' as VPATH '%s'\n"
+msgstr "å‰æ「%sã€åœ¨ VPATH「%sã€ä¸­ç™¼ç¾\n"
+
+#: src/implicit.c:786
+#, c-format
+msgid "Looking for a rule with intermediate file '%s'.\n"
+msgstr "正在尋找包å«ä¸­é–“檔案「%sã€çš„è¦å‰‡ã€‚\n"
+
+#: src/job.c:370
+msgid "Cannot create a temporary file\n"
+msgstr "無法建立暫存檔\n"
+
+#: src/job.c:548
+msgid " (core dumped)"
+msgstr " (已傾å°æ ¸å¿ƒ)"
+
+#: src/job.c:553
+msgid " (ignored)"
+msgstr " (已忽略)"
+
+#: src/job.c:557 src/job.c:1892
+msgid "<builtin>"
+msgstr "<內建>"
+
+#: src/job.c:573
+#, c-format
+msgid "%s[%s: %s] Error %d%s"
+msgstr "%s[%s:%s] 錯誤 %d%s"
+
+#: src/job.c:662
+#, c-format
+msgid "*** Waiting for unfinished jobs...."
+msgstr "*** 正在等待未完æˆçš„作業...."
+
+#: src/job.c:704
+#, c-format
+msgid "Live child %p (%s) PID %s %s\n"
+msgstr "使用中å­ç¨‹åº %p (%s) PID %s %s\n"
+
+#: src/job.c:706 src/job.c:900 src/job.c:1072 src/job.c:1644
+#, c-format
+msgid " (remote)"
+msgstr " (é ç«¯)"
+
+#: src/job.c:898
+#, c-format
+msgid "Reaping winning child %p PID %s %s\n"
+msgstr "正在中止ç²å‹çš„å­ç¨‹åº %p PID %s %s\n"
+
+#: src/job.c:899
+#, c-format
+msgid "Reaping losing child %p PID %s %s\n"
+msgstr "正在中止失敗的å­ç¨‹åº %p PID %s %s\n"
+
+#: src/job.c:950
+#, c-format
+msgid "Cleaning up temp batch file %s\n"
+msgstr "正在清除暫時批次檔 %s\n"
+
+#: src/job.c:956
+#, c-format
+msgid "Cleaning up temp batch file %s failed (%d)\n"
+msgstr "清ç†æš«æ™‚批次檔 %s 失敗 (%d)\n"
+
+#: src/job.c:1071
+#, c-format
+msgid "Removing child %p PID %s%s from chain.\n"
+msgstr "從éˆä¸­åˆªé™¤å­ç¨‹åº %p PID %s%s。\n"
+
+#: src/job.c:1120
+#, c-format
+msgid "Released token for child %p (%s).\n"
+msgstr "為å­ç¨‹åº %p (%s) 釋放憑證 (token)。\n"
+
+#: src/job.c:1575 src/job.c:2487
+#, c-format
+msgid "process_easy() failed to launch process (e=%ld)\n"
+msgstr "process_easy() 啟動處ç†ç¨‹åºå¤±æ•— (e=%ld)\n"
+
+#: src/job.c:1579 src/job.c:2491
+#, c-format
+msgid ""
+"\n"
+"Counted %d args in failed launch\n"
+msgstr ""
+"\n"
+"失敗執行中共有 %d 個åƒæ•¸ã€‚\n"
+
+#: src/job.c:1642
+#, c-format
+msgid "Putting child %p (%s) PID %s%s on the chain.\n"
+msgstr "å°‡å­ç¨‹åº %p (%s) PID %s%s 放入éˆã€‚\n"
+
+#: src/job.c:1875
+#, c-format
+msgid "Obtained token for child %p (%s).\n"
+msgstr "å–得至處ç†ç¨‹åº %p (%s) 的標記。\n"
+
+#: src/job.c:1902
+#, c-format
+msgid "%s: target '%s' does not exist"
+msgstr "%s: 目標檔案「%sã€ä¸å­˜åœ¨"
+
+#: src/job.c:1905
+#, c-format
+msgid "%s: update target '%s' due to: %s"
+msgstr "%s:更新「%sã€ï¼Œå› ç‚ºï¼š%s"
+
+#: src/job.c:2108
+#, c-format
+msgid "cannot enforce load limits on this operating system"
+msgstr "無法在本作業系統中實施負載é™åˆ¶"
+
+#: src/job.c:2110
+msgid "cannot enforce load limit: "
+msgstr "無法實施負載é™åˆ¶ï¼š"
+
+#: src/job.c:2200
+#, c-format
+msgid "no more file handles: could not duplicate stdin\n"
+msgstr "沒有剩餘的檔案處ç†å™¨: 無法複製標準輸入\n"
+
+#: src/job.c:2212
+#, c-format
+msgid "no more file handles: could not duplicate stdout\n"
+msgstr "沒有剩餘的檔案處ç†å™¨: 無法複製標準輸出\n"
+
+#: src/job.c:2226
+#, c-format
+msgid "no more file handles: could not duplicate stderr\n"
+msgstr "沒有剩餘的檔案處ç†å™¨: 無法複製標準錯誤\n"
+
+#: src/job.c:2241
+#, c-format
+msgid "Could not restore stdin\n"
+msgstr "無法還原標準輸入\n"
+
+#: src/job.c:2249
+#, c-format
+msgid "Could not restore stdout\n"
+msgstr "無法還原標準輸出\n"
+
+#: src/job.c:2257
+#, c-format
+msgid "Could not restore stderr\n"
+msgstr "無法還原標準錯誤\n"
+
+#: src/job.c:2520
+#, c-format
+msgid "make reaped child pid %s, still waiting for pid %s\n"
+msgstr "make 已中止的å­ç¨‹åº pid %s,ä»åœ¨ç­‰å¾… pid %s\n"
+
+#: src/job.c:2623
+#, c-format
+msgid "spawnvpe: environment space might be exhausted"
+msgstr "spawnvpe: 環境變數空間å¯èƒ½æœƒè€—盡"
+
+#: src/job.c:2862
+#, c-format
+msgid "$SHELL changed (was '%s', now '%s')\n"
+msgstr "$SHELL 已改變 (原為「%sã€ï¼Œç¾ç‚ºã€Œ%sã€)\n"
+
+#: src/job.c:3300 src/job.c:3485
+#, c-format
+msgid "Creating temporary batch file %s\n"
+msgstr "正在建立暫時批檔案 %s\n"
+
+#: src/job.c:3308
+#, c-format
+msgid ""
+"Batch file contents:\n"
+"\t@echo off\n"
+msgstr ""
+"批次檔內容:\n"
+"\t@echo off\n"
+
+#: src/job.c:3497
+#, c-format
+msgid ""
+"Batch file contents:%s\n"
+"\t%s\n"
+msgstr ""
+"批次檔內容:%s\n"
+"\t%s\n"
+
+#: src/job.c:3605
+#, c-format
+msgid "%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"
+msgstr "%s (行 %d) 錯誤的 shell 上下文 (!unixy && !batch_mode_shell)\n"
+
+#: src/load.c:60
+#, c-format
+msgid "Failed to open global symbol table: %s"
+msgstr "打開全域符號表失敗:%s"
+
+#: src/load.c:97
+#, c-format
+msgid "Loaded object %s is not declared to be GPL compatible"
+msgstr "已載入的物件 %s 未è²æ˜Žç‚º GPL 相容"
+
+#: src/load.c:104
+#, c-format
+msgid "Failed to load symbol %s from %s: %s"
+msgstr "從 %2$s 載入符號 %1$s 失敗:%3$s"
+
+#: src/load.c:149
+#, c-format
+msgid "Empty symbol name for load: %s"
+msgstr "è¦è¼‰å…¥çš„符號å為空:%s"
+
+#: src/load.c:204
+#, c-format
+msgid "Loading symbol %s from %s\n"
+msgstr "正從 %2$s 載入符號 %1$s\n"
+
+#: src/load.c:256
+#, c-format
+msgid "The 'load' operation is not supported on this platform."
+msgstr "本平å°ä¸æ”¯æ´ã€Œloadã€å‹•ä½œã€‚"
+
+#: src/main.c:335
+msgid "Options:\n"
+msgstr "é¸é …:\n"
+
+#: src/main.c:336
+msgid " -b, -m Ignored for compatibility.\n"
+msgstr " -b, -m 為相容性而忽略。\n"
+
+#: src/main.c:338
+msgid " -B, --always-make Unconditionally make all targets.\n"
+msgstr " -B, --always-make ç„¡æ¢ä»¶è£½ä½œ (make) 所有目標。\n"
+
+#: src/main.c:340
+msgid ""
+" -C DIRECTORY, --directory=DIRECTORY\n"
+" Change to DIRECTORY before doing anything.\n"
+msgstr " -C 目錄, --directory=目錄 在執行å‰å…ˆåˆ‡æ›åˆ° <目錄>。\n"
+
+#: src/main.c:343
+msgid " -d Print lots of debugging information.\n"
+msgstr " -d 輸出大é‡é™¤éŒ¯è¨Šæ¯ã€‚\n"
+
+#: src/main.c:345
+msgid ""
+" --debug[=FLAGS] Print various types of debugging information.\n"
+msgstr " --debug[=旗標] 輸出å„種除錯訊æ¯ã€‚\n"
+
+#: src/main.c:347
+msgid ""
+" -e, --environment-overrides\n"
+" Environment variables override makefiles.\n"
+msgstr ""
+" -e, --environment-overrides\n"
+" 環境變數覆蓋 makefile 中的變數。\n"
+
+#: src/main.c:350
+msgid ""
+" -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"
+msgstr " -E 字串, --eval=字串 å°‡ <字串> 作為 makefile 語å¥ä¼°å€¼ã€‚\n"
+
+#: src/main.c:352
+msgid ""
+" -f FILE, --file=FILE, --makefile=FILE\n"
+" Read FILE as a makefile.\n"
+msgstr ""
+" -f 檔案, --file=檔案, --makefile=檔案\n"
+" 從 <檔案> 中讀入 makefile。\n"
+
+#: src/main.c:355
+msgid " -h, --help Print this message and exit.\n"
+msgstr " -h, --help 輸出該訊æ¯ä¸¦é›¢é–‹ã€‚\n"
+
+#: src/main.c:357
+msgid " -i, --ignore-errors Ignore errors from recipes.\n"
+msgstr " -i, --ignore-errors 忽略來自指令方案的錯誤。\n"
+
+#: src/main.c:359
+msgid ""
+" -I DIRECTORY, --include-dir=DIRECTORY\n"
+" Search DIRECTORY for included makefiles.\n"
+msgstr " -I 目錄, --include-dir=目錄 在 <目錄> 中æœå°‹è¢«åŒ…å«çš„ makefile。\n"
+
+#: src/main.c:362
+msgid ""
+" -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no "
+"arg.\n"
+msgstr ""
+" -j [N], --jobs[=N] åŒæ™‚å…許 N 個作業;無åƒæ•¸è¡¨æ˜Žå…許無é™å€‹ä½œæ¥­ã€‚\n"
+
+#: src/main.c:364
+msgid ""
+" -k, --keep-going Keep going when some targets can't be made.\n"
+msgstr " -k, --keep-going 當æŸäº›ç›®æ¨™ç„¡æ³•è£½ä½œæ™‚ä»ç„¶ç¹¼çºŒã€‚\n"
+
+#: src/main.c:366
+msgid ""
+" -l [N], --load-average[=N], --max-load[=N]\n"
+" Don't start multiple jobs unless load is below "
+"N.\n"
+msgstr ""
+" -l [N], --load-average[=N], --max-load[=N]\n"
+" 在系統負載高於 N 時ä¸å•Ÿå‹•å¤šä½œæ¥­ã€‚\n"
+
+#: src/main.c:369
+msgid ""
+" -L, --check-symlink-times Use the latest mtime between symlinks and "
+"target.\n"
+msgstr ""
+" -L, --check-symlink-times 使用符號連çµåŠç¬¦è™Ÿé€£çµç›®æ¨™ä¸­ä¿®æ”¹æ™‚間較晚的一"
+"個。\n"
+
+#: src/main.c:371
+msgid ""
+" -n, --just-print, --dry-run, --recon\n"
+" Don't actually run any recipe; just print "
+"them.\n"
+msgstr ""
+" -n, --just-print, --dry-run, --recon\n"
+" åªè¼¸å‡ºæŒ‡ä»¤æ–¹æ¡ˆï¼Œä¸å¯¦éš›åŸ·è¡Œã€‚\n"
+
+#: src/main.c:374
+msgid ""
+" -o FILE, --old-file=FILE, --assume-old=FILE\n"
+" Consider FILE to be very old and don't remake "
+"it.\n"
+msgstr ""
+" -o 檔案, --old-file=檔案, --assume-old=檔案\n"
+" å°‡ <檔案> 當åšå¾ˆèˆŠï¼Œä¸å¿…é‡æ–°è£½ä½œã€‚\n"
+
+#: src/main.c:377
+msgid ""
+" -O[TYPE], --output-sync[=TYPE]\n"
+" Synchronize output of parallel jobs by TYPE.\n"
+msgstr ""
+" -O[é¡žåž‹], --output-sync[=é¡žåž‹]\n"
+" 使用 <é¡žåž‹> æ–¹å¼åŒæ­¥ä¸¦è¡Œä½œæ¥­è¼¸å‡ºã€‚\n"
+
+#: src/main.c:380
+msgid " -p, --print-data-base Print make's internal database.\n"
+msgstr " -p, --print-data-base 輸出 make 的內部資料庫。\n"
+
+#: src/main.c:382
+msgid ""
+" -q, --question Run no recipe; exit status says if up to "
+"date.\n"
+msgstr ""
+" -q, --question ä¸åŸ·è¡Œä»»ä½•æ–¹æ¡ˆï¼›é›¢é–‹ç‹€æ…‹èªªæ˜Žæ˜¯å¦å·²å…¨éƒ¨æ›´æ–°ã€‚\n"
+
+#: src/main.c:384
+msgid " -r, --no-builtin-rules Disable the built-in implicit rules.\n"
+msgstr " -r, --no-builtin-rules åœç”¨å…§å»ºéš±å«è¦å‰‡ã€‚\n"
+
+#: src/main.c:386
+msgid " -R, --no-builtin-variables Disable the built-in variable settings.\n"
+msgstr " -R, --no-builtin-variables åœç”¨å…§å»ºè®Šæ•¸è¨­å®šã€‚\n"
+
+#: src/main.c:388
+msgid " -s, --silent, --quiet Don't echo recipes.\n"
+msgstr " -s, --silent, --quiet ä¸è¼¸å‡ºæ–¹æ¡ˆæŒ‡ä»¤ã€‚\n"
+
+#: src/main.c:390
+msgid " --no-silent Echo recipes (disable --silent mode).\n"
+msgstr " --no-silent å°æ–¹æ¡ˆé€²è¡Œå›žé¡¯ï¼ˆåœç”¨ --silent 模å¼ï¼‰ã€‚\n"
+
+#: src/main.c:392
+msgid ""
+" -S, --no-keep-going, --stop\n"
+" Turns off -k.\n"
+msgstr ""
+" -S, --no-keep-going, --stop\n"
+" 關閉 -k。\n"
+
+#: src/main.c:395
+msgid " -t, --touch Touch targets instead of remaking them.\n"
+msgstr ""
+" -t, --touch touch 目標(更新修改時間)而ä¸æ˜¯é‡æ–°è£½ä½œå®ƒ"
+"們。\n"
+
+#: src/main.c:397
+msgid " --trace Print tracing information.\n"
+msgstr " --trace 輸出跟蹤訊æ¯ã€‚\n"
+
+#: src/main.c:399
+msgid ""
+" -v, --version Print the version number of make and exit.\n"
+msgstr " -v, --version 輸出 make 的版本號並離開。\n"
+
+#: src/main.c:401
+msgid " -w, --print-directory Print the current directory.\n"
+msgstr " -w, --print-directory 輸出目å‰ç›®éŒ„。\n"
+
+#: src/main.c:403
+msgid ""
+" --no-print-directory Turn off -w, even if it was turned on "
+"implicitly.\n"
+msgstr " --no-print-directory 關閉 -w,å³ä½¿ -w é è¨­é–‹å•Ÿã€‚\n"
+
+#: src/main.c:405
+msgid ""
+" -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n"
+" Consider FILE to be infinitely new.\n"
+msgstr ""
+" -W 檔案, --what-if=檔案, --new-file=檔案, --assume-new=檔案\n"
+" å°‡ <檔案> 當åšæœ€æ–°ã€‚\n"
+
+#: src/main.c:408
+msgid ""
+" --warn-undefined-variables Warn when an undefined variable is "
+"referenced.\n"
+msgstr " --warn-undefined-variables 當引用未定義變數的時候發出警告。\n"
+
+#: src/main.c:671
+#, c-format
+msgid "empty string invalid as file name"
+msgstr "空字串是無效的檔案å"
+
+#: src/main.c:754
+#, c-format
+msgid "unknown debug level specification '%s'"
+msgstr "未知的除錯級別定義「%sã€"
+
+#: src/main.c:794
+#, c-format
+msgid "unknown output-sync type '%s'"
+msgstr "ä¸æ˜Žè¼¸å‡ºåŒæ­¥é¡žåž‹ã€Œ%sã€"
+
+#: src/main.c:849
+#, c-format
+msgid "%s: Interrupt/Exception caught (code = 0x%lx, addr = 0x%p)\n"
+msgstr "%s:æ•ç²ä¸­æ–·/異常 (程å¼ç¢¼ = 0x%lx, ä½å€ = 0x%p)\n"
+
+#: src/main.c:856
+#, c-format
+msgid ""
+"\n"
+"Unhandled exception filter called from program %s\n"
+"ExceptionCode = %lx\n"
+"ExceptionFlags = %lx\n"
+"ExceptionAddress = 0x%p\n"
+msgstr ""
+"\n"
+"å¾žç¨‹å¼ %s 產生的未處ç†çš„異常éŽæ¿¾å™¨\n"
+"異常碼 = %lx\n"
+"異常標誌 = %lx\n"
+"異常ä½å€ = 0x%p\n"
+
+#: src/main.c:864
+#, c-format
+msgid "Access violation: write operation at address 0x%p\n"
+msgstr "å­˜å–è¡çªï¼šä½å€ 0x%p 處的寫入動作\n"
+
+#: src/main.c:865
+#, c-format
+msgid "Access violation: read operation at address 0x%p\n"
+msgstr "å­˜å–è¡çªï¼šä½å€ 0x%p 處的讀å–動作\n"
+
+#: src/main.c:941 src/main.c:956
+#, c-format
+msgid "find_and_set_shell() setting default_shell = %s\n"
+msgstr "find_and_set_shell() 設定 default_shell = %s\n"
+
+#: src/main.c:1009
+#, c-format
+msgid "find_and_set_shell() path search set default_shell = %s\n"
+msgstr "find_and_set_shell() 路徑æœå°‹çµæžœè¨­å®š default_shell = %s\n"
+
+#: src/main.c:1609
+#, c-format
+msgid ""
+"warning: jobserver unavailable: using -j1. Add '+' to parent make rule."
+msgstr "警告: jobserver ä¸å¯ç”¨: 正使用 -j1。添加「+ã€åˆ°çˆ¶ make çš„è¦å‰‡ã€‚"
+
+#: src/main.c:1617
+#, c-format
+msgid "warning: -j%d forced in submake: resetting jobserver mode."
+msgstr "警告: å­ make 中強制 -j%d: é‡è¨­ jobserver 模å¼ã€‚"
+
+#: src/main.c:1781
+#, c-format
+msgid "Makefile from standard input specified twice."
+msgstr "兩次指明來自標準輸入的 makefile。"
+
+#: src/main.c:1819 src/vmsjobs.c:1248
+msgid "fopen (temporary file)"
+msgstr "fopen (暫存檔)"
+
+#: src/main.c:1825
+msgid "fwrite (temporary file)"
+msgstr "fwrite (暫存檔)"
+
+#: src/main.c:2004
+#, c-format
+msgid "warning: -j%d forced in makefile: resetting jobserver mode."
+msgstr "警告: å­ make 中強制 -j%d: é‡è¨­ jobserver 模å¼ã€‚"
+
+#: src/main.c:2068
+#, c-format
+msgid "Parallel jobs (-j) are not supported on this platform."
+msgstr "本平å°ä¸æ”¯æ´ä¸¦è¡Œä½œæ¥­ (-j)。"
+
+#: src/main.c:2069
+#, c-format
+msgid "Resetting to single job (-j1) mode."
+msgstr "é‡è¨­ç‚ºå–®ä½œæ¥­æ¨¡å¼ (-j1)。"
+
+#: src/main.c:2109
+#, c-format
+msgid "Symbolic links not supported: disabling -L."
+msgstr "ä¸æ”¯æ´ç¬¦è™Ÿé€£çµï¼šåœç”¨ -L。"
+
+#: src/main.c:2190
+#, c-format
+msgid "Updating makefiles....\n"
+msgstr "正在更新 makefile....\n"
+
+#: src/main.c:2226
+#, c-format
+msgid "Makefile '%s' might loop; not remaking it.\n"
+msgstr "Makefile「%sã€å¯èƒ½å¾ªç’°ï¼›ä¸æœƒé‡æ–°åŸ·è¡Œå®ƒã€‚\n"
+
+#: src/main.c:2303
+#, c-format
+msgid "Failed to remake makefile '%s'."
+msgstr "é‡æ–°åŸ·è¡Œ makefile「%sã€å¤±æ•—。"
+
+#: src/main.c:2323
+#, c-format
+msgid "Included makefile '%s' was not found."
+msgstr "找ä¸åˆ°è¢«å¼•å…¥çš„ makefile「%sã€ã€‚"
+
+#: src/main.c:2328
+#, c-format
+msgid "Makefile '%s' was not found"
+msgstr "找ä¸åˆ° makefile「%sã€"
+
+#: src/main.c:2394
+#, c-format
+msgid "Couldn't change back to original directory."
+msgstr "無法回到原始目錄。"
+
+#: src/main.c:2402
+#, c-format
+msgid "Re-executing[%u]:"
+msgstr "é‡æ–°åŸ·è¡Œ[%u]:"
+
+#: src/main.c:2522
+msgid "unlink (temporary file): "
+msgstr "刪除 (暫存檔):"
+
+#: src/main.c:2555
+#, c-format
+msgid ".DEFAULT_GOAL contains more than one target"
+msgstr ".DEFAULT_GOAL 包å«å¤šé¤˜ä¸€å€‹ç›®æ¨™"
+
+#: src/main.c:2579
+#, c-format
+msgid "No targets"
+msgstr "無目標"
+
+#: src/main.c:2581
+#, c-format
+msgid "No targets specified and no makefile found"
+msgstr "沒有指明目標並且找ä¸åˆ° makefile"
+
+#: src/main.c:2586
+#, c-format
+msgid "Updating goal targets....\n"
+msgstr "更新目標....\n"
+
+#: src/main.c:2610
+#, c-format
+msgid "warning: Clock skew detected. Your build may be incomplete."
+msgstr "警告:檢測到時é˜éŒ¯èª¤ã€‚您的構建版本å¯èƒ½æ˜¯ä¸å®Œæ•´çš„。"
+
+#: src/main.c:2804
+#, c-format
+msgid "Usage: %s [options] [target] ...\n"
+msgstr "用法:%s [é¸é …] [目標] ...\n"
+
+#: src/main.c:2810
+#, c-format
+msgid ""
+"\n"
+"This program built for %s\n"
+msgstr ""
+"\n"
+"該程å¼ç‚º %s 編譯\n"
+
+#: src/main.c:2812
+#, c-format
+msgid ""
+"\n"
+"This program built for %s (%s)\n"
+msgstr ""
+"\n"
+"該程å¼ç‚º %s (%s) 編譯\n"
+
+#: src/main.c:2815
+#, c-format
+msgid "Report bugs to <bug-make@gnu.org>\n"
+msgstr "報告錯誤到 <bug-make@gnu.org>\n"
+
+#: src/main.c:2901
+#, c-format
+msgid "the '%s%s' option requires a non-empty string argument"
+msgstr "「%s%sã€é¸é …需è¦éžç©ºå­—串åƒæ•¸"
+
+#: src/main.c:2965
+#, c-format
+msgid "the '-%c' option requires a positive integer argument"
+msgstr "「-%cã€é¸é …需è¦æ­£æ•´æ•¸åƒæ•¸"
+
+#: src/main.c:3363
+#, c-format
+msgid "%sBuilt for %s\n"
+msgstr "%s為 %s 編譯\n"
+
+#: src/main.c:3365
+#, c-format
+msgid "%sBuilt for %s (%s)\n"
+msgstr "%s為 %s (%s) 編譯\n"
+
+#: src/main.c:3376
+#, c-format
+msgid ""
+"%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+"%sThis is free software: you are free to change and redistribute it.\n"
+"%sThere is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"%s授權æ¢æ¬¾ï¼šGPLv3+:GNU 通用公共授權æ¢æ¬¾ç¬¬ 3 版或更新版本<http://gnu.org/"
+"licenses/gpl.html>。\n"
+"%s本軟體是自由軟體:您å¯ä»¥è‡ªç”±ä¿®æ”¹å’Œé‡æ–°ç™¼å¸ƒå®ƒã€‚\n"
+"%s在法律å…許的範åœå…§æ²’有其他ä¿è­‰ã€‚\n"
+
+#: src/main.c:3397
+#, c-format
+msgid ""
+"\n"
+"# Make data base, printed on %s"
+msgstr ""
+"\n"
+"# make 資料基礎,輸出在 %s"
+
+#: src/main.c:3407
+#, c-format
+msgid ""
+"\n"
+"# Finished Make data base on %s\n"
+msgstr ""
+"\n"
+"# 在 %s ä¸Šå®Œæˆ make 資料基礎\n"
+
+#: src/misc.c:643
+#, c-format
+msgid "%s: user %lu (real %lu), group %lu (real %lu)\n"
+msgstr "%s: 使用者 %lu (真實使用者 %lu), 組 %lu (真實組 %lu)\n"
+
+#: src/misc.c:664
+msgid "Initialized access"
+msgstr "åˆå§‹åŒ–æˆåŠŸ"
+
+#: src/misc.c:743
+msgid "User access"
+msgstr "使用者權é™"
+
+#: src/misc.c:791
+msgid "Make access"
+msgstr "Make 權é™"
+
+#: src/misc.c:825
+msgid "Child access"
+msgstr "å­ç¨‹åº 權é™"
+
+#: src/output.c:97
+#, c-format
+msgid "%s: Entering an unknown directory\n"
+msgstr "%s: 進入一個未知的目錄\n"
+
+#: src/output.c:99
+#, c-format
+msgid "%s: Leaving an unknown directory\n"
+msgstr "%s: 離開一個未知的目錄\n"
+
+#: src/output.c:102
+#, c-format
+msgid "%s: Entering directory '%s'\n"
+msgstr "%s: 進入目錄「%sã€\n"
+
+#: src/output.c:104
+#, c-format
+msgid "%s: Leaving directory '%s'\n"
+msgstr "%s: 離開目錄「%sã€\n"
+
+#: src/output.c:108
+#, c-format
+msgid "%s[%u]: Entering an unknown directory\n"
+msgstr "%s[%u]: 進入一個未知的目錄\n"
+
+#: src/output.c:110
+#, c-format
+msgid "%s[%u]: Leaving an unknown directory\n"
+msgstr "%s[%u]: 離開一個未知的目錄\n"
+
+#: src/output.c:113
+#, c-format
+msgid "%s[%u]: Entering directory '%s'\n"
+msgstr "%s[%u]: 進入目錄「%sã€\n"
+
+#: src/output.c:115
+#, c-format
+msgid "%s[%u]: Leaving directory '%s'\n"
+msgstr "%s[%u]: 離開目錄「%sã€\n"
+
+#: src/output.c:442 src/output.c:444
+#, c-format
+msgid "write error: stdout"
+msgstr "寫錯誤: 標準輸出"
+
+#: src/output.c:624
+msgid ". Stop.\n"
+msgstr "。 åœæ­¢ã€‚\n"
+
+#: src/output.c:658
+#, c-format
+msgid "%s%s: %s"
+msgstr "%s%s: %s"
+
+#: src/output.c:667
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: src/output.h:62
+#, c-format
+msgid "-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."
+msgstr "-O[類型] (--output-sync[=類型]) 並未設定入此 make 構建。"
+
+#: src/posixos.c:90
+msgid "creating jobs pipe"
+msgstr "正在建立作業管é“"
+
+#: src/posixos.c:98 src/posixos.c:251
+msgid "duping jobs pipe"
+msgstr "正在複製作業管é“"
+
+#: src/posixos.c:104
+msgid "init jobserver pipe"
+msgstr "創始化作業伺æœå™¨ç®¡é“"
+
+#: src/posixos.c:119
+#, c-format
+msgid "internal error: invalid --jobserver-auth string '%s'"
+msgstr "內部錯誤:無效 --jobserver-auth 驗證字串「%sã€"
+
+#: src/posixos.c:122
+#, c-format
+msgid "Jobserver client (fds %d,%d)\n"
+msgstr "Jobserver 客戶端(檔案æ述符 %d,%d)\n"
+
+#: src/posixos.c:138
+msgid "jobserver pipeline"
+msgstr "作業伺æœå™¨ç®¡é“"
+
+#: src/posixos.c:186
+msgid "write jobserver"
+msgstr "寫入作業伺æœå™¨"
+
+#: src/posixos.c:300
+#, c-format
+msgid "job server shut down"
+msgstr "作業伺æœå™¨é—œé–‰"
+
+# , fuzzy
+#: src/posixos.c:303
+msgid "pselect jobs pipe"
+msgstr "pselect 作業管é“"
+
+#: src/posixos.c:319 src/posixos.c:433
+msgid "read jobs pipe"
+msgstr "讀å–作業管é“"
+
+#: src/read.c:181
+#, c-format
+msgid "Reading makefiles...\n"
+msgstr "正在讀入 makefile...\n"
+
+#: src/read.c:336
+#, c-format
+msgid "Reading makefile '%s'"
+msgstr "正在讀入 makefile「%sã€"
+
+#: src/read.c:338
+#, c-format
+msgid " (no default goal)"
+msgstr " (沒有é è¨­ç›®æ¨™)"
+
+#: src/read.c:340
+#, c-format
+msgid " (search path)"
+msgstr " (æœå°‹è·¯å¾‘)"
+
+#: src/read.c:342
+#, c-format
+msgid " (don't care)"
+msgstr " (ä¸ç”¨ç†)"
+
+#: src/read.c:344
+#, c-format
+msgid " (no ~ expansion)"
+msgstr " (沒有 ~ 展開)"
+
+#: src/read.c:655
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile '%s'\n"
+msgstr "è·³éŽ Makefile「%sã€ä¸­çš„ UTF-8 BOM\n"
+
+#: src/read.c:658
+#, c-format
+msgid "Skipping UTF-8 BOM in makefile buffer\n"
+msgstr "è·³éŽ Makefile ç·©è¡å€ä¸­çš„ UTF-8 BOM\n"
+
+#: src/read.c:787
+#, c-format
+msgid "invalid syntax in conditional"
+msgstr "æ¢ä»¶ä¸­å«æœ‰ç„¡æ•ˆèªžæ³•"
+
+#: src/read.c:960
+#, c-format
+msgid "%s: failed to load"
+msgstr "%s: 載入失敗"
+
+#: src/read.c:986
+#, c-format
+msgid "recipe commences before first target"
+msgstr "方案在第一個目標å‰é–‹å§‹"
+
+#: src/read.c:1035
+#, c-format
+msgid "missing rule before recipe"
+msgstr "方案之å‰éºæ¼äº†è¦å‰‡"
+
+#: src/read.c:1136
+#, c-format
+msgid "missing separator (did you mean TAB instead of 8 spaces?)"
+msgstr "缺少分隔符 (你大概想用 TAB,而ä¸æ˜¯å…«å€‹ç©ºæ ¼)"
+
+#: src/read.c:1138
+#, c-format
+msgid "missing separator"
+msgstr "缺少分隔符"
+
+#: src/read.c:1283
+#, c-format
+msgid "missing target pattern"
+msgstr "無目標符åˆ"
+
+#: src/read.c:1285
+#, c-format
+msgid "multiple target patterns"
+msgstr "多個目標符åˆ"
+
+#: src/read.c:1289
+#, c-format
+msgid "target pattern contains no '%%'"
+msgstr "目標模å¼ä¸å«æœ‰ã€Œ%%ã€"
+
+#: src/read.c:1404
+#, c-format
+msgid "missing 'endif'"
+msgstr "éºæ¼ã€Œendifã€"
+
+#: src/read.c:1443 src/read.c:1488 src/variable.c:1600
+#, c-format
+msgid "empty variable name"
+msgstr "空變數å"
+
+#: src/read.c:1478
+#, c-format
+msgid "extraneous text after 'define' directive"
+msgstr "「endefã€æŒ‡ä»¤å¾Œå«æœ‰ä¸è©²å‡ºç¾çš„文字"
+
+#: src/read.c:1503
+#, c-format
+msgid "missing 'endef', unterminated 'define'"
+msgstr "éºæ¼ã€Œendefã€ï¼Œæœªçµ‚止的「defineã€"
+
+#: src/read.c:1531
+#, c-format
+msgid "extraneous text after 'endef' directive"
+msgstr "「endefã€æŒ‡ä»¤å¾Œå«æœ‰ä¸è©²å‡ºç¾çš„文字"
+
+#: src/read.c:1603
+#, c-format
+msgid "extraneous text after '%s' directive"
+msgstr "在「%sã€æŒ‡ä»¤ä¹‹å¾Œå«æœ‰ä¸è©²å‡ºç¾çš„文字"
+
+#: src/read.c:1604
+#, c-format
+msgid "extraneous '%s'"
+msgstr "ä¸è©²å‡ºç¾çš„「%sã€"
+
+#: src/read.c:1632
+#, c-format
+msgid "only one 'else' per conditional"
+msgstr "æ¯å€‹æ¢ä»¶åªèƒ½æœ‰ä¸€å€‹ã€Œelseã€"
+
+#: src/read.c:1908
+#, c-format
+msgid "Malformed target-specific variable definition"
+msgstr "é‡å°ç›®æ¨™çš„ç´”é‡å®šç¾©æ ¼å¼éŒ¯èª¤"
+
+#: src/read.c:1968
+#, c-format
+msgid "prerequisites cannot be defined in recipes"
+msgstr "ä¾è³´ç„¡æ³•åœ¨æ–¹æ¡ˆè…³æœ¬ä¸­å®šç¾©"
+
+#: src/read.c:1986
+#, c-format
+msgid "grouped targets must provide a recipe"
+msgstr "æˆçµ„的目標必須æ供一個方案"
+
+#: src/read.c:2029
+#, c-format
+msgid "mixed implicit and static pattern rules"
+msgstr "æ··åˆçš„éš±å«å’Œéœæ…‹æ¨¡å¼è¦å‰‡"
+
+#: src/read.c:2052
+#, c-format
+msgid "mixed implicit and normal rules"
+msgstr "æ··åˆçš„éš±å«å’Œæ™®é€šè¦å‰‡"
+
+#: src/read.c:2107
+#, c-format
+msgid "target '%s' doesn't match the target pattern"
+msgstr "目標「%sã€ä¸ç¬¦åˆç›®æ¨™æ¨¡å¼"
+
+#: src/read.c:2122 src/read.c:2168
+#, c-format
+msgid "target file '%s' has both : and :: entries"
+msgstr "目標檔案「%sã€å«æœ‰ : å’Œ :: 兩種æ¢ç›®"
+
+#: src/read.c:2128
+#, c-format
+msgid "target '%s' given more than once in the same rule"
+msgstr "目標「%sã€åœ¨åŒä¸€å€‹è¦å‰‡ä¸­çµ¦å‡ºäº†å¤šæ¬¡"
+
+#: src/read.c:2138
+#, c-format
+msgid "warning: overriding recipe for target '%s'"
+msgstr "警告:覆蓋關於目標「%sã€çš„方案"
+
+#: src/read.c:2141
+#, c-format
+msgid "warning: ignoring old recipe for target '%s'"
+msgstr "警告:忽略關於目標「%sã€çš„舊方案"
+
+#: src/read.c:2254
+#, c-format
+msgid "*** mixed implicit and normal rules: deprecated syntax"
+msgstr "*** éš±å«å’Œæ™®é€šè¦å‰‡æ··åˆï¼šå·²æ£„用的語法"
+
+#: src/read.c:2271
+#, c-format
+msgid "warning: overriding group membership for target '%s'"
+msgstr "警告:覆蓋關於目標「%sã€çš„組æˆå“¡"
+
+#: src/read.c:2636
+#, c-format
+msgid "warning: NUL character seen; rest of line ignored"
+msgstr "警告:é‡åˆ°äº† NUL 字元;忽略行的剩餘部分"
+
+#: src/remake.c:226
+#, c-format
+msgid "Nothing to be done for '%s'."
+msgstr "å°ã€Œ%sã€ç„¡éœ€åšä»»ä½•äº‹ã€‚"
+
+#: src/remake.c:227
+#, c-format
+msgid "'%s' is up to date."
+msgstr "「%sã€å·²æ˜¯æœ€æ–°ã€‚"
+
+#: src/remake.c:323
+#, c-format
+msgid "Pruning file '%s'.\n"
+msgstr "正刪除檔案「%sã€ã€‚\n"
+
+#: src/remake.c:389
+#, c-format
+msgid "%sNo rule to make target '%s', needed by '%s'%s"
+msgstr "%s沒有è¦å‰‡å¯è£½ä½œç›®æ¨™ã€Œ%sã€ï¼Œç”±ã€Œ%sã€%s 需求"
+
+#: src/remake.c:399
+#, c-format
+msgid "%sNo rule to make target '%s'%s"
+msgstr "%s沒有è¦å‰‡å¯è£½ä½œç›®æ¨™ã€Œ%sã€%s"
+
+#: src/remake.c:425
+#, c-format
+msgid "Considering target file '%s'.\n"
+msgstr "正在考慮目標檔案「%sã€ã€‚\n"
+
+#: src/remake.c:432
+#, c-format
+msgid "Recently tried and failed to update file '%s'.\n"
+msgstr "最近已嘗試éŽæ›´æ–°æª”案「%sã€ä¸¦å¤±æ•—。\n"
+
+#: src/remake.c:444
+#, c-format
+msgid "File '%s' was considered already.\n"
+msgstr "已考慮éŽæª”案「%sã€ã€‚\n"
+
+#: src/remake.c:454
+#, c-format
+msgid "Still updating file '%s'.\n"
+msgstr "ä»ç„¶åœ¨æ›´æ–°æª”案「%sã€ã€‚\n"
+
+#: src/remake.c:457
+#, c-format
+msgid "Finished updating file '%s'.\n"
+msgstr "更新檔案「%sã€å®Œæˆã€‚\n"
+
+#: src/remake.c:486
+#, c-format
+msgid "File '%s' does not exist.\n"
+msgstr "檔案「%sã€ä¸å­˜åœ¨ã€‚\n"
+
+#: src/remake.c:494
+#, c-format
+msgid ""
+"*** Warning: .LOW_RESOLUTION_TIME file '%s' has a high resolution time stamp"
+msgstr "*** 警告: .LOW_RESOLUTION_TIME 檔案 `%s' 有一個高精度的的時間標誌"
+
+#: src/remake.c:507 src/remake.c:1039
+#, c-format
+msgid "Found an implicit rule for '%s'.\n"
+msgstr "找到一æ¢é—œæ–¼ã€Œ%sã€çš„éš±å«è¦å‰‡ã€‚\n"
+
+#: src/remake.c:509 src/remake.c:1041
+#, c-format
+msgid "No implicit rule found for '%s'.\n"
+msgstr "找ä¸åˆ°é—œæ–¼ã€Œ%sã€çš„éš±å«è¦å‰‡ã€‚\n"
+
+#: src/remake.c:515
+#, c-format
+msgid "Using default recipe for '%s'.\n"
+msgstr "使用「%sã€çš„é è¨­æ–¹æ¡ˆã€‚\n"
+
+#: src/remake.c:549 src/remake.c:1088
+#, c-format
+msgid "Circular %s <- %s dependency dropped."
+msgstr "放棄循環ä¾è³´ %s <- %s 。"
+
+#: src/remake.c:674
+#, c-format
+msgid "Finished prerequisites of target file '%s'.\n"
+msgstr "目標檔案「%sã€çš„å‰æ已完æˆã€‚\n"
+
+#: src/remake.c:680
+#, c-format
+msgid "The prerequisites of '%s' are being made.\n"
+msgstr "正在製作「%sã€çš„å‰æ。\n"
+
+#: src/remake.c:694
+#, c-format
+msgid "Giving up on target file '%s'.\n"
+msgstr "放棄目標檔案「%sã€ã€‚\n"
+
+#: src/remake.c:699
+#, c-format
+msgid "Target '%s' not remade because of errors."
+msgstr "由於錯誤目標「%sã€ä¸¦æœªé‡æ–°è£½ä½œã€‚"
+
+#: src/remake.c:751
+#, c-format
+msgid "Prerequisite '%s' is order-only for target '%s'.\n"
+msgstr "å‰æ「%sã€å°ç›®æ¨™ã€Œ%sã€ä¾†èªªåƒ…ç”¨æ–¼æŒ‡å®šåŸ·è¡Œé †åº (order-only) 。\n"
+
+#: src/remake.c:756
+#, c-format
+msgid "Prerequisite '%s' of target '%s' does not exist.\n"
+msgstr "目標「%2$sã€çš„å‰æ「%1$sã€ä¸å­˜åœ¨ã€‚\n"
+
+#: src/remake.c:761
+#, c-format
+msgid "Prerequisite '%s' is newer than target '%s'.\n"
+msgstr "å‰æ「%sã€æ¯”目標「%sã€æ–°ã€‚\n"
+
+#: src/remake.c:764
+#, c-format
+msgid "Prerequisite '%s' is older than target '%s'.\n"
+msgstr "å‰æ「%sã€æ¯”目標「%sã€èˆŠã€‚\n"
+
+#: src/remake.c:782
+#, c-format
+msgid "Target '%s' is double-colon and has no prerequisites.\n"
+msgstr "目標「%sã€æ˜¯é›™å†’號目標並且沒有å‰æ。\n"
+
+#: src/remake.c:789
+#, c-format
+msgid "No recipe for '%s' and no prerequisites actually changed.\n"
+msgstr "沒有關於「%sã€çš„方案,並且沒有實際改變的å‰æ。\n"
+
+#: src/remake.c:794
+#, c-format
+msgid "Making '%s' due to always-make flag.\n"
+msgstr "由於 always-make 標誌所以製作「%sã€ã€‚\n"
+
+#: src/remake.c:802
+#, c-format
+msgid "No need to remake target '%s'"
+msgstr "ä¸éœ€è¦é‡æ–°è£½ä½œç›®æ¨™ã€Œ%sã€"
+
+#: src/remake.c:804
+#, c-format
+msgid "; using VPATH name '%s'"
+msgstr ";使用 VPATH å稱「%sã€"
+
+#: src/remake.c:824
+#, c-format
+msgid "Must remake target '%s'.\n"
+msgstr "å¿…é ˆé‡æ–°è£½ä½œç›®æ¨™ã€Œ%sã€ã€‚\n"
+
+#: src/remake.c:830
+#, c-format
+msgid " Ignoring VPATH name '%s'.\n"
+msgstr " 忽略 VPATH å稱「%sã€ã€‚\n"
+
+#: src/remake.c:839
+#, c-format
+msgid "Recipe of '%s' is being run.\n"
+msgstr "「%sã€çš„指令方案正在被執行。\n"
+
+#: src/remake.c:846
+#, c-format
+msgid "Failed to remake target file '%s'.\n"
+msgstr "é‡æ–°è£½ä½œç›®æ¨™æª”案「%sã€å¤±æ•—。\n"
+
+#: src/remake.c:849
+#, c-format
+msgid "Successfully remade target file '%s'.\n"
+msgstr "é‡æ–°è£½ä½œç›®æ¨™æª”案「%sã€æˆåŠŸã€‚\n"
+
+#: src/remake.c:852
+#, c-format
+msgid "Target file '%s' needs to be remade under -q.\n"
+msgstr "目標檔案「%sã€éœ€è¦ä»¥ -q é¸é …é‡æ–°è£½ä½œã€‚\n"
+
+#: src/remake.c:1047
+#, c-format
+msgid "Using default commands for '%s'.\n"
+msgstr "使用關於「%sã€çš„é è¨­æŒ‡ä»¤ã€‚\n"
+
+#: src/remake.c:1422
+#, c-format
+msgid "Warning: File '%s' has modification time %s s in the future"
+msgstr "警告:檔案「%sã€çš„修改時間在未來 %s 秒後"
+
+#: src/remake.c:1662
+#, c-format
+msgid ".LIBPATTERNS element '%s' is not a pattern"
+msgstr ".LIBPATTERNS 的元素「%sã€ä¸æ˜¯ä¸€å€‹æ¨¡å¼"
+
+#: src/remote-cstms.c:122
+#, c-format
+msgid "Customs won't export: %s\n"
+msgstr "使用者ä¸å¸Œæœ›åŒ¯å‡ºï¼š%s\n"
+
+#: src/rule.c:289
+#, c-format
+msgid "warning: ignoring prerequisites on suffix rule definition"
+msgstr ""
+
+#: src/rule.c:530
+msgid ""
+"\n"
+"# Implicit Rules"
+msgstr ""
+"\n"
+"# éš±å«è¦å‰‡"
+
+#: src/rule.c:545
+msgid ""
+"\n"
+"# No implicit rules."
+msgstr ""
+"\n"
+"# 沒有隱å«è¦å‰‡ã€‚"
+
+#: src/rule.c:548
+#, c-format
+msgid ""
+"\n"
+"# %u implicit rules, %u (%.1f%%) terminal."
+msgstr ""
+"\n"
+"# %u æ¢éš±å«è¦å‰‡ï¼Œ%u (%.1f%%) 為末端。"
+
+#: src/rule.c:557
+#, c-format
+msgid "BUG: num_pattern_rules is wrong! %u != %u"
+msgstr "BUG:num_pattern_rules 出錯ï¼%u != %u"
+
+#: src/signame.c:84
+msgid "unknown signal"
+msgstr "未知的訊號"
+
+#: src/signame.c:92
+msgid "Hangup"
+msgstr "掛斷"
+
+#: src/signame.c:95
+msgid "Interrupt"
+msgstr "中止"
+
+#: src/signame.c:98
+msgid "Quit"
+msgstr "çµæŸ"
+
+#: src/signame.c:101
+msgid "Illegal Instruction"
+msgstr "無效指令"
+
+#: src/signame.c:104
+msgid "Trace/breakpoint trap"
+msgstr "追蹤 / 斷點陷阱"
+
+#: src/signame.c:109
+msgid "Aborted"
+msgstr "å–消"
+
+#: src/signame.c:112
+msgid "IOT trap"
+msgstr "IOT 陷阱"
+
+#: src/signame.c:115
+msgid "EMT trap"
+msgstr "EMT 陷阱"
+
+#: src/signame.c:118
+msgid "Floating point exception"
+msgstr "期望浮點數"
+
+#: src/signame.c:121
+msgid "Killed"
+msgstr "強制çµæŸ"
+
+#: src/signame.c:124
+msgid "Bus error"
+msgstr "匯æµæŽ’錯誤"
+
+#: src/signame.c:127
+msgid "Segmentation fault"
+msgstr "分割錯誤"
+
+#: src/signame.c:130
+msgid "Bad system call"
+msgstr "無效系統呼å«"
+
+#: src/signame.c:133
+msgid "Broken pipe"
+msgstr "管線æ壞"
+
+#: src/signame.c:136
+msgid "Alarm clock"
+msgstr "鬧é˜"
+
+#: src/signame.c:139
+msgid "Terminated"
+msgstr "終止"
+
+#: src/signame.c:142
+msgid "User defined signal 1"
+msgstr "使用者定義信號 1"
+
+#: src/signame.c:145
+msgid "User defined signal 2"
+msgstr "使用者定義信號 2"
+
+#: src/signame.c:150 src/signame.c:153
+msgid "Child exited"
+msgstr "å­ç¨‹åºé€€å‡º"
+
+#: src/signame.c:156
+msgid "Power failure"
+msgstr "é›»æºéŒ¯èª¤"
+
+#: src/signame.c:159
+msgid "Stopped"
+msgstr "åœæ­¢"
+
+#: src/signame.c:162
+msgid "Stopped (tty input)"
+msgstr "åœæ­¢ï¼ˆtty 輸入)"
+
+#: src/signame.c:165
+msgid "Stopped (tty output)"
+msgstr "åœæ­¢ï¼ˆtty 輸出)"
+
+#: src/signame.c:168
+msgid "Stopped (signal)"
+msgstr "åœæ­¢ï¼ˆä¿¡è™Ÿï¼‰"
+
+#: src/signame.c:171
+msgid "CPU time limit exceeded"
+msgstr "åˆ°é” CPU 時間上é™"
+
+#: src/signame.c:174
+msgid "File size limit exceeded"
+msgstr "到é”檔案大å°ä¸Šé™"
+
+#: src/signame.c:177
+msgid "Virtual timer expired"
+msgstr "虛擬計時器éŽæœŸ"
+
+#: src/signame.c:180
+msgid "Profiling timer expired"
+msgstr "分æžè¨ˆæ™‚器éŽæœŸ"
+
+#: src/signame.c:186
+msgid "Window changed"
+msgstr "已變更視窗"
+
+#: src/signame.c:189
+msgid "Continued"
+msgstr "繼續"
+
+#: src/signame.c:192
+msgid "Urgent I/O condition"
+msgstr "緊急 I/O æ¢ä»¶"
+
+#: src/signame.c:199 src/signame.c:208
+msgid "I/O possible"
+msgstr "å¯èƒ½ I/O"
+
+#: src/signame.c:202
+msgid "SIGWIND"
+msgstr "SIGWIND"
+
+#: src/signame.c:205
+msgid "SIGPHONE"
+msgstr "SIGPHONE"
+
+#: src/signame.c:211
+msgid "Resource lost"
+msgstr "資æºéºå¤±"
+
+#: src/signame.c:214
+msgid "Danger signal"
+msgstr "å±éšªè¨Šè™Ÿ"
+
+#: src/signame.c:217
+msgid "Information request"
+msgstr "資訊請求"
+
+#: src/signame.c:220
+msgid "Floating point co-processor not available"
+msgstr "浮點數å”處ç†å™¨ä¸å¯ç”¨"
+
+#: src/strcache.c:274
+#, c-format
+msgid ""
+"\n"
+"%s No strcache buffers\n"
+msgstr ""
+"\n"
+"%s 沒有 strcache ç·©è¡å€\n"
+
+#: src/strcache.c:304
+#, c-format
+msgid ""
+"\n"
+"%s strcache buffers: %lu (%lu) / strings = %lu / storage = %lu B / avg = %lu "
+"B\n"
+msgstr ""
+"\n"
+"%s strcache ç·©è¡: %lu (%lu) / 字串 = %lu / 空間 = %lu B / å¹³å‡ = %lu B\n"
+
+#: src/strcache.c:308
+#, c-format
+msgid ""
+"%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"
+msgstr "%s ç›®å‰ç·©è¡: 尺寸 = %hu B / 已用 = %hu B / æ•¸é‡ = %hu / å¹³å‡ = %u B\n"
+
+#: src/strcache.c:319
+#, c-format
+msgid "%s other used: total = %lu B / count = %lu / avg = %lu B\n"
+msgstr "%s 其他已用: 總共 = %lu B / æ•¸é‡ = %lu / å¹³å‡ = %lu B\n"
+
+#: src/strcache.c:322
+#, c-format
+msgid ""
+"%s other free: total = %lu B / max = %lu B / min = %lu B / avg = %hu B\n"
+msgstr ""
+"%s 其他空餘: 總共 = %lu B / 最大 = %lu B / æœ€å° = %lu B / å¹³å‡ = %hu B\n"
+
+#: src/strcache.c:326
+#, c-format
+msgid ""
+"\n"
+"%s strcache performance: lookups = %lu / hit rate = %lu%%\n"
+msgstr ""
+"\n"
+"%s strcache 性能:尋找 = %lu / 命中率 = %lu%%\n"
+
+#: src/strcache.c:328
+msgid ""
+"# hash-table stats:\n"
+"# "
+msgstr ""
+"# 雜湊表統計資料:\n"
+"# "
+
+#: src/variable.c:1653
+msgid "automatic"
+msgstr "自動"
+
+#: src/variable.c:1656
+msgid "default"
+msgstr "é è¨­"
+
+#: src/variable.c:1659
+msgid "environment"
+msgstr "環境"
+
+#: src/variable.c:1662
+msgid "makefile"
+msgstr "makefile"
+
+#: src/variable.c:1665
+msgid "environment under -e"
+msgstr "-e 指定的環境變數"
+
+#: src/variable.c:1668
+msgid "command line"
+msgstr "指令列"
+
+#: src/variable.c:1671
+msgid "'override' directive"
+msgstr "「overrideã€æŒ‡ä»¤"
+
+#: src/variable.c:1682
+#, c-format
+msgid " (from '%s', line %lu)"
+msgstr " (從「%sã€ï¼Œè¡Œ %lu)"
+
+#: src/variable.c:1745
+msgid "# variable set hash-table stats:\n"
+msgstr "# 變數的雜湊表狀態:\n"
+
+#: src/variable.c:1756
+msgid ""
+"\n"
+"# Variables\n"
+msgstr ""
+"\n"
+"# 變數\n"
+
+#: src/variable.c:1760
+msgid ""
+"\n"
+"# Pattern-specific Variable Values"
+msgstr ""
+"\n"
+"# Pattern-specific 變數值"
+
+#: src/variable.c:1774
+msgid ""
+"\n"
+"# No pattern-specific variable values."
+msgstr ""
+"\n"
+"# 沒有 pattern-specific 變數的值。"
+
+#: src/variable.c:1776
+#, c-format
+msgid ""
+"\n"
+"# %u pattern-specific variable values"
+msgstr ""
+"\n"
+"# %u 個 pattern-specific 變數的值"
+
+#: src/variable.h:229
+#, c-format
+msgid "warning: undefined variable '%.*s'"
+msgstr "警告:未定義的變數「%.*sã€"
+
+#: src/vmsfunctions.c:91
+#, c-format
+msgid "sys$search() failed with %d\n"
+msgstr "sys$search() 失敗並返回 %d\n"
+
+#: src/vmsjobs.c:244
+#, c-format
+msgid "-warning, you may have to re-enable CTRL-Y handling from DCL.\n"
+msgstr "-警告, ä½ å¯èƒ½å¿…須從 DCL é‡æ–°å•Ÿç”¨ CTRL-Y 處ç†ã€‚\n"
+
+#: src/vmsjobs.c:681
+#, c-format
+msgid "BUILTIN CD %s\n"
+msgstr "BUILTIN CD %s\n"
+
+#: src/vmsjobs.c:1224
+#, c-format
+msgid "DCL: %s\n"
+msgstr "DCL:%s\n"
+
+#: src/vmsjobs.c:1284
+#, c-format
+msgid "Append output to %s\n"
+msgstr "將輸出追加到 %s\n"
+
+#: src/vmsjobs.c:1309
+#, c-format
+msgid "Append %.*s and cleanup\n"
+msgstr "追加 %.*s 並清ç†\n"
+
+#: src/vmsjobs.c:1322
+#, c-format
+msgid "Executing %s instead\n"
+msgstr "執行 %s 作為替代\n"
+
+#: src/vpath.c:603
+msgid ""
+"\n"
+"# VPATH Search Paths\n"
+msgstr ""
+"\n"
+"# VPATH æœå°‹è·¯å¾‘\n"
+
+#: src/vpath.c:620
+msgid "# No 'vpath' search paths."
+msgstr "# 沒有「vpathã€æœå°‹è·¯å¾‘。"
+
+#: src/vpath.c:622
+#, c-format
+msgid ""
+"\n"
+"# %u 'vpath' search paths.\n"
+msgstr ""
+"\n"
+"# %u「vpathã€æœå°‹è·¯å¾‘。\n"
+
+#: src/vpath.c:625
+msgid ""
+"\n"
+"# No general ('VPATH' variable) search path."
+msgstr ""
+"\n"
+"# 沒有通用æœå°‹è·¯å¾‘(「VPATHã€è®Šæ•¸)。"
+
+#: src/vpath.c:631
+msgid ""
+"\n"
+"# General ('VPATH' variable) search path:\n"
+"# "
+msgstr ""
+"\n"
+"# 通用æœå°‹è·¯å¾‘ (「VPATHã€è®Šæ•¸):\n"
+"# "
+
+#: src/w32/w32os.c:44
+#, c-format
+msgid "Jobserver slots limited to %d\n"
+msgstr "Jobserver 槽ä½æ•¸é™åˆ¶ç‚º %d\n"
+
+#: src/w32/w32os.c:60
+#, c-format
+msgid "creating jobserver semaphore: (Error %ld: %s)"
+msgstr "正建立 jobserver 訊號é‡ï¼šï¼ˆéŒ¯èª¤ %ld:%s)"
+
+#: src/w32/w32os.c:79
+#, c-format
+msgid ""
+"internal error: unable to open jobserver semaphore '%s': (Error %ld: %s)"
+msgstr "內部錯誤:無法打開 jobserver 訊號é‡ã€Œ%sã€ï¼šï¼ˆéŒ¯èª¤ %ld:%s)"
+
+#: src/w32/w32os.c:82
+#, c-format
+msgid "Jobserver client (semaphore %s)\n"
+msgstr "Jobserver å®¢æˆ¶ç«¯ï¼ˆè¨Šè™Ÿé‡ %s)\n"
+
+#: src/w32/w32os.c:123
+#, c-format
+msgid "release jobserver semaphore: (Error %ld: %s)"
+msgstr "釋放 jobserver 訊號é‡ï¼šï¼ˆéŒ¯èª¤ %ld:%s)"
+
+#: src/w32/w32os.c:194
+#, c-format
+msgid "semaphore or child process wait: (Error %ld: %s)"
+msgstr "訊號é‡æˆ–å­ç¨‹åºç­‰å¾…:(錯誤 %ld:%s)"
+
+#~ msgid "write error"
+#~ msgstr "寫入時發生錯誤"
diff --git a/amiga.c b/src/amiga.c
index cfd0d08..5189a02 100644
--- a/amiga.c
+++ b/src/amiga.c
@@ -1,5 +1,5 @@
/* Running commands on Amiga
-Copyright (C) 1995-2016 Free Software Foundation, Inc.
+Copyright (C) 1995-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/amiga.h b/src/amiga.h
index afc910a..5bc3531 100644
--- a/amiga.h
+++ b/src/amiga.h
@@ -1,5 +1,5 @@
/* Definitions for amiga specific things
-Copyright (C) 1995-2016 Free Software Foundation, Inc.
+Copyright (C) 1995-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/ar.c b/src/ar.c
index b9c1cf7..62919ff 100644
--- a/ar.c
+++ b/src/ar.c
@@ -1,5 +1,5 @@
/* Interface to 'ar' archives for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
@@ -186,7 +186,7 @@ struct ar_glob_state
#ifdef VMS
char *suffix;
#endif
- unsigned int size;
+ size_t size;
struct nameseq *chain;
unsigned int n;
};
@@ -258,7 +258,7 @@ ar_glob_pattern_p (const char *pattern, int quote)
Return a malloc'd chain of matching elements (or nil if none). */
struct nameseq *
-ar_glob (const char *arname, const char *member_pattern, unsigned int size)
+ar_glob (const char *arname, const char *member_pattern, size_t size)
{
struct ar_glob_state state;
struct nameseq *n;
diff --git a/arscan.c b/src/arscan.c
index 549fe1e..3ce21db 100644
--- a/arscan.c
+++ b/src/arscan.c
@@ -1,5 +1,5 @@
/* Library function for scanning an archive file.
-Copyright (C) 1987-2016 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -40,7 +40,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#include <rmsdef.h>
/* This symbol should be present in lbrdef.h. */
-#ifndef LBR$_HDRTRUNC
+#if !defined LBR$_HDRTRUNC
#pragma extern_model save
#pragma extern_model globalvalue
extern unsigned int LBR$_HDRTRUNC;
@@ -137,8 +137,8 @@ VMS_get_member_info(struct dsc$descriptor_s *module, unsigned long *rfa)
#ifdef TEST
/* When testing this code, it is useful to know the length returned */
- printf("Input length = %d, actual = %d\n",
- bufdesc.dsc$w_length, buffer_length);
+ printf ("Input length = %d, actual = %u\n",
+ bufdesc.dsc$w_length, buffer_length);
#endif
/* Conversion from VMS time to C time.
@@ -375,6 +375,8 @@ struct ar_hdr
#ifndef AR_HDR_SIZE
# define AR_HDR_SIZE (sizeof (struct ar_hdr))
#endif
+
+#include "output.h"
/* Takes three arguments ARCHIVE, FUNCTION and ARG.
@@ -414,30 +416,27 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
# endif
#endif
char *namemap = 0;
+ int namemap_size = 0;
int desc = open (archive, O_RDONLY, 0);
if (desc < 0)
return -1;
+
#ifdef SARMAG
{
char buf[SARMAG];
int nread;
- EINTRLOOP (nread, read (desc, buf, SARMAG));
+ nread = readbuf (desc, buf, SARMAG);
if (nread != SARMAG || memcmp (buf, ARMAG, SARMAG))
- {
- (void) close (desc);
- return -2;
- }
+ goto invalid;
}
#else
#ifdef AIAMAG
{
int nread;
- EINTRLOOP (nread, read (desc, &fl_header, FL_HSZ));
+ nread = readbuf (desc, &fl_header, FL_HSZ);
if (nread != FL_HSZ)
- {
- (void) close (desc);
- return -2;
- }
+ goto invalid;
+
#ifdef AIAMAGBIG
/* If this is a "big" archive, then set the flag and
re-read the header into the "big" structure. */
@@ -450,27 +449,18 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
/* seek back to beginning of archive */
EINTRLOOP (o, lseek (desc, 0, 0));
if (o < 0)
- {
- (void) close (desc);
- return -2;
- }
+ goto invalid;
/* re-read the header into the "big" structure */
- EINTRLOOP (nread, read (desc, &fl_header_big, FL_HSZ_BIG));
+ nread = readbuf (desc, &fl_header_big, FL_HSZ_BIG);
if (nread != FL_HSZ_BIG)
- {
- (void) close (desc);
- return -2;
- }
+ goto invalid;
}
else
#endif
/* Check to make sure this is a "normal" archive. */
if (memcmp (fl_header.fl_magic, AIAMAG, SAIAMAG))
- {
- (void) close (desc);
- return -2;
- }
+ goto invalid;
}
#else
{
@@ -480,12 +470,9 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
unsigned short int buf;
#endif
int nread;
- EINTRLOOP (nread, read (desc, &buf, sizeof (buf)));
+ nread = readbuf (desc, &buf, sizeof (buf));
if (nread != sizeof (buf) || buf != ARMAG)
- {
- (void) close (desc);
- return -2;
- }
+ goto invalid;
}
#endif
#endif
@@ -493,7 +480,7 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
/* Now find the members one by one. */
{
#ifdef SARMAG
- register long int member_offset = SARMAG;
+ long int member_offset = SARMAG;
#else
#ifdef AIAMAG
long int member_offset;
@@ -520,28 +507,30 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
}
#else
#ifndef M_XENIX
- register long int member_offset = sizeof (int);
+ long int member_offset = sizeof (int);
#else /* Xenix. */
- register long int member_offset = sizeof (unsigned short int);
+ long int member_offset = sizeof (unsigned short int);
#endif /* Not Xenix. */
#endif
#endif
while (1)
{
- register int nread;
+ int nread;
struct ar_hdr member_header;
#ifdef AIAMAGBIG
struct ar_hdr_big member_header_big;
#endif
#ifdef AIAMAG
- char name[256];
+# define ARNAME_MAX 255
+ char name[ARNAME_MAX + 1];
int name_len;
long int dateval;
int uidval, gidval;
long int data_offset;
#else
- char namebuf[sizeof member_header.ar_name + 1];
+# define ARNAME_MAX (int)sizeof(member_header.ar_name)
+ char namebuf[ARNAME_MAX + 1];
char *name;
int is_namemap; /* Nonzero if this entry maps long names. */
int long_name = 0;
@@ -553,10 +542,7 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
EINTRLOOP (o, lseek (desc, member_offset, 0));
if (o < 0)
- {
- (void) close (desc);
- return -2;
- }
+ goto invalid;
#ifdef AIAMAG
#define AR_MEMHDR_SZ(x) (sizeof(x) - sizeof (x._ar_name))
@@ -564,25 +550,21 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
#ifdef AIAMAGBIG
if (big_archive)
{
- EINTRLOOP (nread, read (desc, &member_header_big,
- AR_MEMHDR_SZ(member_header_big)));
+ nread = readbuf (desc, &member_header_big,
+ AR_MEMHDR_SZ(member_header_big));
if (nread != AR_MEMHDR_SZ(member_header_big))
- {
- (void) close (desc);
- return -2;
- }
+ goto invalid;
sscanf (member_header_big.ar_namlen, "%4d", &name_len);
- EINTRLOOP (nread, read (desc, name, name_len));
+ if (name_len < 1 || name_len > ARNAME_MAX)
+ goto invalid;
+ nread = readbuf (desc, name, name_len);
if (nread != name_len)
- {
- (void) close (desc);
- return -2;
- }
+ goto invalid;
- name[name_len] = 0;
+ name[name_len] = '\0';
sscanf (member_header_big.ar_date, "%12ld", &dateval);
sscanf (member_header_big.ar_uid, "%12d", &uidval);
@@ -596,25 +578,21 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
else
#endif
{
- EINTRLOOP (nread, read (desc, &member_header,
- AR_MEMHDR_SZ(member_header)));
+ nread = readbuf (desc, &member_header,
+ AR_MEMHDR_SZ(member_header));
if (nread != AR_MEMHDR_SZ(member_header))
- {
- (void) close (desc);
- return -2;
- }
+ goto invalid;
sscanf (member_header.ar_namlen, "%4d", &name_len);
- EINTRLOOP (nread, read (desc, name, name_len));
+ if (name_len < 1 || name_len > ARNAME_MAX)
+ goto invalid;
+ nread = readbuf (desc, name, name_len);
if (nread != name_len)
- {
- (void) close (desc);
- return -2;
- }
+ goto invalid;
- name[name_len] = 0;
+ name[name_len] = '\0';
sscanf (member_header.ar_date, "%12ld", &dateval);
sscanf (member_header.ar_uid, "%12d", &uidval);
@@ -634,7 +612,7 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
eltmode, arg);
#else /* Not AIAMAG. */
- EINTRLOOP (nread, read (desc, &member_header, AR_HDR_SIZE));
+ nread = readbuf (desc, &member_header, AR_HDR_SIZE);
if (nread == 0)
/* No data left means end of file; that is OK. */
break;
@@ -656,15 +634,12 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
)
#endif
)
- {
- (void) close (desc);
- return -2;
- }
+ goto invalid;
name = namebuf;
memcpy (name, member_header.ar_name, sizeof member_header.ar_name);
{
- register char *p = name + sizeof member_header.ar_name;
+ char *p = name + sizeof member_header.ar_name;
do
*p = '\0';
while (p > name && *--p == ' ');
@@ -679,6 +654,7 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
is_namemap = (!strcmp (name, "//")
|| !strcmp (name, "ARFILENAMES/"));
#endif /* Not AIAMAG. */
+
/* On some systems, there is a slash after each member name. */
if (*p == '/')
*p = '\0';
@@ -693,23 +669,33 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
&& (name[0] == ' ' || name[0] == '/')
&& namemap != 0)
{
- name = namemap + atoi (name + 1);
+ int name_off = atoi (name + 1);
+ int name_len;
+
+ if (name_off < 0 || name_off >= namemap_size)
+ goto invalid;
+
+ name = namemap + name_off;
+ name_len = strlen (name);
+ if (name_len < 1)
+ goto invalid;
long_name = 1;
}
else if (name[0] == '#'
&& name[1] == '1'
&& name[2] == '/')
{
- int namesize = atoi (name + 3);
+ int name_len = atoi (name + 3);
+
+ if (name_len < 1)
+ goto invalid;
+
+ name = alloca (name_len + 1);
+ nread = readbuf (desc, name, name_len);
+ if (nread != name_len)
+ goto invalid;
- name = alloca (namesize + 1);
- EINTRLOOP (nread, read (desc, name, namesize));
- if (nread != namesize)
- {
- close (desc);
- return -2;
- }
- name[namesize] = '\0';
+ name[name_len] = '\0';
long_name = 1;
}
@@ -717,7 +703,7 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
}
#ifndef M_XENIX
- sscanf (TOCHAR (member_header.ar_mode), "%o", &eltmode);
+ sscanf (TOCHAR (member_header.ar_mode), "%8o", &eltmode);
eltsize = atol (TOCHAR (member_header.ar_size));
#else /* Xenix. */
eltmode = (unsigned short int) member_header.ar_mode;
@@ -759,10 +745,7 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
sscanf (member_header.ar_nxtmem, "%12ld", &member_offset);
if (lseek (desc, member_offset, 0) != member_offset)
- {
- (void) close (desc);
- return -2;
- }
+ goto invalid;
#else
/* If this member maps archive names, we must read it in. The
@@ -773,13 +756,13 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
char *clear;
char *limit;
- namemap = alloca (eltsize);
- EINTRLOOP (nread, read (desc, namemap, eltsize));
+ if (eltsize > INT_MAX)
+ goto invalid;
+ namemap = alloca (eltsize + 1);
+ nread = readbuf (desc, namemap, eltsize);
if (nread != eltsize)
- {
- (void) close (desc);
- return -2;
- }
+ goto invalid;
+ namemap_size = eltsize;
/* The names are separated by newlines. Some formats have
a trailing slash. Null terminate the strings for
@@ -794,6 +777,7 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
clear[-1] = '\0';
}
}
+ *limit = '\0';
is_namemap = 0;
}
@@ -807,6 +791,10 @@ ar_scan (const char *archive, ar_member_func_t function, const void *arg)
close (desc);
return 0;
+
+ invalid:
+ close (desc);
+ return -2;
}
#endif /* !VMS */
@@ -909,28 +897,19 @@ ar_member_touch (const char *arname, const char *memname)
EINTRLOOP (o, lseek (fd, pos, 0));
if (o < 0)
goto lose;
- EINTRLOOP (r, read (fd, &ar_hdr, AR_HDR_SIZE));
- if (r != AR_HDR_SIZE)
- goto lose;
- /* Write back the header, thus touching the archive file. */
- EINTRLOOP (o, lseek (fd, pos, 0));
- if (o < 0)
- goto lose;
- EINTRLOOP (r, write (fd, &ar_hdr, AR_HDR_SIZE));
+ r = readbuf (fd, &ar_hdr, AR_HDR_SIZE);
if (r != AR_HDR_SIZE)
goto lose;
/* The file's mtime is the time we we want. */
EINTRLOOP (r, fstat (fd, &statbuf));
if (r < 0)
goto lose;
-#if defined(ARFMAG) || defined(ARFZMAG) || defined(AIAMAG) || defined(WINDOWS32)
/* Advance member's time to that time */
+#if defined(ARFMAG) || defined(ARFZMAG) || defined(AIAMAG) || defined(WINDOWS32)
for (ui = 0; ui < sizeof ar_hdr.ar_date; ui++)
ar_hdr.ar_date[ui] = ' ';
sprintf (TOCHAR (ar_hdr.ar_date), "%lu", (long unsigned) statbuf.st_mtime);
-#ifdef AIAMAG
- ar_hdr.ar_date[strlen (ar_hdr.ar_date)] = ' ';
-#endif
+ ar_hdr.ar_date[strlen ((char *) ar_hdr.ar_date)] = ' ';
#else
ar_hdr.ar_date = statbuf.st_mtime;
#endif
@@ -938,7 +917,7 @@ ar_member_touch (const char *arname, const char *memname)
EINTRLOOP (o, lseek (fd, pos, 0));
if (o < 0)
goto lose;
- EINTRLOOP (r, write (fd, &ar_hdr, AR_HDR_SIZE));
+ r = writebuf (fd, &ar_hdr, AR_HDR_SIZE);
if (r != AR_HDR_SIZE)
goto lose;
close (fd);
diff --git a/commands.c b/src/commands.c
index 124b93e..88c33a3 100644
--- a/commands.c
+++ b/src/commands.c
@@ -1,5 +1,5 @@
/* Command processing for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -32,7 +32,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#endif
#ifndef HAVE_UNISTD_H
-int getpid ();
+pid_t getpid ();
#endif
@@ -72,7 +72,7 @@ set_file_variables (struct file *file)
if (ar_name (file->name))
{
- unsigned int len;
+ size_t len;
const char *cp;
char *p;
@@ -101,7 +101,7 @@ set_file_variables (struct file *file)
any suffix in the .SUFFIXES list stripped off for
explicit rules. We store this in the 'stem' member. */
const char *name;
- unsigned int len;
+ size_t len;
#ifndef NO_ARCHIVES
if (ar_name (file->name))
@@ -118,7 +118,7 @@ set_file_variables (struct file *file)
for (d = enter_file (strcache_add (".SUFFIXES"))->deps; d ; d = d->next)
{
- unsigned int slen = strlen (dep_name (d));
+ size_t slen = strlen (dep_name (d));
if (len > slen && strneq (dep_name (d), name + (len - slen), slen))
{
file->stem = strcache_add_len (name, len - slen);
@@ -133,14 +133,14 @@ set_file_variables (struct file *file)
/* $< is the first not order-only dependency. */
less = "";
for (d = file->deps; d != 0; d = d->next)
- if (!d->ignore_mtime)
+ if (!d->ignore_mtime && !d->ignore_automatic_vars)
{
if (!d->need_2nd_expansion)
less = dep_name (d);
break;
}
- if (file->cmds == default_file->cmds)
+ if (file->cmds != 0 && file->cmds == default_file->cmds)
/* This file got its commands from .DEFAULT.
In this case $< is the same as $@. */
less = at;
@@ -159,14 +159,14 @@ set_file_variables (struct file *file)
{
static char *plus_value=0, *bar_value=0, *qmark_value=0;
- static unsigned int plus_max=0, bar_max=0, qmark_max=0;
+ static size_t plus_max=0, bar_max=0, qmark_max=0;
- unsigned int qmark_len, plus_len, bar_len;
+ size_t qmark_len, plus_len, bar_len;
char *cp;
char *caret_value;
char *qp;
char *bp;
- unsigned int len;
+ size_t len;
struct hash_table dep_hash;
void **slot;
@@ -178,7 +178,7 @@ set_file_variables (struct file *file)
bar_len = 0;
for (d = file->deps; d != 0; d = d->next)
{
- if (!d->need_2nd_expansion)
+ if (!d->need_2nd_expansion && !d->ignore_automatic_vars)
{
if (d->ignore_mtime)
bar_len += strlen (dep_name (d)) + 1;
@@ -200,7 +200,7 @@ set_file_variables (struct file *file)
qmark_len = plus_len + 1; /* Will be this or less. */
for (d = file->deps; d != 0; d = d->next)
- if (! d->ignore_mtime && ! d->need_2nd_expansion)
+ if (! d->ignore_mtime && ! d->need_2nd_expansion && ! d->ignore_automatic_vars)
{
const char *c = dep_name (d);
@@ -247,7 +247,7 @@ set_file_variables (struct file *file)
for (d = file->deps; d != 0; d = d->next)
{
- if (d->need_2nd_expansion)
+ if (d->need_2nd_expansion || d->ignore_automatic_vars)
continue;
slot = hash_find_slot (&dep_hash, d);
@@ -269,7 +269,7 @@ set_file_variables (struct file *file)
{
const char *c;
- if (d->need_2nd_expansion || hash_find_item (&dep_hash, d) != d)
+ if (d->need_2nd_expansion || d->ignore_automatic_vars || hash_find_item (&dep_hash, d) != d)
continue;
c = dep_name (d);
@@ -326,7 +326,8 @@ set_file_variables (struct file *file)
void
chop_commands (struct commands *cmds)
{
- unsigned int nlines, idx;
+ unsigned int nlines;
+ unsigned short idx;
char **lines;
/* If we don't have any commands,
@@ -339,7 +340,7 @@ chop_commands (struct commands *cmds)
if (one_shell)
{
- int l = strlen (cmds->commands);
+ size_t l = strlen (cmds->commands);
nlines = 1;
lines = xmalloc (nlines * sizeof (char *));
@@ -382,7 +383,7 @@ chop_commands (struct commands *cmds)
nlines += 2;
lines = xrealloc (lines, nlines * sizeof (char *));
}
- lines[idx++] = xstrndup (p, end - p);
+ lines[idx++] = xstrndup (p, (size_t) (end - p));
p = end;
if (*p != '\0')
++p;
@@ -401,7 +402,7 @@ chop_commands (struct commands *cmds)
if (nlines > USHRT_MAX)
ON (fatal, &cmds->fileinfo, _("Recipe has too many lines (%ud)"), nlines);
- cmds->ncommand_lines = nlines;
+ cmds->ncommand_lines = (unsigned short)nlines;
cmds->command_lines = lines;
cmds->any_recurse = 0;
@@ -538,7 +539,7 @@ fatal_error_signal (int sig)
{
struct child *c;
for (c = children; c != 0; c = c->next)
- if (!c->remote)
+ if (!c->remote && c->pid > 0)
(void) kill (c->pid, SIGTERM);
}
@@ -559,7 +560,7 @@ fatal_error_signal (int sig)
/* Remote children won't automatically get signals sent
to the process group, so we must send them. */
for (c = children; c != 0; c = c->next)
- if (c->remote)
+ if (c->remote && c->pid > 0)
(void) remote_kill (c->pid, sig);
for (c = children; c != 0; c = c->next)
@@ -660,7 +661,7 @@ delete_child_targets (struct child *child)
{
struct dep *d;
- if (child->deleted)
+ if (child->deleted || child->pid < 0)
return;
/* Delete the target file if it changed. */
diff --git a/commands.h b/src/commands.h
index 18d8c28..d86752c 100644
--- a/commands.h
+++ b/src/commands.h
@@ -1,5 +1,5 @@
/* Definition of data structures describing shell commands for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/config.ami b/src/config.ami
index b342a83..d7f637d 100644
--- a/config.ami
+++ b/src/config.ami
@@ -1,5 +1,5 @@
/* config.h -- hand-massaged for Amiga -*-C-*-
-Copyright (C) 1995-2016 Free Software Foundation, Inc.
+Copyright (C) 1995-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -177,7 +177,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#define PACKAGE "make"
/* Version of this package (needed by automake) */
-#define VERSION "4.2.1"
+#define VERSION "4.3"
/* Define to the name of the SCCS 'get' command. */
#define SCCS_GET "get"
@@ -258,9 +258,6 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the stricmp function. */
/* #undef HAVE_STRICMP */
-/* Define if you have the strerror function. */
-#define HAVE_STRERROR 1
-
/* Define if you have the strsignal function. */
/* #undef HAVE_STRSIGNAL */
@@ -335,3 +332,6 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
/* Build host information. */
#define MAKE_HOST "Amiga"
+
+/* Define to `int' if <sys/types.h> does not define. */
+#define ssize_t int
diff --git a/config.h-vms b/src/config.h-vms
index c538672..e2284a3 100644
--- a/config.h-vms
+++ b/src/config.h-vms
@@ -1,6 +1,6 @@
/* config.h-vms. Generated by hand by Klaus Kämpf <kkaempf@rmi.de> -*-C-*-
-Copyright (C) 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -217,7 +217,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#define PACKAGE "make"
/* Version of this package (needed by automake) */
-#define VERSION "4.2.1"
+#define VERSION "4.3"
/* Define to the name of the SCCS 'get' command. */
/* #undef SCCS_GET */
@@ -298,9 +298,6 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the stricmp function. */
/* #undef HAVE_STRICMP */
-/* Define to 1 if you have the strerror function. */
-#define HAVE_STRERROR 1
-
/* Define to 1 if you have the strsignal function. */
/* #undef HAVE_STRSIGNAL */
@@ -417,6 +414,10 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#define alloca(n) __ALLOCA(n)
#endif
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+/* # undef WORDS_BIGENDIAN */
+
/* Output sync sypport */
#define NO_OUTPUT_SYNC
diff --git a/config.h.W32 b/src/config.h.W32
index 2c6fc53..be2a33e 100644
--- a/config.h.W32
+++ b/src/config.h.W32
@@ -1,6 +1,6 @@
/* config.h.W32 -- hand-massaged config.h file for Windows builds -*-C-*-
-Copyright (C) 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -261,14 +261,13 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the 'strdup' function. */
#define HAVE_STRDUP 1
-/* Define to 1 if you have the 'strerror' function. */
-#define HAVE_STRERROR 1
-
/* Define to 1 if you have the 'stricmp' function. */
#define HAVE_STRICMP 1
/* Define to 1 if you have the <strings.h> header file. */
-/* #define HAVE_STRINGS_H 1 */
+#ifdef __MINGW32__
+#define HAVE_STRINGS_H 1
+#endif
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
@@ -292,6 +291,12 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
/* Define to 1 if you have the 'strsignal' function. */
/* #undef HAVE_STRSIGNAL */
+/* Define to 1 if `d_type' is a member of `struct dirent'. */
+/* SV 57152: MinGW64 version of dirent doesn't support d_type. */
+#ifndef __MINGW64__
+# define HAVE_STRUCT_DIRENT_D_TYPE 1
+#endif
+
/* Define to 1 if you have the `isatty' function. */
#define HAVE_ISATTY 1
@@ -299,6 +304,11 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#define HAVE_TTYNAME 1
char *ttyname (int);
+/* Define to 1 if you have the `umask' function. */
+#ifdef __MINGW32__
+# define HAVE_UMASK 1
+#endif
+
/* Define to 1 if 'n_un.n_name' is a member of 'struct nlist'. */
/* #undef HAVE_STRUCT_NLIST_N_UN_N_NAME */
@@ -384,7 +394,7 @@ char *ttyname (int);
#define PACKAGE_URL "http://www.gnu.org/software/make/"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "4.2.1"
+#define PACKAGE_VERSION "4.3"
/* Define to the character that separates directories in PATH. */
#define PATH_SEPARATOR_CHAR ';'
@@ -436,7 +446,7 @@ char *ttyname (int);
/* #undef UMAX4_3 */
/* Version number of package */
-#define VERSION "4.2.1"
+#define VERSION "4.3"
/* Define if using the dmalloc debugging malloc package */
/* #undef WITH_DMALLOC */
@@ -448,6 +458,10 @@ char *ttyname (int);
/* # undef _ALL_SOURCE */
#endif
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+/* # undef WORDS_BIGENDIAN */
+
/* Number of bits in a file offset, on hosts where this is settable. */
/* #undef _FILE_OFFSET_BITS */
@@ -467,6 +481,11 @@ char *ttyname (int);
/* Define to empty if 'const' does not conform to ANSI C. */
/* #undef const */
+#ifdef __MINGW32__
+# undef __USE_MINGW_ANSI_STDIO
+# define __USE_MINGW_ANSI_STDIO 1
+#endif
+
#include <sys/types.h>
/* Define to 'int' if <sys/types.h> doesn't define. */
@@ -482,6 +501,9 @@ char *ttyname (int);
#endif
#endif
+/* Define to `int' if <sys/types.h> does not define. */
+#define ssize_t int
+
/* Define to 'int' if <sys/types.h> doesn't define. */
#define uid_t int
diff --git a/src/config.h.in b/src/config.h.in
new file mode 100644
index 0000000..4757a50
--- /dev/null
+++ b/src/config.h.in
@@ -0,0 +1,1132 @@
+/* src/config.h.in. Generated from configure.ac by autoheader. */
+
+/* CPU and C ABI indicator */
+#ifndef __i386__
+#undef __i386__
+#endif
+#ifndef __x86_64_x32__
+#undef __x86_64_x32__
+#endif
+#ifndef __x86_64__
+#undef __x86_64__
+#endif
+#ifndef __alpha__
+#undef __alpha__
+#endif
+#ifndef __arm__
+#undef __arm__
+#endif
+#ifndef __armhf__
+#undef __armhf__
+#endif
+#ifndef __arm64_ilp32__
+#undef __arm64_ilp32__
+#endif
+#ifndef __arm64__
+#undef __arm64__
+#endif
+#ifndef __hppa__
+#undef __hppa__
+#endif
+#ifndef __hppa64__
+#undef __hppa64__
+#endif
+#ifndef __ia64_ilp32__
+#undef __ia64_ilp32__
+#endif
+#ifndef __ia64__
+#undef __ia64__
+#endif
+#ifndef __m68k__
+#undef __m68k__
+#endif
+#ifndef __mips__
+#undef __mips__
+#endif
+#ifndef __mipsn32__
+#undef __mipsn32__
+#endif
+#ifndef __mips64__
+#undef __mips64__
+#endif
+#ifndef __powerpc__
+#undef __powerpc__
+#endif
+#ifndef __powerpc64__
+#undef __powerpc64__
+#endif
+#ifndef __powerpc64_elfv2__
+#undef __powerpc64_elfv2__
+#endif
+#ifndef __riscv32__
+#undef __riscv32__
+#endif
+#ifndef __riscv64__
+#undef __riscv64__
+#endif
+#ifndef __riscv32_ilp32__
+#undef __riscv32_ilp32__
+#endif
+#ifndef __riscv32_ilp32f__
+#undef __riscv32_ilp32f__
+#endif
+#ifndef __riscv32_ilp32d__
+#undef __riscv32_ilp32d__
+#endif
+#ifndef __riscv64_ilp32__
+#undef __riscv64_ilp32__
+#endif
+#ifndef __riscv64_ilp32f__
+#undef __riscv64_ilp32f__
+#endif
+#ifndef __riscv64_ilp32d__
+#undef __riscv64_ilp32d__
+#endif
+#ifndef __riscv64_lp64__
+#undef __riscv64_lp64__
+#endif
+#ifndef __riscv64_lp64f__
+#undef __riscv64_lp64f__
+#endif
+#ifndef __riscv64_lp64d__
+#undef __riscv64_lp64d__
+#endif
+#ifndef __s390__
+#undef __s390__
+#endif
+#ifndef __s390x__
+#undef __s390x__
+#endif
+#ifndef __sh__
+#undef __sh__
+#endif
+#ifndef __sparc__
+#undef __sparc__
+#endif
+#ifndef __sparc64__
+#undef __sparc64__
+#endif
+
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* Define to the number of bits in type 'ptrdiff_t'. */
+#undef BITSIZEOF_PTRDIFF_T
+
+/* Define to the number of bits in type 'sig_atomic_t'. */
+#undef BITSIZEOF_SIG_ATOMIC_T
+
+/* Define to the number of bits in type 'size_t'. */
+#undef BITSIZEOF_SIZE_T
+
+/* Define to the number of bits in type 'wchar_t'. */
+#undef BITSIZEOF_WCHAR_T
+
+/* Define to the number of bits in type 'wint_t'. */
+#undef BITSIZEOF_WINT_T
+
+/* Define to 1 if the `closedir' function returns void instead of `int'. */
+#undef CLOSEDIR_VOID
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+ systems. This function is required for `alloca.c' support on those systems.
+ */
+#undef CRAY_STACKSEG_END
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Define to 1 for DGUX with <sys/dg_sys_info.h>. */
+#undef DGUX
+
+/* Define to 1 if // is a file system root distinct from /. */
+#undef DOUBLE_SLASH_IS_DISTINCT_ROOT
+
+/* Define to 1 if translation of program messages to the user's native
+ language is requested. */
+#undef ENABLE_NLS
+
+/* Define this to 1 if F_DUPFD behavior does not match POSIX */
+#undef FCNTL_DUPFD_BUGGY
+
+/* Use high resolution file timestamps if nonzero. */
+#undef FILE_TIMESTAMP_HI_RES
+
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+ whether the gnulib module fscanf shall be considered present. */
+#undef GNULIB_FSCANF
+
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+ whether the gnulib module msvc-nothrow shall be considered present. */
+#undef GNULIB_MSVC_NOTHROW
+
+/* Define to 1 if printf and friends should be labeled with attribute
+ "__gnu_printf__" instead of "__printf__" */
+#undef GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU
+
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+ whether the gnulib module scanf shall be considered present. */
+#undef GNULIB_SCANF
+
+/* Define to a C preprocessor expression that evaluates to 1 or 0, depending
+ whether the gnulib module strerror shall be considered present. */
+#undef GNULIB_STRERROR
+
+/* Define to 1 when the gnulib module access should be tested. */
+#undef GNULIB_TEST_ACCESS
+
+/* Define to 1 when the gnulib module close should be tested. */
+#undef GNULIB_TEST_CLOSE
+
+/* Define to 1 when the gnulib module dup2 should be tested. */
+#undef GNULIB_TEST_DUP2
+
+/* Define to 1 when the gnulib module fcntl should be tested. */
+#undef GNULIB_TEST_FCNTL
+
+/* Define to 1 when the gnulib module getdtablesize should be tested. */
+#undef GNULIB_TEST_GETDTABLESIZE
+
+/* Define to 1 when the gnulib module getloadavg should be tested. */
+#undef GNULIB_TEST_GETLOADAVG
+
+/* Define to 1 when the gnulib module malloc-posix should be tested. */
+#undef GNULIB_TEST_MALLOC_POSIX
+
+/* Define to 1 when the gnulib module stpcpy should be tested. */
+#undef GNULIB_TEST_STPCPY
+
+/* Define to 1 when the gnulib module strerror should be tested. */
+#undef GNULIB_TEST_STRERROR
+
+/* Define to 1 if you have 'alloca' after including <alloca.h>, a header that
+ may be supplied by this distribution. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+ */
+#undef HAVE_ALLOCA_H
+
+/* Define to 1 if you have the `atexit' function. */
+#undef HAVE_ATEXIT
+
+/* Use case insensitive file names */
+#undef HAVE_CASE_INSENSITIVE_FS
+
+/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the
+ CoreFoundation framework. */
+#undef HAVE_CFLOCALECOPYCURRENT
+
+/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in
+ the CoreFoundation framework. */
+#undef HAVE_CFPREFERENCESCOPYAPPVALUE
+
+/* Define to 1 if you have the clock_gettime function. */
+#undef HAVE_CLOCK_GETTIME
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+ */
+#undef HAVE_DCGETTEXT
+
+/* Define to 1 if you have the declaration of `bsd_signal', and to 0 if you
+ don't. */
+#undef HAVE_DECL_BSD_SIGNAL
+
+/* Define to 1 if you have the declaration of `dlerror', and to 0 if you
+ don't. */
+#undef HAVE_DECL_DLERROR
+
+/* Define to 1 if you have the declaration of `dlopen', and to 0 if you don't.
+ */
+#undef HAVE_DECL_DLOPEN
+
+/* Define to 1 if you have the declaration of `dlsym', and to 0 if you don't.
+ */
+#undef HAVE_DECL_DLSYM
+
+/* Define to 1 if you have the declaration of `getdtablesize', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETDTABLESIZE
+
+/* Define to 1 if you have the declaration of `program_invocation_name', and
+ to 0 if you don't. */
+#undef HAVE_DECL_PROGRAM_INVOCATION_NAME
+
+/* Define to 1 if you have the declaration of `program_invocation_short_name',
+ and to 0 if you don't. */
+#undef HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
+
+/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRERROR_R
+
+/* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you
+ don't. */
+#undef HAVE_DECL_SYS_SIGLIST
+
+/* Define to 1 if you have the declaration of `_sys_siglist', and to 0 if you
+ don't. */
+#undef HAVE_DECL__SYS_SIGLIST
+
+/* Define to 1 if you have the declaration of `__argv', and to 0 if you don't.
+ */
+#undef HAVE_DECL___ARGV
+
+/* Define to 1 if you have the declaration of `__sys_siglist', and to 0 if you
+ don't. */
+#undef HAVE_DECL___SYS_SIGLIST
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_DIRENT_H
+
+/* Use platform specific coding */
+#undef HAVE_DOS_PATHS
+
+/* Define to 1 if you have the `dup' function. */
+#undef HAVE_DUP
+
+/* Define to 1 if you have the `dup2' function. */
+#undef HAVE_DUP2
+
+/* Define to 1 if you have the `fcntl' function. */
+#undef HAVE_FCNTL
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the `fdopen' function. */
+#undef HAVE_FDOPEN
+
+/* Define to 1 if you have the `fork' function. */
+#undef HAVE_FORK
+
+/* Define to 1 if you have the `getcwd' function. */
+#undef HAVE_GETCWD
+
+/* Define to 1 if you have the `getdtablesize' function. */
+#undef HAVE_GETDTABLESIZE
+
+/* Define to 1 if you have the `getexecname' function. */
+#undef HAVE_GETEXECNAME
+
+/* Define to 1 if you have the `getgroups' function. */
+#undef HAVE_GETGROUPS
+
+/* Define to 1 if you have the `gethostbyname' function. */
+#undef HAVE_GETHOSTBYNAME
+
+/* Define to 1 if you have the `gethostname' function. */
+#undef HAVE_GETHOSTNAME
+
+/* Define to 1 if you have the `getprogname' function. */
+#undef HAVE_GETPROGNAME
+
+/* Define to 1 if you have the `getrlimit' function. */
+#undef HAVE_GETRLIMIT
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* Define to 1 if you have a standard gettimeofday function */
+#undef HAVE_GETTIMEOFDAY
+
+/* Embed GNU Guile support */
+#undef HAVE_GUILE
+
+/* Define if you have the iconv() function and it works. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `isatty' function. */
+#undef HAVE_ISATTY
+
+/* Define to 1 if you have the `dgc' library (-ldgc). */
+#undef HAVE_LIBDGC
+
+/* Define to 1 if you have the `kstat' library (-lkstat). */
+#undef HAVE_LIBKSTAT
+
+/* Define to 1 if you have the `perfstat' library (-lperfstat). */
+#undef HAVE_LIBPERFSTAT
+
+/* Define to 1 if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define to 1 if the system has the type 'long long int'. */
+#undef HAVE_LONG_LONG_INT
+
+/* Define to 1 if you have the `lstat' function. */
+#undef HAVE_LSTAT
+
+/* Define to 1 if you have the <mach/mach.h> header file. */
+#undef HAVE_MACH_MACH_H
+
+/* Define if the 'malloc' function is POSIX compliant. */
+#undef HAVE_MALLOC_POSIX
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `memrchr' function. */
+#undef HAVE_MEMRCHR
+
+/* Define to 1 if you have the `mkstemp' function. */
+#undef HAVE_MKSTEMP
+
+/* Define to 1 if you have the `mktemp' function. */
+#undef HAVE_MKTEMP
+
+/* Define to 1 on MSVC platforms that have the "invalid parameter handler"
+ concept. */
+#undef HAVE_MSVC_INVALID_PARAMETER_HANDLER
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+#undef HAVE_NDIR_H
+
+/* Define to 1 if you have the <nlist.h> header file. */
+#undef HAVE_NLIST_H
+
+/* Define to 1 if you have the `pipe' function. */
+#undef HAVE_PIPE
+
+/* Define to 1 if you have the `posix_spawn' function. */
+#undef HAVE_POSIX_SPAWN
+
+/* Define to 1 if you have the `posix_spawnattr_setsigmask' function. */
+#undef HAVE_POSIX_SPAWNATTR_SETSIGMASK
+
+/* Define to 1 if you have the `pselect' function. */
+#undef HAVE_PSELECT
+
+/* Define to 1 if you have the `pstat_getdynamic' function. */
+#undef HAVE_PSTAT_GETDYNAMIC
+
+/* Define to 1 if you have the `readlink' function. */
+#undef HAVE_READLINK
+
+/* Define to 1 if you have the `realpath' function. */
+#undef HAVE_REALPATH
+
+/* Define to 1 if <signal.h> defines the SA_RESTART constant. */
+#undef HAVE_SA_RESTART
+
+/* Define to 1 if you have the `setdtablesize' function. */
+#undef HAVE_SETDTABLESIZE
+
+/* Define to 1 if you have the `setegid' function. */
+#undef HAVE_SETEGID
+
+/* Define to 1 if you have the `seteuid' function. */
+#undef HAVE_SETEUID
+
+/* Define to 1 if you have the `setlinebuf' function. */
+#undef HAVE_SETLINEBUF
+
+/* Define to 1 if you have the `setregid' function. */
+#undef HAVE_SETREGID
+
+/* Define to 1 if you have the `setreuid' function. */
+#undef HAVE_SETREUID
+
+/* Define to 1 if you have the `setrlimit' function. */
+#undef HAVE_SETRLIMIT
+
+/* Define to 1 if you have the `setvbuf' function. */
+#undef HAVE_SETVBUF
+
+/* Define to 1 if you have the `sigaction' function. */
+#undef HAVE_SIGACTION
+
+/* Define to 1 if 'sig_atomic_t' is a signed integer type. */
+#undef HAVE_SIGNED_SIG_ATOMIC_T
+
+/* Define to 1 if 'wchar_t' is a signed integer type. */
+#undef HAVE_SIGNED_WCHAR_T
+
+/* Define to 1 if 'wint_t' is a signed integer type. */
+#undef HAVE_SIGNED_WINT_T
+
+/* Define to 1 if you have the `sigsetmask' function. */
+#undef HAVE_SIGSETMASK
+
+/* Define to 1 if you have the `socket' function. */
+#undef HAVE_SOCKET
+
+/* Define to 1 if you have the <spawn.h> header file. */
+#undef HAVE_SPAWN_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `stpcpy' function. */
+#undef HAVE_STPCPY
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#undef HAVE_STRCASECMP
+
+/* Define to 1 if you have the `strcmpi' function. */
+#undef HAVE_STRCMPI
+
+/* Define to 1 if you have the `strcoll' function and it is properly defined.
+ */
+#undef HAVE_STRCOLL
+
+/* Define to 1 if you have the `strdup' function. */
+#undef HAVE_STRDUP
+
+/* Define to 1 if you have the `strerror_r' function. */
+#undef HAVE_STRERROR_R
+
+/* Define to 1 if you have the `stricmp' function. */
+#undef HAVE_STRICMP
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strncasecmp' function. */
+#undef HAVE_STRNCASECMP
+
+/* Define to 1 if you have the `strncmpi' function. */
+#undef HAVE_STRNCMPI
+
+/* Define to 1 if you have the `strndup' function. */
+#undef HAVE_STRNDUP
+
+/* Define to 1 if you have the `strnicmp' function. */
+#undef HAVE_STRNICMP
+
+/* Define to 1 if you have the `strsignal' function. */
+#undef HAVE_STRSIGNAL
+
+/* Define to 1 if `d_type' is a member of `struct dirent'. */
+#undef HAVE_STRUCT_DIRENT_D_TYPE
+
+/* Define to 1 if `n_un.n_name' is a member of `struct nlist'. */
+#undef HAVE_STRUCT_NLIST_N_UN_N_NAME
+
+/* Define to 1 if you have the `symlink' function. */
+#undef HAVE_SYMLINK
+
+/* Define to 1 if you have the <sys/bitypes.h> header file. */
+#undef HAVE_SYS_BITYPES_H
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_DIR_H
+
+/* Define to 1 if you have the <sys/file.h> header file. */
+#undef HAVE_SYS_FILE_H
+
+/* Define to 1 if you have the <sys/inttypes.h> header file. */
+#undef HAVE_SYS_INTTYPES_H
+
+/* Define to 1 if you have the <sys/loadavg.h> header file. */
+#undef HAVE_SYS_LOADAVG_H
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_NDIR_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#undef HAVE_SYS_RESOURCE_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#undef HAVE_SYS_SELECT_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#undef HAVE_SYS_SOCKET_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/timeb.h> header file. */
+#undef HAVE_SYS_TIMEB_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <sys/wait.h> header file. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define to 1 if you have the `ttyname' function. */
+#undef HAVE_TTYNAME
+
+/* Define to 1 if the system has the type `uintmax_t'. */
+#undef HAVE_UINTMAX_T
+
+/* Define to 1 if you have the `umask' function. */
+#undef HAVE_UMASK
+
+/* Define to 1 if you have the 'union wait' type in <sys/wait.h>. */
+#undef HAVE_UNION_WAIT
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if the system has the type 'unsigned long long int'. */
+#undef HAVE_UNSIGNED_LONG_LONG_INT
+
+/* Define if you have a global __progname variable */
+#undef HAVE_VAR___PROGNAME
+
+/* Define to 1 if you have the `vfork' function. */
+#undef HAVE_VFORK
+
+/* Define to 1 if you have the <vfork.h> header file. */
+#undef HAVE_VFORK_H
+
+/* Define to 1 if you have the `wait3' function. */
+#undef HAVE_WAIT3
+
+/* Define to 1 if you have the `waitpid' function. */
+#undef HAVE_WAITPID
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#undef HAVE_WCHAR_H
+
+/* Define if you have the 'wchar_t' type. */
+#undef HAVE_WCHAR_T
+
+/* Define to 1 if you have the <winsock2.h> header file. */
+#undef HAVE_WINSOCK2_H
+
+/* Define if you have the 'wint_t' type. */
+#undef HAVE_WINT_T
+
+/* Define to 1 if `fork' works. */
+#undef HAVE_WORKING_FORK
+
+/* Define to 1 if O_NOATIME works. */
+#undef HAVE_WORKING_O_NOATIME
+
+/* Define to 1 if O_NOFOLLOW works. */
+#undef HAVE_WORKING_O_NOFOLLOW
+
+/* Define to 1 if `vfork' works. */
+#undef HAVE_WORKING_VFORK
+
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* Define to 1 if you have the `_set_invalid_parameter_handler' function. */
+#undef HAVE__SET_INVALID_PARAMETER_HANDLER
+
+/* Build host information. */
+#undef MAKE_HOST
+
+/* Define to 1 to enable job server support in GNU make. */
+#undef MAKE_JOBSERVER
+
+/* Define to 1 to enable 'load' support in GNU make. */
+#undef MAKE_LOAD
+
+/* Define to 1 to enable symbolic link timestamp checking. */
+#undef MAKE_SYMLINKS
+
+/* Use GNU style printf and scanf. */
+#ifndef __USE_MINGW_ANSI_STDIO
+# undef __USE_MINGW_ANSI_STDIO
+#endif
+
+
+/* Define to 1 if the nlist n_name member is a pointer */
+#undef N_NAME_POINTER
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to the character that separates directories in PATH. */
+#undef PATH_SEPARATOR_CHAR
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+ 'ptrdiff_t'. */
+#undef PTRDIFF_T_SUFFIX
+
+/* Define to 1 if strerror(0) does not return a message implying success. */
+#undef REPLACE_STRERROR_0
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#undef RETSIGTYPE
+
+/* Define to the name of the SCCS 'get' command. */
+#undef SCCS_GET
+
+/* Define to 1 if the SCCS 'get' command understands the '-G<file>' option. */
+#undef SCCS_GET_MINUS_G
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+ 'sig_atomic_t'. */
+#undef SIG_ATOMIC_T_SUFFIX
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+ 'size_t'. */
+#undef SIZE_T_SUFFIX
+
+/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at runtime.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+#undef STAT_MACROS_BROKEN
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if strerror_r returns char *. */
+#undef STRERROR_R_CHAR_P
+
+/* Define if struct stat contains a nanoseconds field */
+#undef ST_MTIM_NSEC
+
+/* Define to 1 on System V Release 4. */
+#undef SVR4
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
+/* Define to 1 for Encore UMAX. */
+#undef UMAX
+
+/* Define to 1 for Encore UMAX 4.3 that has <inq_status/cpustats.h> instead of
+ <sys/cpustats.h>. */
+#undef UMAX4_3
+
+/* Define to 1 to use posix_spawn(). */
+#undef USE_POSIX_SPAWN
+
+/* Enable extensions on AIX 3, Interix. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable general extensions on macOS. */
+#ifndef _DARWIN_C_SOURCE
+# undef _DARWIN_C_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable NetBSD extensions on NetBSD. */
+#ifndef _NETBSD_SOURCE
+# undef _NETBSD_SOURCE
+#endif
+/* Enable OpenBSD extensions on NetBSD. */
+#ifndef _OPENBSD_SOURCE
+# undef _OPENBSD_SOURCE
+#endif
+/* Enable threading extensions on Solaris. */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */
+#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
+# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */
+#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+# undef __STDC_WANT_IEC_60559_BFP_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */
+#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
+# undef __STDC_WANT_IEC_60559_DFP_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */
+#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
+# undef __STDC_WANT_IEC_60559_FUNCS_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */
+#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
+# undef __STDC_WANT_IEC_60559_TYPES_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */
+#ifndef __STDC_WANT_LIB_EXT2__
+# undef __STDC_WANT_LIB_EXT2__
+#endif
+/* Enable extensions specified by ISO/IEC 24747:2009. */
+#ifndef __STDC_WANT_MATH_SPEC_FUNCS__
+# undef __STDC_WANT_MATH_SPEC_FUNCS__
+#endif
+/* Enable extensions on HP NonStop. */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable X/Open extensions if necessary. HP-UX 11.11 defines
+ mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of
+ whether compiling with -Ae or -D_HPUX_SOURCE=1. */
+#ifndef _XOPEN_SOURCE
+# undef _XOPEN_SOURCE
+#endif
+/* Enable X/Open compliant socket functions that do not require linking
+ with -lxnet on HP-UX 11.11. */
+#ifndef _HPUX_ALT_XOPEN_SOCKET_API
+# undef _HPUX_ALT_XOPEN_SOCKET_API
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
+/* Version number of package */
+#undef VERSION
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+ 'wchar_t'. */
+#undef WCHAR_T_SUFFIX
+
+/* Use platform specific coding */
+#undef WINDOWS32
+
+/* Define to l, ll, u, ul, ull, etc., as suitable for constants of type
+ 'wint_t'. */
+#undef WINT_T_SUFFIX
+
+/* Define if using the dmalloc debugging malloc package */
+#undef WITH_DMALLOC
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+# undef WORDS_BIGENDIAN
+# endif
+#endif
+
+/* Enable large inode numbers on Mac OS X 10.5. */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 1 to make NetBSD features available. MINIX 3 needs this. */
+#undef _NETBSD_SOURCE
+
+/* The _Noreturn keyword of C11. */
+#ifndef _Noreturn
+# if (defined __cplusplus \
+ && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
+ || (defined _MSC_VER && 1900 <= _MSC_VER)) \
+ && 0)
+ /* [[noreturn]] is not practically usable, because with it the syntax
+ extern _Noreturn void func (...);
+ would not be valid; such a declaration would only be valid with 'extern'
+ and '_Noreturn' swapped, or without the 'extern' keyword. However, some
+ AIX system header files and several gnulib header files use precisely
+ this syntax with 'extern'. */
+# define _Noreturn [[noreturn]]
+# elif ((!defined __cplusplus || defined __clang__) \
+ && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
+ || 4 < __GNUC__ + (7 <= __GNUC_MINOR__)))
+ /* _Noreturn works as-is. */
+# elif 2 < __GNUC__ + (8 <= __GNUC_MINOR__) || 0x5110 <= __SUNPRO_C
+# define _Noreturn __attribute__ ((__noreturn__))
+# elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0)
+# define _Noreturn __declspec (noreturn)
+# else
+# define _Noreturn
+# endif
+#endif
+
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+ this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for 'stat' and other things to work. */
+#undef _POSIX_SOURCE
+
+/* For standard stat data types on VMS. */
+#undef _USE_STD_STAT
+
+/* Define to 1 if the system <stdint.h> predates C++11. */
+#undef __STDC_CONSTANT_MACROS
+
+/* Define to 1 if the system <stdint.h> predates C++11. */
+#undef __STDC_LIMIT_MACROS
+
+/* The _GL_ASYNC_SAFE marker should be attached to functions that are
+ signal handlers (for signals other than SIGABRT, SIGPIPE) or can be
+ invoked from such signal handlers. Such functions have some restrictions:
+ * All functions that it calls should be marked _GL_ASYNC_SAFE as well,
+ or should be listed as async-signal-safe in POSIX
+ <https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_04>
+ section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in
+ particular, are NOT async-signal-safe.
+ * All memory locations (variables and struct fields) that these functions
+ access must be marked 'volatile'. This holds for both read and write
+ accesses. Otherwise the compiler might optimize away stores to and
+ reads from such locations that occur in the program, depending on its
+ data flow analysis. For example, when the program contains a loop
+ that is intended to inspect a variable set from within a signal handler
+ while (!signal_occurred)
+ ;
+ the compiler is allowed to transform this into an endless loop if the
+ variable 'signal_occurred' is not declared 'volatile'.
+ Additionally, recall that:
+ * A signal handler should not modify errno (except if it is a handler
+ for a fatal signal and ends by raising the same signal again, thus
+ provoking the termination of the process). If it invokes a function
+ that may clobber errno, it needs to save and restore the value of
+ errno. */
+#define _GL_ASYNC_SAFE
+
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define as 'access' if you don't have the eaccess() function. */
+#undef eaccess
+
+/* Please see the Gnulib manual for how to use these macros.
+
+ Suppress extern inline with HP-UX cc, as it appears to be broken; see
+ <https://lists.gnu.org/r/bug-texinfo/2013-02/msg00030.html>.
+
+ Suppress extern inline with Sun C in standards-conformance mode, as it
+ mishandles inline functions that call each other. E.g., for 'inline void f
+ (void) { } inline void g (void) { f (); }', c99 incorrectly complains
+ 'reference to static identifier "f" in extern inline function'.
+ This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16.
+
+ Suppress extern inline (with or without __attribute__ ((__gnu_inline__)))
+ on configurations that mistakenly use 'static inline' to implement
+ functions or macros in standard C headers like <ctype.h>. For example,
+ if isdigit is mistakenly implemented via a static inline function,
+ a program containing an extern inline function that calls isdigit
+ may not work since the C standard prohibits extern inline functions
+ from calling static functions (ISO C 99 section 6.7.4.(3).
+ This bug is known to occur on:
+
+ OS X 10.8 and earlier; see:
+ https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html
+
+ DragonFly; see
+ http://muscles.dragonflybsd.org/bulk/clang-master-potential/20141111_102002/logs/ah-tty-0.3.12.log
+
+ FreeBSD; see:
+ https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html
+
+ OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and
+ for clang but remains for g++; see <https://trac.macports.org/ticket/41033>.
+ Assume DragonFly and FreeBSD will be similar.
+
+ GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+ inline semantics, unless -fgnu89-inline is used. It defines a macro
+ __GNUC_STDC_INLINE__ to indicate this situation or a macro
+ __GNUC_GNU_INLINE__ to indicate the opposite situation.
+ GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline
+ semantics but warns, unless -fgnu89-inline is used:
+ warning: C99 inline functions are not supported; using GNU89
+ warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute
+ It defines a macro __GNUC_GNU_INLINE__ to indicate this situation.
+ */
+#if (((defined __APPLE__ && defined __MACH__) \
+ || defined __DragonFly__ || defined __FreeBSD__) \
+ && (defined __header_inline \
+ ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \
+ && ! defined __clang__) \
+ : ((! defined _DONT_USE_CTYPE_INLINE_ \
+ && (defined __GNUC__ || defined __cplusplus)) \
+ || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \
+ && defined __GNUC__ && ! defined __cplusplus))))
+# define _GL_EXTERN_INLINE_STDHEADER_BUG
+#endif
+#if ((__GNUC__ \
+ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
+ : (199901L <= __STDC_VERSION__ \
+ && !defined __HP_cc \
+ && !defined __PGI \
+ && !(defined __SUNPRO_C && __STDC__))) \
+ && !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
+# define _GL_INLINE inline
+# define _GL_EXTERN_INLINE extern inline
+# define _GL_EXTERN_INLINE_IN_USE
+#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \
+ && !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
+# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__
+ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */
+# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
+# else
+# define _GL_INLINE extern inline
+# endif
+# define _GL_EXTERN_INLINE extern
+# define _GL_EXTERN_INLINE_IN_USE
+#else
+# define _GL_INLINE static _GL_UNUSED
+# define _GL_EXTERN_INLINE static _GL_UNUSED
+#endif
+
+/* In GCC 4.6 (inclusive) to 5.1 (exclusive),
+ suppress bogus "no previous prototype for 'FOO'"
+ and "no previous declaration for 'FOO'" diagnostics,
+ when FOO is an inline function in the header; see
+ <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and
+ <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>. */
+#if __GNUC__ == 4 && 6 <= __GNUC_MINOR__
+# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
+# define _GL_INLINE_HEADER_CONST_PRAGMA
+# else
+# define _GL_INLINE_HEADER_CONST_PRAGMA \
+ _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
+# endif
+# define _GL_INLINE_HEADER_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
+ _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
+ _GL_INLINE_HEADER_CONST_PRAGMA
+# define _GL_INLINE_HEADER_END \
+ _Pragma ("GCC diagnostic pop")
+#else
+# define _GL_INLINE_HEADER_BEGIN
+# define _GL_INLINE_HEADER_END
+#endif
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef gid_t
+
+/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
+ the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
+ earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
+ __APPLE__ && __MACH__ test for Mac OS X.
+ __APPLE_CC__ tests for the Apple compiler and its version.
+ __STDC_VERSION__ tests for the C99 mode. */
+#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
+# define __GNUC_STDC_INLINE__ 1
+#endif
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef mode_t
+
+/* Define to `long int' if <sys/types.h> does not define. */
+#undef off_t
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef pid_t
+
+/* Define to the equivalent of the C99 'restrict' keyword, or to
+ nothing if this is not supported. Do not define if restrict is
+ supported directly. */
+#undef restrict
+/* Work around a bug in older versions of Sun C++, which did not
+ #define __restrict__ or support _Restrict or __restrict__
+ even though the corresponding Sun C compiler ended up with
+ "#define restrict _Restrict" or "#define restrict __restrict__"
+ in the previous line. This workaround can be removed once
+ we assume Oracle Developer Studio 12.5 (2016) or later. */
+#if defined __SUNPRO_CC && !defined __RESTRICT && !defined __restrict__
+# define _Restrict
+# define __restrict__
+#endif
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef ssize_t
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef uid_t
+
+/* Define to the widest unsigned integer type if <stdint.h> and <inttypes.h>
+ do not define. */
+#undef uintmax_t
+
+/* Define as a marker that can be attached to declarations that might not
+ be used. This helps to reduce warnings, such as from
+ GCC -Wunused-parameter. */
+#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _GL_UNUSED __attribute__ ((__unused__))
+#else
+# define _GL_UNUSED
+#endif
+/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name
+ is a misnomer outside of parameter lists. */
+#define _UNUSED_PARAMETER_ _GL_UNUSED
+
+/* gcc supports the "unused" attribute on possibly unused labels, and
+ g++ has since version 4.5. Note to support C++ as well as C,
+ _GL_UNUSED_LABEL should be used with a trailing ; */
+#if !defined __cplusplus || __GNUC__ > 4 \
+ || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
+# define _GL_UNUSED_LABEL _GL_UNUSED
+#else
+# define _GL_UNUSED_LABEL
+#endif
+
+/* The __pure__ attribute was added in gcc 2.96. */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
+#else
+# define _GL_ATTRIBUTE_PURE /* empty */
+#endif
+
+/* The __const__ attribute was added in gcc 2.95. */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
+# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
+#else
+# define _GL_ATTRIBUTE_CONST /* empty */
+#endif
+
+/* The __malloc__ attribute was added in gcc 3. */
+#if 3 <= __GNUC__
+# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
+#else
+# define _GL_ATTRIBUTE_MALLOC /* empty */
+#endif
+
+
+/* Define as `fork' if `vfork' does not work. */
+#undef vfork
diff --git a/configh.dos b/src/configh.dos
index 58bfeb0..38c8bde 100644
--- a/configh.dos
+++ b/src/configh.dos
@@ -1,6 +1,6 @@
/* configh.dos -- hand-massaged config.h file for MS-DOS builds -*-C-*-
-Copyright (C) 1994-2016 Free Software Foundation, Inc.
+Copyright (C) 1994-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -92,22 +92,25 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#define PACKAGE_NAME "GNU make"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GNU make 4.2.1"
+#define PACKAGE_STRING "GNU make 4.3"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "make"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "4.2.1"
+#define PACKAGE_VERSION "4.3"
/* Output sync sypport */
#define NO_OUTPUT_SYNC
/* Version number of package */
-#define VERSION "4.2.1"
+#define VERSION "4.3"
/* Build host information. */
#define MAKE_HOST "i386-pc-msdosdjgpp"
/* Grok DOS paths (drive specs and backslash path element separators) */
#define HAVE_DOS_PATHS
+
+/* Define to `int' if <sys/types.h> does not define. */
+#define ssize_t int
diff --git a/debug.h b/src/debug.h
index 17c394b..514b7e8 100644
--- a/debug.h
+++ b/src/debug.h
@@ -1,5 +1,5 @@
/* Debugging macros and interface.
-Copyright (C) 1999-2016 Free Software Foundation, Inc.
+Copyright (C) 1999-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -27,6 +27,8 @@ extern int db_level;
#define ISDB(_l) ((_l)&db_level)
+/* When adding macros to this list be sure to update the value of
+ XGETTEXT_OPTIONS in the po/Makevars file. */
#define DBS(_l,_x) do{ if(ISDB(_l)) {print_spaces (depth); \
printf _x; fflush (stdout);} }while(0)
diff --git a/default.c b/src/default.c
index 3d865c7..751ea15 100644
--- a/default.c
+++ b/src/default.c
@@ -1,5 +1,5 @@
/* Data base of default implicit rules for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/dep.h b/src/dep.h
index 7f5076e..76718f0 100644
--- a/dep.h
+++ b/src/dep.h
@@ -1,5 +1,5 @@
/* Definitions of dependency data structures for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -44,11 +44,12 @@ struct nameseq
NAMESEQ (_t); \
struct file *file; \
const char *stem; \
- unsigned short flags : 8; \
- unsigned short changed : 1; \
- unsigned short ignore_mtime : 1; \
- unsigned short staticpattern : 1; \
- unsigned short need_2nd_expansion : 1
+ unsigned int flags : 8; \
+ unsigned int changed : 1; \
+ unsigned int ignore_mtime : 1; \
+ unsigned int staticpattern : 1; \
+ unsigned int need_2nd_expansion : 1; \
+ unsigned int ignore_automatic_vars : 1
struct dep
{
@@ -62,7 +63,7 @@ struct dep
struct goaldep
{
DEP (struct goaldep);
- unsigned short error;
+ int error;
floc floc;
};
@@ -74,6 +75,7 @@ struct goaldep
#define PARSEFS_NOGLOB 0x0004
#define PARSEFS_EXISTS 0x0008
#define PARSEFS_NOCACHE 0x0010
+#define PARSEFS_ONEWORD 0x0020
#define PARSE_FILE_SEQ(_s,_t,_c,_p,_f) \
(_t *)parse_file_seq ((_s),sizeof (_t),(_c),(_p),(_f))
@@ -83,14 +85,14 @@ struct goaldep
#ifdef VMS
void *parse_file_seq ();
#else
-void *parse_file_seq (char **stringp, unsigned int size,
+void *parse_file_seq (char **stringp, size_t size,
int stopmap, const char *prefix, int flags);
#endif
char *tilde_expand (const char *name);
#ifndef NO_ARCHIVES
-struct nameseq *ar_glob (const char *arname, const char *member_pattern, unsigned int size);
+struct nameseq *ar_glob (const char *arname, const char *member_pattern, size_t size);
#endif
#define dep_name(d) ((d)->name ? (d)->name : (d)->file->name)
@@ -98,7 +100,7 @@ struct nameseq *ar_glob (const char *arname, const char *member_pattern, unsigne
#define alloc_seq_elt(_t) xcalloc (sizeof (_t))
void free_ns_chain (struct nameseq *n);
-#if defined(MAKE_MAINTAINER_MODE) && defined(__GNUC__)
+#if defined(MAKE_MAINTAINER_MODE) && defined(__GNUC__) && !defined(__STRICT_ANSI__)
/* Use inline to get real type-checking. */
#define SI static inline
SI struct nameseq *alloc_ns() { return alloc_seq_elt (struct nameseq); }
diff --git a/dir.c b/src/dir.c
index f34bbf5..862a18e 100644
--- a/dir.c
+++ b/src/dir.c
@@ -1,5 +1,5 @@
/* Directory hashing for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -407,6 +407,7 @@ struct dirfile
const char *name; /* Name of the file. */
size_t length;
short impossible; /* This file is impossible. */
+ unsigned char type;
};
static unsigned long
@@ -426,7 +427,7 @@ dirfile_hash_cmp (const void *xv, const void *yv)
{
const struct dirfile *x = xv;
const struct dirfile *y = yv;
- int result = x->length - y->length;
+ int result = (int) (x->length - y->length);
if (result)
return result;
return_ISTRING_COMPARE (x->name, y->name);
@@ -687,7 +688,7 @@ dir_contents_file_exists_p (struct directory_contents *dir,
while (1)
{
/* Enter the file in the hash table. */
- unsigned int len;
+ size_t len;
struct dirfile dirfile_key;
struct dirfile **dirfile_slot;
@@ -731,6 +732,9 @@ dir_contents_file_exists_p (struct directory_contents *dir,
#else
df->name = strcache_add_len (d->d_name, len);
#endif
+#ifdef HAVE_STRUCT_DIRENT_D_TYPE
+ df->type = d->d_type;
+#endif
df->length = len;
df->impossible = 0;
hash_insert_at (&dir->dirfiles, df, dirfile_slot);
@@ -1208,7 +1212,7 @@ static struct dirent *
read_dirstream (__ptr_t stream)
{
static char *buf;
- static unsigned int bufsz;
+ static size_t bufsz;
struct dirstream *const ds = (struct dirstream *) stream;
struct directory_contents *dc = ds->contents;
@@ -1221,8 +1225,8 @@ read_dirstream (__ptr_t stream)
{
/* The glob interface wants a 'struct dirent', so mock one up. */
struct dirent *d;
- unsigned int len = df->length + 1;
- unsigned int sz = sizeof (*d) - sizeof (d->d_name) + len;
+ size_t len = df->length + 1;
+ size_t sz = sizeof (*d) - sizeof (d->d_name) + len;
if (sz > bufsz)
{
bufsz *= 2;
@@ -1241,8 +1245,8 @@ read_dirstream (__ptr_t stream)
#ifdef _DIRENT_HAVE_D_NAMLEN
d->d_namlen = len - 1;
#endif
-#ifdef _DIRENT_HAVE_D_TYPE
- d->d_type = DT_UNKNOWN;
+#ifdef HAVE_STRUCT_DIRENT_D_TYPE
+ d->d_type = df->type;
#endif
memcpy (d->d_name, df->name, len);
return d;
@@ -1299,15 +1303,41 @@ local_stat (const char *path, struct stat *buf)
}
#endif
+/* Similarly for lstat. */
+#if !defined(lstat) && !defined(WINDOWS32) || defined(VMS)
+# ifndef VMS
+# ifndef HAVE_SYS_STAT_H
+int lstat (const char *path, struct stat *sbuf);
+# endif
+# else
+ /* We are done with the fake lstat. Go back to the real lstat */
+# ifdef lstat
+# undef lstat
+# endif
+# endif
+# define local_lstat lstat
+#elif defined(WINDOWS32)
+/* Windows doesn't support lstat(). */
+# define local_lstat local_stat
+#else
+static int
+local_lstat (const char *path, struct stat *buf)
+{
+ int e;
+ EINTRLOOP (e, lstat (path, buf));
+ return e;
+}
+#endif
+
void
dir_setup_glob (glob_t *gl)
{
+ gl->gl_offs = 0;
gl->gl_opendir = open_dirstream;
gl->gl_readdir = read_dirstream;
gl->gl_closedir = free;
+ gl->gl_lstat = local_lstat;
gl->gl_stat = local_stat;
- /* We don't bother setting gl_lstat, since glob never calls it.
- The slot is only there for compatibility with 4.4 BSD. */
}
void
diff --git a/expand.c b/src/expand.c
index 0b5fd01..0b6bb25 100644
--- a/expand.c
+++ b/src/expand.c
@@ -1,5 +1,5 @@
/* Variable expansion functions for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -42,7 +42,7 @@ const floc **expanding_var = &reading_file;
#define VARIABLE_BUFFER_ZONE 5
-static unsigned int variable_buffer_length;
+static size_t variable_buffer_length;
char *variable_buffer;
/* Subroutine of variable_expand and friends:
@@ -53,13 +53,13 @@ char *variable_buffer;
the following call. */
char *
-variable_buffer_output (char *ptr, const char *string, unsigned int length)
+variable_buffer_output (char *ptr, const char *string, size_t length)
{
- register unsigned int newlen = length + (ptr - variable_buffer);
+ size_t newlen = length + (ptr - variable_buffer);
if ((newlen + VARIABLE_BUFFER_ZONE) > variable_buffer_length)
{
- unsigned int offset = ptr - variable_buffer;
+ size_t offset = ptr - variable_buffer;
variable_buffer_length = (newlen + 100 > 2 * variable_buffer_length
? newlen + 100
: 2 * variable_buffer_length);
@@ -157,7 +157,7 @@ recursively_expand_for_file (struct variable *v, struct file *file)
__inline
#endif
static char *
-reference_variable (char *o, const char *name, unsigned int length)
+reference_variable (char *o, const char *name, size_t length)
{
struct variable *v;
char *value;
@@ -191,13 +191,13 @@ reference_variable (char *o, const char *name, unsigned int length)
NULL.
*/
char *
-variable_expand_string (char *line, const char *string, long length)
+variable_expand_string (char *line, const char *string, size_t length)
{
struct variable *v;
const char *p, *p1;
char *save;
char *o;
- unsigned int line_offset;
+ size_t line_offset;
if (!line)
line = initialize_variable_output ();
@@ -213,7 +213,7 @@ variable_expand_string (char *line, const char *string, long length)
/* We need a copy of STRING: due to eval, it's possible that it will get
freed as we process it (it might be the value of a variable that's reset
for example). Also having a nil-terminated string is handy. */
- save = length < 0 ? xstrdup (string) : xstrndup (string, length);
+ save = length == SIZE_MAX ? xstrdup (string) : xstrndup (string, length);
p = save;
while (1)
@@ -224,7 +224,7 @@ variable_expand_string (char *line, const char *string, long length)
p1 = strchr (p, '$');
- o = variable_buffer_output (o, p, p1 != 0 ? (unsigned int)(p1 - p) : strlen (p) + 1);
+ o = variable_buffer_output (o, p, p1 != 0 ? (size_t) (p1 - p) : strlen (p) + 1);
if (p1 == 0)
break;
@@ -414,7 +414,7 @@ variable_expand_string (char *line, const char *string, long length)
char *
variable_expand (const char *line)
{
- return variable_expand_string (NULL, line, (long)-1);
+ return variable_expand_string (NULL, line, SIZE_MAX);
}
/* Expand an argument for an expansion function.
@@ -485,18 +485,20 @@ variable_expand_for_file (const char *line, struct file *file)
any upper variable sets. Then expand the resulting value. */
static char *
-variable_append (const char *name, unsigned int length,
+variable_append (const char *name, size_t length,
const struct variable_set_list *set, int local)
{
const struct variable *v;
char *buf = 0;
- /* If this set is local and the next is not a parent, then next is local. */
- int nextlocal = local && set->next_is_parent == 0;
+ int nextlocal;
/* If there's nothing left to check, return the empty buffer. */
if (!set)
return initialize_variable_output ();
+ /* If this set is local and the next is not a parent, then next is local. */
+ nextlocal = local && set->next_is_parent == 0;
+
/* Try to find the variable in this variable set. */
v = lookup_variable_in_set (name, length, set->set);
@@ -533,7 +535,7 @@ allocated_variable_append (const struct variable *v)
/* Construct the appended variable value. */
char *obuf = variable_buffer;
- unsigned int olen = variable_buffer_length;
+ size_t olen = variable_buffer_length;
variable_buffer = 0;
@@ -557,7 +559,7 @@ allocated_variable_expand_for_file (const char *line, struct file *file)
char *value;
char *obuf = variable_buffer;
- unsigned int olen = variable_buffer_length;
+ size_t olen = variable_buffer_length;
variable_buffer = 0;
@@ -573,7 +575,7 @@ allocated_variable_expand_for_file (const char *line, struct file *file)
safe-keeping. */
void
-install_variable_buffer (char **bufp, unsigned int *lenp)
+install_variable_buffer (char **bufp, size_t *lenp)
{
*bufp = variable_buffer;
*lenp = variable_buffer_length;
@@ -586,7 +588,7 @@ install_variable_buffer (char **bufp, unsigned int *lenp)
*/
void
-restore_variable_buffer (char *buf, unsigned int len)
+restore_variable_buffer (char *buf, size_t len)
{
free (variable_buffer);
diff --git a/file.c b/src/file.c
index ae1c285..a979ca5 100644
--- a/file.c
+++ b/src/file.c
@@ -1,5 +1,5 @@
/* Target file management for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -410,7 +410,7 @@ remove_intermediates (int sig)
{
if (! doneany)
DB (DB_BASIC, (_("Removing intermediate files...\n")));
- if (!silent_flag)
+ if (!run_silent)
{
if (! doneany)
{
@@ -492,7 +492,7 @@ enter_prereqs (struct dep *deps, const char *stem)
while (dp != 0)
{
char *percent;
- int nl = strlen (dp->name) + 1;
+ size_t nl = strlen (dp->name) + 1;
char *nm = alloca (nl);
memcpy (nm, dp->name, nl);
percent = find_percent (nm);
@@ -550,15 +550,6 @@ enter_prereqs (struct dep *deps, const char *stem)
return deps;
}
-/* Set the intermediate flag. */
-
-static void
-set_intermediate (const void *item)
-{
- struct file *f = (struct file *) item;
- f->intermediate = 1;
-}
-
/* Expand and parse each dependency line. */
static void
expand_deps (struct file *f)
@@ -644,13 +635,70 @@ expand_deps (struct file *f)
}
}
-/* Reset the updating flag. */
+/* Add extra prereqs to the file in question. */
+
+struct dep *
+expand_extra_prereqs (const struct variable *extra)
+{
+ struct dep *d;
+ struct dep *prereqs = extra ? split_prereqs (variable_expand (extra->value)) : NULL;
+
+ for (d = prereqs; d; d = d->next)
+ {
+ d->file = lookup_file (d->name);
+ if (!d->file)
+ d->file = enter_file (d->name);
+ d->name = NULL;
+ d->ignore_automatic_vars = 1;
+ }
+
+ return prereqs;
+}
+
+/* Perform per-file snap operations. */
static void
-reset_updating (const void *item)
+snap_file (const void *item, void *arg)
{
- struct file *f = (struct file *) item;
- f->updating = 0;
+ struct file *f = (struct file*)item;
+ struct dep *prereqs = NULL;
+
+ /* If we're not doing second expansion then reset updating. */
+ if (!second_expansion)
+ f->updating = 0;
+
+ /* If .SECONDARY is set with no deps, mark all targets as intermediate. */
+ if (all_secondary)
+ f->intermediate = 1;
+
+ /* If .EXTRA_PREREQS is set, add them as ignored by automatic variables. */
+ if (f->variables)
+ prereqs = expand_extra_prereqs (lookup_variable_in_set (STRING_SIZE_TUPLE(".EXTRA_PREREQS"), f->variables->set));
+
+ else if (f->is_target)
+ prereqs = copy_dep_chain (arg);
+
+ if (prereqs)
+ {
+ struct dep *d;
+ for (d = prereqs; d; d = d->next)
+ if (streq (f->name, dep_name (d)))
+ /* Skip circular dependencies. */
+ break;
+
+ if (d)
+ /* We broke early: must have found a circular dependency. */
+ free_dep_chain (prereqs);
+ else if (!f->deps)
+ f->deps = prereqs;
+ else
+ {
+ d = f->deps;
+ while (d->next)
+ d = d->next;
+ d->next = prereqs;
+ }
+ }
}
/* For each dependency of each file, make the 'struct dep' point
@@ -700,9 +748,6 @@ snap_deps (void)
expand_deps (f);
free (file_slot_0);
}
- else
- /* We're not doing second expansion, so reset updating. */
- hash_map (&files, reset_updating);
/* Now manage all the special targets. */
@@ -744,10 +789,7 @@ snap_deps (void)
f2->intermediate = f2->secondary = 1;
/* .SECONDARY with no deps listed marks *all* files that way. */
else
- {
- all_secondary = 1;
- hash_map (&files, set_intermediate);
- }
+ all_secondary = 1;
f = lookup_file (".EXPORT_ALL_VARIABLES");
if (f != 0 && f->is_target)
@@ -768,7 +810,7 @@ snap_deps (void)
if (f != 0 && f->is_target)
{
if (f->deps == 0)
- silent_flag = 1;
+ run_silent = 1;
else
for (d = f->deps; d != 0; d = d->next)
for (f2 = d->file; f2 != 0; f2 = f2->prev)
@@ -779,6 +821,15 @@ snap_deps (void)
if (f != 0 && f->is_target)
not_parallel = 1;
+ {
+ struct dep *prereqs = expand_extra_prereqs (lookup_variable (STRING_SIZE_TUPLE(".EXTRA_PREREQS")));
+
+ /* Perform per-file snap operations. */
+ hash_map_arg(&files, snap_file, prereqs);
+
+ free_dep_chain (prereqs);
+ }
+
#ifndef NO_MINUS_C_MINUS_O
/* If .POSIX was defined, remove OUTPUT_OPTION to comply. */
/* This needs more work: what if the user sets this in the makefile?
@@ -788,7 +839,9 @@ snap_deps (void)
#endif
}
-/* Set the 'command_state' member of FILE and all its 'also_make's. */
+/* Set the 'command_state' member of FILE and all its 'also_make's.
+ Don't decrease the state of also_make's (e.g., don't downgrade a 'running'
+ also_make to a 'deps_running' also_make). */
void
set_command_state (struct file *file, enum cmd_state state)
@@ -798,7 +851,8 @@ set_command_state (struct file *file, enum cmd_state state)
file->command_state = state;
for (d = file->also_make; d != 0; d = d->next)
- d->file->command_state = state;
+ if (state > d->file->command_state)
+ d->file->command_state = state;
}
/* Convert an external file timestamp to internal form. */
@@ -1100,8 +1154,8 @@ build_target_list (char *value)
if (files.ht_fill != last_targ_count)
{
- unsigned long max = EXPANSION_INCREMENT (strlen (value));
- unsigned long len;
+ size_t max = EXPANSION_INCREMENT (strlen (value));
+ size_t len;
char *p;
struct file **fp = (struct file **) files.ht_vec;
struct file **end = &fp[files.ht_size];
@@ -1115,12 +1169,12 @@ build_target_list (char *value)
if (!HASH_VACANT (*fp) && (*fp)->is_target)
{
struct file *f = *fp;
- int l = strlen (f->name);
+ size_t l = strlen (f->name);
len += l + 1;
if (len > max)
{
- unsigned long off = p - value;
+ size_t off = p - value;
max += EXPANSION_INCREMENT (l + 1);
value = xrealloc (value, max);
diff --git a/filedef.h b/src/filedef.h
index 14b4187..972f853 100644
--- a/filedef.h
+++ b/src/filedef.h
@@ -1,5 +1,5 @@
/* Definition of target file data structures for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -21,6 +21,11 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#include "hash.h"
+struct commands;
+struct dep;
+struct variable;
+struct variable_set_list;
+
struct file
{
const char *name;
@@ -68,7 +73,7 @@ struct file
us_question, /* Needs to be updated (-q is is set). */
us_failed /* Update failed. */
} update_status ENUM_BITFIELD (2);
- enum cmd_state /* State of the commands. */
+ enum cmd_state /* State of commands. ORDER IS IMPORTANT! */
{
cs_not_started = 0, /* Not yet started. Must be 0! */
cs_deps_running, /* Dep commands running. */
@@ -110,6 +115,7 @@ struct file *lookup_file (const char *name);
struct file *enter_file (const char *name);
struct dep *split_prereqs (char *prereqstr);
struct dep *enter_prereqs (struct dep *prereqs, const char *stem);
+struct dep *expand_extra_prereqs (const struct variable *extra);
void remove_intermediates (int sig);
void snap_deps (void);
void rename_file (struct file *file, const char *name);
diff --git a/function.c b/src/function.c
index b7f0e56..0917e0c 100644
--- a/function.c
+++ b/src/function.c
@@ -1,5 +1,5 @@
/* Builtin function expansion for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -19,6 +19,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#include "variable.h"
#include "dep.h"
#include "job.h"
+#include "os.h"
#include "commands.h"
#include "debug.h"
@@ -37,8 +38,8 @@ struct function_table_entry
unsigned char len;
unsigned char minimum_args;
unsigned char maximum_args;
- unsigned char expand_args:1;
- unsigned char alloc_fn:1;
+ unsigned int expand_args:1;
+ unsigned int alloc_fn:1;
};
static unsigned long
@@ -77,7 +78,7 @@ static struct hash_table function_table;
char *
subst_expand (char *o, const char *text, const char *subst, const char *replace,
- unsigned int slen, unsigned int rlen, int by_word)
+ size_t slen, size_t rlen, int by_word)
{
const char *t = text;
const char *p;
@@ -147,10 +148,10 @@ patsubst_expand_pat (char *o, const char *text,
const char *pattern, const char *replace,
const char *pattern_percent, const char *replace_percent)
{
- unsigned int pattern_prepercent_len, pattern_postpercent_len;
- unsigned int replace_prepercent_len, replace_postpercent_len;
+ size_t pattern_prepercent_len, pattern_postpercent_len;
+ size_t replace_prepercent_len, replace_postpercent_len;
const char *t;
- unsigned int len;
+ size_t len;
int doneany = 0;
/* Record the length of REPLACE before and after the % so we don't have to
@@ -279,7 +280,7 @@ lookup_function (const char *s)
return NULL;
function_table_entry_key.name = s;
- function_table_entry_key.len = e - s;
+ function_table_entry_key.len = (unsigned char) (e - s);
return hash_find_item (&function_table, &function_table_entry_key);
}
@@ -290,11 +291,11 @@ lookup_function (const char *s)
int
pattern_matches (const char *pattern, const char *percent, const char *str)
{
- unsigned int sfxlen, strlength;
+ size_t sfxlen, strlength;
if (percent == 0)
{
- unsigned int len = strlen (pattern) + 1;
+ size_t len = strlen (pattern) + 1;
char *new_chars = alloca (len);
memcpy (new_chars, pattern, len);
percent = find_percent (new_chars);
@@ -328,7 +329,10 @@ find_next_argument (char startparen, char endparen,
int count = 0;
for (; ptr < end; ++ptr)
- if (*ptr == startparen)
+ if (!STOP_SET (*ptr, MAP_VARSEP|MAP_COMMA))
+ continue;
+
+ else if (*ptr == startparen)
++count;
else if (*ptr == endparen)
@@ -353,9 +357,9 @@ static char *
string_glob (char *line)
{
static char *result = 0;
- static unsigned int length;
+ static size_t length;
struct nameseq *chain;
- unsigned int idx;
+ size_t idx;
chain = PARSE_FILE_SEQ (&line, struct nameseq, MAP_NUL, NULL,
/* We do not want parse_file_seq to strip './'s.
@@ -373,7 +377,7 @@ string_glob (char *line)
while (chain != 0)
{
struct nameseq *next = chain->next;
- unsigned int len = strlen (chain->name);
+ size_t len = strlen (chain->name);
if (idx + len + 1 > length)
{
@@ -426,7 +430,7 @@ func_join (char *o, char **argv, const char *funcname UNUSED)
const char *list2_iterator = argv[1];
do
{
- unsigned int len1, len2;
+ size_t len1, len2;
tp = find_next_token (&list1_iterator, &len1);
if (tp != 0)
@@ -515,7 +519,7 @@ func_notdir_suffix (char *o, char **argv, const char *funcname)
const char *list_iterator = argv[0];
const char *p2;
int doneany =0;
- unsigned int len=0;
+ size_t len=0;
int is_suffix = funcname[0] == 's';
int is_notdir = !is_suffix;
@@ -591,7 +595,7 @@ func_basename_dir (char *o, char **argv, const char *funcname)
const char *p3 = argv[0];
const char *p2;
int doneany = 0;
- unsigned int len = 0;
+ size_t len = 0;
int is_basename = funcname[0] == 'b';
int is_dir = !is_basename;
@@ -664,14 +668,14 @@ func_basename_dir (char *o, char **argv, const char *funcname)
static char *
func_addsuffix_addprefix (char *o, char **argv, const char *funcname)
{
- int fixlen = strlen (argv[0]);
+ size_t fixlen = strlen (argv[0]);
const char *list_iterator = argv[1];
int is_addprefix = funcname[3] == 'p';
int is_addsuffix = !is_addprefix;
int doneany = 0;
const char *p;
- unsigned int len;
+ size_t len;
while ((p = find_next_token (&list_iterator, &len)) != 0)
{
@@ -704,7 +708,7 @@ func_subst (char *o, char **argv, const char *funcname UNUSED)
static char *
func_firstword (char *o, char **argv, const char *funcname UNUSED)
{
- unsigned int i;
+ size_t i;
const char *words = argv[0]; /* Use a temp variable for find_next_token */
const char *p = find_next_token (&words, &i);
@@ -717,12 +721,12 @@ func_firstword (char *o, char **argv, const char *funcname UNUSED)
static char *
func_lastword (char *o, char **argv, const char *funcname UNUSED)
{
- unsigned int i;
+ size_t i;
const char *words = argv[0]; /* Use a temp variable for find_next_token */
const char *p = NULL;
const char *t;
- while ((t = find_next_token (&words, &i)))
+ while ((t = find_next_token (&words, &i)) != NULL)
p = t;
if (p != 0)
@@ -867,7 +871,7 @@ func_foreach (char *o, char **argv, const char *funcname UNUSED)
int doneany = 0;
const char *list_iterator = list;
const char *p;
- unsigned int len;
+ size_t len;
struct variable *var;
/* Clean up the variable name by removing whitespace. */
@@ -909,7 +913,7 @@ struct a_word
struct a_word *next;
struct a_word *chain;
char *str;
- int length;
+ size_t length;
int matched;
};
@@ -928,7 +932,7 @@ a_word_hash_2 (const void *key)
static int
a_word_hash_cmp (const void *x, const void *y)
{
- int result = ((struct a_word const *) x)->length - ((struct a_word const *) y)->length;
+ int result = (int) ((struct a_word const *) x)->length - ((struct a_word const *) y)->length;
if (result)
return result;
return_STRING_COMPARE (((struct a_word const *) x)->str,
@@ -940,7 +944,7 @@ struct a_pattern
struct a_pattern *next;
char *str;
char *percent;
- int length;
+ size_t length;
};
static char *
@@ -961,7 +965,7 @@ func_filter_filterout (char *o, char **argv, const char *funcname)
int words = 0;
int hashing = 0;
char *p;
- unsigned int len;
+ size_t len;
/* Chop ARGV[0] up into patterns to match against the words.
We don't need to preserve it because our caller frees all the
@@ -1111,7 +1115,7 @@ func_error (char *o, char **argv, const char *funcname)
{
char **argvp;
char *msg, *p;
- int len;
+ size_t len;
/* The arguments will be broken on commas. Rather than create yet
another special case where function arguments aren't broken up,
@@ -1120,6 +1124,7 @@ func_error (char *o, char **argv, const char *funcname)
len += strlen (*argvp) + 2;
p = msg = alloca (len + 1);
+ msg[0] = '\0';
for (argvp=argv; argvp[1] != 0; ++argvp)
{
@@ -1163,7 +1168,7 @@ func_sort (char *o, char **argv, const char *funcname UNUSED)
char **words;
int wordi;
char *p;
- unsigned int len;
+ size_t len;
/* Find the maximum number of words we'll have. */
t = argv[0];
@@ -1243,7 +1248,7 @@ func_if (char *o, char **argv, const char *funcname UNUSED)
{
char *expansion = expand_argument (begp, endp+1);
- result = strlen (expansion);
+ result = expansion[0] != '\0';
free (expansion);
}
@@ -1287,7 +1292,7 @@ func_or (char *o, char **argv, const char *funcname UNUSED)
const char *begp = *argv;
const char *endp = begp + strlen (*argv) - 1;
char *expansion;
- int result = 0;
+ size_t result = 0;
/* Find the result of the condition: if it's false keep going. */
@@ -1338,7 +1343,7 @@ func_and (char *o, char **argv, const char *funcname UNUSED)
{
const char *begp = *argv;
const char *endp = begp + strlen (*argv) - 1;
- int result;
+ size_t result;
/* An empty condition is always false. */
strip_whitespace (&begp, &endp);
@@ -1393,7 +1398,7 @@ static char *
func_eval (char *o, char **argv, const char *funcname UNUSED)
{
char *buf;
- unsigned int len;
+ size_t len;
/* Eval the buffer. Pop the current variable buffer setting so that the
eval'd code can use its own without conflicting. */
@@ -1425,7 +1430,7 @@ func_value (char *o, char **argv, const char *funcname UNUSED)
\r is replaced on UNIX as well. Is this desirable?
*/
static void
-fold_newlines (char *buffer, unsigned int *length, int trim_newlines)
+fold_newlines (char *buffer, size_t *length, int trim_newlines)
{
char *dst = buffer;
char *src = buffer;
@@ -1467,6 +1472,9 @@ shell_completed (int exit_code, int exit_sig)
else
shell_function_completed = 1;
+ if (exit_code == 0 && exit_sig > 0)
+ exit_code = 128 + exit_sig;
+
sprintf (buf, "%d", exit_code);
define_variable_cname (".SHELLSTATUS", buf, o_override, 0);
}
@@ -1690,8 +1698,7 @@ func_shell_base (char *o, char **argv, int trim_newlines)
#ifdef __MSDOS__
FILE *fpipe;
#endif
- char **command_argv;
- const char *error_prefix;
+ char **command_argv = NULL;
char **envp;
int pipedes[2];
pid_t pid;
@@ -1731,17 +1738,6 @@ func_shell_base (char *o, char **argv, int trim_newlines)
envp = environ;
- /* For error messages. */
- if (reading_file && reading_file->filenm)
- {
- char *p = alloca (strlen (reading_file->filenm)+11+4);
- sprintf (p, "%s:%lu: ", reading_file->filenm,
- reading_file->lineno + reading_file->offset);
- error_prefix = p;
- }
- else
- error_prefix = "";
-
/* Set up the output in case the shell writes something. */
output_start ();
@@ -1752,8 +1748,9 @@ func_shell_base (char *o, char **argv, int trim_newlines)
fpipe = msdos_openpipe (pipedes, &pid, argv[0]);
if (pipedes[0] < 0)
{
- perror_with_name (error_prefix, "pipe");
- return o;
+ OS (error, reading_file, "pipe: %s", strerror (errno));
+ pid = -1;
+ goto done;
}
#elif defined(WINDOWS32)
@@ -1765,40 +1762,46 @@ func_shell_base (char *o, char **argv, int trim_newlines)
{
/* Open of the pipe failed, mark as failed execution. */
shell_completed (127, 0);
- perror_with_name (error_prefix, "pipe");
- return o;
+ OS (error, reading_file, "pipe: %s", strerror (errno));
+ pid = -1;
+ goto done;
}
#else
if (pipe (pipedes) < 0)
{
- perror_with_name (error_prefix, "pipe");
- return o;
+ OS (error, reading_file, "pipe: %s", strerror (errno));
+ pid = -1;
+ goto done;
}
/* Close handles that are unnecessary for the child process. */
- CLOSE_ON_EXEC(pipedes[1]);
- CLOSE_ON_EXEC(pipedes[0]);
+ fd_noinherit (pipedes[1]);
+ fd_noinherit (pipedes[0]);
{
- struct output out;
- out.syncout = 1;
- out.out = pipedes[1];
- out.err = errfd;
+ struct childbase child;
+ child.cmd_name = NULL;
+ child.output.syncout = 1;
+ child.output.out = pipedes[1];
+ child.output.err = errfd;
+ child.environment = envp;
+
+ pid = child_execute_job (&child, 1, command_argv);
- pid = child_execute_job (&out, 1, command_argv, envp);
+ free (child.cmd_name);
}
if (pid < 0)
{
- perror_with_name (error_prefix, "fork");
- return o;
+ shell_completed (127, 0);
+ goto done;
}
#endif
{
char *buffer;
- unsigned int maxlen, i;
+ size_t maxlen, i;
int cc;
/* Record the PID for reap_children. */
@@ -1806,10 +1809,6 @@ func_shell_base (char *o, char **argv, int trim_newlines)
#ifndef __MSDOS__
shell_function_completed = 0;
- /* Free the storage only the child needed. */
- free (command_argv[0]);
- free (command_argv);
-
/* Close the write side of the pipe. We test for -1, since
pipedes[1] is -1 on MS-Windows, and some versions of MS
libraries barf when 'close' is called with -1. */
@@ -1884,6 +1883,14 @@ func_shell_base (char *o, char **argv, int trim_newlines)
free (buffer);
}
+ done:
+ if (command_argv)
+ {
+ /* Free the storage only the child needed. */
+ free (command_argv[0]);
+ free (command_argv);
+ }
+
return o;
}
@@ -1908,11 +1915,11 @@ func_shell_base (char *o, char **argv, int trim_newlines)
BPTR child_stdout;
char tmp_output[FILENAME_MAX];
- unsigned int maxlen = 200, i;
+ size_t maxlen = 200, i;
int cc;
char * buffer, * ptr;
char ** aptr;
- int len = 0;
+ size_t len = 0;
char* batch_filename = NULL;
/* Construct the argument list. */
@@ -1922,9 +1929,8 @@ func_shell_base (char *o, char **argv, int trim_newlines)
return o;
/* Note the mktemp() is a security hole, but this only runs on Amiga.
- Ideally we would use output_tmpfile(), but this uses a special
- Open(), not fopen(), and I'm not familiar enough with the code to mess
- with it. */
+ Ideally we would use get_tmpfile(), but this uses a special Open(), not
+ fopen(), and I'm not familiar enough with the code to mess with it. */
strcpy (tmp_output, "t:MakeshXXXXXXXX");
mktemp (tmp_output);
child_stdout = Open (tmp_output, MODE_NEWFILE);
@@ -2021,8 +2027,8 @@ func_not (char *o, char **argv, char *funcname UNUSED)
# endif
# define ROOT_LEN 3
#else
-#define IS_ABSOLUTE(n) (n[0] == '/')
-#define ROOT_LEN 1
+# define IS_ABSOLUTE(n) (n[0] == '/')
+# define ROOT_LEN 1
#endif
/* Return the absolute name of file NAME which does not contain any '.',
@@ -2035,7 +2041,7 @@ abspath (const char *name, char *apath)
const char *start, *end, *apath_limit;
unsigned long root_len = ROOT_LEN;
- if (name[0] == '\0' || apath == NULL)
+ if (name[0] == '\0')
return NULL;
apath_limit = apath + GET_PATH_MAX;
@@ -2074,7 +2080,7 @@ abspath (const char *name, char *apath)
if (STOP_SET (name[0], MAP_DIRSEP))
root_len = 1;
#endif
- strncpy (apath, name, root_len);
+ memcpy (apath, name, root_len);
apath[root_len] = '\0';
dest = apath + root_len;
/* Get past the root, since we already copied it. */
@@ -2097,7 +2103,7 @@ abspath (const char *name, char *apath)
for (start = end = name; *start != '\0'; start = end)
{
- unsigned long len;
+ size_t len;
/* Skip sequence of multiple path-separators. */
while (STOP_SET (*start, MAP_DIRSEP))
@@ -2151,7 +2157,7 @@ func_realpath (char *o, char **argv, const char *funcname UNUSED)
const char *p = argv[0];
const char *path = 0;
int doneany = 0;
- unsigned int len = 0;
+ size_t len = 0;
while ((path = find_next_token (&p, &len)) != 0)
{
@@ -2167,6 +2173,15 @@ func_realpath (char *o, char **argv, const char *funcname UNUSED)
#ifdef HAVE_REALPATH
ENULLLOOP (rp, realpath (in, out));
+# if defined _AIX
+ /* AIX realpath() doesn't remove trailing slashes correctly. */
+ if (rp)
+ {
+ char *ep = rp + strlen (rp) - 1;
+ while (ep > rp && ep[0] == '/')
+ *(ep--) = '\0';
+ }
+# endif
#else
rp = abspath (in, out);
#endif
@@ -2220,7 +2235,7 @@ func_file (char *o, char **argv, const char *funcname UNUSED)
if (argv[1])
{
- int l = strlen (argv[1]);
+ size_t l = strlen (argv[1]);
int nl = l == 0 || argv[1][l-1] != '\n';
if (fputs (argv[1], fp) == EOF || (nl && fputc ('\n', fp) == EOF))
@@ -2284,7 +2299,7 @@ func_abspath (char *o, char **argv, const char *funcname UNUSED)
const char *p = argv[0];
const char *path = 0;
int doneany = 0;
- unsigned int len = 0;
+ size_t len = 0;
while ((path = find_next_token (&p, &len)) != 0)
{
@@ -2454,7 +2469,9 @@ handle_function (char **op, const char **stringp)
count might be high, but it'll never be low. */
for (nargs=1, end=beg; *end != '\0'; ++end)
- if (*end == ',')
+ if (!STOP_SET (*end, MAP_VARSEP|MAP_COMMA))
+ continue;
+ else if (*end == ',')
++nargs;
else if (*end == openparen)
++count;
@@ -2489,7 +2506,7 @@ handle_function (char **op, const char **stringp)
++nargs;
if (nargs == entry_p->maximum_args
- || (! (next = find_next_argument (openparen, closeparen, p, end))))
+ || ((next = find_next_argument (openparen, closeparen, p, end)) == NULL))
next = end;
*argvp = expand_argument (p, next);
@@ -2498,7 +2515,7 @@ handle_function (char **op, const char **stringp)
}
else
{
- int len = end - beg;
+ size_t len = end - beg;
char *p, *aend;
abeg = xmalloc (len+1);
@@ -2513,7 +2530,7 @@ handle_function (char **op, const char **stringp)
++nargs;
if (nargs == entry_p->maximum_args
- || (! (next = find_next_argument (openparen, closeparen, p, aend))))
+ || ((next = find_next_argument (openparen, closeparen, p, aend)) == NULL))
next = aend;
*argvp = p;
@@ -2547,7 +2564,7 @@ func_call (char *o, char **argv, const char *funcname UNUSED)
static int max_args = 0;
char *fname;
char *body;
- int flen;
+ size_t flen;
int i;
int saved_args;
const struct function_table_entry *entry_p;
@@ -2661,9 +2678,9 @@ define_new_function (const floc *flocp, const char *name,
ent = xmalloc (sizeof (struct function_table_entry));
ent->name = name;
- ent->len = len;
- ent->minimum_args = min;
- ent->maximum_args = max;
+ ent->len = (unsigned char) len;
+ ent->minimum_args = (unsigned char) min;
+ ent->maximum_args = (unsigned char) max;
ent->expand_args = ANY_SET(flags, GMK_FUNC_NOEXPAND) ? 0 : 1;
ent->alloc_fn = 1;
ent->fptr.alloc_func_ptr = func;
diff --git a/getopt.c b/src/getopt.c
index e3538d4..35e71ef 100644
--- a/getopt.c
+++ b/src/getopt.c
@@ -3,7 +3,7 @@ NOTE: getopt is now part of the C library, so if you don't know what
"Keep this file name-space clean" means, talk to drepper@gnu.org
before changing it!
-Copyright (C) 1987-2016 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C Library.
Bugs can be reported to bug-glibc@gnu.org.
diff --git a/getopt.h b/src/getopt.h
index 4acd4ee..abfc31e 100644
--- a/getopt.h
+++ b/src/getopt.h
@@ -1,5 +1,5 @@
/* Declarations for getopt.
-Copyright (C) 1989-2016 Free Software Foundation, Inc.
+Copyright (C) 1989-2020 Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C Library.
Bugs can be reported to bug-glibc@gnu.org.
diff --git a/getopt1.c b/src/getopt1.c
index 0e38b2f..0bef6b0 100644
--- a/getopt1.c
+++ b/src/getopt1.c
@@ -1,5 +1,5 @@
/* getopt_long and getopt_long_only entry points for GNU getopt.
-Copyright (C) 1987-1994, 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1987-1994, 1996-2020 Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C Library.
Bugs can be reported to bug-glibc@gnu.org.
diff --git a/gettext.h b/src/gettext.h
index c48ffa0..8647b37 100644
--- a/gettext.h
+++ b/src/gettext.h
@@ -1,5 +1,5 @@
/* Convenience header for conditional use of GNU <libintl.h>.
-Copyright (C) 1995-2016 Free Software Foundation, Inc.
+Copyright (C) 1995-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/gmk-default.h b/src/gmk-default.h
index 9fa09a6..9fa09a6 100644
--- a/gmk-default.h
+++ b/src/gmk-default.h
diff --git a/gmk-default.scm b/src/gmk-default.scm
index e7353f9..ffcea6b 100644
--- a/gmk-default.scm
+++ b/src/gmk-default.scm
@@ -1,5 +1,5 @@
;; Contents of the (gnu make) Guile module
-;; Copyright (C) 2011-2016 Free Software Foundation, Inc.
+;; Copyright (C) 2011-2020 Free Software Foundation, Inc.
;; This file is part of GNU Make.
;;
;; GNU Make is free software; you can redistribute it and/or modify it under
diff --git a/gnumake.h b/src/gnumake.h
index b508562..fe0f7f3 100644
--- a/gnumake.h
+++ b/src/gnumake.h
@@ -1,7 +1,7 @@
/* External interfaces usable by dynamic objects loaded into GNU Make.
--THIS API IS A "TECHNOLOGY PREVIEW" ONLY. IT IS NOT A STABLE INTERFACE--
-Copyright (C) 2013-2016 Free Software Foundation, Inc.
+Copyright (C) 2013-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/guile.c b/src/guile.c
index 1b055c3..52f0e5c 100644
--- a/guile.c
+++ b/src/guile.c
@@ -1,5 +1,5 @@
/* GNU Guile interface for GNU Make.
-Copyright (C) 2011-2016 Free Software Foundation, Inc.
+Copyright (C) 2011-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/hash.c b/src/hash.c
index 7b4b271..004097d 100644
--- a/hash.c
+++ b/src/hash.c
@@ -16,8 +16,9 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#include "makeint.h"
#include "hash.h"
+#include <assert.h>
-#define CALLOC(t, n) ((t *) xcalloc (sizeof (t) * (n)))
+#define CALLOC(t, n) ((t *) xcalloc (sizeof (t) * (n)))
#define MALLOC(t, n) ((t *) xmalloc (sizeof (t) * (n)))
#define REALLOC(o, t, n) ((t *) xrealloc ((o), sizeof (t) * (n)))
#define CLONE(o, t, n) ((t *) memcpy (MALLOC (t, (n)), (o), sizeof (t) * (n)))
@@ -47,7 +48,7 @@ hash_init (struct hash_table *ht, unsigned long size,
if (ht->ht_vec == 0)
{
fprintf (stderr, _("can't allocate %lu bytes for hash table: memory exhausted"),
- ht->ht_size * (unsigned long) sizeof (struct token *));
+ ht->ht_size * (unsigned long) sizeof (struct token *));
exit (MAKE_TROUBLE);
}
@@ -95,22 +96,22 @@ hash_find_slot (struct hash_table *ht, const void *key)
slot = &ht->ht_vec[hash_1];
if (*slot == 0)
- return (deleted_slot ? deleted_slot : slot);
+ return (deleted_slot ? deleted_slot : slot);
if (*slot == hash_deleted_item)
- {
- if (deleted_slot == 0)
- deleted_slot = slot;
- }
+ {
+ if (deleted_slot == 0)
+ deleted_slot = slot;
+ }
else
- {
- if (key == *slot)
- return slot;
- if ((*ht->ht_compare) (key, *slot) == 0)
- return slot;
- ht->ht_collisions++;
- }
+ {
+ if (key == *slot)
+ return slot;
+ if ((*ht->ht_compare) (key, *slot) == 0)
+ return slot;
+ ht->ht_collisions++;
+ }
if (!hash_2)
- hash_2 = (*ht->ht_hash_2) (key) | 1;
+ hash_2 = (*ht->ht_hash_2) (key) | 1;
hash_1 += hash_2;
}
}
@@ -139,7 +140,7 @@ hash_insert_at (struct hash_table *ht, const void *item, const void *slot)
{
ht->ht_fill++;
if (old_item == 0)
- ht->ht_empty_slots--;
+ ht->ht_empty_slots--;
old_item = item;
}
*(void const **) slot = item;
@@ -182,7 +183,7 @@ hash_free_items (struct hash_table *ht)
{
void *item = *vec;
if (!HASH_VACANT (item))
- free (item);
+ free (item);
*vec = 0;
}
ht->ht_fill = 0;
@@ -227,7 +228,7 @@ hash_map (struct hash_table *ht, hash_map_func_t map)
for (slot = ht->ht_vec; slot < end; slot++)
{
if (!HASH_VACANT (*slot))
- (*map) (*slot);
+ (*map) (*slot);
}
}
@@ -240,7 +241,7 @@ hash_map_arg (struct hash_table *ht, hash_map_arg_func_t map, void *arg)
for (slot = ht->ht_vec; slot < end; slot++)
{
if (!HASH_VACANT (*slot))
- (*map) (*slot, arg);
+ (*map) (*slot, arg);
}
}
@@ -264,10 +265,10 @@ hash_rehash (struct hash_table *ht)
for (ovp = old_vec; ovp < &old_vec[old_ht_size]; ovp++)
{
if (! HASH_VACANT (*ovp))
- {
- void **slot = hash_find_slot (ht, *ovp);
- *slot = *ovp;
- }
+ {
+ void **slot = hash_find_slot (ht, *ovp);
+ *slot = *ovp;
+ }
}
ht->ht_empty_slots = ht->ht_size - ht->ht_fill;
free (old_vec);
@@ -276,14 +277,13 @@ hash_rehash (struct hash_table *ht)
void
hash_print_stats (struct hash_table *ht, FILE *out_FILE)
{
- /* GKM FIXME: honor NO_FLOAT */
- fprintf (out_FILE, _("Load=%ld/%ld=%.0f%%, "), ht->ht_fill, ht->ht_size,
- 100.0 * (double) ht->ht_fill / (double) ht->ht_size);
- fprintf (out_FILE, _("Rehash=%d, "), ht->ht_rehashes);
- fprintf (out_FILE, _("Collisions=%ld/%ld=%.0f%%"), ht->ht_collisions, ht->ht_lookups,
- (ht->ht_lookups
- ? (100.0 * (double) ht->ht_collisions / (double) ht->ht_lookups)
- : 0));
+ fprintf (out_FILE, _("Load=%lu/%lu=%.0f%%, "), ht->ht_fill, ht->ht_size,
+ 100.0 * (double) ht->ht_fill / (double) ht->ht_size);
+ fprintf (out_FILE, _("Rehash=%u, "), ht->ht_rehashes);
+ fprintf (out_FILE, _("Collisions=%lu/%lu=%.0f%%"), ht->ht_collisions, ht->ht_lookups,
+ (ht->ht_lookups
+ ? (100.0 * (double) ht->ht_collisions / (double) ht->ht_lookups)
+ : 0));
}
/* Dump all items into a NULL-terminated vector. Use the
@@ -328,3 +328,168 @@ round_up_2 (unsigned long n)
return n + 1;
}
+
+#define rol32(v, n) \
+ ((v) << (n) | ((v) >> (32 - (n))))
+
+/* jhash_mix -- mix 3 32-bit values reversibly. */
+#define jhash_mix(a, b, c) \
+{ \
+ a -= c; a ^= rol32(c, 4); c += b; \
+ b -= a; b ^= rol32(a, 6); a += c; \
+ c -= b; c ^= rol32(b, 8); b += a; \
+ a -= c; a ^= rol32(c, 16); c += b; \
+ b -= a; b ^= rol32(a, 19); a += c; \
+ c -= b; c ^= rol32(b, 4); b += a; \
+}
+
+/* jhash_final - final mixing of 3 32-bit values (a,b,c) into c */
+#define jhash_final(a, b, c) \
+{ \
+ c ^= b; c -= rol32(b, 14); \
+ a ^= c; a -= rol32(c, 11); \
+ b ^= a; b -= rol32(a, 25); \
+ c ^= b; c -= rol32(b, 16); \
+ a ^= c; a -= rol32(c, 4); \
+ b ^= a; b -= rol32(a, 14); \
+ c ^= b; c -= rol32(b, 24); \
+}
+
+/* An arbitrary initial parameter */
+#define JHASH_INITVAL 0xdeadbeef
+
+#define sum_get_unaligned_32(r, p) \
+ do { \
+ unsigned int val; \
+ memcpy(&val, (p), 4); \
+ r += val; \
+ } while(0);
+
+unsigned int
+jhash(unsigned const char *k, int length)
+{
+ unsigned int a, b, c;
+
+ /* Set up the internal state */
+ a = b = c = JHASH_INITVAL + length;
+
+ /* All but the last block: affect some 32 bits of (a,b,c) */
+ while (length > 12) {
+ sum_get_unaligned_32(a, k);
+ sum_get_unaligned_32(b, k + 4);
+ sum_get_unaligned_32(c, k + 8);
+ jhash_mix(a, b, c);
+ length -= 12;
+ k += 12;
+ }
+
+ if (!length)
+ return c;
+
+ if (length > 8)
+ {
+ sum_get_unaligned_32(a, k);
+ length -= 4;
+ k += 4;
+ }
+ if (length > 4)
+ {
+ sum_get_unaligned_32(b, k);
+ length -= 4;
+ k += 4;
+ }
+
+ if (length == 4)
+ c += (unsigned)k[3]<<24;
+ if (length >= 3)
+ c += (unsigned)k[2]<<16;
+ if (length >= 2)
+ c += (unsigned)k[1]<<8;
+ c += k[0];
+ jhash_final(a, b, c);
+ return c;
+}
+
+#define UINTSZ sizeof (unsigned int)
+
+#ifdef WORDS_BIGENDIAN
+/* The ifs are ordered from the first byte in memory to the last. */
+#define sum_up_to_nul(r, p, plen, flag) \
+ do { \
+ unsigned int val = 0; \
+ size_t pn = (plen); \
+ size_t n = pn < UINTSZ ? pn : UINTSZ; \
+ memcpy (&val, (p), n); \
+ if ((val & 0xFF000000) == 0) \
+ flag = 1; \
+ else if ((val & 0xFF0000) == 0) \
+ r += val & ~0xFFFF, flag = 1; \
+ else if ((val & 0xFF00) == 0) \
+ r += val & ~0xFF, flag = 1; \
+ else \
+ r += val, flag = (val & 0xFF) == 0; \
+ } while (0)
+#else
+/* First detect the presence of zeroes. If there is none, we can
+ sum the 4 bytes directly. Otherwise, the ifs are ordered as in the
+ big endian case, from the first byte in memory to the last. */
+#define sum_up_to_nul(r, p, plen, flag) \
+ do { \
+ unsigned int val = 0; \
+ size_t pn = (plen); \
+ size_t n = pn < UINTSZ ? pn : UINTSZ; \
+ memcpy (&val, (p), n); \
+ flag = ((val - 0x01010101) & ~val) & 0x80808080; \
+ if (!flag) \
+ r += val; \
+ else if (val & 0xFF) \
+ { \
+ if ((val & 0xFF00) == 0) \
+ r += val & 0xFF; \
+ else if ((val & 0xFF0000) == 0) \
+ r += val & 0xFFFF; \
+ else \
+ r += val; \
+ } \
+ } while (0)
+#endif
+
+unsigned int
+jhash_string(unsigned const char *k)
+{
+ unsigned int a, b, c;
+ unsigned int have_nul = 0;
+ unsigned const char *start = k;
+ size_t klen = strlen ((const char*)k);
+
+ /* Set up the internal state */
+ a = b = c = JHASH_INITVAL;
+
+ /* All but the last block: affect some 32 bits of (a,b,c) */
+ for (;;) {
+ sum_up_to_nul(a, k, klen, have_nul);
+ if (have_nul)
+ break;
+ k += UINTSZ;
+ assert (klen >= UINTSZ);
+ klen -= UINTSZ;
+
+ sum_up_to_nul(b, k, klen, have_nul);
+ if (have_nul)
+ break;
+ k += UINTSZ;
+ assert (klen >= UINTSZ);
+ klen -= UINTSZ;
+
+ sum_up_to_nul(c, k, klen, have_nul);
+ if (have_nul)
+ break;
+ k += UINTSZ;
+ assert (klen >= UINTSZ);
+ klen -= UINTSZ;
+ jhash_mix(a, b, c);
+ }
+
+ jhash_final(a, b, c);
+ return c + (unsigned) (k - start);
+}
diff --git a/hash.h b/src/hash.h
index 960cbd7..667d650 100644
--- a/hash.h
+++ b/src/hash.h
@@ -73,6 +73,9 @@ void hash_map_arg __P((struct hash_table *ht, hash_map_arg_func_t map, void *arg
void hash_print_stats __P((struct hash_table *ht, FILE *out_FILE));
void **hash_dump __P((struct hash_table *ht, void **vector_0, qsort_cmp_t compare));
+extern unsigned jhash(unsigned char const *key, int n);
+extern unsigned jhash_string(unsigned char const *key);
+
extern void *hash_deleted_item;
#define HASH_VACANT(item) ((item) == 0 || (void *) (item) == hash_deleted_item)
@@ -83,9 +86,8 @@ extern void *hash_deleted_item;
be identical. Take advantage of that to short-circuit string compares. */
#define STRING_HASH_1(KEY, RESULT) do { \
- unsigned char const *_key_ = (unsigned char const *) (KEY) - 1; \
- while (*++_key_) \
- (RESULT) += (*_key_ << (_key_[1] & 0xf)); \
+ unsigned char const *_key_ = (unsigned char const *) (KEY); \
+ (RESULT) += jhash_string(_key_); \
} while (0)
#define return_STRING_HASH_1(KEY) do { \
unsigned long _result_ = 0; \
@@ -93,10 +95,11 @@ extern void *hash_deleted_item;
return _result_; \
} while (0)
+/* No need for a second hash because jhash already provides
+ pretty good results. However, do evaluate the arguments
+ to avoid warnings. */
#define STRING_HASH_2(KEY, RESULT) do { \
- unsigned char const *_key_ = (unsigned char const *) (KEY) - 1; \
- while (*++_key_) \
- (RESULT) += (*_key_ << (_key_[1] & 0x7)); \
+ (void)(KEY); \
} while (0)
#define return_STRING_HASH_2(KEY) do { \
unsigned long _result_ = 0; \
@@ -113,27 +116,24 @@ extern void *hash_deleted_item;
#define STRING_N_HASH_1(KEY, N, RESULT) do { \
- unsigned char const *_key_ = (unsigned char const *) (KEY) - 1; \
- int _n_ = (N); \
- if (_n_) \
- while (--_n_ && *++_key_) \
- (RESULT) += (*_key_ << (_key_[1] & 0xf)); \
- (RESULT) += *++_key_; \
+ unsigned char const *_key_ = (unsigned char const *) (KEY); \
+ (RESULT) += jhash(_key_, N); \
} while (0)
+
#define return_STRING_N_HASH_1(KEY, N) do { \
unsigned long _result_ = 0; \
STRING_N_HASH_1 ((KEY), (N), _result_); \
return _result_; \
} while (0)
+/* No need for a second hash because jhash already provides
+ pretty good results. However, do evaluate the arguments
+ to avoid warnings. */
#define STRING_N_HASH_2(KEY, N, RESULT) do { \
- unsigned char const *_key_ = (unsigned char const *) (KEY) - 1; \
- int _n_ = (N); \
- if (_n_) \
- while (--_n_ && *++_key_) \
- (RESULT) += (*_key_ << (_key_[1] & 0x7)); \
- (RESULT) += *++_key_; \
+ (void)(KEY); \
+ (void)(N); \
} while (0)
+
#define return_STRING_N_HASH_2(KEY, N) do { \
unsigned long _result_ = 0; \
STRING_N_HASH_2 ((KEY), (N), _result_); \
@@ -141,10 +141,10 @@ extern void *hash_deleted_item;
} while (0)
#define STRING_N_COMPARE(X, Y, N, RESULT) do { \
- RESULT = (X) == (Y) ? 0 : strncmp ((X), (Y), (N)); \
+ RESULT = (X) == (Y) ? 0 : memcmp ((X), (Y), (N)); \
} while (0)
#define return_STRING_N_COMPARE(X, Y, N) do { \
- return (X) == (Y) ? 0 : strncmp ((X), (Y), (N)); \
+ return (X) == (Y) ? 0 : memcmp ((X), (Y), (N)); \
} while (0)
#ifdef HAVE_CASE_INSENSITIVE_FS
diff --git a/implicit.c b/src/implicit.c
index ed49bd1..b281a17 100644
--- a/implicit.c
+++ b/src/implicit.c
@@ -1,5 +1,5 @@
/* Implicit rule searching for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -66,7 +66,7 @@ try_implicit_rule (struct file *file, unsigned int depth)
length of the word. */
static const char *
-get_next_word (const char *buffer, unsigned int *length)
+get_next_word (const char *buffer, size_t *length)
{
const char *p = buffer, *beg;
char c;
@@ -152,6 +152,7 @@ struct patdeps
const char *pattern;
struct file *file;
unsigned int ignore_mtime : 1;
+ unsigned int ignore_automatic_vars : 1;
};
/* This structure stores information about pattern rules that we need
@@ -161,12 +162,12 @@ struct tryrule
{
struct rule *rule;
+ /* Stem length for this match. */
+ size_t stemlen;
+
/* Index of the target in this rule that matched the file. */
unsigned int matches;
- /* Stem length for this match. */
- unsigned int stemlen;
-
/* Definition order of this rule. Used to implement stable sort.*/
unsigned int order;
@@ -179,8 +180,8 @@ stemlen_compare (const void *v1, const void *v2)
{
const struct tryrule *r1 = v1;
const struct tryrule *r2 = v2;
- int r = r1->stemlen - r2->stemlen;
- return r != 0 ? r : (int)(r1->order - r2->order);
+ int r = (int) (r1->stemlen - r2->stemlen);
+ return r != 0 ? r : (int) (r1->order - r2->order);
}
/* Search the pattern rules for a rule with an existing dependency to make
@@ -205,7 +206,7 @@ pattern_search (struct file *file, int archive,
const char *filename = archive ? strchr (file->name, '(') : file->name;
/* Length of FILENAME. */
- unsigned int namelen = strlen (filename);
+ size_t namelen = strlen (filename);
/* The last slash in FILENAME (or nil if there is none). */
const char *lastslash;
@@ -220,13 +221,14 @@ pattern_search (struct file *file, int archive,
struct patdeps *deplist = xmalloc (max_deps * sizeof (struct patdeps));
struct patdeps *pat = deplist;
- /* Names of possible dependencies are constructed in this buffer. */
- char *depname = alloca (namelen + max_pattern_dep_length);
+ /* Names of possible dependencies are constructed in this buffer.
+ We may replace % by $(*F) for second expansion, increasing the length. */
+ char *depname = alloca (namelen + max_pattern_dep_length + 4);
/* The start and length of the stem of FILENAME for the current rule. */
const char *stem = 0;
- unsigned int stemlen = 0;
- unsigned int fullstemlen = 0;
+ size_t stemlen = 0;
+ size_t fullstemlen = 0;
/* Buffer in which we store all the rules that are possibly applicable. */
struct tryrule *tryrules = xmalloc (num_pattern_rules * max_pattern_targets
@@ -252,7 +254,7 @@ pattern_search (struct file *file, int archive,
struct rule *rule;
char *pathdir = NULL;
- unsigned long pathlen;
+ size_t pathlen;
PATH_VAR (stem_str); /* @@ Need to get rid of stem, stemlen, etc. */
@@ -265,7 +267,7 @@ pattern_search (struct file *file, int archive,
/* Set LASTSLASH to point at the last slash in FILENAME
but not counting any slash at the end. (foo/bar/ counts as
bar/ in directory foo/, not empty in directory foo/bar/.) */
- lastslash = strrchr (filename, '/');
+ lastslash = memrchr (filename, '/', namelen - 1);
#ifdef VMS
if (lastslash == NULL)
lastslash = strrchr (filename, ']');
@@ -278,18 +280,16 @@ pattern_search (struct file *file, int archive,
/* Handle backslashes (possibly mixed with forward slashes)
and the case of "d:file". */
{
- char *bslash = strrchr (filename, '\\');
+ char *bslash = memrchr (filename, '\\', namelen - 1);
if (lastslash == 0 || bslash > lastslash)
lastslash = bslash;
if (lastslash == 0 && filename[0] && filename[1] == ':')
lastslash = filename + 1;
}
#endif
- if (lastslash != 0 && lastslash[1] == '\0')
- lastslash = 0;
}
- pathlen = lastslash - filename + 1;
+ pathlen = lastslash ? lastslash - filename + 1 : 0;
/* First see which pattern rules match this target and may be considered.
Put them in TRYRULES. */
@@ -443,7 +443,6 @@ pattern_search (struct file *file, int archive,
unsigned int deps_found = 0;
/* NPTR points to the part of the prereq we haven't processed. */
const char *nptr = 0;
- const char *dir = NULL;
int order_only = 0;
unsigned int matches;
@@ -478,12 +477,12 @@ pattern_search (struct file *file, int archive,
memcpy (pathdir, filename, pathlen);
pathdir[pathlen] = '\0';
}
- dir = pathdir;
}
- if (stemlen > GET_PATH_MAX)
+ if (stemlen + (check_lastslash ? pathlen : 0) > GET_PATH_MAX)
{
- DBS (DB_IMPLICIT, (_("Stem too long: '%.*s'.\n"),
+ DBS (DB_IMPLICIT, (_("Stem too long: '%s%.*s'.\n"),
+ check_lastslash ? pathdir : "",
(int) stemlen, stem));
continue;
}
@@ -491,8 +490,19 @@ pattern_search (struct file *file, int archive,
DBS (DB_IMPLICIT, (_("Trying pattern rule with stem '%.*s'.\n"),
(int) stemlen, stem));
- strncpy (stem_str, stem, stemlen);
- stem_str[stemlen] = '\0';
+ if (!check_lastslash)
+ {
+ memcpy (stem_str, stem, stemlen);
+ stem_str[stemlen] = '\0';
+ }
+ else
+ {
+ /* We want to prepend the directory from
+ the original FILENAME onto the stem. */
+ memcpy (stem_str, filename, pathlen);
+ memcpy (stem_str + pathlen, stem, stemlen);
+ stem_str[pathlen + stemlen] = '\0';
+ }
/* If there are no prerequisites, then this rule matches. */
if (rule->deps == 0)
@@ -543,18 +553,19 @@ pattern_search (struct file *file, int archive,
}
memcpy (o, nptr, p - nptr);
o += p - nptr;
- memcpy (o, stem_str, stemlen);
+ memcpy (o, stem, stemlen);
o += stemlen;
strcpy (o, p + 1);
}
/* Parse the expanded string. It might have wildcards. */
p = depname;
- dl = PARSE_SIMPLE_SEQ (&p, struct dep);
+ dl = PARSE_FILE_SEQ (&p, struct dep, MAP_NUL, NULL, PARSEFS_ONEWORD);
for (d = dl; d != NULL; d = d->next)
{
++deps_found;
d->ignore_mtime = dep->ignore_mtime;
+ d->ignore_automatic_vars = dep->ignore_automatic_vars;
}
/* We've used up this dep, so next time get a new one. */
@@ -573,7 +584,7 @@ pattern_search (struct file *file, int archive,
else
{
int add_dir = 0;
- unsigned int len;
+ size_t len;
struct dep **dptr;
nptr = get_next_word (nptr, &len);
@@ -594,10 +605,10 @@ pattern_search (struct file *file, int archive,
again. This is not good if you have certain characters
in your stem (like $).
- Instead, we will replace % with $* and allow the second
- expansion to take care of it for us. This way (since $*
- is a simple variable) there won't be additional
- re-expansion of the stem. */
+ Instead, we will replace % with $* or $(*F) and allow the
+ second expansion to take care of it for us. This way
+ (since $* and $(*F) are simple variables) there won't be
+ additional re-expansion of the stem. */
p = lindex (nptr, nptr + len, '%');
if (p == 0)
@@ -607,14 +618,23 @@ pattern_search (struct file *file, int archive,
}
else
{
- unsigned int i = p - nptr;
- memcpy (depname, nptr, i);
- memcpy (depname + i, "$*", 2);
- memcpy (depname + i + 2, p + 1, len - i - 1);
- depname[len + 2 - 1] = '\0';
-
+ size_t i = p - nptr;
+ char *o = depname;
+ memcpy (o, nptr, i);
+ o += i;
if (check_lastslash)
- add_dir = 1;
+ {
+ add_dir = 1;
+ memcpy (o, "$(*F)", 5);
+ o += 5;
+ }
+ else
+ {
+ memcpy (o, "$*", 2);
+ o += 2;
+ }
+ memcpy (o, p + 1, len - i - 1);
+ o[len - i - 1] = '\0';
}
/* Set up for the next word. */
@@ -646,7 +666,7 @@ pattern_search (struct file *file, int archive,
/* Parse the expanded string. */
struct dep *dp = PARSE_FILE_SEQ (&p, struct dep,
order_only ? MAP_NUL : MAP_PIPE,
- add_dir ? dir : NULL, PARSEFS_NONE);
+ add_dir ? pathdir : NULL, PARSEFS_NONE);
*dptr = dp;
for (d = dp; d != NULL; d = d->next)
@@ -672,7 +692,7 @@ pattern_search (struct file *file, int archive,
if (deps_found > max_deps)
{
- unsigned int l = pat - deplist;
+ size_t l = pat - deplist;
/* This might have changed due to recursion. */
max_pattern_deps = MAX(max_pattern_deps, deps_found);
max_deps = max_pattern_deps;
@@ -705,6 +725,7 @@ pattern_search (struct file *file, int archive,
memset (pat, '\0', sizeof (struct patdeps));
pat->ignore_mtime = d->ignore_mtime;
+ pat->ignore_automatic_vars = d->ignore_automatic_vars;
DBS (DB_IMPLICIT,
(is_rule
@@ -895,6 +916,7 @@ pattern_search (struct file *file, int archive,
dep = alloc_dep ();
dep->ignore_mtime = pat->ignore_mtime;
+ dep->ignore_automatic_vars = pat->ignore_automatic_vars;
s = strcache_add (pat->name);
if (recursions)
dep->name = s;
@@ -931,17 +953,13 @@ pattern_search (struct file *file, int archive,
}
else
{
- int dirlen = (lastslash + 1) - filename;
- char *sp;
-
/* We want to prepend the directory from
the original FILENAME onto the stem. */
- fullstemlen = dirlen + stemlen;
- sp = alloca (fullstemlen + 1);
- memcpy (sp, filename, dirlen);
- memcpy (sp + dirlen, stem, stemlen);
- sp[fullstemlen] = '\0';
- file->stem = strcache_add (sp);
+ fullstemlen = pathlen + stemlen;
+ memcpy (stem_str, filename, pathlen);
+ memcpy (stem_str + pathlen, stem, stemlen);
+ stem_str[fullstemlen] = '\0';
+ file->stem = strcache_add (stem_str);
}
file->cmds = rule->cmds;
diff --git a/job.c b/src/job.c
index f3a9fdb..ae1f18b 100644
--- a/job.c
+++ b/src/job.c
@@ -1,5 +1,5 @@
/* Job execution and handling for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -17,6 +17,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#include "makeint.h"
#include <assert.h>
+#include <string.h>
#include "job.h"
#include "debug.h"
@@ -25,11 +26,12 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#include "variable.h"
#include "os.h"
-#include <string.h>
-
/* Default shell to use. */
#ifdef WINDOWS32
-#include <windows.h>
+# ifdef HAVE_STRINGS_H
+# include <strings.h> /* for strcasecmp, strncasecmp */
+# endif
+# include <windows.h>
const char *default_shell = "sh.exe";
int no_default_sh_exe = 1;
@@ -134,6 +136,11 @@ extern int wait3 ();
# endif /* Have wait3. */
#endif /* Have waitpid. */
+#ifdef USE_POSIX_SPAWN
+# include <spawn.h>
+# include "findprog.h"
+#endif
+
#if !defined (wait) && !defined (POSIX)
int wait ();
#endif
@@ -278,7 +285,7 @@ create_batch_file (char const *base, int unixy, int *fd)
launches the next one. */
static unsigned uniq = 0;
static int second_loop = 0;
- const unsigned sizemax = strlen (base) + strlen (ext) + 10;
+ const size_t sizemax = strlen (base) + strlen (ext) + 10;
if (path_size == 0)
{
@@ -448,7 +455,7 @@ is_bourne_compatible_shell (const char *path)
for (s = unix_shells; *s != NULL; ++s)
{
#if defined(WINDOWS32) || defined(__MSDOS__)
- unsigned int len = strlen (*s);
+ size_t len = strlen (*s);
if ((strlen (name) >= len && STOP_SET (name[len], MAP_DOT|MAP_NUL))
&& strncasecmp (name, *s, len) == 0)
#else
@@ -461,6 +468,62 @@ is_bourne_compatible_shell (const char *path)
return 0;
}
+#ifdef POSIX
+extern sigset_t fatal_signal_set;
+
+static void
+block_sigs ()
+{
+ sigprocmask (SIG_BLOCK, &fatal_signal_set, (sigset_t *) 0);
+}
+
+static void
+unblock_sigs ()
+{
+ sigprocmask (SIG_UNBLOCK, &fatal_signal_set, (sigset_t *) 0);
+}
+
+void
+unblock_all_sigs ()
+{
+ sigset_t empty;
+ sigemptyset (&empty);
+ sigprocmask (SIG_SETMASK, &empty, (sigset_t *) 0);
+}
+
+#elif defined(HAVE_SIGSETMASK)
+
+extern int fatal_signal_mask;
+
+static void
+block_sigs ()
+{
+ sigblock (fatal_signal_mask);
+}
+
+static void
+unblock_sigs ()
+{
+ sigsetmask (siggetmask (0) & ~fatal_signal_mask)
+}
+
+void
+unblock_all_sigs ()
+{
+ sigsetmask (0);
+}
+
+#else
+
+#define block_sigs()
+#define unblock_sigs()
+
+void
+unblock_all_sigs ()
+{
+}
+
+#endif
/* Write an error message describing the exit status given in
EXIT_CODE, EXIT_SIG, and COREDUMP, for the target TARGET_NAME.
@@ -478,7 +541,7 @@ child_error (struct child *child,
const char *nm;
size_t l;
- if (ignored && silent_flag)
+ if (ignored && run_silent)
return;
if (exit_sig && coredump)
@@ -494,7 +557,7 @@ child_error (struct child *child,
nm = _("<builtin>");
else
{
- char *a = alloca (strlen (flocp->filenm) + 1 + 11 + 1);
+ char *a = alloca (strlen (flocp->filenm) + 6 + INTSTR_LENGTH + 1);
sprintf (a, "%s:%lu", flocp->filenm, flocp->lineno + flocp->offset);
nm = a;
}
@@ -622,10 +685,22 @@ reap_children (int block, int err)
any_remote = 0;
any_local = shell_function_pid != 0;
- for (c = children; c != 0; c = c->next)
+ lastc = 0;
+ for (c = children; c != 0; lastc = c, c = c->next)
{
any_remote |= c->remote;
any_local |= ! c->remote;
+
+ /* If pid < 0, this child never even started. Handle it. */
+ if (c->pid < 0)
+ {
+ exit_sig = 0;
+ coredump = 0;
+ /* According to POSIX, 127 is used for command not found. */
+ exit_code = 127;
+ goto process_child;
+ }
+
DB (DB_JOBS, (_("Live child %p (%s) PID %s %s\n"),
c, c->file->name, pid2str (c->pid),
c->remote ? _(" (remote)") : ""));
@@ -646,7 +721,9 @@ reap_children (int block, int err)
else if (pid < 0)
{
/* A remote status command failed miserably. Punt. */
+#if !defined(__MSDOS__) && !defined(_AMIGA) && !defined(WINDOWS32)
remote_status_lose:
+#endif
pfatal_with_name ("remote_status");
}
else
@@ -690,10 +767,6 @@ reap_children (int block, int err)
exit_code = WEXITSTATUS (status);
exit_sig = WIFSIGNALED (status) ? WTERMSIG (status) : 0;
coredump = WCOREDUMP (status);
-
- /* If we have started jobs in this second, remove one. */
- if (job_counter)
- --job_counter;
}
else
{
@@ -771,7 +844,10 @@ reap_children (int block, int err)
/* get exit data */
exit_code = process_exit_code (hPID);
- if (werr)
+ /* the extra tests of exit_code are here to prevent
+ map_windows32_error_to_string from calling 'fatal',
+ which will then call reap_children again */
+ if (werr && exit_code > 0 && exit_code < WSABASEERR)
fprintf (stderr, "make (e=%d): %s", exit_code,
map_windows32_error_to_string (exit_code));
@@ -818,6 +894,46 @@ reap_children (int block, int err)
Ignore it; it was inherited from our invoker. */
continue;
+ DB (DB_JOBS, (exit_sig == 0 && exit_code == 0
+ ? _("Reaping winning child %p PID %s %s\n")
+ : _("Reaping losing child %p PID %s %s\n"),
+ c, pid2str (c->pid), c->remote ? _(" (remote)") : ""));
+
+ /* If we have started jobs in this second, remove one. */
+ if (job_counter)
+ --job_counter;
+
+ process_child:
+
+#if defined(USE_POSIX_SPAWN)
+ /* Some versions of posix_spawn() do not detect errors such as command
+ not found until after they fork. In that case they will exit with a
+ code of 127. Try to detect that and provide a useful error message.
+ Otherwise we'll just show the error below, as normal. */
+ if (exit_sig == 0 && exit_code == 127 && c->cmd_name)
+ {
+ const char *e = NULL;
+ struct stat st;
+ int r;
+
+ /* There are various ways that this will show a different error than
+ fork/exec. To really get the right error we'd have to fall back
+ to fork/exec but I don't want to bother with that. Just do the
+ best we can. */
+
+ EINTRLOOP(r, stat(c->cmd_name, &st));
+ if (r < 0)
+ e = strerror (errno);
+ else if (S_ISDIR(st.st_mode) || !(st.st_mode & S_IXUSR))
+ e = strerror (EACCES);
+ else if (st.st_size == 0)
+ e = strerror (ENOEXEC);
+
+ if (e)
+ OSS(error, NILF, "%s: %s", c->cmd_name, e);
+ }
+#endif
+
/* Determine the failure status: 0 for success, 1 for updating target in
question mode, 2 for anything else. */
if (exit_sig == 0 && exit_code == 0)
@@ -827,11 +943,6 @@ reap_children (int block, int err)
else
child_failed = MAKE_FAILURE;
- DB (DB_JOBS, (child_failed
- ? _("Reaping losing child %p PID %s %s\n")
- : _("Reaping winning child %p PID %s %s\n"),
- c, pid2str (c->pid), c->remote ? _(" (remote)") : ""));
-
if (c->sh_batch_file)
{
int rm_status;
@@ -939,7 +1050,7 @@ reap_children (int block, int err)
/* At this point c->file->update_status is success or failed. But
c->file->command_state is still cs_running if all the commands
- ran; notice_finish_file looks for cs_running to tell it that
+ ran; notice_finished_file looks for cs_running to tell it that
it's interesting to check the file's modtime again now. */
if (! handling_fatal_signal)
@@ -948,9 +1059,6 @@ reap_children (int block, int err)
update_status to its also_make files. */
notice_finished_file (c->file);
- DB (DB_JOBS, (_("Removing child %p PID %s%s from chain.\n"),
- c, pid2str (c->pid), c->remote ? _(" (remote)") : ""));
-
/* Block fatal signals while frobnicating the list, so that
children and job_slots_used are always consistent. Otherwise
a fatal signal arriving after the child is off the chain and
@@ -958,9 +1066,15 @@ reap_children (int block, int err)
live and call reap_children again. */
block_sigs ();
+ if (c->pid > 0)
+ {
+ DB (DB_JOBS, (_("Removing child %p PID %s%s from chain.\n"),
+ c, pid2str (c->pid), c->remote ? _(" (remote)") : ""));
+ }
+
/* There is now another slot open. */
if (job_slots_used > 0)
- --job_slots_used;
+ job_slots_used -= c->jobslot;
/* Remove the child from the chain and free it. */
if (lastc == 0)
@@ -1014,7 +1128,7 @@ free_child (struct child *child)
if (child->command_lines != 0)
{
- register unsigned int i;
+ unsigned int i;
for (i = 0; i < child->file->cmds->ncommand_lines; ++i)
free (child->command_lines[i]);
free (child->command_lines);
@@ -1022,41 +1136,16 @@ free_child (struct child *child)
if (child->environment != 0)
{
- register char **ep = child->environment;
+ char **ep = child->environment;
while (*ep != 0)
free (*ep++);
free (child->environment);
}
+ free (child->cmd_name);
free (child);
}
-#ifdef POSIX
-extern sigset_t fatal_signal_set;
-#endif
-
-void
-block_sigs (void)
-{
-#ifdef POSIX
- (void) sigprocmask (SIG_BLOCK, &fatal_signal_set, (sigset_t *) 0);
-#else
-# ifdef HAVE_SIGSETMASK
- (void) sigblock (fatal_signal_mask);
-# endif
-#endif
-}
-
-#ifdef POSIX
-void
-unblock_sigs (void)
-{
- sigset_t empty;
- sigemptyset (&empty);
- sigprocmask (SIG_SETMASK, &empty, (sigset_t *) 0);
-}
-#endif
-
/* Start a job to run the commands specified in CHILD.
CHILD is updated to reflect the commands and ID of the child process.
@@ -1071,8 +1160,10 @@ start_job_command (struct child *child)
int flags;
char *p;
#ifdef VMS
+# define FREE_ARGV(_a)
char *argv;
#else
+# define FREE_ARGV(_a) do{ if (_a) { free ((_a)[0]); free (_a); } }while(0)
char **argv;
#endif
@@ -1146,12 +1237,11 @@ start_job_command (struct child *child)
}
argv = p;
- /* Although construct_command_argv contains some code for VMS, it was/is
- not called/used. Please note, for VMS argv is a string (not an array
- of strings) which contains the complete command line, which for
- multi-line variables still includes the newlines. So detect newlines
- and set 'end' (which is used for child->command_ptr) instead of
- (re-)writing construct_command_argv */
+ /* Please note, for VMS argv is a string (not an array of strings) which
+ contains the complete command line, which for multi-line variables
+ still includes the newlines. So detect newlines and set 'end' (which
+ is used for child->command_ptr) instead of (re-)writing
+ construct_command_argv */
if (!one_shell)
{
char *s = p;
@@ -1190,10 +1280,7 @@ start_job_command (struct child *child)
error is 2. */
if (argv != 0 && question_flag && !(flags & COMMANDS_RECURSE))
{
-#ifndef VMS
- free (argv[0]);
- free (argv);
-#endif
+ FREE_ARGV (argv);
#ifdef VMS
/* On VMS, argv[0] can be a null string here */
if (argv[0] != 0)
@@ -1211,13 +1298,7 @@ start_job_command (struct child *child)
{
/* Go on to the next command. It might be the recursive one.
We construct ARGV only to find the end of the command line. */
-#ifndef VMS
- if (argv)
- {
- free (argv[0]);
- free (argv);
- }
-#endif
+ FREE_ARGV (argv);
argv = 0;
}
@@ -1260,7 +1341,7 @@ start_job_command (struct child *child)
/* Print the command if appropriate. */
if (just_print_flag || trace_flag
- || (!(flags & COMMANDS_SILENT) && !silent_flag))
+ || (!(flags & COMMANDS_SILENT) && !run_silent))
OS (message, 0, "%s", p);
/* Tell update_goal_chain that a command has been started on behalf of
@@ -1293,8 +1374,7 @@ start_job_command (struct child *child)
&& (argv[2] && argv[2][0] == ':' && argv[2][1] == '\0')
&& argv[3] == NULL)
{
- free (argv[0]);
- free (argv);
+ FREE_ARGV (argv);
goto next_command;
}
#endif /* !VMS && !_AMIGA */
@@ -1303,10 +1383,7 @@ start_job_command (struct child *child)
if (just_print_flag && !(flags & COMMANDS_RECURSE))
{
-#ifndef VMS
- free (argv[0]);
- free (argv);
-#endif
+ FREE_ARGV (argv);
goto next_command;
}
@@ -1340,7 +1417,8 @@ start_job_command (struct child *child)
/* start_waiting_job has set CHILD->remote if we can start a remote job. */
if (child->remote)
{
- int is_remote, id, used_stdin;
+ int is_remote, used_stdin;
+ pid_t id;
if (start_remote_job (argv, child->environment,
child->good_stdin ? 0 : get_bad_stdin (),
&is_remote, &id, &used_stdin))
@@ -1371,12 +1449,7 @@ start_job_command (struct child *child)
child->remote = 0;
#ifdef VMS
- if (!child_execute_job (child, argv))
- {
- /* Fork failed! */
- perror_with_name ("fork", "");
- goto error;
- }
+ child->pid = child_execute_job ((struct childbase *)child, 1, argv);
#else
@@ -1384,18 +1457,12 @@ start_job_command (struct child *child)
jobserver_pre_child (flags & COMMANDS_RECURSE);
- child->pid = child_execute_job (&child->output, child->good_stdin, argv, child->environment);
+ child->pid = child_execute_job ((struct childbase *)child,
+ child->good_stdin, argv);
environ = parent_environ; /* Restore value child may have clobbered. */
jobserver_post_child (flags & COMMANDS_RECURSE);
- if (child->pid < 0)
- {
- /* Fork failed! */
- unblock_sigs ();
- perror_with_name ("fork", "");
- goto error;
- }
#endif /* !VMS */
}
@@ -1510,33 +1577,25 @@ start_job_command (struct child *child)
for (i = 0; argv[i]; i++)
fprintf (stderr, "%s ", argv[i]);
fprintf (stderr, _("\nCounted %d args in failed launch\n"), i);
- goto error;
+ child->pid = -1;
}
}
#endif /* WINDOWS32 */
#endif /* __MSDOS__ or Amiga or WINDOWS32 */
/* Bump the number of jobs started in this second. */
- ++job_counter;
-
- /* We are the parent side. Set the state to
- say the commands are running and return. */
+ if (child->pid >= 0)
+ ++job_counter;
+ /* Set the state to running. */
set_command_state (child->file, cs_running);
/* Free the storage used by the child's argument list. */
-#ifndef VMS
- free (argv[0]);
- free (argv);
-#endif
+ FREE_ARGV (argv);
OUTPUT_UNSET();
- return;
- error:
- child->file->update_status = us_failed;
- notice_finished_file (child->file);
- OUTPUT_UNSET();
+#undef FREE_ARGV
}
/* Try to start a child running.
@@ -1559,7 +1618,7 @@ start_waiting_job (struct child *c)
if (!c->remote
&& ((job_slots_used > 0 && load_too_high ())
#ifdef WINDOWS32
- || (process_used_slots () >= MAXIMUM_WAIT_OBJECTS)
+ || process_table_full ()
#endif
))
{
@@ -1578,12 +1637,17 @@ start_waiting_job (struct child *c)
{
case cs_running:
c->next = children;
- DB (DB_JOBS, (_("Putting child %p (%s) PID %s%s on the chain.\n"),
- c, c->file->name, pid2str (c->pid),
- c->remote ? _(" (remote)") : ""));
+ if (c->pid > 0)
+ {
+ DB (DB_JOBS, (_("Putting child %p (%s) PID %s%s on the chain.\n"),
+ c, c->file->name, pid2str (c->pid),
+ c->remote ? _(" (remote)") : ""));
+ /* One more job slot is in use. */
+ ++job_slots_used;
+ assert (c->jobslot == 0);
+ c->jobslot = 1;
+ }
children = c;
- /* One more job slot is in use. */
- ++job_slots_used;
unblock_sigs ();
break;
@@ -1883,17 +1947,31 @@ job_next_command (struct child *child)
}
/* Determine if the load average on the system is too high to start a new job.
- The real system load average is only recomputed once a second. However, a
- very parallel make can easily start tens or even hundreds of jobs in a
- second, which brings the system to its knees for a while until that first
- batch of jobs clears out.
+
+ On systems which provide /proc/loadavg (e.g., Linux), we use an idea
+ provided by Sven C. Dack <sven.c.dack@sky.com>: retrieve the current number
+ of processes the kernel is running and, if it's greater than the requested
+ load we don't allow another job to start. We allow a job to start with
+ equal processes since one of those will be for make itself, which will then
+ pause waiting for jobs to clear.
+
+ Otherwise, we obtain the system load average and compare that.
+
+ The system load average is only recomputed once every N (N>=1) seconds.
+ However, a very parallel make can easily start tens or even hundreds of
+ jobs in a second, which brings the system to its knees for a while until
+ that first batch of jobs clears out.
To avoid this we use a weighted algorithm to try to account for jobs which
have been started since the last second, and guess what the load average
would be now if it were computed.
This algorithm was provided by Thomas Riedl <thomas.riedl@siemens.com>,
- who writes:
+ based on load average being recomputed once per second, which is
+ (apparently) how Solaris operates. Linux recomputes only once every 5
+ seconds, but Linux is handled by the /proc/loadavg algorithm above.
+
+ Thomas writes:
! calculate something load-oid and add to the observed sys.load,
! so that latter can catch up:
@@ -1930,18 +2008,92 @@ load_too_high (void)
#else
static double last_sec;
static time_t last_now;
+
+ /* This is disabled by default for now, because it will behave badly if the
+ user gives a value > the number of cores; in that situation the load will
+ never be exceeded, this function always returns false, and we'll start
+ all the jobs. Also, it's not quite right to limit jobs to the number of
+ cores not busy since a job takes some time to start etc. Maybe that's
+ OK, I'm not sure exactly how to handle that, but for sure we need to
+ clamp this value at the number of cores before this can be enabled.
+ */
+#define PROC_FD_INIT -1
+ static int proc_fd = PROC_FD_INIT;
+
double load, guess;
time_t now;
#ifdef WINDOWS32
- /* sub_proc.c cannot wait for more than MAXIMUM_WAIT_OBJECTS children */
- if (process_used_slots () >= MAXIMUM_WAIT_OBJECTS)
+ /* sub_proc.c is limited in the number of objects it can wait for. */
+ if (process_table_full ())
return 1;
#endif
if (max_load_average < 0)
return 0;
+ /* If we haven't tried to open /proc/loadavg, try now. */
+#define LOADAVG "/proc/loadavg"
+ if (proc_fd == -2)
+ {
+ EINTRLOOP (proc_fd, open (LOADAVG, O_RDONLY));
+ if (proc_fd < 0)
+ DB (DB_JOBS, ("Using system load detection method.\n"));
+ else
+ {
+ DB (DB_JOBS, ("Using " LOADAVG " load detection method.\n"));
+ fd_noinherit (proc_fd);
+ }
+ }
+
+ /* Try to read /proc/loadavg if we managed to open it. */
+ if (proc_fd >= 0)
+ {
+ int r;
+
+ EINTRLOOP (r, lseek (proc_fd, 0, SEEK_SET));
+ if (r >= 0)
+ {
+#define PROC_LOADAVG_SIZE 64
+ char avg[PROC_LOADAVG_SIZE+1];
+
+ EINTRLOOP (r, read (proc_fd, avg, PROC_LOADAVG_SIZE));
+ if (r >= 0)
+ {
+ const char *p;
+
+ /* The syntax of /proc/loadavg is:
+ <1m> <5m> <15m> <running>/<total> <pid>
+ The load is considered too high if there are more jobs
+ running than the requested average. */
+
+ avg[r] = '\0';
+ p = strchr (avg, ' ');
+ if (p)
+ p = strchr (p+1, ' ');
+ if (p)
+ p = strchr (p+1, ' ');
+
+ if (p && ISDIGIT(p[1]))
+ {
+ int cnt = atoi (p+1);
+ DB (DB_JOBS, ("Running: system = %d / make = %u (max requested = %f)\n",
+ cnt, job_slots_used, max_load_average));
+ return (double)cnt > max_load_average;
+ }
+
+ DB (DB_JOBS, ("Failed to parse " LOADAVG ": %s\n", avg));
+ }
+ }
+
+ /* If we got here, something went wrong. Give up on this method. */
+ if (r < 0)
+ DB (DB_JOBS, ("Failed to read " LOADAVG ": %s\n", strerror (errno)));
+
+ close (proc_fd);
+ proc_fd = -1;
+ }
+
/* Find the real system load average. */
make_access ();
if (getloadavg (&load, 1) != 1)
@@ -2017,10 +2169,10 @@ start_waiting_jobs (void)
/* EMX: Start a child process. This function returns the new pid. */
# if defined __EMX__
-int
-child_execute_job (struct output *out, int good_stdin, char **argv, char **envp)
+pid_t
+child_execute_job (struct childbase *child, int good_stdin, char **argv)
{
- int pid;
+ pid_t pid;
int fdin = good_stdin ? FD_STDIN : get_bad_stdin ();
int fdout = FD_STDOUT;
int fderr = FD_STDERR;
@@ -2029,12 +2181,12 @@ child_execute_job (struct output *out, int good_stdin, char **argv, char **envp)
int save_fderr = -1;
/* Divert child output if we want to capture output. */
- if (out && out->syncout)
+ if (child->output.syncout)
{
- if (out->out >= 0)
- fdout = out->out;
- if (out->err >= 0)
- fderr = out->err;
+ if (child->output.out >= 0)
+ fdout = child->output.out;
+ if (child->output.err >= 0)
+ fderr = child->output.err;
}
/* For each FD which needs to be redirected first make a dup of the standard
@@ -2046,10 +2198,10 @@ child_execute_job (struct output *out, int good_stdin, char **argv, char **envp)
save_fdin = dup (FD_STDIN);
if (save_fdin < 0)
O (fatal, NILF, _("no more file handles: could not duplicate stdin\n"));
- CLOSE_ON_EXEC (save_fdin);
+ fd_noinherit (save_fdin);
dup2 (fdin, FD_STDIN);
- CLOSE_ON_EXEC (fdin);
+ fd_noinherit (fdin);
}
if (fdout != FD_STDOUT)
@@ -2058,10 +2210,10 @@ child_execute_job (struct output *out, int good_stdin, char **argv, char **envp)
if (save_fdout < 0)
O (fatal, NILF,
_("no more file handles: could not duplicate stdout\n"));
- CLOSE_ON_EXEC (save_fdout);
+ fd_noinherit (save_fdout);
dup2 (fdout, FD_STDOUT);
- CLOSE_ON_EXEC (fdout);
+ fd_noinherit (fdout);
}
if (fderr != FD_STDERR)
@@ -2072,15 +2224,15 @@ child_execute_job (struct output *out, int good_stdin, char **argv, char **envp)
if (save_fderr < 0)
O (fatal, NILF,
_("no more file handles: could not duplicate stderr\n"));
- CLOSE_ON_EXEC (save_fderr);
+ fd_noinherit (save_fderr);
}
dup2 (fderr, FD_STDERR);
- CLOSE_ON_EXEC (fderr);
+ fd_noinherit (fderr);
}
/* Run the command. */
- pid = exec_command (argv, envp);
+ pid = exec_command (argv, child->environment);
/* Restore stdout/stdin/stderr of the parent and close temporary FDs. */
if (save_fdin >= 0)
@@ -2107,6 +2259,9 @@ child_execute_job (struct output *out, int good_stdin, char **argv, char **envp)
close (save_fderr);
}
+ if (pid < 0)
+ OSS (error, NILF, "%s: %s", argv[0], strerror (errno));
+
return pid;
}
@@ -2114,31 +2269,39 @@ child_execute_job (struct output *out, int good_stdin, char **argv, char **envp)
/* POSIX:
Create a child process executing the command in ARGV.
- ENVP is the environment of the new program. Returns the PID or -1. */
-int
-child_execute_job (struct output *out, int good_stdin, char **argv, char **envp)
+ Returns the PID or -1. */
+pid_t
+child_execute_job (struct childbase *child, int good_stdin, char **argv)
{
- int r;
- int pid;
- int fdin = good_stdin ? FD_STDIN : get_bad_stdin ();
+ const int fdin = good_stdin ? FD_STDIN : get_bad_stdin ();
int fdout = FD_STDOUT;
int fderr = FD_STDERR;
+ pid_t pid;
+ int r;
+#if defined(USE_POSIX_SPAWN)
+ char *cmd;
+ posix_spawnattr_t attr;
+ posix_spawn_file_actions_t fa;
+ short flags = 0;
+#endif
/* Divert child output if we want to capture it. */
- if (out && out->syncout)
+ if (child->output.syncout)
{
- if (out->out >= 0)
- fdout = out->out;
- if (out->err >= 0)
- fderr = out->err;
+ if (child->output.out >= 0)
+ fdout = child->output.out;
+ if (child->output.err >= 0)
+ fderr = child->output.err;
}
+#if !defined(USE_POSIX_SPAWN)
+
pid = vfork();
if (pid != 0)
return pid;
/* We are the child. */
- unblock_sigs ();
+ unblock_all_sigs ();
#ifdef SET_STACK_SIZE
/* Reset limits, if necessary. */
@@ -2148,7 +2311,7 @@ child_execute_job (struct output *out, int good_stdin, char **argv, char **envp)
/* For any redirected FD, dup2() it to the standard FD.
They are all marked close-on-exec already. */
- if (fdin != FD_STDIN)
+ if (fdin >= 0 && fdin != FD_STDIN)
EINTRLOOP (r, dup2 (fdin, FD_STDIN));
if (fdout != FD_STDOUT)
EINTRLOOP (r, dup2 (fdout, FD_STDOUT));
@@ -2156,7 +2319,130 @@ child_execute_job (struct output *out, int good_stdin, char **argv, char **envp)
EINTRLOOP (r, dup2 (fderr, FD_STDERR));
/* Run the command. */
- exec_command (argv, envp);
+ exec_command (argv, child->environment);
+
+#else /* USE_POSIX_SPAWN */
+
+ if ((r = posix_spawnattr_init (&attr)) != 0)
+ goto done;
+
+ if ((r = posix_spawn_file_actions_init (&fa)) != 0)
+ {
+ posix_spawnattr_destroy (&attr);
+ goto done;
+ }
+
+ /* Unblock all signals. */
+#ifdef HAVE_POSIX_SPAWNATTR_SETSIGMASK
+ {
+ sigset_t mask;
+ sigemptyset (&mask);
+ r = posix_spawnattr_setsigmask (&attr, &mask);
+ if (r != 0)
+ goto cleanup;
+ flags |= POSIX_SPAWN_SETSIGMASK;
+ }
+#endif /* have posix_spawnattr_setsigmask() */
+
+ /* USEVFORK can give significant speedup on systems where it's available. */
+#ifdef POSIX_SPAWN_USEVFORK
+ flags |= POSIX_SPAWN_USEVFORK;
+#endif
+
+ /* For any redirected FD, dup2() it to the standard FD.
+ They are all marked close-on-exec already. */
+ if (fdin >= 0 && fdin != FD_STDIN)
+ if ((r = posix_spawn_file_actions_adddup2 (&fa, fdin, FD_STDIN)) != 0)
+ goto cleanup;
+ if (fdout != FD_STDOUT)
+ if ((r = posix_spawn_file_actions_adddup2 (&fa, fdout, FD_STDOUT)) != 0)
+ goto cleanup;
+ if (fderr != FD_STDERR)
+ if ((r = posix_spawn_file_actions_adddup2 (&fa, fderr, FD_STDERR)) != 0)
+ goto cleanup;
+
+ /* Be the user, permanently. */
+ flags |= POSIX_SPAWN_RESETIDS;
+
+ /* Apply the spawn flags. */
+ if ((r = posix_spawnattr_setflags (&attr, flags)) != 0)
+ goto cleanup;
+
+ /* Look up the program on the child's PATH, if needed. */
+ {
+ const char *p = NULL;
+ char **pp;
+
+ for (pp = child->environment; *pp != NULL; ++pp)
+ if ((*pp)[0] == 'P' && (*pp)[1] == 'A' && (*pp)[2] == 'T'
+ && (*pp)[3] == 'H' &&(*pp)[4] == '=')
+ {
+ p = (*pp) + 5;
+ break;
+ }
+
+ cmd = (char *)find_in_given_path (argv[0], p, 0);
+ }
+
+ if (!cmd)
+ {
+ r = errno;
+ goto cleanup;
+ }
+
+ /* Start the program. */
+ while ((r = posix_spawn (&pid, cmd, &fa, &attr, argv,
+ child->environment)) == EINTR)
+ ;
+
+ /* posix_spawn() doesn't provide sh fallback like exec() does; implement
+ it here. POSIX doesn't specify the path to sh so use the default. */
+
+ if (r == ENOEXEC)
+ {
+ char **nargv;
+ char **pp;
+ size_t l = 0;
+
+ for (pp = argv; *pp != NULL; ++pp)
+ ++l;
+
+ nargv = xmalloc (sizeof (char *) * (l + 3));
+ nargv[0] = (char *)default_shell;
+ nargv[1] = cmd;
+ memcpy (&nargv[2], &argv[1], sizeof (char *) * l);
+
+ while ((r = posix_spawn (&pid, nargv[0], &fa, &attr, nargv,
+ child->environment)) == EINTR)
+ ;
+
+ free (nargv);
+ }
+
+ if (r == 0)
+ {
+ /* Spawn succeeded but may fail later: remember the command. */
+ free (child->cmd_name);
+ if (cmd != argv[0])
+ child->cmd_name = cmd;
+ else
+ child->cmd_name = xstrdup(cmd);
+ }
+
+ cleanup:
+ posix_spawn_file_actions_destroy (&fa);
+ posix_spawnattr_destroy (&attr);
+
+ done:
+ if (r != 0)
+ pid = -1;
+
+#endif /* USE_POSIX_SPAWN */
+
+ if (pid < 0)
+ OSS (error, NILF, "%s: %s", argv[0], strerror (r));
+
+ return pid;
}
#endif /* !AMIGA && !__MSDOS__ && !VMS */
#endif /* !WINDOWS32 */
@@ -2167,7 +2453,7 @@ child_execute_job (struct output *out, int good_stdin, char **argv, char **envp)
/* EMX: This function returns the pid of the child process. */
# ifdef __EMX__
-int
+pid_t
# else
void
# endif
@@ -2180,7 +2466,7 @@ exec_command (char **argv, char **envp)
#endif
/* Run the program. */
execve (argv[0], argv, envp);
- perror_with_name ("execve: ", argv[0]);
+ OSS (error, NILF, "%s: %s", argv[0], strerror (errno));
_exit (EXIT_FAILURE);
#else
#ifdef WINDOWS32
@@ -2243,7 +2529,7 @@ exec_command (char **argv, char **envp)
#else /* !WINDOWS32 */
# ifdef __EMX__
- int pid;
+ pid_t pid;
# endif
/* Be the user, permanently. */
@@ -2269,17 +2555,11 @@ exec_command (char **argv, char **envp)
switch (errno)
{
case ENOENT:
- /* We are in the child: don't use the output buffer.
- It's not right to run fprintf() here! */
- if (makelevel == 0)
- fprintf (stderr, _("%s: %s: Command not found\n"), program, argv[0]);
- else
- fprintf (stderr, _("%s[%u]: %s: Command not found\n"),
- program, makelevel, argv[0]);
+ OSS (error, NILF, "%s: %s", argv[0], strerror (errno));
break;
case ENOEXEC:
{
- /* The file is not executable. Try it as a shell script. */
+ /* The file was not a program. Try it as a shell script. */
const char *shell;
char **new_argv;
int argc;
@@ -2333,10 +2613,7 @@ exec_command (char **argv, char **envp)
# else
execvp (shell, new_argv);
# endif
- if (errno == ENOENT)
- OS (error, NILF, _("%s: Shell program not found"), shell);
- else
- perror_with_name ("execvp: ", shell);
+ OSS (error, NILF, "%s: %s", new_argv[0], strerror (errno));
break;
}
@@ -2348,7 +2625,7 @@ exec_command (char **argv, char **envp)
# endif
default:
- perror_with_name ("execvp: ", argv[0]);
+ OSS (error, NILF, "%s: %s", argv[0], strerror (errno));
break;
}
@@ -2434,7 +2711,7 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
{ "cd", "echo", "eval", "exec", "exit", "login", "logout", "set", "umask",
"wait", "while", "for", "case", "if", ":", ".", "break", "continue",
"export", "read", "readonly", "shift", "times", "trap", "switch",
- "unset", "ulimit", 0 };
+ "unset", "ulimit", "command", 0 };
const char *sh_chars;
const char **sh_cmds;
@@ -2461,7 +2738,7 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
{ "echo", "cd", "eval", "exec", "exit", "login", "logout", "set", "umask",
"wait", "while", "for", "case", "if", ":", ".", "break", "continue",
"export", "read", "readonly", "shift", "times", "trap", "switch",
- "unset", 0 };
+ "unset", "command", 0 };
const char *sh_chars;
const char **sh_cmds;
@@ -2471,7 +2748,7 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
static const char *sh_cmds[] =
{ "cd", "eval", "if", "delete", "echo", "copy", "rename", "set", "setenv",
"date", "makedir", "skip", "else", "endif", "path", "prompt", "unset",
- "unsetenv", "version", 0 };
+ "unsetenv", "version", "command", 0 };
#elif defined (WINDOWS32)
/* We used to have a double quote (") in sh_chars_dos[] below, but
@@ -2494,7 +2771,7 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
static const char *sh_cmds_sh[] =
{ "cd", "eval", "exec", "exit", "login", "logout", "set", "umask", "wait",
"while", "for", "case", "if", ":", ".", "break", "continue", "export",
- "read", "readonly", "shift", "times", "trap", "switch", "test",
+ "read", "readonly", "shift", "times", "trap", "switch", "test", "command",
#ifdef BATCH_MODE_ONLY_SHELL
"echo",
#endif
@@ -2508,10 +2785,11 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
#else /* must be UNIX-ish */
static const char *sh_chars = "#;\"*?[]&|<>(){}$`^~!";
static const char *sh_cmds[] =
- { ".", ":", "break", "case", "cd", "continue", "eval", "exec", "exit",
- "export", "for", "if", "login", "logout", "read", "readonly", "set",
- "shift", "switch", "test", "times", "trap", "ulimit", "umask", "unset",
- "wait", "while", 0 };
+ { ".", ":", "alias", "bg", "break", "case", "cd", "command", "continue",
+ "eval", "exec", "exit", "export", "fc", "fg", "for", "getopts", "hash",
+ "if", "jobs", "login", "logout", "read", "readonly", "return", "set",
+ "shift", "test", "times", "trap", "type", "ulimit", "umask", "unalias",
+ "unset", "wait", "while", 0 };
# ifdef HAVE_DOS_PATHS
/* This is required if the MSYS/Cygwin ports (which do not define
@@ -2521,7 +2799,7 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
static const char *sh_chars_sh = "#;\"*?[]&|<>(){}$`^~!";
# endif /* HAVE_DOS_PATHS */
#endif
- int i;
+ size_t i;
char *p;
#ifndef NDEBUG
char *end;
@@ -2812,7 +3090,7 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
If so, have the shell handle it. */
if (i == 1)
{
- register int j;
+ int j;
for (j = 0; sh_cmds[j] != 0; ++j)
{
if (streq (sh_cmds[j], new_argv[0]))
@@ -2851,7 +3129,7 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
if (i == 1)
{
- register int j;
+ int j;
for (j = 0; sh_cmds[j] != 0; ++j)
if (streq (sh_cmds[j], new_argv[0]))
goto slow;
@@ -2933,9 +3211,9 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
argument list. */
char *new_line;
- unsigned int shell_len = strlen (shell);
- unsigned int line_len = strlen (line);
- unsigned int sflags_len = shellflags ? strlen (shellflags) : 0;
+ size_t shell_len = strlen (shell);
+ size_t line_len = strlen (line);
+ size_t sflags_len = shellflags ? strlen (shellflags) : 0;
#ifdef WINDOWS32
char *command_ptr = NULL; /* used for batch_mode_shell mode */
#endif
@@ -3092,7 +3370,7 @@ construct_command_argv_internal (char *line, char **restp, const char *shell,
{
const char *s = shellflags;
char *t;
- unsigned int len;
+ size_t len;
while ((t = find_next_token (&s, &len)) != 0)
new_argv[n++] = xstrndup (t, len);
}
@@ -3356,43 +3634,6 @@ construct_command_argv (char *line, char **restp, struct file *file,
char *shell, *ifs, *shellflags;
char **argv;
-#ifdef VMS
- char *cptr;
- int argc;
-
- argc = 0;
- cptr = line;
- for (;;)
- {
- while ((*cptr != 0) && (ISSPACE (*cptr)))
- cptr++;
- if (*cptr == 0)
- break;
- while ((*cptr != 0) && (!ISSPACE (*cptr)))
- cptr++;
- argc++;
- }
-
- argv = xmalloc (argc * sizeof (char *));
- if (argv == 0)
- abort ();
-
- cptr = line;
- argc = 0;
- for (;;)
- {
- while ((*cptr != 0) && (ISSPACE (*cptr)))
- cptr++;
- if (*cptr == 0)
- break;
- DB (DB_JOBS, ("argv[%d] = [%s]\n", argc, cptr));
- argv[argc++] = cptr;
- while ((*cptr != 0) && (!ISSPACE (*cptr)))
- cptr++;
- if (*cptr != 0)
- *cptr++ = 0;
- }
-#else
{
/* Turn off --warn-undefined-variables while we expand SHELL and IFS. */
int save = warn_undefined_variables_flag;
@@ -3467,7 +3708,7 @@ construct_command_argv (char *line, char **restp, struct file *file,
free (shell);
free (shellflags);
free (ifs);
-#endif /* !VMS */
+
return argv;
}
diff --git a/src/job.h b/src/job.h
new file mode 100644
index 0000000..ee290fb
--- /dev/null
+++ b/src/job.h
@@ -0,0 +1,93 @@
+/* Definitions for managing subprocesses in GNU Make.
+Copyright (C) 1992-2020 Free Software Foundation, Inc.
+This file is part of GNU Make.
+
+GNU Make is free software; you can redistribute it and/or modify it under the
+terms of the GNU General Public License as published by the Free Software
+Foundation; either version 3 of the License, or (at your option) any later
+version.
+
+GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include "output.h"
+
+/* Structure describing a running or dead child process. */
+
+#ifdef VMS
+#define VMSCHILD \
+ char *comname; /* Temporary command file name */ \
+ int efn; /* Completion event flag number */ \
+ int cstatus; /* Completion status */ \
+ int vms_launch_status; /* non-zero if lib$spawn, etc failed */
+#else
+#define VMSCHILD
+#endif
+
+#define CHILDBASE \
+ char *cmd_name; /* Alloced copy of command run. */ \
+ char **environment; /* Environment for commands. */ \
+ VMSCHILD \
+ struct output output /* Output for this child. */
+
+
+struct childbase
+ {
+ CHILDBASE;
+ };
+
+struct child
+ {
+ CHILDBASE;
+
+ struct child *next; /* Link in the chain. */
+
+ struct file *file; /* File being remade. */
+
+ char *sh_batch_file; /* Script file for shell commands */
+ char **command_lines; /* Array of variable-expanded cmd lines. */
+ char *command_ptr; /* Ptr into command_lines[command_line]. */
+
+ unsigned int command_line; /* Index into command_lines. */
+
+ pid_t pid; /* Child process's ID number. */
+
+ unsigned int remote:1; /* Nonzero if executing remotely. */
+ unsigned int noerror:1; /* Nonzero if commands contained a '-'. */
+ unsigned int good_stdin:1; /* Nonzero if this child has a good stdin. */
+ unsigned int deleted:1; /* Nonzero if targets have been deleted. */
+ unsigned int recursive:1; /* Nonzero for recursive command ('+' etc.) */
+ unsigned int jobslot:1; /* Nonzero if it's reserved a job slot. */
+ unsigned int dontcare:1; /* Saved dontcare flag. */
+ };
+
+extern struct child *children;
+
+/* A signal handler for SIGCHLD, if needed. */
+RETSIGTYPE child_handler (int sig);
+int is_bourne_compatible_shell(const char *path);
+void new_job (struct file *file);
+void reap_children (int block, int err);
+void start_waiting_jobs (void);
+
+char **construct_command_argv (char *line, char **restp, struct file *file,
+ int cmd_flags, char** batch_file);
+
+pid_t child_execute_job (struct childbase *child, int good_stdin, char **argv);
+
+#ifdef _AMIGA
+void exec_command (char **argv) NORETURN;
+#elif defined(__EMX__)
+int exec_command (char **argv, char **envp);
+#else
+void exec_command (char **argv, char **envp) NORETURN;
+#endif
+
+void unblock_all_sigs (void);
+
+extern unsigned int job_slots_used;
+extern unsigned int jobserver_tokens;
diff --git a/load.c b/src/load.c
index 37e7b8e..27f5899 100644
--- a/load.c
+++ b/src/load.c
@@ -1,5 +1,5 @@
/* Loading dynamic objects for GNU Make.
-Copyright (C) 2012-2016 Free Software Foundation, Inc.
+Copyright (C) 2012-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -121,7 +121,7 @@ load_object (const floc *flocp, int noerror, const char *ldname,
int
load_file (const floc *flocp, const char **ldname, int noerror)
{
- int nmlen = strlen (*ldname);
+ size_t nmlen = strlen (*ldname);
char *new = alloca (nmlen + CSTRLEN (SYMBOL_EXTENSION) + 1);
char *symname = NULL;
char *loaded;
@@ -142,7 +142,7 @@ load_file (const floc *flocp, const char **ldname, int noerror)
ep = strchr (fp+1, ')');
if (ep && ep[1] == '\0')
{
- int l = fp - *ldname;;
+ size_t l = fp - *ldname;;
++fp;
if (fp == ep)
@@ -240,7 +240,7 @@ unload_file (const char *name)
if (streq (d->name, name) && d->dlp)
{
if (dlclose (d->dlp))
- perror_with_name ("dlclose", d->name);
+ perror_with_name ("dlclose: ", d->name);
d->dlp = NULL;
break;
}
diff --git a/loadapi.c b/src/loadapi.c
index 14b75f8..4914b2d 100644
--- a/loadapi.c
+++ b/src/loadapi.c
@@ -1,5 +1,5 @@
/* API for GNU Make dynamic objects.
-Copyright (C) 2013-2016 Free Software Foundation, Inc.
+Copyright (C) 2013-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -41,7 +41,7 @@ gmk_eval (const char *buffer, const gmk_floc *gfloc)
{
/* Preserve existing variable buffer context. */
char *pbuf;
- unsigned int plen;
+ size_t plen;
char *s;
floc fl;
floc *flp;
diff --git a/main.c b/src/main.c
index fa8045f..78a27d7 100644
--- a/main.c
+++ b/src/main.c
@@ -1,5 +1,5 @@
/* Argument parsing and main program of GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -33,6 +33,9 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#ifdef WINDOWS32
# include <windows.h>
# include <io.h>
+#ifdef HAVE_STRINGS_H
+# include <strings.h> /* for strcasecmp */
+#endif
# include "pathstuff.h"
# include "sub_proc.h"
# include "w32err.h"
@@ -93,7 +96,7 @@ int chdir ();
#endif
#ifndef STDC_HEADERS
# ifndef sun /* Sun has an incorrect decl in a header. */
-void exit (int) __attribute__ ((noreturn));
+void exit (int) NORETURN;
# endif
double atof ();
#endif
@@ -102,7 +105,7 @@ static void clean_jobserver (int status);
static void print_data_base (void);
static void print_version (void);
static void decode_switches (int argc, const char **argv, int env);
-static void decode_env_switches (const char *envar, unsigned int len);
+static void decode_env_switches (const char *envar, size_t len);
static struct variable *define_makeflags (int all, int makefile);
static char *quote_for_env (char *out, const char *in);
static void initialize_global_hash_tables (void);
@@ -161,7 +164,12 @@ int verify_flag;
/* Nonzero means do not print commands to be executed (-s). */
-int silent_flag;
+static int silent_flag;
+static const int default_silent_flag = 0;
+
+/* Nonzero means either -s was given, or .SILENT-with-no-deps was seen. */
+
+int run_silent = 0;
/* Nonzero means just touch the files
that would appear to need remaking (-t) */
@@ -184,12 +192,6 @@ int db_level = 0;
char *output_sync_option = 0;
-#ifdef WINDOWS32
-/* Suspend make in main for a short time to allow debugger to attach */
-
-int suspend_flag = 0;
-#endif
-
/* Environment variables override makefile definitions. */
int env_overrides = 0;
@@ -217,7 +219,7 @@ int no_builtin_variables_flag = 0;
/* Nonzero means keep going even if remaking some file fails (-k). */
int keep_going_flag;
-int default_keep_going_flag = 0;
+static const int default_keep_going_flag = 0;
/* Nonzero means check symlink mtimes. */
@@ -274,13 +276,8 @@ char *sync_mutex = NULL;
Negative values mean unlimited, while zero means limit to
zero load (which could be useful to start infinite jobs remotely
but one at a time locally). */
-#ifndef NO_FLOAT
double max_load_average = -1.0;
double default_load_average = -1.0;
-#else
-int max_load_average = -1;
-int default_load_average = -1;
-#endif
/* List of directories given with -C switches. */
@@ -351,7 +348,7 @@ static const char *const usage[] =
-e, --environment-overrides\n\
Environment variables override makefiles.\n"),
N_("\
- --eval=STRING Evaluate STRING as a makefile statement.\n"),
+ -E STRING, --eval=STRING Evaluate STRING as a makefile statement.\n"),
N_("\
-f FILE, --file=FILE, --makefile=FILE\n\
Read FILE as a makefile.\n"),
@@ -391,6 +388,8 @@ static const char *const usage[] =
N_("\
-s, --silent, --quiet Don't echo recipes.\n"),
N_("\
+ --no-silent Echo recipes (disable --silent mode).\n"),
+ N_("\
-S, --no-keep-going, --stop\n\
Turns off -k.\n"),
N_("\
@@ -420,10 +419,8 @@ static const struct command_switch switches[] =
{ 'b', ignore, 0, 0, 0, 0, 0, 0, 0 },
{ 'B', flag, &always_make_set, 1, 1, 0, 0, 0, "always-make" },
{ 'd', flag, &debug_flag, 1, 1, 0, 0, 0, 0 },
-#ifdef WINDOWS32
- { 'D', flag, &suspend_flag, 1, 1, 0, 0, 0, "suspend-for-debug" },
-#endif
{ 'e', flag, &env_overrides, 1, 1, 0, 0, 0, "environment-overrides", },
+ { 'E', strlist, &eval_strings, 1, 0, 0, 0, 0, "eval" },
{ 'h', flag, &print_usage_flag, 0, 0, 0, 0, 0, "help" },
{ 'i', flag, &ignore_errors_flag, 1, 1, 0, 0, 0, "ignore-errors" },
{ 'k', flag, &keep_going_flag, 1, 1, 0, 0, &default_keep_going_flag,
@@ -436,7 +433,7 @@ static const struct command_switch switches[] =
{ 'r', flag, &no_builtin_rules_flag, 1, 1, 0, 0, 0, "no-builtin-rules" },
{ 'R', flag, &no_builtin_variables_flag, 1, 1, 0, 0, 0,
"no-builtin-variables" },
- { 's', flag, &silent_flag, 1, 1, 0, 0, 0, "silent" },
+ { 's', flag, &silent_flag, 1, 1, 0, 0, &default_silent_flag, "silent" },
{ 'S', flag_off, &keep_going_flag, 1, 1, 0, 0, &default_keep_going_flag,
"no-keep-going" },
{ 't', flag, &touch_flag, 1, 1, 1, 0, 0, "touch" },
@@ -450,13 +447,8 @@ static const struct command_switch switches[] =
"include-dir" },
{ 'j', positive_int, &arg_job_slots, 1, 1, 0, &inf_jobs, &default_job_slots,
"jobs" },
-#ifndef NO_FLOAT
{ 'l', floating, &max_load_average, 1, 1, 0, &default_load_average,
&default_load_average, "load-average" },
-#else
- { 'l', positive_int, &max_load_average, 1, 1, 0, &default_load_average,
- &default_load_average, "load-average" },
-#endif
{ 'o', filename, &old_files, 0, 0, 0, 0, 0, "old-file" },
{ 'O', string, &output_sync_option, 1, 1, 0, "target", 0, "output-sync" },
{ 'W', filename, &new_files, 0, 0, 0, 0, 0, "what-if" },
@@ -469,8 +461,9 @@ static const struct command_switch switches[] =
"no-print-directory" },
{ CHAR_MAX+5, flag, &warn_undefined_variables_flag, 1, 1, 0, 0, 0,
"warn-undefined-variables" },
- { CHAR_MAX+6, strlist, &eval_strings, 1, 0, 0, 0, 0, "eval" },
{ CHAR_MAX+7, string, &sync_mutex, 1, 1, 0, 0, 0, "sync-mutex" },
+ { CHAR_MAX+8, flag_off, &silent_flag, 1, 1, 0, 0, &default_silent_flag, "no-silent" },
+ { CHAR_MAX+9, string, &jobserver_auth, 1, 0, 0, 0, 0, "jobserver-fds" },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
@@ -505,13 +498,7 @@ static struct command_variable *command_variables;
/* The name we were invoked with. */
-#ifdef WINDOWS32
-/* On MS-Windows, we chop off the .exe suffix in 'main', so this
- cannot be 'const'. */
-char *program;
-#else
const char *program;
-#endif
/* Our current directory before processing any -C options. */
@@ -590,12 +577,10 @@ struct output make_sync;
/* Mask of signals that are being caught with fatal_error_signal. */
-#ifdef POSIX
+#if defined(POSIX)
sigset_t fatal_signal_set;
-#else
-# ifdef HAVE_SIGSETMASK
+#elif defined(HAVE_SIGSETMASK)
int fatal_signal_mask;
-# endif
#endif
#if !HAVE_DECL_BSD_SIGNAL && !defined bsd_signal
@@ -642,10 +627,13 @@ initialize_stopchar_map (void)
stopchar_map[(int)';'] = MAP_SEMI;
stopchar_map[(int)'='] = MAP_EQUALS;
stopchar_map[(int)':'] = MAP_COLON;
- stopchar_map[(int)'%'] = MAP_PERCENT;
stopchar_map[(int)'|'] = MAP_PIPE;
stopchar_map[(int)'.'] = MAP_DOT | MAP_USERFUNC;
stopchar_map[(int)','] = MAP_COMMA;
+ stopchar_map[(int)'('] = MAP_VARSEP;
+ stopchar_map[(int)'{'] = MAP_VARSEP;
+ stopchar_map[(int)'}'] = MAP_VARSEP;
+ stopchar_map[(int)')'] = MAP_VARSEP;
stopchar_map[(int)'$'] = MAP_VARIABLE;
stopchar_map[(int)'-'] = MAP_USERFUNC;
@@ -1084,6 +1072,9 @@ main (int argc, char **argv, char **envp)
no_default_sh_exe = 1;
#endif
+ /* Useful for attaching debuggers, etc. */
+ SPIN ("main-entry");
+
output_init (&make_sync);
initialize_stopchar_map();
@@ -1203,36 +1194,29 @@ main (int argc, char **argv, char **envp)
program = "make";
else
{
- program = strrchr (argv[0], '/');
-#if defined(__MSDOS__) || defined(__EMX__)
- if (program == 0)
- program = strrchr (argv[0], '\\');
+#if defined(HAVE_DOS_PATHS)
+ const char* start = argv[0];
+
+ /* Skip an initial drive specifier if present. */
+ if (isalpha ((unsigned char)start[0]) && start[1] == ':')
+ start += 2;
+
+ if (start[0] == '\0')
+ program = "make";
else
{
- /* Some weird environments might pass us argv[0] with
- both kinds of slashes; we must find the rightmost. */
- char *p = strrchr (argv[0], '\\');
- if (p && p > program)
- program = p;
- }
- if (program == 0 && argv[0][1] == ':')
- program = argv[0] + 1;
-#endif
-#ifdef WINDOWS32
- if (program == 0)
- {
- /* Extract program from full path */
- program = strrchr (argv[0], '\\');
- if (program)
- {
- int argv0_len = strlen (program);
- if (argv0_len > 4 && streq (&program[argv0_len - 4], ".exe"))
- /* Remove .exe extension */
- program[argv0_len - 4] = '\0';
- }
+ program = start + strlen (start);
+ while (program > start && ! STOP_SET (program[-1], MAP_DIRSEP))
+ --program;
+
+ /* Remove the .exe extension if present. */
+ {
+ size_t len = strlen (program);
+ if (len > 4 && streq (&program[len - 4], ".exe"))
+ program = xstrndup (program, len - 4);
+ }
}
-#endif
-#ifdef VMS
+#elif defined(VMS)
set_program_name (argv[0]);
program = program_name;
{
@@ -1279,6 +1263,7 @@ main (int argc, char **argv, char **envp)
if (need_vms_symbol () && !vms_use_mcr_command)
create_foreign_command (program_name, argv[0]);
#else
+ program = strrchr (argv[0], '/');
if (program == 0)
program = argv[0];
else
@@ -1327,7 +1312,8 @@ main (int argc, char **argv, char **envp)
some compilers (MSVC) don't like conditionals in macros. */
{
const char *features = "target-specific order-only second-expansion"
- " else-if shortest-stem undefine oneshell"
+ " else-if shortest-stem undefine oneshell nocomment"
+ " grouped-target extra-prereqs"
#ifndef NO_ARCHIVES
" archives"
#endif
@@ -1346,6 +1332,9 @@ main (int argc, char **argv, char **envp)
#ifdef MAKE_LOAD
" load"
#endif
+#ifdef MAKE_MAINTAINER_MODE
+ " maintainer"
+#endif
;
define_variable_cname (".FEATURES", features, o_default, 0);
@@ -1368,7 +1357,7 @@ main (int argc, char **argv, char **envp)
const char *ep = envp[i];
/* By default, export all variables culled from the environment. */
enum variable_export export = v_export;
- unsigned int len;
+ size_t len;
while (! STOP_SET (*ep, MAP_EQUALS))
++ep;
@@ -1482,7 +1471,7 @@ main (int argc, char **argv, char **envp)
|| output_sync == OUTPUT_SYNC_TARGET);
OUTPUT_SET (&make_sync);
- /* Remember the job slots set through the environment vs. command line. */
+ /* Parse the command line options. Remember the job slots set this way. */
{
int env_slots = arg_job_slots;
arg_job_slots = INVALID_JOB_SLOTS;
@@ -1531,16 +1520,6 @@ main (int argc, char **argv, char **envp)
makelevel = 0;
}
-#ifdef WINDOWS32
- if (suspend_flag)
- {
- fprintf (stderr, "%s (pid = %ld)\n", argv[0], GetCurrentProcessId ());
- fprintf (stderr, _("%s is suspending for 30 seconds..."), argv[0]);
- Sleep (30 * 1000);
- fprintf (stderr, _("done sleep(30). Continuing.\n"));
- }
-#endif
-
/* Set always_make_flag if -B was given and we've not restarted already. */
always_make_flag = always_make_set && (restarts == 0);
@@ -1609,41 +1588,38 @@ main (int argc, char **argv, char **envp)
/* We may move, but until we do, here we are. */
starting_directory = current_directory;
- /* Set up the job_slots value and the jobserver. This can't be usefully set
- in the makefile, and we want to verify the authorization is valid before
- make has a chance to start using it for something else. */
+ /* Validate the arg_job_slots configuration before we define MAKEFLAGS so
+ users get an accurate value in their makefiles.
+ At this point arg_job_slots is the argv setting, if there is one, else
+ the MAKEFLAGS env setting, if there is one. */
if (jobserver_auth)
{
+ /* We're a child in an existing jobserver group. */
if (argv_slots == INVALID_JOB_SLOTS)
{
+ /* There's no -j option on the command line: check authorization. */
if (jobserver_parse_auth (jobserver_auth))
{
/* Success! Use the jobserver. */
- job_slots = 0;
goto job_setup_complete;
}
+ /* Oops: we have jobserver-auth but it's invalid :(. */
O (error, NILF, _("warning: jobserver unavailable: using -j1. Add '+' to parent make rule."));
arg_job_slots = 1;
}
- /* The user provided a -j setting on the command line: use it. */
+ /* The user provided a -j setting on the command line so use it: we're
+ the master make of a new jobserver group. */
else if (!restarts)
- /* If restarts is >0 we already printed this message. */
- O (error, NILF,
- _("warning: -jN forced in submake: disabling jobserver mode."));
+ ON (error, NILF,
+ _("warning: -j%d forced in submake: resetting jobserver mode."),
+ argv_slots);
- /* We failed to use our parent's jobserver. */
+ /* We can't use our parent's jobserver, so reset. */
reset_jobserver ();
- job_slots = (unsigned int)arg_job_slots;
}
- else if (arg_job_slots == INVALID_JOB_SLOTS)
- /* The default is one job at a time. */
- job_slots = 1;
- else
- /* Use whatever was provided. */
- job_slots = (unsigned int)arg_job_slots;
job_setup_complete:
@@ -1664,7 +1640,7 @@ main (int argc, char **argv, char **envp)
{
struct command_variable *cv;
struct variable *v;
- unsigned int len = 0;
+ size_t len = 0;
char *value, *p;
/* Figure out how much space will be taken up by the command-line
@@ -1838,13 +1814,13 @@ main (int argc, char **argv, char **envp)
#endif /* !HAVE_DOS_PATHS */
strcat (template, DEFAULT_TMPFILE);
- outfile = output_tmpfile (&stdin_nm, template);
+ outfile = get_tmpfile (&stdin_nm, template);
if (outfile == 0)
pfatal_with_name (_("fopen (temporary file)"));
while (!feof (stdin) && ! ferror (stdin))
{
char buf[2048];
- unsigned int n = fread (buf, 1, sizeof (buf), stdin);
+ size_t n = fread (buf, 1, sizeof (buf), stdin);
if (n > 0 && fwrite (buf, 1, n, outfile) != n)
pfatal_with_name (_("fwrite (temporary file)"));
}
@@ -1941,7 +1917,7 @@ main (int argc, char **argv, char **envp)
{
char *p, *value;
unsigned int i;
- unsigned int len = (CSTRLEN ("--eval=") + 1) * eval_strings->idx;
+ size_t len = (CSTRLEN ("--eval=") + 1) * eval_strings->idx;
for (i = 0; i < eval_strings->idx; ++i)
{
@@ -1999,6 +1975,9 @@ main (int argc, char **argv, char **envp)
{
int old_builtin_rules_flag = no_builtin_rules_flag;
int old_builtin_variables_flag = no_builtin_variables_flag;
+ int old_arg_job_slots = arg_job_slots;
+
+ arg_job_slots = INVALID_JOB_SLOTS;
/* Decode switches again, for variables set by the makefile. */
decode_env_switches (STRING_SIZE_TUPLE ("GNUMAKEFLAGS"));
@@ -2011,6 +1990,24 @@ main (int argc, char **argv, char **envp)
decode_env_switches (STRING_SIZE_TUPLE ("MFLAGS"));
#endif
+ /* If -j is not set in the makefile, or it was set on the command line,
+ reset to use the previous value. */
+ if (arg_job_slots == INVALID_JOB_SLOTS || argv_slots != INVALID_JOB_SLOTS)
+ arg_job_slots = old_arg_job_slots;
+
+ else if (jobserver_auth)
+ {
+ /* Makefile MAKEFLAGS set -j, but we already have a jobserver.
+ Make us the master of a new jobserver group. */
+ if (!restarts)
+ ON (error, NILF,
+ _("warning: -j%d forced in makefile: resetting jobserver mode."),
+ arg_job_slots);
+
+ /* We can't use our parent's jobserver, so reset. */
+ reset_jobserver ();
+ }
+
/* Reset in case the switches changed our mind. */
syncing = (output_sync == OUTPUT_SYNC_LINE
|| output_sync == OUTPUT_SYNC_TARGET);
@@ -2037,8 +2034,31 @@ main (int argc, char **argv, char **envp)
undefine_default_variables ();
}
+ /* Final jobserver configuration.
+
+ If we have jobserver_auth then we are a client in an existing jobserver
+ group, that's already been verified OK above. If we don't have
+ jobserver_auth and jobserver is enabled, then start a new jobserver.
+
+ arg_job_slots = INVALID_JOB_SLOTS if we don't want -j in MAKEFLAGS
+
+ arg_job_slots = # of jobs of parallelism
+
+ job_slots = 0 for no limits on jobs, or when limiting via jobserver.
+
+ job_slots = 1 for standard non-parallel mode.
+
+ job_slots >1 for old-style parallelism without jobservers. */
+
+ if (jobserver_auth)
+ job_slots = 0;
+ else if (arg_job_slots == INVALID_JOB_SLOTS)
+ job_slots = 1;
+ else
+ job_slots = arg_job_slots;
+
#if defined (__MSDOS__) || defined (__EMX__) || defined (VMS)
- if (arg_job_slots != 1
+ if (job_slots != 1
# ifdef __EMX__
&& _osmode != OS2_MODE /* turn off -j if we are in DOS mode */
# endif
@@ -2047,7 +2067,8 @@ main (int argc, char **argv, char **envp)
O (error, NILF,
_("Parallel jobs (-j) are not supported on this platform."));
O (error, NILF, _("Resetting to single job (-j1) mode."));
- arg_job_slots = job_slots = 1;
+ arg_job_slots = INVALID_JOB_SLOTS;
+ job_slots = 1;
}
#endif
@@ -2113,9 +2134,9 @@ main (int argc, char **argv, char **envp)
install_default_implicit_rules ();
- /* Compute implicit rule limits. */
+ /* Compute implicit rule limits and do magic for pattern rules. */
- count_implicit_rule_limits ();
+ snap_implicit_rules ();
/* Construct the listings of directories in VPATH lists. */
@@ -2156,12 +2177,11 @@ main (int argc, char **argv, char **envp)
OUTPUT_UNSET ();
output_close (&make_sync);
- if (read_files != 0)
+ if (read_files)
{
/* Update any makefiles if necessary. */
- FILE_TIMESTAMP *makefile_mtimes = 0;
- unsigned int mm_idx = 0;
+ FILE_TIMESTAMP *makefile_mtimes;
char **aargv = NULL;
const char **nargv;
int nargc;
@@ -2169,51 +2189,55 @@ main (int argc, char **argv, char **envp)
DB (DB_BASIC, (_("Updating makefiles....\n")));
- /* Remove any makefiles we don't want to try to update.
- Also record the current modtimes so we can compare them later. */
{
- register struct goaldep *d, *last;
- last = 0;
- d = read_files;
+ struct goaldep *d;
+ unsigned int num_mkfiles = 0;
+ for (d = read_files; d != NULL; d = d->next)
+ ++num_mkfiles;
+
+ makefile_mtimes = alloca (num_mkfiles * sizeof (FILE_TIMESTAMP));
+ }
+
+ /* Remove any makefiles we don't want to try to update. Record the
+ current modtimes of the others so we can compare them later. */
+ {
+ struct goaldep *d = read_files;
+ struct goaldep *last = NULL;
+ unsigned int mm_idx = 0;
+
while (d != 0)
{
- struct file *f = d->file;
- if (f->double_colon)
- for (f = f->double_colon; f != NULL; f = f->prev)
- {
- if (f->deps == 0 && f->cmds != 0)
- {
- /* This makefile is a :: target with commands, but
- no dependencies. So, it will always be remade.
- This might well cause an infinite loop, so don't
- try to remake it. (This will only happen if
- your makefiles are written exceptionally
- stupidly; but if you work for Athena, that's how
- you write your makefiles.) */
-
- DB (DB_VERBOSE,
- (_("Makefile '%s' might loop; not remaking it.\n"),
- f->name));
-
- if (last == 0)
- read_files = d->next;
- else
- last->next = d->next;
+ struct file *f;
- /* Free the storage. */
- free_goaldep (d);
+ for (f = d->file->double_colon; f != NULL; f = f->prev)
+ if (f->deps == 0 && f->cmds != 0)
+ break;
- d = last == 0 ? read_files : last->next;
+ if (f)
+ {
+ /* This makefile is a :: target with commands, but no
+ dependencies. So, it will always be remade. This might
+ well cause an infinite loop, so don't try to remake it.
+ (This will only happen if your makefiles are written
+ exceptionally stupidly; but if you work for Athena, that's
+ how you write your makefiles.) */
+
+ DB (DB_VERBOSE,
+ (_("Makefile '%s' might loop; not remaking it.\n"),
+ f->name));
+
+ if (last)
+ last->next = d->next;
+ else
+ read_files = d->next;
- break;
- }
- }
+ /* Free the storage. */
+ free_goaldep (d);
- if (f == NULL || !f->double_colon)
+ d = last ? last->next : read_files;
+ }
+ else
{
- makefile_mtimes = xrealloc (makefile_mtimes,
- (mm_idx+1)
- * sizeof (FILE_TIMESTAMP));
makefile_mtimes[mm_idx++] = file_mtime_no_search (d->file);
last = d;
d = d->next;
@@ -2306,8 +2330,6 @@ main (int argc, char **argv, char **envp)
}
}
}
- /* Reset this to empty so we get the right error message below. */
- read_files = 0;
if (any_remade)
goto re_exec;
@@ -2431,6 +2453,9 @@ main (int argc, char **argv, char **envp)
fflush (stdout);
fflush (stderr);
+ /* The exec'd "child" will be another make, of course. */
+ jobserver_pre_child(1);
+
#ifdef _AMIGA
exec_command (nargv);
exit (0);
@@ -2442,9 +2467,14 @@ main (int argc, char **argv, char **envp)
Therefore it may be the best solution simply to spawn the
child process including all file handles and to wait for its
termination. */
- int pid;
+ pid_t pid;
int r;
- pid = child_execute_job (NULL, 1, nargv, environ);
+ struct childbase child;
+ child.cmd_name = NULL;
+ child.output.syncout = 0;
+ child.environment = environ;
+
+ pid = child_execute_job (&child, 1, nargv);
/* is this loop really necessary? */
do {
@@ -2461,12 +2491,12 @@ main (int argc, char **argv, char **envp)
#endif
exec_command ((char **)nargv, environ);
#endif
+
+ /* We shouldn't get here but just in case. */
+ jobserver_post_child(1);
free (aargv);
break;
}
-
- /* Free the makefile mtimes. */
- free (makefile_mtimes);
}
/* Set up 'MAKEFLAGS' again for the normal targets. */
@@ -2544,10 +2574,11 @@ main (int argc, char **argv, char **envp)
if (!goals)
{
- if (read_files == 0)
- O (fatal, NILF, _("No targets specified and no makefile found"));
+ struct variable *v = lookup_variable (STRING_SIZE_TUPLE ("MAKEFILE_LIST"));
+ if (v && v->value && v->value[0] != '\0')
+ O (fatal, NILF, _("No targets"));
- O (fatal, NILF, _("No targets"));
+ O (fatal, NILF, _("No targets specified and no makefile found"));
}
/* Update the goals. */
@@ -2613,12 +2644,12 @@ init_switches (void)
for (i = 0; switches[i].c != '\0'; ++i)
{
- long_options[i].name = (switches[i].long_name == 0 ? "" :
- switches[i].long_name);
+ long_options[i].name = (char *) (switches[i].long_name == 0 ? "" :
+ switches[i].long_name);
long_options[i].flag = 0;
long_options[i].val = switches[i].c;
if (short_option (switches[i].c))
- *p++ = switches[i].c;
+ *p++ = (char) switches[i].c;
switch (switches[i].type)
{
case flag:
@@ -2741,7 +2772,7 @@ handle_non_switch_argument (const char *arg, int env)
else
{
/* Paste the old and new values together */
- unsigned int oldlen, newlen;
+ size_t oldlen, newlen;
char *vp;
oldlen = strlen (gv->value);
@@ -2791,9 +2822,9 @@ static void
decode_switches (int argc, const char **argv, int env)
{
int bad = 0;
- register const struct command_switch *cs;
- register struct stringlist *sl;
- register int c;
+ const struct command_switch *cs;
+ struct stringlist *sl;
+ int c;
/* getopt does most of the parsing for us.
First, get its vectors set up. */
@@ -2862,7 +2893,7 @@ decode_switches (int argc, const char **argv, int env)
const char *op = opt;
if (short_option (cs->c))
- opt[0] = cs->c;
+ opt[0] = (char) cs->c;
else
op = cs->long_name;
@@ -2943,7 +2974,6 @@ decode_switches (int argc, const char **argv, int env)
= *(unsigned int *) cs->noarg_value;
break;
-#ifndef NO_FLOAT
case floating:
if (coptarg == 0 && optind < argc
&& (ISDIGIT (argv[optind][0]) || argv[optind][0] == '.'))
@@ -2955,7 +2985,6 @@ decode_switches (int argc, const char **argv, int env)
: *(double *) cs->noarg_value);
break;
-#endif
}
/* We've found the switch. Stop looking. */
@@ -2979,6 +3008,9 @@ decode_switches (int argc, const char **argv, int env)
/* If there are any options that need to be decoded do it now. */
decode_debug_flags ();
decode_output_sync_flags ();
+
+ /* Perform any special switch handling. */
+ run_silent = silent_flag;
}
/* Decode switches from environment variable ENVAR (which is LEN chars long).
@@ -2987,7 +3019,7 @@ decode_switches (int argc, const char **argv, int env)
decode_switches. */
static void
-decode_env_switches (const char *envar, unsigned int len)
+decode_env_switches (const char *envar, size_t len)
{
char *varref = alloca (2 + len + 2);
char *value, *p, *buf;
@@ -3079,8 +3111,8 @@ quote_for_env (char *out, const char *in)
static struct variable *
define_makeflags (int all, int makefile)
{
- const char ref[] = "$(MAKEOVERRIDES)";
- const char posixref[] = "$(-*-command-variables-*-)";
+ const char ref[] = "MAKEOVERRIDES";
+ const char posixref[] = "-*-command-variables-*-";
const char evalref[] = "$(-*-eval-flags-*-)";
const struct command_switch *cs;
char *flagstring;
@@ -3099,7 +3131,7 @@ define_makeflags (int all, int makefile)
};
struct flag *flags = 0;
struct flag *last = 0;
- unsigned int flagslen = 0;
+ size_t flagslen = 0;
#define ADD_FLAG(ARG, LEN) \
do { \
struct flag *new = alloca (sizeof (struct flag)); \
@@ -3157,7 +3189,6 @@ define_makeflags (int all, int makefile)
}
break;
-#ifndef NO_FLOAT
case floating:
if (all)
{
@@ -3177,7 +3208,6 @@ define_makeflags (int all, int makefile)
}
}
break;
-#endif
case string:
if (all)
@@ -3209,7 +3239,7 @@ define_makeflags (int all, int makefile)
#undef ADD_FLAG
/* Four more for the possible " -- ", plus variable references. */
- flagslen += 4 + CSTRLEN (posixref) + 1 + CSTRLEN (evalref) + 1;
+ flagslen += 4 + CSTRLEN (posixref) + 4 + CSTRLEN (evalref) + 4;
/* Construct the value in FLAGSTRING.
We allocate enough space for a preceding dash and trailing null. */
@@ -3223,7 +3253,7 @@ define_makeflags (int all, int makefile)
/* Add simple options as a group. */
while (flags != 0 && !flags->arg && short_option (flags->cs->c))
{
- *p++ = flags->cs->c;
+ *p++ = (char) flags->cs->c;
flags = flags->next;
}
@@ -3235,7 +3265,7 @@ define_makeflags (int all, int makefile)
/* Add the flag letter or name to the string. */
if (short_option (flags->cs->c))
- *p++ = flags->cs->c;
+ *p++ = (char) flags->cs->c;
else
{
/* Long options require a double-dash. */
@@ -3277,25 +3307,26 @@ define_makeflags (int all, int makefile)
p += CSTRLEN (evalref);
}
- if (all && command_variables)
+ if (all)
{
- /* Write a reference to $(MAKEOVERRIDES), which contains all the
- command-line variable definitions. Separate the variables from the
- switches with a "--" arg. */
+ /* If there are any overrides to add, write a reference to
+ $(MAKEOVERRIDES), which contains command-line variable definitions.
+ Separate the variables from the switches with a "--" arg. */
- strcpy (p, " -- ");
- p += 4;
+ const char *r = posix_pedantic ? posixref : ref;
+ size_t l = strlen (r);
+ struct variable *v = lookup_variable (r, l);
- /* Copy in the string. */
- if (posix_pedantic)
- {
- memcpy (p, posixref, CSTRLEN (posixref));
- p += CSTRLEN (posixref);
- }
- else
+ if (v && v->value && v->value[0] != '\0')
{
- memcpy (p, ref, CSTRLEN (ref));
- p += CSTRLEN (ref);
+ strcpy (p, " -- ");
+ p += 4;
+
+ *(p++) = '$';
+ *(p++) = '(';
+ memcpy (p, r, l);
+ p += l;
+ *(p++) = ')';
}
}
@@ -3339,7 +3370,7 @@ print_version (void)
year, and none of the rest of it should be translated (including the
word "Copyright"), so it hardly seems worth it. */
- printf ("%sCopyright (C) 1988-2016 Free Software Foundation, Inc.\n",
+ printf ("%sCopyright (C) 1988-2020 Free Software Foundation, Inc.\n",
precede);
printf (_("%sLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n\
diff --git a/makeint.h b/src/makeint.h
index 8f718eb..c428a36 100644
--- a/makeint.h
+++ b/src/makeint.h
@@ -1,5 +1,5 @@
/* Miscellaneous global declarations and portability cruft for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -67,6 +67,7 @@ char *alloca ();
# define __NO_STRING_INLINES
#endif
+#include <stddef.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <signal.h>
@@ -156,11 +157,11 @@ extern int errno;
#ifdef PATH_MAX
# define GET_PATH_MAX PATH_MAX
-# define PATH_VAR(var) char var[PATH_MAX]
+# define PATH_VAR(var) char var[PATH_MAX+1]
#else
# define NEED_GET_PATH_MAX 1
# define GET_PATH_MAX (get_path_max ())
-# define PATH_VAR(var) char *var = alloca (GET_PATH_MAX)
+# define PATH_VAR(var) char *var = alloca (GET_PATH_MAX+1)
unsigned int get_path_max (void);
#endif
@@ -219,19 +220,22 @@ extern int vms_legacy_behavior;
extern int vms_unix_simulation;
#endif
-#ifndef __attribute__
-/* This feature is available in gcc versions 2.5 and later. */
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
-# define __attribute__(x)
-# endif
+#if !defined(__attribute__) && (__GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__)
+/* Don't use __attribute__ if it's not supported. */
+# define ATTRIBUTE(x)
+#else
+# define ATTRIBUTE(x) __attribute__ (x)
+#endif
+
/* The __-protected variants of 'format' and 'printf' attributes
are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
-# define __format__ format
-# define __printf__ printf
-# endif
+#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
+# define __format__ format
+# define __printf__ printf
#endif
-#define UNUSED __attribute__ ((unused))
+
+#define UNUSED ATTRIBUTE ((unused))
+#define NORETURN ATTRIBUTE ((noreturn))
#if defined (STDC_HEADERS) || defined (__GNU_LIBRARY__)
# include <stdlib.h>
@@ -254,8 +258,8 @@ void *malloc (int);
void *realloc (void *, int);
void free (void *);
-void abort (void) __attribute__ ((noreturn));
-void exit (int) __attribute__ ((noreturn));
+void abort (void) NORETURN;
+void exit (int) NORETURN;
# endif /* HAVE_STDLIB_H. */
#endif /* Standard headers. */
@@ -291,6 +295,11 @@ char *strerror (int errnum);
char *strsignal (int signum);
#endif
+#if !defined(HAVE_UMASK)
+typedef int mode_t;
+extern mode_t umask (mode_t);
+#endif
+
/* ISDIGIT offers the following features:
- Its arg may be any int or unsigned int; it need not be an unsigned char.
- It's guaranteed to evaluate its argument exactly once.
@@ -321,7 +330,7 @@ char *strsignal (int signum);
#define strneq(a, b, l) (strncmp ((a), (b), (l)) == 0)
-#if defined(__GNUC__) || defined(ENUM_BITFIELDS)
+#if defined(ENUM_BITFIELDS) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
# define ENUM_BITFIELD(bits) :bits
#else
# define ENUM_BITFIELD(bits)
@@ -389,7 +398,7 @@ extern int unixy_shell;
#define MAP_SEMI 0x0010
#define MAP_EQUALS 0x0020
#define MAP_COLON 0x0040
-#define MAP_PERCENT 0x0080
+#define MAP_VARSEP 0x0080
#define MAP_PIPE 0x0100
#define MAP_DOT 0x0200
#define MAP_COMMA 0x0400
@@ -442,7 +451,8 @@ extern int unixy_shell;
#define NEXT_TOKEN(s) while (ISSPACE (*(s))) ++(s)
#define END_OF_TOKEN(s) while (! STOP_SET (*(s), MAP_SPACE|MAP_NUL)) ++(s)
-#if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT)
+/* We can't run setrlimit when using posix_spawn. */
+#if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT) && !defined(USE_POSIX_SPAWN)
# define SET_STACK_SIZE
#endif
#ifdef SET_STACK_SIZE
@@ -479,12 +489,15 @@ typedef struct
const char *concat (unsigned int, ...);
void message (int prefix, size_t length, const char *fmt, ...)
- __attribute__ ((__format__ (__printf__, 3, 4)));
+ ATTRIBUTE ((__format__ (__printf__, 3, 4)));
void error (const floc *flocp, size_t length, const char *fmt, ...)
- __attribute__ ((__format__ (__printf__, 3, 4)));
+ ATTRIBUTE ((__format__ (__printf__, 3, 4)));
void fatal (const floc *flocp, size_t length, const char *fmt, ...)
- __attribute__ ((noreturn, __format__ (__printf__, 3, 4)));
+ ATTRIBUTE ((noreturn, __format__ (__printf__, 3, 4)));
+void out_of_memory () NORETURN;
+/* When adding macros to this list be sure to update the value of
+ XGETTEXT_OPTIONS in the po/Makevars file. */
#define O(_t,_a,_f) _t((_a), 0, (_f))
#define OS(_t,_a,_f,_s) _t((_a), strlen (_s), (_f), (_s))
#define OSS(_t,_a,_f,_s1,_s2) _t((_a), strlen (_s1) + strlen (_s2), \
@@ -499,18 +512,16 @@ void fatal (const floc *flocp, size_t length, const char *fmt, ...)
#define ONS(_t,_a,_f,_n,_s) _t((_a), INTSTR_LENGTH + strlen (_s), \
(_f), (_n), (_s))
-#define OUT_OF_MEM() O (fatal, NILF, _("virtual memory exhausted"))
-
-void die (int) __attribute__ ((noreturn));
-void pfatal_with_name (const char *) __attribute__ ((noreturn));
+void die (int) NORETURN;
+void pfatal_with_name (const char *) NORETURN;
void perror_with_name (const char *, const char *);
#define xstrlen(_s) ((_s)==NULL ? 0 : strlen (_s))
-void *xmalloc (unsigned int);
-void *xcalloc (unsigned int);
-void *xrealloc (void *, unsigned int);
+void *xmalloc (size_t);
+void *xcalloc (size_t);
+void *xrealloc (void *, size_t);
char *xstrdup (const char *);
-char *xstrndup (const char *, unsigned int);
-char *find_next_token (const char **, unsigned int *);
+char *xstrndup (const char *, size_t);
+char *find_next_token (const char **, size_t *);
char *next_token (const char *);
char *end_of_token (const char *);
void collapse_continuations (char *);
@@ -519,6 +530,13 @@ int alpha_compare (const void *, const void *);
void print_spaces (unsigned int);
char *find_percent (char *);
const char *find_percent_cached (const char **);
+FILE *get_tmpfile (char **, const char *);
+ssize_t writebuf (int, const void *, size_t);
+ssize_t readbuf (int, void *, size_t);
+
+#ifndef HAVE_MEMRCHR
+void *memrchr(const void *, int, size_t);
+#endif
#ifndef NO_ARCHIVES
int ar_name (const char *);
@@ -558,7 +576,7 @@ void build_vpath_lists (void);
void construct_vpath_list (char *pattern, char *dirpath);
const char *vpath_search (const char *file, FILE_TIMESTAMP *mtime_ptr,
unsigned int* vpath_index, unsigned int* path_index);
-int gpath_search (const char *file, unsigned int len);
+int gpath_search (const char *file, size_t len);
void construct_include_path (const char **arg_dirs);
@@ -575,7 +593,7 @@ void strcache_init (void);
void strcache_print_stats (const char *prefix);
int strcache_iscached (const char *str);
const char *strcache_add (const char *str);
-const char *strcache_add_len (const char *str, unsigned int len);
+const char *strcache_add_len (const char *str, size_t len);
/* Guile support */
int guile_gmake_setup (const floc *flocp);
@@ -585,6 +603,14 @@ typedef int (*load_func_t)(const floc *flocp);
int load_file (const floc *flocp, const char **filename, int noerror);
void unload_file (const char *name);
+/* Maintainer mode support */
+#ifdef MAKE_MAINTAINER_MODE
+# define SPIN(_s) spin (_s)
+void spin (const char* suffix);
+#else
+# define SPIN(_s)
+#endif
+
/* We omit these declarations on non-POSIX systems which define _POSIX_VERSION,
because such systems often declare them in header files anyway. */
@@ -641,7 +667,7 @@ extern const floc **expanding_var;
extern unsigned short stopchar_map[];
-extern int just_print_flag, silent_flag, ignore_errors_flag, keep_going_flag;
+extern int just_print_flag, run_silent, ignore_errors_flag, keep_going_flag;
extern int print_data_base_flag, question_flag, touch_flag, always_make_flag;
extern int env_overrides, no_builtin_rules_flag, no_builtin_variables_flag;
extern int print_version_flag, print_directory_flag, check_symlink_flag;
@@ -660,17 +686,9 @@ extern int batch_mode_shell;
extern char cmd_prefix;
extern unsigned int job_slots;
-#ifndef NO_FLOAT
extern double max_load_average;
-#else
-extern int max_load_average;
-#endif
-#ifdef WINDOWS32
-extern char *program;
-#else
extern const char *program;
-#endif
#ifdef VMS
const char *vms_command (const char *argv0);
@@ -705,11 +723,11 @@ vms_restore_symbol (const char *string);
void remote_setup (void);
void remote_cleanup (void);
int start_remote_job_p (int);
-int start_remote_job (char **, char **, int, int *, int *, int *);
+int start_remote_job (char **, char **, int, int *, pid_t *, int *);
int remote_status (int *, int *, int *, int);
void block_remote_children (void);
void unblock_remote_children (void);
-int remote_kill (int id, int sig);
+int remote_kill (pid_t id, int sig);
void print_variable_data_base (void);
void print_vpath_data_base (void);
@@ -721,7 +739,6 @@ extern unsigned int commands_started;
extern int handling_fatal_signal;
-
#ifndef MIN
#define MIN(_a,_b) ((_a)<(_b)?(_a):(_b))
#endif
@@ -729,7 +746,6 @@ extern int handling_fatal_signal;
#define MAX(_a,_b) ((_a)>(_b)?(_a):(_b))
#endif
-
#define MAKE_SUCCESS 0
#define MAKE_TROUBLE 1
#define MAKE_FAILURE 2
diff --git a/misc.c b/src/misc.c
index e7ab809..de19e37 100644
--- a/misc.c
+++ b/src/misc.c
@@ -1,5 +1,5 @@
/* Miscellaneous generic support functions for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -23,6 +23,11 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#include <stdarg.h>
+#ifdef WINDOWS32
+# include <windows.h>
+# include <io.h>
+#endif
+
#ifdef HAVE_FCNTL_H
# include <fcntl.h>
#else
@@ -51,43 +56,41 @@ alpha_compare (const void *v1, const void *v2)
void
collapse_continuations (char *line)
{
- char *in, *out, *p;
+ char *out = line;
+ char *in = line;
+ char *q;
- in = strchr (line, '\n');
- if (in == 0)
+ q = strchr(in, '\n');
+ if (q == 0)
return;
- out = in;
- while (out > line && out[-1] == '\\')
- --out;
-
- while (*in != '\0')
+ do
{
- /* BS_WRITE gets the number of quoted backslashes at
- the end just before IN, and BACKSLASH gets nonzero
- if the next character is quoted. */
- unsigned int backslash = 0;
- unsigned int bs_write = 0;
- for (p = in - 1; p >= line && *p == '\\'; --p)
+ char *p = q;
+ int i;
+ size_t out_line_length;
+
+ if (q > line && q[-1] == '\\')
{
- if (backslash)
- ++bs_write;
- backslash = !backslash;
-
- /* It should be impossible to go back this far without exiting,
- but if we do, we can't get the right answer. */
- if (in == out - 1)
- abort ();
+ /* Search for more backslashes. */
+ i = -2;
+ while (&p[i] >= line && p[i] == '\\')
+ --i;
+ ++i;
}
+ else
+ i = 0;
- /* Output the appropriate number of backslashes. */
- while (bs_write-- > 0)
- *out++ = '\\';
+ /* The number of backslashes is now -I, keep half of them. */
+ out_line_length = (p - in) + i - i/2;
+ if (out != in)
+ memmove (out, in, out_line_length);
+ out += out_line_length;
- /* Skip the newline. */
- ++in;
+ /* When advancing IN, skip the newline too. */
+ in = q + 1;
- if (backslash)
+ if (i & 1)
{
/* Backslash/newline handling:
In traditional GNU make all trailing whitespace, consecutive
@@ -102,30 +105,16 @@ collapse_continuations (char *line)
*out++ = ' ';
}
else
- /* If the newline isn't quoted, put it in the output. */
- *out++ = '\n';
-
- /* Now copy the following line to the output.
- Stop when we find backslashes followed by a newline. */
- while (*in != '\0')
- if (*in == '\\')
- {
- p = in + 1;
- while (*p == '\\')
- ++p;
- if (*p == '\n')
- {
- in = p;
- break;
- }
- while (in < p)
- *out++ = *in++;
- }
- else
- *out++ = *in++;
+ {
+ /* If the newline isn't quoted, put it in the output. */
+ *out++ = '\n';
+ }
+
+ q = strchr(in, '\n');
}
+ while (q);
- *out = '\0';
+ memmove(out, in, strlen(in) + 1);
}
/* Print N spaces (used in debug for target-depth). */
@@ -144,9 +133,9 @@ print_spaces (unsigned int n)
const char *
concat (unsigned int num, ...)
{
- static unsigned int rlen = 0;
+ static size_t rlen = 0;
static char *result = NULL;
- unsigned int ri = 0;
+ size_t ri = 0;
va_list args;
va_start (args, num);
@@ -154,7 +143,7 @@ concat (unsigned int num, ...)
while (num-- > 0)
{
const char *s = va_arg (args, const char *);
- unsigned int l = xstrlen (s);
+ size_t l = xstrlen (s);
if (l == 0)
continue;
@@ -184,26 +173,6 @@ concat (unsigned int num, ...)
return result;
}
-
-#ifndef HAVE_STRERROR
-#undef strerror
-char *
-strerror (int errnum)
-{
- extern int errno, sys_nerr;
-#ifndef __DECC
- extern char *sys_errlist[];
-#endif
- static char buf[] = "Unknown error 12345678901234567890";
-
- if (errno < sys_nerr)
- return sys_errlist[errnum];
-
- sprintf (buf, _("Unknown error %d"), errnum);
- return buf;
-}
-#endif
-
/* Like malloc but get fatal error if memory is exhausted. */
/* Don't bother if we're using dmalloc; it provides these for us. */
@@ -215,29 +184,29 @@ strerror (int errnum)
#undef xstrdup
void *
-xmalloc (unsigned int size)
+xmalloc (size_t size)
{
/* Make sure we don't allocate 0, for pre-ISO implementations. */
void *result = malloc (size ? size : 1);
if (result == 0)
- OUT_OF_MEM();
+ out_of_memory ();
return result;
}
void *
-xcalloc (unsigned int size)
+xcalloc (size_t size)
{
/* Make sure we don't allocate 0, for pre-ISO implementations. */
void *result = calloc (size ? size : 1, 1);
if (result == 0)
- OUT_OF_MEM();
+ out_of_memory ();
return result;
}
void *
-xrealloc (void *ptr, unsigned int size)
+xrealloc (void *ptr, size_t size)
{
void *result;
@@ -246,7 +215,7 @@ xrealloc (void *ptr, unsigned int size)
size = 1;
result = ptr ? realloc (ptr, size) : malloc (size);
if (result == 0)
- OUT_OF_MEM();
+ out_of_memory ();
return result;
}
@@ -263,7 +232,7 @@ xstrdup (const char *ptr)
#endif
if (result == 0)
- OUT_OF_MEM();
+ out_of_memory ();
#ifdef HAVE_STRDUP
return result;
@@ -275,14 +244,14 @@ xstrdup (const char *ptr)
#endif /* HAVE_DMALLOC_H */
char *
-xstrndup (const char *str, unsigned int length)
+xstrndup (const char *str, size_t length)
{
char *result;
#ifdef HAVE_STRNDUP
result = strndup (str, length);
if (result == 0)
- OUT_OF_MEM();
+ out_of_memory ();
#else
result = xmalloc (length + 1);
if (length > 0)
@@ -292,6 +261,30 @@ xstrndup (const char *str, unsigned int length)
return result;
}
+
+#ifndef HAVE_MEMRCHR
+void *
+memrchr(const void* str, int ch, size_t len)
+{
+ const char* sp = str;
+ const char* cp = sp;
+
+ if (len == 0)
+ return NULL;
+
+ cp += len - 1;
+
+ while (cp[0] != ch)
+ {
+ if (cp == sp)
+ return NULL;
+ --cp;
+ }
+
+ return (void*)cp;
+}
+#endif
+
/* Limited INDEX:
@@ -333,7 +326,7 @@ next_token (const char *s)
of the token, so this function can be called repeatedly in a loop. */
char *
-find_next_token (const char **ptr, unsigned int *lengthptr)
+find_next_token (const char **ptr, size_t *lengthptr)
{
const char *p = next_token (*ptr);
@@ -347,6 +340,52 @@ find_next_token (const char **ptr, unsigned int *lengthptr)
return (char *)p;
}
+/* Write a BUFFER of size LEN to file descriptor FD.
+ Retry short writes from EINTR. Return LEN, or -1 on error. */
+ssize_t
+writebuf (int fd, const void *buffer, size_t len)
+{
+ const char *msg = buffer;
+ size_t l = len;
+ while (l)
+ {
+ ssize_t r;
+
+ EINTRLOOP (r, write (fd, msg, l));
+ if (r < 0)
+ return r;
+
+ l -= r;
+ msg += r;
+ }
+
+ return (ssize_t)len;
+}
+
+/* Read until we get LEN bytes from file descriptor FD, into BUFFER.
+ Retry short reads on EINTR. If we get an error, return it.
+ Return 0 at EOF. */
+ssize_t
+readbuf (int fd, void *buffer, size_t len)
+{
+ char *msg = buffer;
+ while (len)
+ {
+ ssize_t r;
+
+ EINTRLOOP (r, read (fd, msg, len));
+ if (r < 0)
+ return r;
+ if (r == 0)
+ break;
+
+ len -= r;
+ msg += r;
+ }
+
+ return (ssize_t)(msg - (char*)buffer);
+}
+
/* Copy a chain of 'struct dep'. For 2nd expansion deps, dup the name. */
@@ -391,6 +430,102 @@ free_ns_chain (struct nameseq *ns)
}
+#ifdef MAKE_MAINTAINER_MODE
+
+void
+spin (const char* type)
+{
+ char filenm[256];
+ struct stat dummy;
+
+ sprintf (filenm, ".make-spin-%s", type);
+
+ if (stat (filenm, &dummy) == 0)
+ {
+ fprintf (stderr, "SPIN on %s\n", filenm);
+ do
+#ifdef WINDOWS32
+ Sleep (1000);
+#else
+ sleep (1);
+#endif
+ while (stat (filenm, &dummy) == 0);
+ }
+}
+
+#endif
+
+
+
+/* Provide support for temporary files. */
+
+#ifndef HAVE_STDLIB_H
+# ifdef HAVE_MKSTEMP
+int mkstemp (char *template);
+# else
+char *mktemp (char *template);
+# endif
+#endif
+
+#ifndef HAVE_UMASK
+mode_t
+umask (mode_t mask)
+{
+ return 0;
+}
+#endif
+
+FILE *
+get_tmpfile (char **name, const char *template)
+{
+ FILE *file;
+#ifdef HAVE_FDOPEN
+ int fd;
+#endif
+
+ /* Preserve the current umask, and set a restrictive one for temp files. */
+ mode_t mask = umask (0077);
+
+#if defined(HAVE_MKSTEMP) || defined(HAVE_MKTEMP)
+# define TEMPLATE_LEN strlen (template)
+#else
+# define TEMPLATE_LEN L_tmpnam
+#endif
+ *name = xmalloc (TEMPLATE_LEN + 1);
+ strcpy (*name, template);
+
+#if defined(HAVE_MKSTEMP) && defined(HAVE_FDOPEN)
+ /* It's safest to use mkstemp(), if we can. */
+ EINTRLOOP (fd, mkstemp (*name));
+ if (fd == -1)
+ file = NULL;
+ else
+ file = fdopen (fd, "w");
+#else
+# ifdef HAVE_MKTEMP
+ (void) mktemp (*name);
+# else
+ (void) tmpnam (*name);
+# endif
+
+# ifdef HAVE_FDOPEN
+ /* Can't use mkstemp(), but guard against a race condition. */
+ EINTRLOOP (fd, open (*name, O_CREAT|O_EXCL|O_WRONLY, 0600));
+ if (fd == -1)
+ return 0;
+ file = fdopen (fd, "w");
+# else
+ /* Not secure, but what can we do? */
+ file = fopen (*name, "w");
+# endif
+#endif
+
+ umask (mask);
+
+ return file;
+}
+
+
#if !HAVE_STRCASECMP && !HAVE_STRICMP && !HAVE_STRCMPI
/* If we don't have strcasecmp() (from POSIX), or anything that can substitute
for it, define our own version. */
diff --git a/os.h b/src/os.h
index c1a19e1..e7bf37a 100644
--- a/os.h
+++ b/src/os.h
@@ -1,5 +1,5 @@
/* Declarations for operating system interfaces for GNU Make.
-Copyright (C) 2016 Free Software Foundation, Inc.
+Copyright (C) 2016-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -77,8 +77,17 @@ unsigned int jobserver_acquire (int timeout);
#endif
/* Create a "bad" file descriptor for stdin when parallel jobs are run. */
-#if !defined(VMD) && !defined(WINDOWS32) && !defined(_AMIGA) && !defined(__MSDOS__)
+#if defined(VMS) || defined(WINDOWS32) || defined(_AMIGA) || defined(__MSDOS__)
+# define get_bad_stdin() (-1)
+#else
int get_bad_stdin (void);
+#endif
+
+/* Set a file descriptor to close/not close in a subprocess. */
+#if defined(VMS) || defined(_AMIGA) || defined(__MSDOS__)
+# define fd_inherit(_i) 0
+# define fd_noinherit(_i) 0
#else
-# define get_bad_stdin() (-1)
+void fd_inherit (int);
+void fd_noinherit (int);
#endif
diff --git a/output.c b/src/output.c
index 65182c4..2211749 100644
--- a/output.c
+++ b/src/output.c
@@ -1,5 +1,5 @@
/* Output to stdout / stderr for GNU make
-Copyright (C) 2013-2016 Free Software Foundation, Inc.
+Copyright (C) 2013-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -15,7 +15,8 @@ You should have received a copy of the GNU General Public License along with
this program. If not, see <http://www.gnu.org/licenses/>. */
#include "makeint.h"
-#include "job.h"
+#include "os.h"
+#include "output.h"
/* GNU make no longer supports pre-ANSI89 environments. */
@@ -65,18 +66,10 @@ _outputs (struct output *out, int is_err, const char *msg)
else
{
int fd = is_err ? out->err : out->out;
- int len = strlen (msg);
+ size_t len = strlen (msg);
int r;
-
EINTRLOOP (r, lseek (fd, 0, SEEK_END));
- while (1)
- {
- EINTRLOOP (r, write (fd, msg, len));
- if (r == len || r <= 0)
- break;
- len -= r;
- msg += r;
- }
+ writebuf (fd, msg, len);
}
}
@@ -87,8 +80,8 @@ static int
log_working_directory (int entering)
{
static char *buf = NULL;
- static unsigned int len = 0;
- unsigned int need;
+ static size_t len = 0;
+ size_t need;
const char *fmt;
char *p;
@@ -160,7 +153,10 @@ set_append_mode (int fd)
#if defined(F_GETFL) && defined(F_SETFL) && defined(O_APPEND)
int flags = fcntl (fd, F_GETFL, 0);
if (flags >= 0)
- fcntl (fd, F_SETFL, flags | O_APPEND);
+ {
+ int r;
+ EINTRLOOP(r, fcntl (fd, F_SETFL, flags | O_APPEND));
+ }
#endif
}
@@ -285,6 +281,7 @@ release_semaphore (void *sem)
int
output_tmpfd (void)
{
+ mode_t mask = umask (0077);
int fd = -1;
FILE *tfile = tmpfile ();
@@ -300,6 +297,8 @@ output_tmpfd (void)
set_append_mode (fd);
+ umask (mask);
+
return fd;
}
@@ -321,7 +320,7 @@ setup_tmpfile (struct output *out)
int fd = output_tmpfd ();
if (fd < 0)
goto error;
- CLOSE_ON_EXEC (fd);
+ fd_noinherit (fd);
out->out = fd;
}
@@ -334,7 +333,7 @@ setup_tmpfile (struct output *out)
int fd = output_tmpfd ();
if (fd < 0)
goto error;
- CLOSE_ON_EXEC (fd);
+ fd_noinherit (fd);
out->err = fd;
}
}
@@ -401,58 +400,6 @@ output_dump (struct output *out)
#endif /* NO_OUTPUT_SYNC */
-/* Provide support for temporary files. */
-
-#ifndef HAVE_STDLIB_H
-# ifdef HAVE_MKSTEMP
-int mkstemp (char *template);
-# else
-char *mktemp (char *template);
-# endif
-#endif
-
-FILE *
-output_tmpfile (char **name, const char *template)
-{
-#ifdef HAVE_FDOPEN
- int fd;
-#endif
-
-#if defined HAVE_MKSTEMP || defined HAVE_MKTEMP
-# define TEMPLATE_LEN strlen (template)
-#else
-# define TEMPLATE_LEN L_tmpnam
-#endif
- *name = xmalloc (TEMPLATE_LEN + 1);
- strcpy (*name, template);
-
-#if defined HAVE_MKSTEMP && defined HAVE_FDOPEN
- /* It's safest to use mkstemp(), if we can. */
- fd = mkstemp (*name);
- if (fd == -1)
- return 0;
- return fdopen (fd, "w");
-#else
-# ifdef HAVE_MKTEMP
- (void) mktemp (*name);
-# else
- (void) tmpnam (*name);
-# endif
-
-# ifdef HAVE_FDOPEN
- /* Can't use mkstemp(), but guard against a race condition. */
- EINTRLOOP (fd, open (*name, O_CREAT|O_EXCL|O_WRONLY, 0600));
- if (fd == -1)
- return 0;
- return fdopen (fd, "w");
-# else
- /* Not secure, but what can we do? */
- return fopen (*name, "w");
-# endif
-#endif
-}
-
-
/* This code is stolen from gnulib.
If/when we abandon the requirement to work with K&R compilers, we can
remove this (and perhaps other parts of GNU make!) and migrate to using
@@ -721,3 +668,15 @@ pfatal_with_name (const char *name)
/* NOTREACHED */
}
+
+/* Print a message about out of memory (not using more heap) and exit.
+ Our goal here is to be sure we don't try to allocate more memory, which
+ means we don't want to use string translations or normal cleanup. */
+
+void
+out_of_memory ()
+{
+ writebuf (FD_STDOUT, program, strlen (program));
+ writebuf (FD_STDOUT, STRING_SIZE_TUPLE (": *** virtual memory exhausted\n"));
+ exit (MAKE_FAILURE);
+}
diff --git a/output.h b/src/output.h
index f4fe065..a506505 100644
--- a/output.h
+++ b/src/output.h
@@ -1,5 +1,5 @@
/* Output to stdout / stderr for GNU make
-Copyright (C) 2013-2016 Free Software Foundation, Inc.
+Copyright (C) 2013-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -24,13 +24,19 @@ struct output
extern struct output *output_context;
extern unsigned int stdio_traced;
+#define FD_STDIN (fileno (stdin))
+#define FD_STDOUT (fileno (stdout))
+#define FD_STDERR (fileno (stderr))
+
#define OUTPUT_SET(_new) do{ output_context = (_new)->syncout ? (_new) : NULL; }while(0)
#define OUTPUT_UNSET() do{ output_context = NULL; }while(0)
#define OUTPUT_TRACED() do{ stdio_traced = 1; }while(0)
#define OUTPUT_IS_TRACED() (!!stdio_traced)
-FILE *output_tmpfile (char **, const char *);
+/* Write a buffer directly to the given file descriptor.
+ This handles errors etc. */
+int output_write (int fd, const void *buffer, size_t len);
/* Initialize and close a child output structure: if NULL do this program's
output (this should only be done once). */
@@ -44,8 +50,57 @@ void output_start (void);
/* Show a message on stdout or stderr. Will start the output if needed. */
void outputs (int is_err, const char *msg);
-#ifndef NO_OUTPUT_SYNC
+#if defined(HAVE_FCNTL_H)
+# include <fcntl.h>
+#elif defined(HAVE_SYS_FILE_H)
+# include <sys/file.h>
+#endif
+
+#ifdef NO_OUTPUT_SYNC
+# define RECORD_SYNC_MUTEX(m) \
+ O (error, NILF, \
+ _("-O[TYPE] (--output-sync[=TYPE]) is not configured for this build."));
+#else
int output_tmpfd (void);
/* Dump any child output content to stdout, and reset it. */
void output_dump (struct output *out);
-#endif
+
+# ifdef WINDOWS32
+/* For emulations in w32/compat/posixfcn.c. */
+# define F_GETFD 1
+# define F_SETLKW 2
+/* Implementation note: None of the values of l_type below can be zero
+ -- they are compared with a static instance of the struct, so zero
+ means unknown/invalid, see w32/compat/posixfcn.c. */
+# define F_WRLCK 1
+# define F_UNLCK 2
+
+struct flock
+ {
+ short l_type;
+ short l_whence;
+ off_t l_start;
+ off_t l_len;
+ pid_t l_pid;
+ };
+
+/* This type is actually a HANDLE, but we want to avoid including
+ windows.h as much as possible. */
+typedef intptr_t sync_handle_t;
+
+/* Public functions emulated/provided in posixfcn.c. */
+int fcntl (intptr_t fd, int cmd, ...);
+intptr_t create_mutex (void);
+int same_stream (FILE *f1, FILE *f2);
+
+# define RECORD_SYNC_MUTEX(m) record_sync_mutex(m)
+void record_sync_mutex (const char *str);
+void prepare_mutex_handle_string (intptr_t hdl);
+# else /* !WINDOWS32 */
+
+typedef int sync_handle_t; /* file descriptor */
+
+# define RECORD_SYNC_MUTEX(m) (void)(m)
+
+# endif
+#endif /* !NO_OUTPUT_SYNC */
diff --git a/posixos.c b/src/posixos.c
index 4a787e4..525f292 100644
--- a/posixos.c
+++ b/src/posixos.c
@@ -1,5 +1,5 @@
/* POSIX-based operating system interface for GNU Make.
-Copyright (C) 2016 Free Software Foundation, Inc.
+Copyright (C) 2016-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -20,7 +20,10 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#ifdef HAVE_FCNTL_H
# include <fcntl.h>
+#elif defined(HAVE_SYS_FILE_H)
+# include <sys/file.h>
#endif
+
#if defined(HAVE_PSELECT) && defined(HAVE_SYS_SELECT_H)
# include <sys/select.h>
#endif
@@ -53,12 +56,30 @@ make_job_rfd (void)
#else
EINTRLOOP (job_rfd, dup (job_fds[0]));
if (job_rfd >= 0)
- CLOSE_ON_EXEC (job_rfd);
+ fd_noinherit (job_rfd);
return job_rfd;
#endif
}
+static void
+set_blocking (int fd, int blocking)
+{
+ /* If we're not using pselect() don't change the blocking. */
+#ifdef HAVE_PSELECT
+ int flags;
+ EINTRLOOP (flags, fcntl (fd, F_GETFL));
+ if (flags >= 0)
+ {
+ int r;
+ flags = blocking ? (flags & ~O_NONBLOCK) : (flags | O_NONBLOCK);
+ EINTRLOOP (r, fcntl (fd, F_SETFL, flags));
+ if (r < 0)
+ pfatal_with_name ("fcntl(O_NONBLOCK)");
+ }
+#endif
+}
+
unsigned int
jobserver_setup (int slots)
{
@@ -68,6 +89,11 @@ jobserver_setup (int slots)
if (r < 0)
pfatal_with_name (_("creating jobs pipe"));
+ /* By default we don't send the job pipe FDs to our children.
+ See jobserver_pre_child() and jobserver_post_child(). */
+ fd_noinherit (job_fds[0]);
+ fd_noinherit (job_fds[1]);
+
if (make_job_rfd () < 0)
pfatal_with_name (_("duping jobs pipe"));
@@ -78,6 +104,9 @@ jobserver_setup (int slots)
pfatal_with_name (_("init jobserver pipe"));
}
+ /* When using pselect() we want the read to be non-blocking. */
+ set_blocking (job_fds[0], 0);
+
return 1;
}
@@ -113,6 +142,9 @@ jobserver_parse_auth (const char *auth)
return 0;
}
+ /* When using pselect() we want the read to be non-blocking. */
+ set_blocking (job_fds[0], 0);
+
return 1;
}
@@ -161,7 +193,10 @@ jobserver_acquire_all (void)
{
unsigned int tokens = 0;
- /* Close the write side, so the read() won't hang. */
+ /* Use blocking reads to wait for all outstanding jobs. */
+ set_blocking (job_fds[0], 1);
+
+ /* Close the write side, so the read() won't hang forever. */
close (job_fds[1]);
job_fds[1] = -1;
@@ -180,33 +215,22 @@ jobserver_acquire_all (void)
void
jobserver_pre_child (int recursive)
{
- /* If it's not a recursive make, avoid polutting the jobserver pipes. */
- if (!recursive && job_fds[0] >= 0)
+ if (recursive && job_fds[0] >= 0)
{
- CLOSE_ON_EXEC (job_fds[0]);
- CLOSE_ON_EXEC (job_fds[1]);
+ fd_inherit (job_fds[0]);
+ fd_inherit (job_fds[1]);
}
}
+/* Reconfigure the jobserver after starting a child process. */
void
jobserver_post_child (int recursive)
{
-#if defined(F_GETFD) && defined(F_SETFD)
- if (!recursive && job_fds[0] >= 0)
+ if (recursive && job_fds[0] >= 0)
{
- unsigned int i;
- for (i = 0; i < 2; ++i)
- {
- int flags;
- EINTRLOOP (flags, fcntl (job_fds[i], F_GETFD));
- if (flags >= 0)
- {
- int r;
- EINTRLOOP (r, fcntl (job_fds[i], F_SETFD, flags & ~FD_CLOEXEC));
- }
- }
+ fd_noinherit (job_fds[0]);
+ fd_noinherit (job_fds[1]);
}
-#endif
}
void
@@ -239,18 +263,12 @@ jobserver_pre_acquire (void)
unsigned int
jobserver_acquire (int timeout)
{
- sigset_t empty;
- fd_set readfds;
struct timespec spec;
struct timespec *specp = NULL;
- int r;
- char intake;
+ sigset_t empty;
sigemptyset (&empty);
- FD_ZERO (&readfds);
- FD_SET (job_fds[0], &readfds);
-
if (timeout)
{
/* Alarm after one second (is this too granular?) */
@@ -259,28 +277,52 @@ jobserver_acquire (int timeout)
specp = &spec;
}
- r = pselect (job_fds[0]+1, &readfds, NULL, NULL, specp, &empty);
-
- if (r == -1)
+ while (1)
{
- /* Better be SIGCHLD. */
- if (errno != EINTR)
- pfatal_with_name (_("pselect jobs pipe"));
- return 0;
- }
+ fd_set readfds;
+ int r;
+ char intake;
- if (r == 0)
- /* Timeout. */
- return 0;
+ FD_ZERO (&readfds);
+ FD_SET (job_fds[0], &readfds);
- /* The read FD is ready: read it! */
- EINTRLOOP (r, read (job_fds[0], &intake, 1));
- if (r < 0)
- pfatal_with_name (_("read jobs pipe"));
+ r = pselect (job_fds[0]+1, &readfds, NULL, NULL, specp, &empty);
+ if (r < 0)
+ switch (errno)
+ {
+ case EINTR:
+ /* SIGCHLD will show up as an EINTR. */
+ return 0;
+
+ case EBADF:
+ /* Someone closed the jobs pipe.
+ That shouldn't happen but if it does we're done. */
+ O (fatal, NILF, _("job server shut down"));
+
+ default:
+ pfatal_with_name (_("pselect jobs pipe"));
+ }
+
+ if (r == 0)
+ /* Timeout. */
+ return 0;
+
+ /* The read FD is ready: read it! This is non-blocking. */
+ EINTRLOOP (r, read (job_fds[0], &intake, 1));
+
+ if (r < 0)
+ {
+ /* Someone sniped our token! Try again. */
+ if (errno == EAGAIN)
+ continue;
- /* What does it mean if read() returns 0? It shouldn't happen because only
- the master make can reap all the tokens and close the write side...?? */
- return r > 0;
+ pfatal_with_name (_("read jobs pipe"));
+ }
+
+ /* read() should never return 0: only the master make can reap all the
+ tokens and close the write side...?? */
+ return r > 0;
+ }
}
#else
@@ -396,7 +438,7 @@ jobserver_acquire (int timeout)
return 0;
}
-#endif
+#endif /* HAVE_PSELECT */
#endif /* MAKE_JOBSERVER */
@@ -423,9 +465,48 @@ get_bad_stdin (void)
/* Set the descriptor to close on exec, so it does not litter any
child's descriptor table. When it is dup2'd onto descriptor 0,
that descriptor will not close on exec. */
- CLOSE_ON_EXEC (bad_stdin);
+ fd_noinherit (bad_stdin);
}
}
return bad_stdin;
}
+
+/* Set file descriptors to be inherited / not inherited by subprocesses. */
+
+#if !defined(F_SETFD) || !defined(F_GETFD)
+void fd_inherit (int fd) {}
+void fd_noinherit (int fd) {}
+
+#else
+
+# ifndef FD_CLOEXEC
+# define FD_CLOEXEC 1
+# endif
+
+void
+fd_inherit (int fd)
+{
+ int flags;
+ EINTRLOOP (flags, fcntl (fd, F_GETFD));
+ if (flags >= 0)
+ {
+ int r;
+ flags &= ~FD_CLOEXEC;
+ EINTRLOOP (r, fcntl (fd, F_SETFD, flags));
+ }
+}
+
+void
+fd_noinherit (int fd)
+{
+ int flags;
+ EINTRLOOP(flags, fcntl(fd, F_GETFD));
+ if (flags >= 0)
+ {
+ int r;
+ flags |= FD_CLOEXEC;
+ EINTRLOOP(r, fcntl(fd, F_SETFD, flags));
+ }
+}
+#endif
diff --git a/read.c b/src/read.c
index b870aa8..fa197fb 100644
--- a/read.c
+++ b/src/read.c
@@ -1,5 +1,5 @@
/* Reading and parsing of makefiles for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -21,6 +21,7 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#include "filedef.h"
#include "dep.h"
#include "job.h"
+#include "os.h"
#include "commands.h"
#include "variable.h"
#include "rule.h"
@@ -50,7 +51,7 @@ struct ebuffer
char *buffer; /* Start of the current line in the buffer. */
char *bufnext; /* Start of the next line in the buffer. */
char *bufstart; /* Start of the entire buffer. */
- unsigned int size; /* Malloc'd size of buffer. */
+ size_t size; /* Malloc'd size of buffer. */
FILE *fp; /* File, or NULL if this is an internal buffer. */
floc floc; /* Info on the file in fp (if any). */
};
@@ -71,7 +72,7 @@ struct vmodifiers
enum make_word_type
{
w_bogus, w_eol, w_static, w_variable, w_colon, w_dcolon, w_semicolon,
- w_varassign
+ w_varassign, w_ampcolon, w_ampdcolon
};
@@ -121,7 +122,7 @@ static const char **include_directories;
/* Maximum length of an element of the above. */
-static unsigned int max_incl_len;
+static size_t max_incl_len;
/* The filename and pointer to line number of the
makefile currently being read in. */
@@ -132,7 +133,7 @@ const floc *reading_file = 0;
static struct goaldep *read_files = 0;
-static struct goaldep *eval_makefile (const char *filename, int flags);
+static struct goaldep *eval_makefile (const char *filename, unsigned short flags);
static void eval (struct ebuffer *buffer, int flags);
static long readline (struct ebuffer *ebuf);
@@ -140,20 +141,22 @@ static void do_undefine (char *name, enum variable_origin origin,
struct ebuffer *ebuf);
static struct variable *do_define (char *name, enum variable_origin origin,
struct ebuffer *ebuf);
-static int conditional_line (char *line, int len, const floc *flocp);
-static void record_files (struct nameseq *filenames, const char *pattern,
+static int conditional_line (char *line, size_t len, const floc *flocp);
+static void record_files (struct nameseq *filenames, int are_also_makes,
+ const char *pattern,
const char *pattern_percent, char *depstr,
unsigned int cmds_started, char *commands,
- unsigned int commands_idx, int two_colon,
+ size_t commands_idx, int two_colon,
char prefix, const floc *flocp);
static void record_target_var (struct nameseq *filenames, char *defn,
enum variable_origin origin,
struct vmodifiers *vmod,
const floc *flocp);
-static enum make_word_type get_next_mword (char *buffer, char *delim,
- char **startp, unsigned int *length);
+static enum make_word_type get_next_mword (char *buffer,
+ char **startp, size_t *length);
static void remove_comments (char *line);
-static char *find_char_unquote (char *string, int map);
+static char *find_map_unquote (char *string, int map);
+static char *find_char_unquote (char *string, int stop);
static char *unescape_char (char *string, int c);
@@ -184,7 +187,7 @@ read_all_makefiles (const char **makefiles)
{
char *value;
char *name, *p;
- unsigned int length;
+ size_t length;
{
/* Turn off --warn-undefined-variables while we expand MAKEFILES. */
@@ -204,7 +207,7 @@ read_all_makefiles (const char **makefiles)
{
if (*p != '\0')
*p++ = '\0';
- eval_makefile (name, RM_NO_DEFAULT_GOAL|RM_INCLUDED|RM_DONTCARE);
+ eval_makefile (strcache_add (name), RM_NO_DEFAULT_GOAL|RM_INCLUDED|RM_DONTCARE);
}
free (value);
@@ -312,13 +315,17 @@ restore_conditionals (struct conditionals *saved)
}
static struct goaldep *
-eval_makefile (const char *filename, int flags)
+eval_makefile (const char *filename, unsigned short flags)
{
struct goaldep *deps;
struct ebuffer ebuf;
const floc *curfile;
char *expanded = 0;
- int makefile_errno;
+
+ /* Create a new goaldep entry. */
+ deps = alloc_goaldep ();
+ deps->next = read_files;
+ read_files = deps;
ebuf.floc.filenm = filename; /* Use the original file name. */
ebuf.floc.lineno = 1;
@@ -349,13 +356,12 @@ eval_makefile (const char *filename, int flags)
filename = expanded;
}
+ errno = 0;
ENULLLOOP (ebuf.fp, fopen (filename, "r"));
-
- /* Save the error code so we print the right message later. */
- makefile_errno = errno;
+ deps->error = errno;
/* Check for unrecoverable errors: out of mem or FILE slots. */
- switch (makefile_errno)
+ switch (deps->error)
{
#ifdef EMFILE
case EMFILE:
@@ -365,7 +371,7 @@ eval_makefile (const char *filename, int flags)
#endif
case ENOMEM:
{
- const char *err = strerror (makefile_errno);
+ const char *err = strerror (deps->error);
OS (fatal, reading_file, "%s", err);
}
}
@@ -389,14 +395,8 @@ eval_makefile (const char *filename, int flags)
}
}
- /* Now we have the final name for this makefile. Enter it into
- the cache. */
+ /* Enter the final name for this makefile as a goaldep. */
filename = strcache_add (filename);
-
- /* Add FILENAME to the chain of read makefiles. */
- deps = alloc_goaldep ();
- deps->next = read_files;
- read_files = deps;
deps->file = lookup_file (filename);
if (deps->file == 0)
deps->file = enter_file (filename);
@@ -405,26 +405,25 @@ eval_makefile (const char *filename, int flags)
free (expanded);
- /* If the makefile can't be found at all, give up entirely. */
-
if (ebuf.fp == 0)
{
- /* If we did some searching, errno has the error from the last
- attempt, rather from FILENAME itself. Store it in case the
- caller wants to use it in a message. */
- errno = makefile_errno;
+ /* The makefile can't be read at all, give up entirely.
+ If we did some searching errno has the error from the last attempt,
+ rather from FILENAME itself: recover the more accurate one. */
+ errno = deps->error;
+ deps->file->last_mtime = NONEXISTENT_MTIME;
return deps;
}
- /* Set close-on-exec to avoid leaking the makefile to children, such as
- $(shell ...). */
-#ifdef HAVE_FILENO
- CLOSE_ON_EXEC (fileno (ebuf.fp));
-#endif
+ /* Success; clear errno. */
+ deps->error = 0;
+
+ /* Avoid leaking the makefile to children. */
+ fd_noinherit (fileno (ebuf.fp));
/* Add this makefile to the list. */
do_variable_definition (&ebuf.floc, "MAKEFILE_LIST", filename, o_file,
- f_append, 0);
+ f_append_value, 0);
/* Evaluate the makefile */
@@ -506,12 +505,12 @@ parse_var_assignment (const char *line, struct vmodifiers *vmod)
/* Find the start of the next token. If there isn't one we're done. */
NEXT_TOKEN (line);
if (*line == '\0')
- return (char *)line;
+ return (char *) line;
p = line;
while (1)
{
- int wlen;
+ size_t wlen;
const char *p2;
struct variable v;
@@ -547,12 +546,12 @@ parse_var_assignment (const char *line, struct vmodifiers *vmod)
}
else
/* Not a variable or modifier: this is not a variable assignment. */
- return (char *)line;
+ return (char *) line;
/* It was a modifier. Try the next word. */
p = next_token (p2);
if (*p == '\0')
- return (char *)line;
+ return (char *) line;
}
/* Found a variable assignment or undefine. */
@@ -569,13 +568,14 @@ static void
eval (struct ebuffer *ebuf, int set_default)
{
char *collapsed = 0;
- unsigned int collapsed_length = 0;
- unsigned int commands_len = 200;
+ size_t collapsed_length = 0;
+ size_t commands_len = 200;
char *commands;
- unsigned int commands_idx = 0;
+ size_t commands_idx = 0;
unsigned int cmds_started, tgts_started;
int ignoring = 0, in_ignored_define = 0;
int no_targets = 0; /* Set when reading a rule without targets. */
+ int also_make_targets = 0; /* Set when reading grouped targets. */
struct nameseq *filenames = 0;
char *depstr = 0;
long nlines = 0;
@@ -593,7 +593,8 @@ eval (struct ebuffer *ebuf, int set_default)
{ \
fi.lineno = tgts_started; \
fi.offset = 0; \
- record_files (filenames, pattern, pattern_percent, depstr, \
+ record_files (filenames, also_make_targets, pattern, \
+ pattern_percent, depstr, \
cmds_started, commands, commands_idx, two_colon, \
prefix, &fi); \
filenames = 0; \
@@ -601,6 +602,7 @@ eval (struct ebuffer *ebuf, int set_default)
commands_idx = 0; \
no_targets = 0; \
pattern = 0; \
+ also_make_targets = 0; \
} while (0)
pattern_percent = 0;
@@ -622,9 +624,9 @@ eval (struct ebuffer *ebuf, int set_default)
while (1)
{
- unsigned int linelen;
+ size_t linelen;
char *line;
- unsigned int wlen;
+ size_t wlen;
char *p;
char *p2;
struct vmodifiers vmod;
@@ -641,20 +643,22 @@ eval (struct ebuffer *ebuf, int set_default)
line = ebuf->buffer;
/* If this is the first line, check for a UTF-8 BOM and skip it. */
- if (ebuf->floc.lineno == 1 && line[0] == (char)0xEF
- && line[1] == (char)0xBB && line[2] == (char)0xBF)
+ if (ebuf->floc.lineno == 1)
{
- line += 3;
- if (ISDB(DB_BASIC))
+ unsigned char *ul = (unsigned char *) line;
+ if (ul[0] == 0xEF && ul[1] == 0xBB && ul[2] == 0xBF)
{
- if (ebuf->floc.filenm)
- printf (_("Skipping UTF-8 BOM in makefile '%s'\n"),
- ebuf->floc.filenm);
- else
- printf (_("Skipping UTF-8 BOM in makefile buffer\n"));
+ line += 3;
+ if (ISDB(DB_BASIC))
+ {
+ if (ebuf->floc.filenm)
+ printf (_("Skipping UTF-8 BOM in makefile '%s'\n"),
+ ebuf->floc.filenm);
+ else
+ printf (_("Skipping UTF-8 BOM in makefile buffer\n"));
+ }
}
}
-
/* If this line is empty, skip it. */
if (line[0] == '\0')
continue;
@@ -805,7 +809,7 @@ eval (struct ebuffer *ebuf, int set_default)
export_all_variables = exporting;
else
{
- unsigned int l;
+ size_t l;
const char *cp;
char *ap;
@@ -832,7 +836,7 @@ eval (struct ebuffer *ebuf, int set_default)
{
const char *cp;
char *vpat;
- unsigned int l;
+ size_t l;
/* vpath ends the previous rule. */
record_waiting_files ();
@@ -897,17 +901,14 @@ eval (struct ebuffer *ebuf, int set_default)
while (files != 0)
{
struct nameseq *next = files->next;
- int flags = (RM_INCLUDED | RM_NO_TILDE
- | (noerror ? RM_DONTCARE : 0)
- | (set_default ? 0 : RM_NO_DEFAULT_GOAL));
+ unsigned short flags = (RM_INCLUDED | RM_NO_TILDE
+ | (noerror ? RM_DONTCARE : 0)
+ | (set_default ? 0 : RM_NO_DEFAULT_GOAL));
struct goaldep *d = eval_makefile (files->name, flags);
if (errno)
- {
- d->error = (unsigned short)errno;
- d->floc = *fstart;
- }
+ d->floc = *fstart;
free_ns (files);
files = next;
@@ -997,7 +998,7 @@ eval (struct ebuffer *ebuf, int set_default)
{
enum make_word_type wtype;
char *cmdleft, *semip, *lb_next;
- unsigned int plen = 0;
+ size_t plen = 0;
char *colonp;
const char *end, *beg; /* Helpers for whitespace stripping. */
@@ -1008,7 +1009,7 @@ eval (struct ebuffer *ebuf, int set_default)
/* Search the line for an unquoted ; that is not after an
unquoted #. */
- cmdleft = find_char_unquote (line, MAP_SEMI|MAP_COMMENT|MAP_VARIABLE);
+ cmdleft = find_map_unquote (line, MAP_SEMI|MAP_COMMENT|MAP_VARIABLE);
if (cmdleft != 0 && *cmdleft == '#')
{
/* We found a comment before a semicolon. */
@@ -1026,7 +1027,7 @@ eval (struct ebuffer *ebuf, int set_default)
variable we don't want to expand it. So, walk from the
beginning, expanding as we go, and looking for "interesting"
chars. The first word is always expandable. */
- wtype = get_next_mword (line, NULL, &lb_next, &wlen);
+ wtype = get_next_mword (line, &lb_next, &wlen);
switch (wtype)
{
case w_eol:
@@ -1038,6 +1039,8 @@ eval (struct ebuffer *ebuf, int set_default)
case w_colon:
case w_dcolon:
+ case w_ampcolon:
+ case w_ampdcolon:
/* We accept and ignore rules without targets for
compatibility with SunOS 4 make. */
no_targets = 1;
@@ -1055,12 +1058,12 @@ eval (struct ebuffer *ebuf, int set_default)
if (cmdleft == 0)
{
/* Look for a semicolon in the expanded line. */
- cmdleft = find_char_unquote (p2, MAP_SEMI);
+ cmdleft = find_char_unquote (p2, ';');
if (cmdleft != 0)
{
- unsigned long p2_off = p2 - variable_buffer;
- unsigned long cmd_off = cmdleft - variable_buffer;
+ size_t p2_off = p2 - variable_buffer;
+ size_t cmd_off = cmdleft - variable_buffer;
char *pend = p2 + strlen (p2);
/* Append any remnants of lb, then cut the line short
@@ -1075,28 +1078,37 @@ eval (struct ebuffer *ebuf, int set_default)
entirely consistent, since we do an unconditional
expand below once we know we don't have a
target-specific variable. */
- (void)variable_expand_string (pend, lb_next, (long)-1);
+ variable_expand_string (pend, lb_next, SIZE_MAX);
lb_next += strlen (lb_next);
p2 = variable_buffer + p2_off;
cmdleft = variable_buffer + cmd_off + 1;
}
}
- colonp = find_char_unquote (p2, MAP_COLON);
+ colonp = find_char_unquote (p2, ':');
+
#ifdef HAVE_DOS_PATHS
- /* The drive spec brain-damage strikes again... */
- /* Note that the only separators of targets in this context
- are whitespace and a left paren. If others are possible,
- they should be added to the string in the call to index. */
- while (colonp && (colonp[1] == '/' || colonp[1] == '\\') &&
- colonp > p2 && isalpha ((unsigned char)colonp[-1]) &&
- (colonp == p2 + 1 || strchr (" \t(", colonp[-2]) != 0))
- colonp = find_char_unquote (colonp + 1, MAP_COLON);
+ if (colonp > p2)
+ /* The drive spec brain-damage strikes again...
+ Note that the only separators of targets in this context are
+ whitespace and a left paren. If others are possible, add them
+ to the string in the call to strchr. */
+ while (colonp && (colonp[1] == '/' || colonp[1] == '\\') &&
+ isalpha ((unsigned char) colonp[-1]) &&
+ (colonp == p2 + 1 || strchr (" \t(", colonp[-2]) != 0))
+ colonp = find_char_unquote (colonp + 1, ':');
#endif
- if (colonp != 0)
- break;
- wtype = get_next_mword (lb_next, NULL, &lb_next, &wlen);
+ if (colonp)
+ {
+ /* If the previous character is '&', back up before '&:' */
+ if (colonp > p2 && colonp[-1] == '&')
+ --colonp;
+
+ break;
+ }
+
+ wtype = get_next_mword (lb_next, &lb_next, &wlen);
if (wtype == w_eol)
break;
@@ -1126,12 +1138,21 @@ eval (struct ebuffer *ebuf, int set_default)
O (fatal, fstart, _("missing separator"));
}
- /* Make the colon the end-of-string so we know where to stop
- looking for targets. Start there again once we're done. */
- *colonp = '\0';
- filenames = PARSE_SIMPLE_SEQ (&p2, struct nameseq);
- *colonp = ':';
- p2 = colonp;
+ {
+ char save = *colonp;
+
+ /* If we have &:, it specifies that the targets are understood to be
+ updated/created together by a single invocation of the recipe. */
+ if (save == '&')
+ also_make_targets = 1;
+
+ /* Make the colon the end-of-string so we know where to stop
+ looking for targets. Start there again once we're done. */
+ *colonp = '\0';
+ filenames = PARSE_SIMPLE_SEQ (&p2, struct nameseq);
+ *colonp = save;
+ p2 = colonp + (save == '&');
+ }
if (!filenames)
{
@@ -1155,7 +1176,7 @@ eval (struct ebuffer *ebuf, int set_default)
of the unparsed section of p2, for later. */
if (*lb_next != '\0')
{
- unsigned int l = p2 - variable_buffer;
+ size_t l = p2 - variable_buffer;
plen = strlen (p2);
variable_buffer_output (p2+plen, lb_next, strlen (lb_next)+1);
p2 = variable_buffer + l;
@@ -1168,7 +1189,7 @@ eval (struct ebuffer *ebuf, int set_default)
after it. */
if (semip)
{
- unsigned int l = p2 - variable_buffer;
+ size_t l = p2 - variable_buffer;
*(--semip) = ';';
collapse_continuations (semip);
variable_buffer_output (p2 + strlen (p2),
@@ -1184,7 +1205,7 @@ eval (struct ebuffer *ebuf, int set_default)
/* This is a normal target, _not_ a target-specific variable.
Unquote any = in the dependency list. */
- find_char_unquote (lb_next, MAP_EQUALS);
+ find_char_unquote (lb_next, '=');
/* Remember the command prefix for this target. */
prefix = cmd_prefix;
@@ -1195,14 +1216,14 @@ eval (struct ebuffer *ebuf, int set_default)
/* Expand the dependencies, etc. */
if (*lb_next != '\0')
{
- unsigned int l = p2 - variable_buffer;
- (void) variable_expand_string (p2 + plen, lb_next, (long)-1);
+ size_t l = p2 - variable_buffer;
+ variable_expand_string (p2 + plen, lb_next, SIZE_MAX);
p2 = variable_buffer + l;
/* Look for a semicolon in the expanded line. */
if (cmdleft == 0)
{
- cmdleft = find_char_unquote (p2, MAP_SEMI);
+ cmdleft = find_char_unquote (p2, ';');
if (cmdleft != 0)
*(cmdleft++) = '\0';
}
@@ -1286,7 +1307,7 @@ eval (struct ebuffer *ebuf, int set_default)
if (cmdleft != 0)
{
/* Semicolon means rest of line is a command. */
- unsigned int l = strlen (cmdleft);
+ size_t l = strlen (cmdleft);
cmds_started = fstart->lineno;
@@ -1344,7 +1365,7 @@ eval (struct ebuffer *ebuf, int set_default)
the default goal file. */
for (d = suffix_file->deps; d != 0; d = d->next)
{
- register struct dep *d2;
+ struct dep *d2;
if (*dep_name (d) != '.' && streq (name, dep_name (d)))
{
reject = 1;
@@ -1352,7 +1373,7 @@ eval (struct ebuffer *ebuf, int set_default)
}
for (d2 = suffix_file->deps; d2 != 0; d2 = d2->next)
{
- unsigned int l = strlen (dep_name (d2));
+ size_t l = strlen (dep_name (d2));
if (!strneq (name, dep_name (d2), l))
continue;
if (streq (name + l, dep_name (d)))
@@ -1374,14 +1395,7 @@ eval (struct ebuffer *ebuf, int set_default)
}
}
}
-
- continue;
}
-
- /* We get here except in the case that we just read a rule line.
- Record now the last rule we read, so following spurious
- commands are properly diagnosed. */
- record_waiting_files ();
}
#undef word1eq
@@ -1398,14 +1412,15 @@ eval (struct ebuffer *ebuf, int set_default)
/* Remove comments from LINE.
- This is done by copying the text at LINE onto itself. */
+ This will also remove backslashes that escape things.
+ It ignores comment characters that appear inside variable references. */
static void
remove_comments (char *line)
{
char *comment;
- comment = find_char_unquote (line, MAP_COMMENT);
+ comment = find_map_unquote (line, MAP_COMMENT|MAP_VARIABLE);
if (comment != 0)
/* Cut off the line at the #. */
@@ -1446,9 +1461,9 @@ do_define (char *name, enum variable_origin origin, struct ebuffer *ebuf)
struct variable var;
floc defstart;
int nlevels = 1;
- unsigned int length = 100;
+ size_t length = 100;
char *definition = xmalloc (length);
- unsigned int idx = 0;
+ size_t idx = 0;
char *p, *n;
defstart = ebuf->floc;
@@ -1479,7 +1494,7 @@ do_define (char *name, enum variable_origin origin, struct ebuffer *ebuf)
/* Now read the value of the variable. */
while (1)
{
- unsigned int len;
+ size_t len;
char *line;
long nlines = readline (ebuf);
@@ -1560,7 +1575,7 @@ do_define (char *name, enum variable_origin origin, struct ebuffer *ebuf)
1 if following text should be ignored. */
static int
-conditional_line (char *line, int len, const floc *flocp)
+conditional_line (char *line, size_t len, const floc *flocp)
{
const char *cmdname;
enum { c_ifdef, c_ifndef, c_ifeq, c_ifneq, c_else, c_endif } cmdtype;
@@ -1693,6 +1708,7 @@ conditional_line (char *line, int len, const floc *flocp)
if (cmdtype == c_ifdef || cmdtype == c_ifndef)
{
+ size_t l;
char *var;
struct variable *v;
char *p;
@@ -1703,13 +1719,13 @@ conditional_line (char *line, int len, const floc *flocp)
/* Make sure there's only one variable name to test. */
p = end_of_token (var);
- i = p - var;
+ l = p - var;
NEXT_TOKEN (p);
if (*p != '\0')
return -1;
- var[i] = '\0';
- v = lookup_variable (var, i);
+ var[l] = '\0';
+ v = lookup_variable (var, l);
conditionals->ignoring[o] =
((v != 0 && *v->value != '\0') == (cmdtype == c_ifndef));
@@ -1720,7 +1736,7 @@ conditional_line (char *line, int len, const floc *flocp)
{
/* "ifeq" or "ifneq". */
char *s1, *s2;
- unsigned int l;
+ size_t l;
char termin = *line == '(' ? ',' : *line;
if (termin != ',' && termin != '"' && termin != '\'')
@@ -1903,7 +1919,7 @@ record_target_var (struct nameseq *filenames, char *defn,
if (v->origin != o_override)
{
struct variable *gv;
- int len = strlen (v->name);
+ size_t len = strlen (v->name);
gv = lookup_variable (v->name, len);
if (gv && v != gv
@@ -1931,14 +1947,16 @@ record_target_var (struct nameseq *filenames, char *defn,
that are not incorporated into other data structures. */
static void
-record_files (struct nameseq *filenames, const char *pattern,
+record_files (struct nameseq *filenames, int are_also_makes,
+ const char *pattern,
const char *pattern_percent, char *depstr,
unsigned int cmds_started, char *commands,
- unsigned int commands_idx, int two_colon,
+ size_t commands_idx, int two_colon,
char prefix, const floc *flocp)
{
struct commands *cmds;
struct dep *deps;
+ struct dep *also_make = NULL;
const char *implicit_percent;
const char *name;
@@ -1964,8 +1982,10 @@ record_files (struct nameseq *filenames, const char *pattern,
cmds->command_lines = 0;
cmds->recipe_prefix = prefix;
}
+ else if (are_also_makes)
+ O (fatal, flocp, _("grouped targets must provide a recipe"));
else
- cmds = 0;
+ cmds = NULL;
/* If there's a prereq string then parse it--unless it's eligible for 2nd
expansion: if so, snap_deps() will do it. */
@@ -2003,7 +2023,7 @@ record_files (struct nameseq *filenames, const char *pattern,
{
struct nameseq *nextf;
const char **targets, **target_pats;
- unsigned int c;
+ unsigned short c;
if (pattern != 0)
O (fatal, flocp, _("mixed implicit and static pattern rules"));
@@ -2058,22 +2078,24 @@ record_files (struct nameseq *filenames, const char *pattern,
/* Check for special targets. Do it here instead of, say, snap_deps()
so that we can immediately use the value. */
- if (streq (name, ".POSIX"))
+ if (!posix_pedantic && streq (name, ".POSIX"))
{
posix_pedantic = 1;
define_variable_cname (".SHELLFLAGS", "-ec", o_default, 0);
- /* These default values are based on IEEE Std 1003.1-2008. */
+ /* These default values are based on IEEE Std 1003.1-2008.
+ It requires '-O 1' for [CF]FLAGS, but GCC doesn't allow space
+ between -O and the number so omit it here. */
define_variable_cname ("ARFLAGS", "-rv", o_default, 0);
define_variable_cname ("CC", "c99", o_default, 0);
- define_variable_cname ("CFLAGS", "-O", o_default, 0);
+ define_variable_cname ("CFLAGS", "-O1", o_default, 0);
define_variable_cname ("FC", "fort77", o_default, 0);
- define_variable_cname ("FFLAGS", "-O 1", o_default, 0);
+ define_variable_cname ("FFLAGS", "-O1", o_default, 0);
define_variable_cname ("SCCSGETFLAGS", "-s", o_default, 0);
}
- else if (streq (name, ".SECONDEXPANSION"))
+ else if (!second_expansion && streq (name, ".SECONDEXPANSION"))
second_expansion = 1;
#if !defined (__MSDOS__) && !defined (__EMX__)
- else if (streq (name, ".ONESHELL"))
+ else if (!one_shell && streq (name, ".ONESHELL"))
one_shell = 1;
#endif
@@ -2158,6 +2180,15 @@ record_files (struct nameseq *filenames, const char *pattern,
f->cmds = cmds;
}
+ if (are_also_makes)
+ {
+ struct dep *also = alloc_dep();
+ also->name = f->name;
+ also->file = f;
+ also->next = also_make;
+ also_make = also;
+ }
+
f->is_target = 1;
/* If this is a static pattern rule, set the stem to the part of its
@@ -2222,36 +2253,59 @@ record_files (struct nameseq *filenames, const char *pattern,
O (error, flocp,
_("*** mixed implicit and normal rules: deprecated syntax"));
}
+
+ /* If there are also-makes, then populate a copy of the also-make list into
+ each one. For the last file, we take our original also_make list instead
+ wastefully copying it one more time and freeing it. */
+ {
+ struct dep *i;
+
+ for (i = also_make; i != NULL; i = i->next)
+ {
+ struct file *f = i->file;
+ struct dep *cpy = i->next ? copy_dep_chain (also_make) : also_make;
+
+ if (f->also_make)
+ {
+ OS (error, &cmds->fileinfo,
+ _("warning: overriding group membership for target '%s'"),
+ f->name);
+ free_dep_chain (f->also_make);
+ }
+
+ f->also_make = cpy;
+ }
+ }
}
-/* Search STRING for an unquoted STOPCHAR or blank (if BLANK is nonzero).
- Backslashes quote STOPCHAR, blanks if BLANK is nonzero, and backslash.
- Quoting backslashes are removed from STRING by compacting it into
- itself. Returns a pointer to the first unquoted STOPCHAR if there is
- one, or nil if there are none. STOPCHARs inside variable references are
- ignored if IGNOREVARS is true.
+/* Search STRING for an unquoted STOPMAP.
+ Backslashes quote elements from STOPMAP and backslash.
+ Quoting backslashes are removed from STRING by compacting it into itself.
+ Returns a pointer to the first unquoted STOPCHAR if there is one, or nil if
+ there are none.
- STOPCHAR _cannot_ be '$' if IGNOREVARS is true. */
+ If MAP_VARIABLE is set, then the complete contents of variable references
+ are skipped, even if the contain STOPMAP characters. */
static char *
-find_char_unquote (char *string, int map)
+find_map_unquote (char *string, int stopmap)
{
- unsigned int string_len = 0;
+ size_t string_len = 0;
char *p = string;
/* Always stop on NUL. */
- map |= MAP_NUL;
+ stopmap |= MAP_NUL;
while (1)
{
- while (! STOP_SET (*p, map))
+ while (! STOP_SET (*p, stopmap))
++p;
if (*p == '\0')
break;
/* If we stopped due to a variable reference, skip over its contents. */
- if (STOP_SET (*p, MAP_VARIABLE))
+ if (*p == '$')
{
char openparen = p[1];
@@ -2315,6 +2369,46 @@ find_char_unquote (char *string, int map)
return 0;
}
+static char *
+find_char_unquote (char *string, int stop)
+{
+ size_t string_len = 0;
+ char *p = string;
+
+ while (1)
+ {
+ p = strchr(p, stop);
+
+ if (!p)
+ return NULL;
+
+ if (p > string && p[-1] == '\\')
+ {
+ /* Search for more backslashes. */
+ int i = -2;
+ while (&p[i] >= string && p[i] == '\\')
+ --i;
+ ++i;
+ /* Only compute the length if really needed. */
+ if (string_len == 0)
+ string_len = strlen (string);
+ /* The number of backslashes is now -I.
+ Copy P over itself to swallow half of them. */
+ memmove (&p[i], &p[i/2], (string_len - (p - string)) - (i/2) + 1);
+ p += i/2;
+ if (i % 2 == 0)
+ /* All the backslashes quoted each other; the STOPCHAR was
+ unquoted. */
+ return p;
+
+ /* The STOPCHAR was quoted by a backslash. Look for another. */
+ }
+ else
+ /* No backslash in sight. */
+ return p;
+ }
+}
+
/* Unescape a character in a string. The string is compressed onto itself. */
static char *
@@ -2328,7 +2422,7 @@ unescape_char (char *string, int c)
if (*s == '\\')
{
char *e = s;
- int l;
+ size_t l;
/* We found a backslash. See if it's escaping our character. */
while (*e == '\\')
@@ -2341,7 +2435,7 @@ unescape_char (char *string, int c)
memmove (p, s, l);
p += l;
- // If we hit the end of the string, we're done
+ /* If we hit the end of the string, we're done. */
if (*e == '\0')
break;
}
@@ -2368,7 +2462,7 @@ unescape_char (char *string, int c)
char *
find_percent (char *pattern)
{
- return find_char_unquote (pattern, MAP_PERCENT);
+ return find_char_unquote (pattern, '%');
}
/* Search STRING for an unquoted % and handle quoting. Returns a pointer to
@@ -2382,7 +2476,7 @@ find_percent_cached (const char **string)
{
const char *p = *string;
char *new = 0;
- int slen = 0;
+ size_t slen = 0;
/* If the first char is a % return now. This lets us avoid extra tests
inside the loop. */
@@ -2391,10 +2485,9 @@ find_percent_cached (const char **string)
while (1)
{
- while (! STOP_SET (*p, MAP_PERCENT|MAP_NUL))
- ++p;
+ p = strchr(p, '%');
- if (*p == '\0')
+ if (!p)
break;
/* See if this % is escaped with a backslash; if not we're done. */
@@ -2440,11 +2533,12 @@ find_percent_cached (const char **string)
if (new)
{
*string = strcache_add (*string);
- p = *string + (p - new);
+ if (p)
+ p = *string + (p - new);
}
/* If we didn't find a %, return NULL. Otherwise return a ptr to it. */
- return (*p == '\0') ? NULL : p;
+ return p;
}
/* Find the next line of text in an eval buffer, combining continuation lines
@@ -2524,10 +2618,10 @@ readline (struct ebuffer *ebuf)
end = p + ebuf->size;
*p = '\0';
- while (fgets (p, end - p, ebuf->fp) != 0)
+ while (fgets (p, (int) (end - p), ebuf->fp) != 0)
{
char *p2;
- unsigned long len;
+ size_t len;
int backslash;
len = strlen (p);
@@ -2588,7 +2682,7 @@ readline (struct ebuffer *ebuf)
Make sure to preserve the current offset of p. */
more_buffer:
{
- unsigned long off = p - start;
+ size_t off = p - start;
ebuf->size *= 2;
start = ebuf->buffer = ebuf->bufstart = xrealloc (start, ebuf->size);
p = start + off;
@@ -2619,6 +2713,8 @@ readline (struct ebuffer *ebuf)
w_variable A word containing one or more variables/functions
w_colon A colon
w_dcolon A double-colon
+ w_ampcolon An ampersand-colon (&:) token
+ w_ampdcolon An ampersand-double-colon (&::) token
w_semicolon A semicolon
w_varassign A variable assignment operator (=, :=, ::=, +=, ?=, or !=)
@@ -2627,9 +2723,9 @@ readline (struct ebuffer *ebuf)
in a command list, etc.) */
static enum make_word_type
-get_next_mword (char *buffer, char *delim, char **startp, unsigned int *length)
+get_next_mword (char *buffer, char **startp, size_t *length)
{
- enum make_word_type wtype = w_bogus;
+ enum make_word_type wtype;
char *p = buffer, *beg;
char c;
@@ -2639,39 +2735,55 @@ get_next_mword (char *buffer, char *delim, char **startp, unsigned int *length)
beg = p;
c = *(p++);
+
+ /* Look at the start of the word to see if it's simple. */
switch (c)
{
case '\0':
wtype = w_eol;
- break;
+ goto done;
case ';':
wtype = w_semicolon;
- break;
+ goto done;
case '=':
wtype = w_varassign;
- break;
+ goto done;
case ':':
- wtype = w_colon;
- switch (*p)
+ if (*p == '=')
{
- case ':':
++p;
- if (p[1] != '=')
- wtype = w_dcolon;
- else
+ wtype = w_varassign; /* := */
+ }
+ else if (*p == ':')
+ {
+ ++p;
+ if (p[1] == '=')
{
- wtype = w_varassign;
++p;
+ wtype = w_varassign; /* ::= */
}
- break;
+ else
+ wtype = w_dcolon;
+ }
+ else
+ wtype = w_colon;
+ goto done;
- case '=':
+ case '&':
+ if (*p == ':')
+ {
++p;
- wtype = w_varassign;
- break;
+ if (*p != ':')
+ wtype = w_ampcolon; /* &: */
+ else
+ {
+ ++p;
+ wtype = w_ampdcolon; /* &:: */
+ }
+ goto done;
}
break;
@@ -2681,23 +2793,18 @@ get_next_mword (char *buffer, char *delim, char **startp, unsigned int *length)
if (*p == '=')
{
++p;
- wtype = w_varassign;
- break;
+ wtype = w_varassign; /* += or ?= or != */
+ goto done;
}
+ break;
default:
- if (delim && strchr (delim, c))
- wtype = w_static;
break;
}
- /* Did we find something? If so, return now. */
- if (wtype != w_bogus)
- goto done;
-
/* This is some non-operator word. A word consists of the longest
string of characters that doesn't contain whitespace, one of [:=#],
- or [?+!]=, or one of the chars in the DELIM string. */
+ or [?+!]=, or &:. */
/* We start out assuming a static word; if we see a variable we'll
adjust our assumptions then. */
@@ -2722,9 +2829,9 @@ get_next_mword (char *buffer, char *delim, char **startp, unsigned int *length)
/* A word CAN include a colon in its drive spec. The drive
spec is allowed either at the beginning of a word, or as part
of the archive member name, like in "libfoo.a(d:/foo/bar.o)". */
- if (!(p - beg >= 2
- && (*p == '/' || *p == '\\') && isalpha ((unsigned char)p[-2])
- && (p - beg == 2 || p[-3] == '(')))
+ if ((p - beg == 2 || (p - beg > 2 && p[-3] == '('))
+ && isalpha ((unsigned char)p[-2]))
+ break;
#endif
goto done_word;
@@ -2777,10 +2884,13 @@ get_next_mword (char *buffer, char *delim, char **startp, unsigned int *length)
}
break;
- default:
- if (delim && strchr (delim, c))
+ case '&':
+ if (*p == ':')
goto done_word;
break;
+
+ default:
+ break;
}
c = *(p++);
@@ -2809,7 +2919,7 @@ construct_include_path (const char **arg_dirs)
#endif
const char **dirs;
const char **cpp;
- unsigned int idx;
+ size_t idx;
/* Compute the number of pointers we need in the table. */
idx = sizeof (default_include_directories) / sizeof (const char *);
@@ -2847,7 +2957,7 @@ construct_include_path (const char **arg_dirs)
EINTRLOOP (e, stat (dir, &stbuf));
if (e == 0 && S_ISDIR (stbuf.st_mode))
{
- unsigned int len = strlen (dir);
+ size_t len = strlen (dir);
/* If dir name is written with trailing slashes, discard them. */
while (len > 1 && dir[len - 1] == '/')
--len;
@@ -2869,7 +2979,7 @@ construct_include_path (const char **arg_dirs)
if (djdir)
{
- unsigned int len = strlen (djdir->value) + 8;
+ size_t len = strlen (djdir->value) + 8;
char *defdir = alloca (len + 1);
strcat (strcpy (defdir, djdir->value), "/include");
@@ -2888,7 +2998,7 @@ construct_include_path (const char **arg_dirs)
EINTRLOOP (e, stat (*cpp, &stbuf));
if (e == 0 && S_ISDIR (stbuf.st_mode))
{
- unsigned int len = strlen (*cpp);
+ size_t len = strlen (*cpp);
/* If dir name is written with trailing slashes, discard them. */
while (len > 1 && (*cpp)[len - 1] == '/')
--len;
@@ -2987,12 +3097,14 @@ tilde_expand (const char *name)
The string is passed as STRINGP, the address of a string pointer.
The string pointer is updated to point at the first character
- not parsed, which either is a null char or equals STOPCHAR.
+ not parsed, which either is a null char or equals STOPMAP.
- SIZE is how big to construct chain elements.
+ SIZE is how large (in bytes) each element in the new chain should be.
This is useful if we want them actually to be other structures
that have room for additional info.
+ STOPMAP is a map of characters that tell us to stop parsing.
+
PREFIX, if non-null, is added to the beginning of each filename.
FLAGS allows one or more of the following bitflags to be set:
@@ -3005,7 +3117,7 @@ tilde_expand (const char *name)
*/
void *
-parse_file_seq (char **stringp, unsigned int size, int stopmap,
+parse_file_seq (char **stringp, size_t size, int stopmap,
const char *prefix, int flags)
{
/* tmp points to tmpbuf after the prefix, if any.
@@ -3026,6 +3138,10 @@ parse_file_seq (char **stringp, unsigned int size, int stopmap,
char *p;
glob_t gl;
char *tp;
+ int findmap = stopmap|MAP_VMSCOMMA|MAP_NUL;
+
+ if (NONE_SET (flags, PARSEFS_ONEWORD))
+ findmap |= MAP_BLANK;
/* Always stop on NUL. */
stopmap |= MAP_NUL;
@@ -3038,8 +3154,8 @@ parse_file_seq (char **stringp, unsigned int size, int stopmap,
/* Get enough temporary space to construct the largest possible target. */
{
- static int tmpbuf_len = 0;
- int l = strlen (*stringp) + 1;
+ static size_t tmpbuf_len = 0;
+ size_t l = strlen (*stringp) + 1;
if (l > tmpbuf_len)
{
tmpbuf = xrealloc (tmpbuf, l);
@@ -3061,8 +3177,8 @@ parse_file_seq (char **stringp, unsigned int size, int stopmap,
char *memname = 0;
#endif
char *s;
- int nlen;
- int i;
+ size_t nlen;
+ int tot, i;
/* Skip whitespace; at the end of the string or STOPCHAR we're done. */
NEXT_TOKEN (p);
@@ -3072,28 +3188,28 @@ parse_file_seq (char **stringp, unsigned int size, int stopmap,
/* There are names left, so find the end of the next name.
Throughout this iteration S points to the start. */
s = p;
- p = find_char_unquote (p, stopmap|MAP_VMSCOMMA|MAP_BLANK);
+ p = find_map_unquote (p, findmap);
+
#ifdef VMS
/* convert comma separated list to space separated */
if (p && *p == ',')
*p =' ';
#endif
#ifdef _AMIGA
- if (p && STOP_SET (*p, stopmap & MAP_COLON)
- && !(ISSPACE (p[1]) || !p[1] || ISSPACE (p[-1])))
- p = find_char_unquote (p+1, stopmap|MAP_VMSCOMMA|MAP_BLANK);
+ /* If we stopped due to a device name, skip it. */
+ if (p && p != s+1 && p[0] == ':')
+ p = find_map_unquote (p+1, findmap);
#endif
#ifdef HAVE_DOS_PATHS
- /* For DOS paths, skip a "C:\..." or a "C:/..." until we find the
- first colon which isn't followed by a slash or a backslash.
- Note that tokens separated by spaces should be treated as separate
- tokens since make doesn't allow path names with spaces */
- if (stopmap | MAP_COLON)
- while (p != 0 && !ISSPACE (*p) &&
- (p[1] == '\\' || p[1] == '/') && isalpha ((unsigned char)p[-1]))
- p = find_char_unquote (p + 1, stopmap|MAP_VMSCOMMA|MAP_BLANK);
+ /* If we stopped due to a drive specifier, skip it.
+ Tokens separated by spaces are treated as separate paths since make
+ doesn't allow path names with spaces. */
+ if (p && p == s+1 && p[0] == ':'
+ && isalpha ((unsigned char)s[0]) && STOP_SET (p[1], MAP_DIRSEP))
+ p = find_map_unquote (p+1, findmap);
#endif
- if (p == 0)
+
+ if (!p)
p = s + strlen (s);
/* Strip leading "this directory" references. */
@@ -3188,7 +3304,7 @@ parse_file_seq (char **stringp, unsigned int size, int stopmap,
/* Find the end of this word. We don't want to unquote and
we don't care about quoting since we're looking for the
last char in the word. */
- while (! STOP_SET (*e, stopmap|MAP_BLANK|MAP_VMSCOMMA))
+ while (! STOP_SET (*e, findmap))
++e;
/* If we didn't move, we're done now. */
if (e == o)
@@ -3271,18 +3387,18 @@ parse_file_seq (char **stringp, unsigned int size, int stopmap,
if (NONE_SET (flags, PARSEFS_EXISTS) && strpbrk (name, "?*[") == NULL)
{
globme = 0;
- i = 1;
+ tot = 1;
nlist = &name;
}
else
- switch (glob (name, GLOB_NOSORT|GLOB_ALTDIRFUNC, NULL, &gl))
+ switch (glob (name, GLOB_ALTDIRFUNC, NULL, &gl))
{
case GLOB_NOSPACE:
- OUT_OF_MEM();
+ out_of_memory ();
case 0:
/* Success. */
- i = gl.gl_pathc;
+ tot = gl.gl_pathc;
nlist = (const char **)gl.gl_pathv;
break;
@@ -3290,20 +3406,20 @@ parse_file_seq (char **stringp, unsigned int size, int stopmap,
/* If we want only existing items, skip this one. */
if (ANY_SET (flags, PARSEFS_EXISTS))
{
- i = 0;
+ tot = 0;
break;
}
/* FALLTHROUGH */
default:
/* By default keep this name. */
- i = 1;
+ tot = 1;
nlist = &name;
break;
}
/* For each matched element, add it to the list. */
- while (i-- > 0)
+ for (i = 0; i < tot; ++i)
#ifndef NO_ARCHIVES
if (memname != 0)
{
diff --git a/remake.c b/src/remake.c
index 5d5d67a..fb237c5 100644
--- a/remake.c
+++ b/src/remake.c
@@ -1,5 +1,5 @@
/* Basic dependency engine for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -101,7 +101,7 @@ update_goal_chain (struct goaldep *goaldeps)
while (goals != 0)
{
- register struct dep *g, *lastgoal;
+ struct dep *g, *lastgoal;
/* Start jobs that are waiting for the load to go down. */
@@ -221,7 +221,7 @@ update_goal_chain (struct goaldep *goaldeps)
any commands were actually started for this goal. */
&& file->update_status == us_success && !g->changed
/* Never give a message under -s or -q. */
- && !silent_flag && !question_flag)
+ && !run_silent && !question_flag)
OS (message, 1, ((file->phony || file->cmds == 0)
? _("Nothing to be done for '%s'.")
: _("'%s' is up to date.")),
@@ -353,23 +353,6 @@ update_file (struct file *file, unsigned int depth)
status = new;
}
- /* Process the remaining rules in the double colon chain so they're marked
- considered. Start their prerequisites, too. */
- if (file->double_colon)
- for (; f != 0 ; f = f->prev)
- {
- struct dep *d;
-
- f->considered = considered;
-
- for (d = f->deps; d != 0; d = d->next)
- {
- enum update_status new = update_file (d->file, depth + 1);
- if (new > status)
- status = new;
- }
- }
-
return status;
}
@@ -600,7 +583,7 @@ update_file_1 (struct file *file, unsigned int depth)
check_renamed (d->file);
{
- register struct file *f = d->file;
+ struct file *f = d->file;
if (f->double_colon)
f = f->double_colon;
do
@@ -664,7 +647,7 @@ update_file_1 (struct file *file, unsigned int depth)
check_renamed (d->file);
{
- register struct file *f = d->file;
+ struct file *f = d->file;
if (f->double_colon)
f = f->double_colon;
do
@@ -1161,7 +1144,7 @@ check_dep (struct file *file, unsigned int depth,
static enum update_status
touch_file (struct file *file)
{
- if (!silent_flag)
+ if (!run_silent)
OS (message, 0, "touch %s", file->name);
/* Print-only (-n) takes precedence over touch (-t). */
@@ -1272,7 +1255,7 @@ FILE_TIMESTAMP
f_mtime (struct file *file, int search)
{
FILE_TIMESTAMP mtime;
- int propagate_timestamp;
+ unsigned int propagate_timestamp;
/* File's mtime is not known; must get it from the system. */
@@ -1301,7 +1284,7 @@ f_mtime (struct file *file, int search)
Change the archive-member reference accordingly. */
char *name;
- unsigned int arlen, memlen;
+ size_t arlen, memlen;
arlen = strlen (arfile->hname);
memlen = strlen (memname);
@@ -1349,7 +1332,7 @@ f_mtime (struct file *file, int search)
|| (file->name[0] == '-' && file->name[1] == 'l'
&& (name = library_search (file->name, &mtime)) != 0))
{
- int name_len;
+ size_t name_len;
if (mtime != UNKNOWN_MTIME)
/* vpath_search and library_search store UNKNOWN_MTIME
@@ -1425,11 +1408,6 @@ f_mtime (struct file *file, int search)
adjusted_now = now + (resolution - 1);
if (adjusted_now < adjusted_mtime)
{
-#ifdef NO_FLOAT
- OS (error, NILF,
- _("Warning: File '%s' has modification time in the future"),
- file->name);
-#else
double from_now =
(FILE_TIMESTAMP_S (mtime) - FILE_TIMESTAMP_S (now)
+ ((FILE_TIMESTAMP_NS (mtime) - FILE_TIMESTAMP_NS (now))
@@ -1443,7 +1421,6 @@ f_mtime (struct file *file, int search)
OSS (error, NILF,
_("Warning: File '%s' has modification time %s s in the future"),
file->name, from_now_string);
-#endif
clock_skew_detected = 1;
}
}
@@ -1492,7 +1469,45 @@ name_mtime (const char *name)
struct stat st;
int e;
+#if defined(WINDOWS32)
+ {
+ char tem[MAXPATHLEN], *tstart, *tend;
+ const char *p = name + strlen (name);
+
+ /* Remove any trailing slashes and "."/"..". MS-Windows stat
+ fails on valid directories if NAME ends in a slash, and we need
+ to emulate the Posix behavior where stat on "foo/" or "foo/."
+ succeeds ONLY if "foo" is a directory. */
+ if (p > name)
+ {
+ memcpy (tem, name, p - name + 1);
+ tstart = tem;
+ if (tstart[1] == ':')
+ tstart += 2;
+ tend = tem + (p - name - 1);
+ if (*tend == '.' && tend > tstart)
+ tend--;
+ if (*tend == '.' && tend > tstart)
+ tend--;
+ for ( ; tend > tstart && (*tend == '/' || *tend == '\\'); tend--)
+ *tend = '\0';
+ }
+ else
+ {
+ tem[0] = '\0';
+ tend = &tem[0];
+ }
+
+ e = stat (tem, &st);
+ if (e == 0 && !_S_ISDIR (st.st_mode) && tend < tem + (p - name - 1))
+ {
+ errno = ENOTDIR;
+ e = -1;
+ }
+ }
+#else
EINTRLOOP (e, stat (name, &st));
+#endif
if (e == 0)
mtime = FILE_TIMESTAMP_STAT_MODTIME (name, st);
else if (errno == ENOENT || errno == ENOTDIR)
@@ -1510,7 +1525,7 @@ name_mtime (const char *name)
#ifndef S_ISLNK
# define S_ISLNK(_m) (((_m)&S_IFMT)==S_IFLNK)
#endif
- if (check_symlink_flag)
+ if (check_symlink_flag && strlen (name) <= GET_PATH_MAX)
{
PATH_VAR (lpath);
@@ -1607,8 +1622,8 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr)
/* Loop variables for the libpatterns value. */
char *p;
const char *p2;
- unsigned int len;
- unsigned int liblen;
+ size_t len;
+ size_t liblen;
/* Information about the earliest (in the vpath sequence) match. */
unsigned int best_vpath = 0, best_path = 0;
@@ -1628,8 +1643,8 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr)
while ((p = find_next_token (&p2, &len)) != 0)
{
static char *buf = NULL;
- static unsigned int buflen = 0;
- static int libdir_maxlen = -1;
+ static size_t buflen = 0;
+ static size_t libdir_maxlen = 0;
static unsigned int std_dirs = 0;
char *libbuf = variable_expand ("");
@@ -1694,7 +1709,7 @@ library_search (const char *lib, FILE_TIMESTAMP *mtime_ptr)
{
for (dp = dirs; *dp != 0; ++dp)
{
- int l = strlen (*dp);
+ size_t l = strlen (*dp);
if (l > libdir_maxlen)
libdir_maxlen = l;
std_dirs++;
diff --git a/remote-cstms.c b/src/remote-cstms.c
index 7c36b9d..e336928 100644
--- a/remote-cstms.c
+++ b/src/remote-cstms.c
@@ -3,7 +3,7 @@
Please do not send bug reports or questions about it to
the Make maintainers.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -136,7 +136,7 @@ start_remote_job_p (int first_p)
int
start_remote_job (char **argv, char **envp, int stdin_fd,
- int *is_remote, int *id_ptr, int *used_stdin)
+ int *is_remote, pid_t *id_ptr, int *used_stdin)
{
char waybill[MAX_DATA_SIZE], msg[128];
struct hostent *host;
@@ -145,7 +145,7 @@ start_remote_job (char **argv, char **envp, int stdin_fd,
int len;
int retsock, retport, sock;
Rpc_Stat status;
- int pid;
+ pid_t pid;
/* Create the return socket. */
retsock = Rpc_UdpCreate (True, 0);
@@ -246,7 +246,7 @@ start_remote_job (char **argv, char **envp, int stdin_fd,
(void) dup2 (stdin_fd, 0);
/* Unblock signals in the child. */
- unblock_sigs ();
+ unblock_all_sigs ();
/* Run the command. */
exec_command (new_argv, envp);
@@ -294,7 +294,7 @@ unblock_remote_children (void)
/* Send signal SIG to child ID. Return 0 if successful, -1 if not. */
int
-remote_kill (int id, int sig)
+remote_kill (pid_t id, int sig)
{
return -1;
}
diff --git a/remote-stub.c b/src/remote-stub.c
index 8e31a20..05ab336 100644
--- a/remote-stub.c
+++ b/src/remote-stub.c
@@ -1,5 +1,5 @@
/* Template for the remote job exportation interface to GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -53,7 +53,7 @@ start_remote_job_p (int first_p UNUSED)
int
start_remote_job (char **argv UNUSED, char **envp UNUSED, int stdin_fd UNUSED,
- int *is_remote UNUSED, int *id_ptr UNUSED,
+ int *is_remote UNUSED, pid_t *id_ptr UNUSED,
int *used_stdin UNUSED)
{
return -1;
@@ -93,7 +93,7 @@ unblock_remote_children (void)
/* Send signal SIG to child ID. Return 0 if successful, -1 if not. */
int
-remote_kill (int id UNUSED, int sig UNUSED)
+remote_kill (pid_t id UNUSED, int sig UNUSED)
{
return -1;
}
diff --git a/rule.c b/src/rule.c
index de8b304..7efca58 100644
--- a/rule.c
+++ b/src/rule.c
@@ -1,5 +1,5 @@
/* Pattern and suffix rule internals for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -49,7 +49,7 @@ unsigned int max_pattern_deps;
/* Maximum length of the name of a dependencies of any pattern rule. */
-unsigned int max_pattern_dep_length;
+size_t max_pattern_dep_length;
/* Pointer to structure for the file .SUFFIXES
whose dependencies are the suffixes to be searched. */
@@ -58,31 +58,40 @@ struct file *suffix_file;
/* Maximum length of a suffix. */
-unsigned int maxsuffix;
+static size_t maxsuffix;
-/* Compute the maximum dependency length and maximum number of
- dependencies of all implicit rules. Also sets the subdir
- flag for a rule when appropriate, possibly removing the rule
- completely when appropriate. */
+/* Compute the maximum dependency length and maximum number of dependencies of
+ all implicit rules. Also sets the subdir flag for a rule when appropriate,
+ possibly removing the rule completely when appropriate.
+
+ Add any global EXTRA_PREREQS here as well. */
void
-count_implicit_rule_limits (void)
+snap_implicit_rules (void)
{
- char *name;
- int namelen;
+ char *name = NULL;
+ size_t namelen = 0;
struct rule *rule;
+ struct dep *dep;
+ struct dep *prereqs = expand_extra_prereqs (lookup_variable (STRING_SIZE_TUPLE(".EXTRA_PREREQS")));
+ unsigned int pre_deps = 0;
- num_pattern_rules = max_pattern_targets = max_pattern_deps = 0;
max_pattern_dep_length = 0;
- name = 0;
- namelen = 0;
- rule = pattern_rules;
- while (rule != 0)
+ for (dep = prereqs; dep; dep = dep->next)
{
- unsigned int ndeps = 0;
- struct dep *dep;
- struct rule *next = rule->next;
+ size_t l = strlen (dep_name (dep));
+ if (l > max_pattern_dep_length)
+ max_pattern_dep_length = l;
+ ++pre_deps;
+ }
+
+ num_pattern_rules = max_pattern_targets = max_pattern_deps = 0;
+
+ for (rule = pattern_rules; rule; rule = rule->next)
+ {
+ unsigned int ndeps = pre_deps;
+ struct dep *lastdep = NULL;
++num_pattern_rules;
@@ -92,30 +101,33 @@ count_implicit_rule_limits (void)
for (dep = rule->deps; dep != 0; dep = dep->next)
{
const char *dname = dep_name (dep);
- unsigned int len = strlen (dname);
+ size_t len = strlen (dname);
#ifdef VMS
const char *p = strrchr (dname, ']');
const char *p2;
if (p == 0)
p = strrchr (dname, ':');
- p2 = p != 0 ? strchr (dname, '%') : 0;
+ p2 = p ? strchr (p, '%') : 0;
#else
const char *p = strrchr (dname, '/');
- const char *p2 = p != 0 ? strchr (dname, '%') : 0;
+ const char *p2 = p ? strchr (p, '%') : 0;
#endif
ndeps++;
if (len > max_pattern_dep_length)
max_pattern_dep_length = len;
- if (p != 0 && p2 > p)
+ if (!dep->next)
+ lastdep = dep;
+
+ if (p2)
{
/* There is a slash before the % in the dep name.
Extract the directory name. */
if (p == dname)
++p;
- if (p - dname > namelen)
+ if ((size_t) (p - dname) > namelen)
{
namelen = p - dname;
name = xrealloc (name, namelen + 1);
@@ -134,13 +146,20 @@ count_implicit_rule_limits (void)
dep->changed = 0;
}
+ if (prereqs)
+ {
+ if (lastdep)
+ lastdep->next = copy_dep_chain (prereqs);
+ else
+ rule->deps = copy_dep_chain (prereqs);
+ }
+
if (ndeps > max_pattern_deps)
max_pattern_deps = ndeps;
-
- rule = next;
}
free (name);
+ free_dep_chain (prereqs);
}
/* Create a pattern rule from a suffix rule.
@@ -173,7 +192,7 @@ convert_suffix_rule (const char *target, const char *source,
else
{
/* Construct the target name. */
- unsigned int len = strlen (target);
+ size_t len = strlen (target);
char *p = alloca (1 + len + 1);
p[0] = '%';
memcpy (p + 1, target, len + 1);
@@ -186,7 +205,7 @@ convert_suffix_rule (const char *target, const char *source,
else
{
/* Construct the dependency name. */
- unsigned int len = strlen (source);
+ size_t len = strlen (source);
char *p = alloca (1 + len + 1);
p[0] = '%';
memcpy (p + 1, source, len + 1);
@@ -214,7 +233,7 @@ convert_to_pattern (void)
maxsuffix = 0;
for (d = suffix_file->deps; d != 0; d = d->next)
{
- unsigned int l = strlen (dep_name (d));
+ size_t l = strlen (dep_name (d));
if (l > maxsuffix)
maxsuffix = l;
}
@@ -224,7 +243,7 @@ convert_to_pattern (void)
for (d = suffix_file->deps; d != 0; d = d->next)
{
- unsigned int slen;
+ size_t slen;
/* Make a rule that is just the suffix, with no deps or commands.
This rule exists solely to disqualify match-anything rules. */
@@ -242,7 +261,7 @@ convert_to_pattern (void)
for (d2 = suffix_file->deps; d2 != 0; d2 = d2->next)
{
struct file *f;
- unsigned int s2len;
+ size_t s2len;
s2len = strlen (dep_name (d2));
@@ -252,9 +271,24 @@ convert_to_pattern (void)
memcpy (rulename + slen, dep_name (d2), s2len + 1);
f = lookup_file (rulename);
+
+ /* No target, or no commands: it can't be a suffix rule. */
if (f == 0 || f->cmds == 0)
continue;
+ /* POSIX says that suffix rules can't have prerequisites.
+ In POSIX mode, don't make this a suffix rule. Previous versions
+ of GNU make did treat this as a suffix rule and ignored the
+ prerequisites, which is bad. In the future we'll do the same as
+ POSIX, but for now preserve the old behavior and warn about it. */
+ if (f->deps != 0)
+ {
+ if (posix_pedantic)
+ continue;
+ error (&f->cmds->fileinfo, 0,
+ _("warning: ignoring prerequisites on suffix rule definition"));
+ }
+
if (s2len == 2 && rulename[slen] == '.' && rulename[slen + 1] == 'a')
/* A suffix rule '.X.a:' generates the pattern rule '(%.o): %.X'.
It also generates a normal '%.a: %.X' rule below. */
@@ -365,7 +399,7 @@ install_pattern_rule (struct pspec *p, int terminal)
r->suffixes = xmalloc (sizeof (const char *));
r->lens = xmalloc (sizeof (unsigned int));
- r->lens[0] = strlen (p->target);
+ r->lens[0] = (unsigned int) strlen (p->target);
r->targets[0] = p->target;
r->suffixes[0] = find_percent_cached (&r->targets[0]);
assert (r->suffixes[0] != NULL);
@@ -376,7 +410,7 @@ install_pattern_rule (struct pspec *p, int terminal)
if (new_pattern_rule (r, 0))
{
- r->terminal = terminal;
+ r->terminal = terminal ? 1 : 0;
r->cmds = xmalloc (sizeof (struct commands));
r->cmds->fileinfo.filenm = 0;
r->cmds->fileinfo.lineno = 0;
@@ -442,7 +476,7 @@ freerule (struct rule *rule, struct rule *lastrule)
void
create_pattern_rule (const char **targets, const char **target_percents,
- unsigned int n, int terminal, struct dep *deps,
+ unsigned short n, int terminal, struct dep *deps,
struct commands *commands, int override)
{
unsigned int i;
@@ -457,13 +491,13 @@ create_pattern_rule (const char **targets, const char **target_percents,
for (i = 0; i < n; ++i)
{
- r->lens[i] = strlen (targets[i]);
+ r->lens[i] = (unsigned int) strlen (targets[i]);
assert (r->suffixes[i] != NULL);
++r->suffixes[i];
}
if (new_pattern_rule (r, override))
- r->terminal = terminal;
+ r->terminal = terminal ? 1 : 0;
}
/* Print the data base of rules. */
@@ -511,16 +545,8 @@ print_rule_data_base (void)
puts (_("\n# No implicit rules."));
else
{
- printf (_("\n# %u implicit rules, %u"), rules, terminal);
-#ifndef NO_FLOAT
- printf (" (%.1f%%)", (double) terminal / (double) rules * 100.0);
-#else
- {
- int f = (terminal * 1000 + 5) / rules;
- printf (" (%d.%d%%)", f/10, f%10);
- }
-#endif
- puts (_(" terminal."));
+ printf (_("\n# %u implicit rules, %u (%.1f%%) terminal."),
+ rules, terminal, (double) terminal / (double) rules * 100.0);
}
if (num_pattern_rules != rules)
diff --git a/rule.h b/src/rule.h
index 9156b8e..120a682 100644
--- a/rule.h
+++ b/src/rule.h
@@ -1,5 +1,5 @@
/* Definitions for using pattern rules in GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -43,16 +43,15 @@ extern unsigned int num_pattern_rules;
extern unsigned int max_pattern_deps;
extern unsigned int max_pattern_targets;
-extern unsigned int max_pattern_dep_length;
+extern size_t max_pattern_dep_length;
extern struct file *suffix_file;
-extern unsigned int maxsuffix;
-void count_implicit_rule_limits (void);
+void snap_implicit_rules (void);
void convert_to_pattern (void);
void install_pattern_rule (struct pspec *p, int terminal);
void create_pattern_rule (const char **targets, const char **target_percents,
- unsigned int num, int terminal, struct dep *deps,
+ unsigned short num, int terminal, struct dep *deps,
struct commands *commands, int override);
void print_rule_data_base (void);
diff --git a/signame.c b/src/signame.c
index 55646e9..77bae3b 100644
--- a/signame.c
+++ b/src/signame.c
@@ -1,5 +1,5 @@
/* Convert between signal names and numbers.
-Copyright (C) 1990-2016 Free Software Foundation, Inc.
+Copyright (C) 1990-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -237,7 +237,7 @@ strsignal (int sig)
# elif HAVE_DECL___SYS_SIGLIST
# define sys_siglist __sys_siglist
# else
- static char sig_initted = 0;
+ static int sig_initted = 0;
if (!sig_initted)
sig_initted = signame_init ();
diff --git a/strcache.c b/src/strcache.c
index 6dcf2bc..cee9d09 100644
--- a/strcache.c
+++ b/src/strcache.c
@@ -1,5 +1,5 @@
/* Constant string caching for GNU Make.
-Copyright (C) 2006-2016 Free Software Foundation, Inc.
+Copyright (C) 2006-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -72,7 +72,7 @@ new_cache (struct strcache **head, sc_buflen_t buflen)
}
static const char *
-copy_string (struct strcache *sp, const char *str, unsigned int len)
+copy_string (struct strcache *sp, const char *str, sc_buflen_t len)
{
/* Add the string to this cache. */
char *res = &sp->buffer[sp->end];
@@ -87,13 +87,13 @@ copy_string (struct strcache *sp, const char *str, unsigned int len)
}
static const char *
-add_string (const char *str, unsigned int len)
+add_string (const char *str, sc_buflen_t len)
{
const char *res;
struct strcache *sp;
struct strcache **spp = &strcache;
/* We need space for the nul char. */
- unsigned int sz = len + 1;
+ sc_buflen_t sz = len + 1;
++total_strings;
total_size += sz;
@@ -143,7 +143,7 @@ struct hugestring {
static struct hugestring *hugestrings = NULL;
static const char *
-add_hugestring (const char *str, unsigned int len)
+add_hugestring (const char *str, size_t len)
{
struct hugestring *new = xmalloc (sizeof (struct hugestring) + len);
memcpy (new->buffer, str, len);
@@ -179,7 +179,7 @@ static struct hash_table strings;
static unsigned long total_adds = 0;
static const char *
-add_hash (const char *str, unsigned int len)
+add_hash (const char *str, size_t len)
{
char *const *slot;
const char *key;
@@ -200,7 +200,7 @@ add_hash (const char *str, unsigned int len)
return key;
/* Not there yet so add it to a buffer, then into the hash table. */
- key = add_string (str, len);
+ key = add_string (str, (sc_buflen_t)len);
hash_insert_at (&strings, key, slot);
return key;
}
@@ -238,7 +238,7 @@ strcache_add (const char *str)
}
const char *
-strcache_add_len (const char *str, unsigned int len)
+strcache_add_len (const char *str, size_t len)
{
/* If we're not given a nul-terminated string we have to create one, because
the hashing functions expect it. */
@@ -305,16 +305,16 @@ strcache_print_stats (const char *prefix)
prefix, numbuffs + 1, fullbuffs, total_strings, total_size,
(total_size / total_strings));
- printf (_("%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %hu B\n"),
+ printf (_("%s current buf: size = %hu B / used = %hu B / count = %hu / avg = %u B\n"),
prefix, (sc_buflen_t)BUFSIZE, strcache->end, strcache->count,
- (strcache->end / strcache->count));
+ (unsigned int) (strcache->end / strcache->count));
if (numbuffs)
{
/* Show information about non-current buffers. */
unsigned long sz = total_size - strcache->end;
unsigned long cnt = total_strings - strcache->count;
- sc_buflen_t avgfree = totfree / numbuffs;
+ sc_buflen_t avgfree = (sc_buflen_t) (totfree / numbuffs);
printf (_("%s other used: total = %lu B / count = %lu / avg = %lu B\n"),
prefix, sz, cnt, sz / cnt);
diff --git a/variable.c b/src/variable.c
index 36ab1f4..e379622 100644
--- a/variable.c
+++ b/src/variable.c
@@ -1,5 +1,5 @@
/* Internals of variables for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -50,8 +50,8 @@ static struct pattern_var *last_pattern_vars[256];
struct pattern_var *
create_pattern_var (const char *target, const char *suffix)
{
- register unsigned int len = strlen (target);
- register struct pattern_var *p = xmalloc (sizeof (struct pattern_var));
+ size_t len = strlen (target);
+ struct pattern_var *p = xcalloc (sizeof (struct pattern_var));
if (pattern_vars != 0)
{
@@ -63,7 +63,7 @@ create_pattern_var (const char *target, const char *suffix)
else
{
/* Find the position where we can insert this variable. */
- register struct pattern_var **v;
+ struct pattern_var **v;
for (v = &pattern_vars; ; v = &(*v)->next)
{
@@ -101,12 +101,12 @@ static struct pattern_var *
lookup_pattern_var (struct pattern_var *start, const char *target)
{
struct pattern_var *p;
- unsigned int targlen = strlen (target);
+ size_t targlen = strlen (target);
for (p = start ? start->next : pattern_vars; p != 0; p = p->next)
{
const char *stem;
- unsigned int stemlen;
+ size_t stemlen;
if (p->len > targlen)
/* It can't possibly match. */
@@ -193,7 +193,7 @@ init_hash_global_variable_set (void)
that it should be recursively re-expanded. */
struct variable *
-define_variable_in_set (const char *name, unsigned int length,
+define_variable_in_set (const char *name, size_t length,
const char *value, enum variable_origin origin,
int recursive, struct variable_set *set,
const floc *flocp)
@@ -206,7 +206,7 @@ define_variable_in_set (const char *name, unsigned int length,
set = &global_variable_set;
var_key.name = (char *) name;
- var_key.length = length;
+ var_key.length = (unsigned int) length;
var_slot = (struct variable **) hash_find_slot (&set->table, &var_key);
v = *var_slot;
@@ -267,9 +267,9 @@ define_variable_in_set (const char *name, unsigned int length,
/* Create a new variable definition and add it to the hash table. */
- v = xmalloc (sizeof (struct variable));
+ v = xcalloc (sizeof (struct variable));
v->name = xstrndup (name, length);
- v->length = length;
+ v->length = (unsigned int) length;
hash_insert_at (&set->table, v, var_slot);
if (set == &global_variable_set)
++variable_changenum;
@@ -277,18 +277,10 @@ define_variable_in_set (const char *name, unsigned int length,
v->value = xstrdup (value);
if (flocp != 0)
v->fileinfo = *flocp;
- else
- v->fileinfo.filenm = 0;
v->origin = origin;
v->recursive = recursive;
- v->special = 0;
- v->expanding = 0;
- v->exp_count = 0;
- v->per_target = 0;
- v->append = 0;
- v->private_var = 0;
- v->export = v_default;
+ v->export = v_default;
v->exportable = 1;
if (*name != '_' && (*name < 'A' || *name > 'Z')
&& (*name < 'a' || *name > 'z'))
@@ -330,7 +322,7 @@ free_variable_set (struct variable_set_list *list)
}
void
-undefine_variable_in_set (const char *name, unsigned int length,
+undefine_variable_in_set (const char *name, size_t length,
enum variable_origin origin,
struct variable_set *set)
{
@@ -342,7 +334,7 @@ undefine_variable_in_set (const char *name, unsigned int length,
set = &global_variable_set;
var_key.name = (char *) name;
- var_key.length = length;
+ var_key.length = (unsigned int) length;
var_slot = (struct variable **) hash_find_slot (&set->table, &var_key);
if (env_overrides && origin == o_env)
@@ -412,8 +404,8 @@ lookup_special_var (struct variable *var)
if (variable_changenum != last_changenum && streq (var->name, ".VARIABLES"))
{
- unsigned long max = EXPANSION_INCREMENT (strlen (var->value));
- unsigned long len;
+ size_t max = EXPANSION_INCREMENT (strlen (var->value));
+ size_t len;
char *p;
struct variable **vp = (struct variable **) global_variable_set.table.ht_vec;
struct variable **end = &vp[global_variable_set.table.ht_size];
@@ -433,7 +425,7 @@ lookup_special_var (struct variable *var)
len += l + 1;
if (len > max)
{
- unsigned long off = p - var->value;
+ size_t off = p - var->value;
max += EXPANSION_INCREMENT (l + 1);
var->value = xrealloc (var->value, max);
@@ -460,14 +452,14 @@ lookup_special_var (struct variable *var)
on the variable, or nil if no such variable is defined. */
struct variable *
-lookup_variable (const char *name, unsigned int length)
+lookup_variable (const char *name, size_t length)
{
const struct variable_set_list *setlist;
struct variable var_key;
int is_parent = 0;
var_key.name = (char *) name;
- var_key.length = length;
+ var_key.length = (unsigned int) length;
for (setlist = current_variable_set_list;
setlist != 0; setlist = setlist->next)
@@ -547,13 +539,13 @@ lookup_variable (const char *name, unsigned int length)
on the variable, or nil if no such variable is defined. */
struct variable *
-lookup_variable_in_set (const char *name, unsigned int length,
+lookup_variable_in_set (const char *name, size_t length,
const struct variable_set *set)
{
struct variable var_key;
var_key.name = (char *) name;
- var_key.length = length;
+ var_key.length = (unsigned int) length;
return (struct variable *) hash_find_item ((struct hash_table *) &set->table, &var_key);
}
@@ -673,8 +665,8 @@ initialize_file_variables (struct file *file, int reading)
struct variable_set_list *
create_new_variable_set (void)
{
- register struct variable_set_list *setlist;
- register struct variable_set *set;
+ struct variable_set_list *setlist;
+ struct variable_set *set;
set = xmalloc (sizeof (struct variable_set));
hash_init (&set->table, SMALL_SCOPE_VARIABLE_BUCKETS,
@@ -790,22 +782,34 @@ merge_variable_set_lists (struct variable_set_list **setlist0,
struct variable_set_list *last0 = 0;
/* If there's nothing to merge, stop now. */
- if (!setlist1)
+ if (!setlist1 || setlist1 == &global_setlist)
return;
- /* This loop relies on the fact that all setlists terminate with the global
- setlist (before NULL). If that's not true, arguably we SHOULD die. */
if (to)
- while (setlist1 != &global_setlist && to != &global_setlist)
- {
- struct variable_set_list *from = setlist1;
- setlist1 = setlist1->next;
+ {
+ /* These loops rely on the fact that all setlists terminate with the
+ global setlist (before NULL). If not, arguably we SHOULD die. */
- merge_variable_sets (to->set, from->set);
+ /* Make sure that setlist1 is not already a subset of setlist0. */
+ while (to != &global_setlist)
+ {
+ if (to == setlist1)
+ return;
+ to = to->next;
+ }
- last0 = to;
- to = to->next;
- }
+ to = *setlist0;
+ while (setlist1 != &global_setlist && to != &global_setlist)
+ {
+ struct variable_set_list *from = setlist1;
+ setlist1 = setlist1->next;
+
+ merge_variable_sets (to->set, from->set);
+
+ last0 = to;
+ to = to->next;
+ }
+ }
if (setlist1 != &global_setlist)
{
@@ -981,7 +985,7 @@ char **
target_environment (struct file *file)
{
struct variable_set_list *set_list;
- register struct variable_set_list *s;
+ struct variable_set_list *s;
struct hash_table table;
struct variable **v_slot;
struct variable **v_end;
@@ -1138,7 +1142,7 @@ static char *
shell_result (const char *p)
{
char *buf;
- unsigned int len;
+ size_t len;
char *args[2];
char *result;
@@ -1197,7 +1201,7 @@ do_variable_definition (const floc *flocp, const char *varname,
The value is set IFF the variable is not defined yet. */
v = lookup_variable (varname, strlen (varname));
if (v)
- return v->special ? set_special_var (v) : v;
+ goto done;
conditional = 1;
flavor = f_recursive;
@@ -1208,6 +1212,7 @@ do_variable_definition (const floc *flocp, const char *varname,
p = value;
break;
case f_append:
+ case f_append_value:
{
/* If we have += but we're in a target variable context, we want to
append only with other variables in the context of this target. */
@@ -1236,16 +1241,16 @@ do_variable_definition (const floc *flocp, const char *varname,
{
/* Paste the old and new values together in VALUE. */
- unsigned int oldlen, vallen;
+ size_t oldlen, vallen;
const char *val;
char *tp = NULL;
val = value;
if (v->recursive)
/* The previous definition of the variable was recursive.
- The new value is the unexpanded old and new values. */
+ The new value is the unexpanded old and new values. */
flavor = f_recursive;
- else
+ else if (flavor != f_append_value)
/* The previous definition of the variable was simple.
The new value comes from the old value, which was expanded
when it was set; and from the expanded new value. Allocate
@@ -1253,15 +1258,29 @@ do_variable_definition (const floc *flocp, const char *varname,
buffer if we're looking at a target-specific variable. */
val = tp = allocated_variable_expand (val);
- oldlen = strlen (v->value);
+ /* If the new value is empty, nothing to do. */
vallen = strlen (val);
+ if (!vallen)
+ {
+ alloc_value = tp;
+ goto done;
+ }
+
+ oldlen = strlen (v->value);
p = alloc_value = xmalloc (oldlen + 1 + vallen + 1);
- memcpy (alloc_value, v->value, oldlen);
- alloc_value[oldlen] = ' ';
- memcpy (&alloc_value[oldlen + 1], val, vallen + 1);
+
+ if (oldlen)
+ {
+ memcpy (alloc_value, v->value, oldlen);
+ alloc_value[oldlen] = ' ';
+ ++oldlen;
+ }
+
+ memcpy (&alloc_value[oldlen], val, vallen + 1);
free (tp);
}
+ break;
}
}
@@ -1389,6 +1408,11 @@ do_variable_definition (const floc *flocp, const char *varname,
}
}
else
+ v = NULL;
+
+ /* If not $SHELL, or if $SHELL points to a program we didn't find,
+ just process this variable "as usual". */
+ if (!v)
#endif
/* If we are defining variables inside an $(eval ...), we might have a
@@ -1405,8 +1429,8 @@ do_variable_definition (const floc *flocp, const char *varname,
v->append = append;
v->conditional = conditional;
+ done:
free (alloc_value);
-
return v->special ? set_special_var (v) : v;
}
@@ -1547,7 +1571,7 @@ parse_variable_definition (const char *p, struct variable *var)
return NULL;
}
- var->length = e - var->name;
+ var->length = (unsigned int) (e - var->name);
var->value = next_token (p);
return (char *)p;
}
@@ -1768,7 +1792,7 @@ print_target_variables (const struct file *file)
{
if (file->variables != 0)
{
- int l = strlen (file->name);
+ size_t l = strlen (file->name);
char *t = alloca (l + 3);
strcpy (t, file->name);
diff --git a/variable.h b/src/variable.h
index fe1d609..e8cba4f 100644
--- a/variable.h
+++ b/src/variable.h
@@ -1,5 +1,5 @@
/* Definitions for using variables in GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -37,7 +37,8 @@ enum variable_flavor
f_recursive, /* Recursive definition (=) */
f_append, /* Appending definition (+=) */
f_conditional, /* Conditional definition (?=) */
- f_shell /* Shell assignment (!=) */
+ f_shell, /* Shell assignment (!=) */
+ f_append_value /* Append unexpanded value */
};
/* Structure that represents one variable definition.
@@ -52,7 +53,7 @@ struct variable
char *name; /* Variable name. */
char *value; /* Variable value. */
floc fileinfo; /* Where the variable was defined. */
- int length; /* strlen (name) */
+ unsigned int length; /* strlen (name) */
unsigned int recursive:1; /* Gets recursively re-evaluated. */
unsigned int append:1; /* Nonzero if an appending target-specific
variable. */
@@ -103,7 +104,7 @@ struct pattern_var
struct pattern_var *next;
const char *suffix;
const char *target;
- unsigned int len;
+ size_t len;
struct variable variable;
};
@@ -113,22 +114,26 @@ extern struct variable *default_goal_var;
extern struct variable shell_var;
/* expand.c */
-char *variable_buffer_output (char *ptr, const char *string, unsigned int length);
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t)~(size_t)0)
+#endif
+
+char *variable_buffer_output (char *ptr, const char *string, size_t length);
char *variable_expand (const char *line);
char *variable_expand_for_file (const char *line, struct file *file);
char *allocated_variable_expand_for_file (const char *line, struct file *file);
#define allocated_variable_expand(line) \
allocated_variable_expand_for_file (line, (struct file *) 0)
char *expand_argument (const char *str, const char *end);
-char *variable_expand_string (char *line, const char *string, long length);
-void install_variable_buffer (char **bufp, unsigned int *lenp);
-void restore_variable_buffer (char *buf, unsigned int len);
+char *variable_expand_string (char *line, const char *string, size_t length);
+void install_variable_buffer (char **bufp, size_t *lenp);
+void restore_variable_buffer (char *buf, size_t len);
/* function.c */
int handle_function (char **op, const char **stringp);
int pattern_matches (const char *pattern, const char *percent, const char *str);
char *subst_expand (char *o, const char *text, const char *subst,
- const char *replace, unsigned int slen, unsigned int rlen,
+ const char *replace, size_t slen, size_t rlen,
int by_word);
char *patsubst_expand_pat (char *o, const char *text, const char *pattern,
const char *replace, const char *pattern_percent,
@@ -168,11 +173,11 @@ void hash_init_function_table (void);
void define_new_function(const floc *flocp, const char *name,
unsigned int min, unsigned int max, unsigned int flags,
gmk_func_ptr func);
-struct variable *lookup_variable (const char *name, unsigned int length);
-struct variable *lookup_variable_in_set (const char *name, unsigned int length,
+struct variable *lookup_variable (const char *name, size_t length);
+struct variable *lookup_variable_in_set (const char *name, size_t length,
const struct variable_set *set);
-struct variable *define_variable_in_set (const char *name, unsigned int length,
+struct variable *define_variable_in_set (const char *name, size_t length,
const char *value,
enum variable_origin origin,
int recursive,
@@ -207,7 +212,7 @@ struct variable *define_variable_in_set (const char *name, unsigned int length,
#define define_variable_for_file(n,l,v,o,r,f) \
define_variable_in_set((n),(l),(v),(o),(r),(f)->variables->set,NILF)
-void undefine_variable_in_set (const char *name, unsigned int length,
+void undefine_variable_in_set (const char *name, size_t length,
enum variable_origin origin,
struct variable_set *set);
diff --git a/version.c b/src/version.c
index e6d822d..36fad60 100644
--- a/version.c
+++ b/src/version.c
@@ -1,5 +1,5 @@
/* Record version and build host architecture for GNU make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/vms_exit.c b/src/vms_exit.c
index b08d84d..b54bba1 100644
--- a/vms_exit.c
+++ b/src/vms_exit.c
@@ -7,7 +7,7 @@
* Author: John E. Malmberg
*/
-/* Copyright (C) 2014-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2014-2020 Free Software Foundation, Inc.
GNU Make is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
diff --git a/vms_export_symbol.c b/src/vms_export_symbol.c
index 954f3f4..9b4ed78 100644
--- a/vms_export_symbol.c
+++ b/src/vms_export_symbol.c
@@ -4,7 +4,7 @@
* DCL symbols.
*/
-/* Copyright (C) 2014-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2014-2020 Free Software Foundation, Inc.
GNU Make is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
diff --git a/vms_progname.c b/src/vms_progname.c
index 0665a54..95d0521 100644
--- a/vms_progname.c
+++ b/src/vms_progname.c
@@ -36,7 +36,7 @@
*
*/
-/* Copyright (C) 2014-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2014-2020 Free Software Foundation, Inc.
GNU Make is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
diff --git a/vmsdir.h b/src/vmsdir.h
index 814b89d..686d526 100644
--- a/vmsdir.h
+++ b/src/vmsdir.h
@@ -1,5 +1,5 @@
/* dirent.h for vms
-Copyright (C) 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/vmsfunctions.c b/src/vmsfunctions.c
index e422d48..51310da 100644
--- a/vmsfunctions.c
+++ b/src/vmsfunctions.c
@@ -1,5 +1,5 @@
/* VMS functions
-Copyright (C) 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/vmsify.c b/src/vmsify.c
index e504a09..3427c7b 100644
--- a/vmsify.c
+++ b/src/vmsify.c
@@ -1,5 +1,5 @@
/* vmsify.c -- Module for vms <-> unix file name conversion
-Copyright (C) 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/vmsjobs.c b/src/vmsjobs.c
index f45c8a8..979a209 100644
--- a/vmsjobs.c
+++ b/src/vmsjobs.c
@@ -1,7 +1,7 @@
/* --------------- Moved here from job.c ---------------
This file must be #included in job.c, as it accesses static functions.
-Copyright (C) 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -104,11 +104,12 @@ static int ctrlYPressed= 0;
inner mode level AST.
*/
static int
-vmsHandleChildTerm (struct child *child)
+vmsHandleChildTerm (struct childbase *cbase)
{
- int exit_code;
- register struct child *lastc, *c;
+ struct child *child = (struct child*)cbase;
+ struct child *lastc, *c;
int child_failed;
+ int exit_code;
/* The child efn is 0 when a built-in or null command is executed
successfully with out actually creating a child.
@@ -191,7 +192,8 @@ astYHandler (void)
{
struct child *c;
for (c = children; c != 0; c = c->next)
- sys$delprc (&c->pid, 0, 0);
+ if (c->pid > 0)
+ sys$delprc (&c->pid, 0, 0);
ctrlYPressed= 1;
kill (getpid(),SIGQUIT);
return SS$_NORMAL;
@@ -802,8 +804,8 @@ build_vms_cmd (char **cmd_tokens,
return cmd_dsc;
}
-int
-child_execute_job (struct child *child, char *argv)
+pid_t
+child_execute_job (struct childbase *child, int good_stdin UNUSED, char *argv)
{
int i;
@@ -840,11 +842,10 @@ child_execute_job (struct child *child, char *argv)
/* Only a built-in or a null command - Still need to run term AST */
child->cstatus = VMS_POSIX_EXIT_MASK;
child->vms_launch_status = SS$_NORMAL;
- /* TODO what is this "magic number" */
- child->pid = 270163; /* Special built-in */
child->efn = 0;
vmsHandleChildTerm (child);
- return 1;
+ /* TODO what is this "magic number" */
+ return 270163; /* Special built-in */
}
sprintf (procname, "GMAKE_%05x", getpid () & 0xfffff);
@@ -1161,11 +1162,9 @@ child_execute_job (struct child *child, char *argv)
free (cmd_tokens[cmd_tkn_index++]);
child->cstatus = VMS_POSIX_EXIT_MASK | (MAKE_TROUBLE << 3);
child->vms_launch_status = SS$_ABORT;
- /* TODO what is this "magic number" */
- child->pid = 270163; /* Special built-in */
child->efn = 0;
errno = token.cmd_errno;
- return 0;
+ return -1;
}
/* Save any redirection to append file */
@@ -1205,21 +1204,18 @@ child_execute_job (struct child *child, char *argv)
free (cmd_dsc);
child->cstatus = VMS_POSIX_EXIT_MASK | (MAKE_TROUBLE << 3);
child->vms_launch_status = SS$_ABORT;
- /* TODO what is this "magic number" */
- child->pid = 270163; /* Special built-in */
child->efn = 0;
- return 0;
+ return -1;
}
/* Only a built-in or a null command - Still need to run term AST */
free (cmd_dsc);
child->cstatus = VMS_POSIX_EXIT_MASK;
child->vms_launch_status = SS$_NORMAL;
- /* TODO what is this "magic number" */
- child->pid = 270163; /* Special built-in */
child->efn = 0;
vmsHandleChildTerm (child);
- return 1;
+ /* TODO what is this "magic number" */
+ return 270163; /* Special built-in */
}
if (cmd_dsc->dsc$w_length > MAX_DCL_LINE_LENGTH)
@@ -1245,9 +1241,9 @@ child_execute_job (struct child *child, char *argv)
FILE *outfile;
int cmd_len;
- outfile = output_tmpfile (&child->comname,
- "sys$scratch:gnv$make_cmdXXXXXX.com");
- /* 012345678901234567890 */
+ outfile = get_tmpfile (&child->comname,
+ "sys$scratch:gnv$make_cmdXXXXXX.com");
+ /* 123456789012345678901234567890 */
if (outfile == 0)
pfatal_with_name (_("fopen (temporary file)"));
comnamelen = strlen (child->comname);
@@ -1338,7 +1334,7 @@ child_execute_job (struct child *child, char *argv)
unlink (child->comname);
free (child->comname);
}
- return 0;
+ return -1;
}
}
@@ -1464,5 +1460,6 @@ child_execute_job (struct child *child, char *argv)
}
}
- return (status & 1);
+ /* TODO what is this "magic number" */
+ return (status & 1) ? 270163 : -1 ;
}
diff --git a/vpath.c b/src/vpath.c
index 0c7dce3..d4e7dc7 100644
--- a/vpath.c
+++ b/src/vpath.c
@@ -1,5 +1,5 @@
/* Implementation of pattern-matching file search paths for GNU Make.
-Copyright (C) 1988-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -26,12 +26,12 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
struct vpath
{
- struct vpath *next; /* Pointer to next struct in the linked list. */
- const char *pattern;/* The pattern to match. */
- const char *percent;/* Pointer into 'pattern' where the '%' is. */
- unsigned int patlen;/* Length of the pattern. */
+ struct vpath *next; /* Pointer to next struct in the linked list. */
+ const char *pattern; /* The pattern to match. */
+ const char *percent; /* Pointer into 'pattern' where the '%' is. */
+ size_t patlen; /* Length of the pattern. */
const char **searchpath; /* Null-terminated list of directories. */
- unsigned int maxlen;/* Maximum length of any entry in the list. */
+ size_t maxlen; /* Maximum length of any entry in the list. */
};
/* Linked-list of all selective VPATHs. */
@@ -54,9 +54,9 @@ static struct vpath *gpaths;
void
build_vpath_lists (void)
{
- register struct vpath *new = 0;
- register struct vpath *old, *nexto;
- register char *p;
+ struct vpath *new = 0;
+ struct vpath *old, *nexto;
+ char *p;
/* Reverse the chain. */
for (old = vpaths; old != 0; old = nexto)
@@ -160,7 +160,7 @@ construct_vpath_list (char *pattern, char *dirpath)
unsigned int elem;
char *p;
const char **vpath;
- unsigned int maxvpath;
+ size_t maxvpath;
unsigned int maxelem;
const char *percent = NULL;
@@ -229,7 +229,7 @@ construct_vpath_list (char *pattern, char *dirpath)
while (*p != '\0')
{
char *v;
- unsigned int len;
+ size_t len;
/* Find the end of this entry. */
v = p;
@@ -304,7 +304,7 @@ construct_vpath_list (char *pattern, char *dirpath)
in. If it is found, return 1. Otherwise we return 0. */
int
-gpath_search (const char *file, unsigned int len)
+gpath_search (const char *file, size_t len)
{
if (gpaths && (len <= gpaths->maxlen))
{
@@ -333,9 +333,9 @@ selective_vpath_search (struct vpath *path, const char *file,
const char *n;
const char *filename;
const char **vpath = path->searchpath;
- unsigned int maxvpath = path->maxlen;
+ size_t maxvpath = path->maxlen;
unsigned int i;
- unsigned int flen, name_dplen;
+ size_t flen, name_dplen;
int exists = 0;
/* Find out if *FILE is a target.
@@ -376,7 +376,7 @@ selective_vpath_search (struct vpath *path, const char *file,
{
int exists_in_cache = 0;
char *p = name;
- unsigned int vlen = strlen (vpath[i]);
+ size_t vlen = strlen (vpath[i]);
/* Put the next VPATH entry into NAME at P and increment P past it. */
memcpy (p, vpath[i], vlen);
@@ -605,7 +605,7 @@ print_vpath_data_base (void)
nvpaths = 0;
for (v = vpaths; v != 0; v = v->next)
{
- register unsigned int i;
+ unsigned int i;
++nvpaths;
diff --git a/w32/compat/dirent.c b/src/w32/compat/dirent.c
index 17f7d5f..b8ec615 100644
--- a/w32/compat/dirent.c
+++ b/src/w32/compat/dirent.c
@@ -1,5 +1,5 @@
/* Directory entry code for Window platforms.
-Copyright (C) 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -30,7 +30,7 @@ opendir(const char* pDirName)
struct stat sb;
DIR* pDir;
char* pEndDirName;
- int nBufferLen;
+ size_t nBufferLen;
/* sanity checks */
if (!pDirName) {
@@ -128,13 +128,20 @@ readdir(DIR* pDir)
} else if (!FindNextFile(pDir->dir_hDirHandle, &wfdFindData))
return NULL;
- /* bump count for next call to readdir() or telldir() */
+ /* bump count for next call to readdir() */
pDir->dir_nNumFiles++;
/* fill in struct dirent values */
pDir->dir_sdReturn.d_ino = (ino_t)-1;
strcpy(pDir->dir_sdReturn.d_name, wfdFindData.cFileName);
+ if (wfdFindData.dwFileAttributes & FILE_ATTRIBUTE_DEVICE)
+ pDir->dir_sdReturn.d_type = DT_CHR;
+ else if (wfdFindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
+ pDir->dir_sdReturn.d_type = DT_DIR;
+ else
+ pDir->dir_sdReturn.d_type = DT_REG;
+
return &pDir->dir_sdReturn;
}
@@ -164,24 +171,6 @@ rewinddir(DIR* pDir)
return;
}
-int
-telldir(DIR* pDir)
-{
- if (!pDir) {
- errno = EINVAL;
- return -1;
- }
-
- /* sanity check that this is a DIR pointer */
- if (pDir->dir_ulCookie != __DIRENT_COOKIE) {
- errno = EINVAL;
- return -1;
- }
-
- /* return number of times readdir() called */
- return pDir->dir_nNumFiles;
-}
-
void
seekdir(DIR* pDir, long nPosition)
{
diff --git a/w32/compat/posixfcn.c b/src/w32/compat/posixfcn.c
index c760cc8..975dfb7 100644
--- a/w32/compat/posixfcn.c
+++ b/src/w32/compat/posixfcn.c
@@ -1,6 +1,6 @@
/* Replacements for Posix functions and Posix functionality for MS-Windows.
-Copyright (C) 2013-2016 Free Software Foundation, Inc.
+Copyright (C) 2013-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/w32/include/dirent.h b/src/w32/include/dirent.h
index bae8449..ae814b3 100644
--- a/w32/include/dirent.h
+++ b/src/w32/include/dirent.h
@@ -1,5 +1,5 @@
/* Windows version of dirent.h
-Copyright (C) 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -33,26 +33,51 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#define __DIRENT_COOKIE 0xfefeabab
+/* File types for `d_type'.
+ Windows only supports DT_CHR, DT_DIR, and DT_REG. */
+enum
+ {
+ DT_UNKNOWN = 0,
+# define DT_UNKNOWN DT_UNKNOWN
+ DT_FIFO = 1,
+# define DT_FIFO DT_FIFO
+ DT_CHR = 2,
+# define DT_CHR DT_CHR
+ DT_DIR = 4,
+# define DT_DIR DT_DIR
+ DT_BLK = 6,
+# define DT_BLK DT_BLK
+ DT_REG = 8,
+# define DT_REG DT_REG
+ DT_LNK = 10,
+# define DT_LNK DT_LNK
+ DT_SOCK = 12,
+# define DT_SOCK DT_SOCK
+ DT_WHT = 14
+# define DT_WHT DT_WHT
+ };
+
struct dirent
-{
- ino_t d_ino; /* unused - no equivalent on WINDOWS32 */
- char d_name[NAME_MAX+1];
-};
-
-typedef struct dir_struct {
- ULONG dir_ulCookie;
- HANDLE dir_hDirHandle;
- DWORD dir_nNumFiles;
- char dir_pDirectoryName[NAME_MAX+1];
- struct dirent dir_sdReturn;
-} DIR;
+ {
+ ino_t d_ino; /* unused - no equivalent on WINDOWS32. */
+ unsigned char d_type;
+ char d_name[NAME_MAX+1]; /* must come last due to dir.c assumptions. */
+ };
+
+typedef struct dir_struct
+ {
+ ULONG dir_ulCookie;
+ HANDLE dir_hDirHandle;
+ DWORD dir_nNumFiles;
+ char dir_pDirectoryName[NAME_MAX+1];
+ struct dirent dir_sdReturn;
+ } DIR;
DIR *opendir(const char *);
struct dirent *readdir(DIR *);
void rewinddir(DIR *);
void closedir(DIR *);
-int telldir(DIR *);
void seekdir(DIR *, long);
#endif /* !__MINGW32__ */
diff --git a/w32/include/dlfcn.h b/src/w32/include/dlfcn.h
index 5a2ae28..00d1d7d 100644
--- a/w32/include/dlfcn.h
+++ b/src/w32/include/dlfcn.h
@@ -1,5 +1,5 @@
/* dlfcn.h replacement for MS-Windows build.
-Copyright (C) 2013-2016 Free Software Foundation, Inc.
+Copyright (C) 2013-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/w32/include/pathstuff.h b/src/w32/include/pathstuff.h
index 923dc00..63f4325 100644
--- a/w32/include/pathstuff.h
+++ b/src/w32/include/pathstuff.h
@@ -1,5 +1,5 @@
/* Definitions for Windows path manipulation.
-Copyright (C) 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/w32/include/sub_proc.h b/src/w32/include/sub_proc.h
index 4afa4b4..8ab9353 100644
--- a/w32/include/sub_proc.h
+++ b/src/w32/include/sub_proc.h
@@ -1,5 +1,5 @@
/* Definitions for Windows process invocation.
-Copyright (C) 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -44,8 +44,11 @@ EXTERN_DECL(void process_register, (HANDLE proc));
EXTERN_DECL(HANDLE process_easy, (char** argv, char** env,
int outfd, int errfd));
EXTERN_DECL(BOOL process_kill, (HANDLE proc, int signal));
-EXTERN_DECL(int process_used_slots, (VOID_DECL));
+EXTERN_DECL(BOOL process_table_full, (VOID_DECL));
+EXTERN_DECL(int process_table_usable_size, (VOID_DECL));
+EXTERN_DECL(int process_table_actual_size, (VOID_DECL));
EXTERN_DECL(DWORD process_set_handles, (HANDLE *handles));
+EXTERN_DECL(DWORD process_wait_for_multiple_objects, (DWORD, const HANDLE*, BOOL, DWORD));
/* support routines */
EXTERN_DECL(long process_errno, (HANDLE proc));
@@ -57,6 +60,5 @@ EXTERN_DECL(char * process_errbuf, (HANDLE proc));
EXTERN_DECL(int process_outcnt, (HANDLE proc));
EXTERN_DECL(int process_errcnt, (HANDLE proc));
EXTERN_DECL(void process_pipes, (HANDLE proc, int pipes[3]));
-EXTERN_DECL(void process_noinherit, (int fildes));
#endif
diff --git a/w32/include/w32err.h b/src/w32/include/w32err.h
index b4292f2..f3ca50c 100644
--- a/w32/include/w32err.h
+++ b/src/w32/include/w32err.h
@@ -1,5 +1,5 @@
/* Definitions for Windows error handling.
-Copyright (C) 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/w32/pathstuff.c b/src/w32/pathstuff.c
index 9bd55e6..99b6a3f 100644
--- a/w32/pathstuff.c
+++ b/src/w32/pathstuff.c
@@ -1,5 +1,5 @@
/* Path conversion for Windows pathnames.
-Copyright (C) 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -65,7 +65,7 @@ convert_Path_to_windows32(char *Path, char to_delim)
/* found one to count, handle things like '.' */
*etok = to_delim;
p = ++etok;
- } else if ((*etok == ':') && (etok = strpbrk(etok+1, ":;"))) {
+ } else if ((*etok == ':') && ((etok = strpbrk(etok+1, ":;")) != NULL)) {
/* found one to count, handle drive letter */
*etok = to_delim;
p = ++etok;
diff --git a/w32/subproc/misc.c b/src/w32/subproc/misc.c
index 8b17413..af5567c 100644
--- a/w32/subproc/misc.c
+++ b/src/w32/subproc/misc.c
@@ -1,5 +1,5 @@
/* Process handling for Windows
-Copyright (C) 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -36,10 +36,10 @@ int _cdecl compare(const void *a1, const void *a2)
return _stricoll(*((char**)a1),*((char**)a2));
}
bool_t
-arr2envblk(char **arr, char **envblk_out, int *envsize_needed)
+arr2envblk(char **arr, char **envblk_out, size_t *envsize_needed)
{
char **tmp;
- int size_needed;
+ size_t size_needed;
int arrcnt;
char *ptr;
diff --git a/w32/subproc/proc.h b/src/w32/subproc/proc.h
index 7ccb5ea..d9f6406 100644
--- a/w32/subproc/proc.h
+++ b/src/w32/subproc/proc.h
@@ -1,5 +1,5 @@
/* Definitions for Windows
-Copyright (C) 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -24,6 +24,6 @@ typedef int bool_t;
#define E_NO_MEM 103
#define E_FORK 104
-extern bool_t arr2envblk(char **arr, char **envblk_out, int *envsize_needed);
+extern bool_t arr2envblk(char **arr, char **envblk_out, size_t *envsize_needed);
#endif
diff --git a/w32/subproc/sub_proc.c b/src/w32/subproc/sub_proc.c
index d34e840..c0c4f44 100644
--- a/w32/subproc/sub_proc.c
+++ b/src/w32/subproc/sub_proc.c
@@ -1,5 +1,5 @@
/* Process handling for Windows.
-Copyright (C) 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -14,6 +14,7 @@ A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program. If not, see <http://www.gnu.org/licenses/>. */
+#include <assert.h>
#include <config.h>
#include <stdlib.h>
#include <stdio.h>
@@ -35,6 +36,13 @@ this program. If not, see <http://www.gnu.org/licenses/>. */
#include "proc.h"
#include "w32err.h"
#include "debug.h"
+#include "os.h"
+
+#define GMAKE_MAXIMUM_WAIT_OBJECTS (MAXIMUM_WAIT_OBJECTS * MAXIMUM_WAIT_OBJECTS)
+
+/* We need to move these special-case return codes out-of-band */
+#define GMAKE_WAIT_TIMEOUT 0xFFFF0102L
+#define GMAKE_WAIT_ABANDONED_0 0x00080000L
static char *make_command_line(char *shell_name, char *exec_path, char **argv);
@@ -57,10 +65,72 @@ typedef struct sub_process_t {
} sub_process;
/* keep track of children so we can implement a waitpid-like routine */
-static sub_process *proc_array[MAXIMUM_WAIT_OBJECTS];
-static int proc_index = 0;
-static int fake_exits_pending = 0;
+static sub_process *proc_array[GMAKE_MAXIMUM_WAIT_OBJECTS];
+static unsigned int proc_index = 0;
+static unsigned int fake_exits_pending = 0;
+
+/*
+ * Address the scalability limit intrisic to WaitForMultipleOjects by
+ * calling WaitForMultipleObjects on 64 element chunks of the input
+ * array with 0 timeout. Exit with an appropriately conditioned result
+ * or repeat again every 10 ms if no handle has signaled and the
+ * requested timeout was not zero.
+ */
+DWORD process_wait_for_multiple_objects(
+ DWORD nCount,
+ const HANDLE *lpHandles,
+ BOOL bWaitAll,
+ DWORD dwMilliseconds
+)
+{
+ assert(nCount <= GMAKE_MAXIMUM_WAIT_OBJECTS);
+
+ if (nCount <= MAXIMUM_WAIT_OBJECTS) {
+ DWORD retVal = WaitForMultipleObjects(nCount, lpHandles, bWaitAll, dwMilliseconds);
+ return (retVal == WAIT_TIMEOUT) ? GMAKE_WAIT_TIMEOUT : retVal;
+ } else {
+ for (;;) {
+ DWORD objectCount = nCount;
+ int blockCount = 0;
+ DWORD retVal;
+
+ assert(bWaitAll == FALSE); /* This logic only works for this use case */
+ assert(dwMilliseconds == 0 || dwMilliseconds == INFINITE); /* No support for timeouts */
+
+ for (; objectCount > 0; blockCount++) {
+ DWORD n = objectCount <= MAXIMUM_WAIT_OBJECTS ? objectCount : MAXIMUM_WAIT_OBJECTS;
+ objectCount -= n;
+ retVal = WaitForMultipleObjects(n, &lpHandles[blockCount * MAXIMUM_WAIT_OBJECTS],
+ FALSE, 0);
+ switch (retVal) {
+ case WAIT_TIMEOUT:
+ retVal = GMAKE_WAIT_TIMEOUT;
+ continue;
+ break;
+ case WAIT_FAILED:
+ fprintf(stderr,"WaitForMultipleOjbects failed waiting with error %lu\n", GetLastError());
+ break;
+ default:
+ if (retVal >= WAIT_ABANDONED_0) {
+ assert(retVal < WAIT_ABANDONED_0 + MAXIMUM_WAIT_OBJECTS);
+ retVal += blockCount * MAXIMUM_WAIT_OBJECTS - WAIT_ABANDONED_0 + GMAKE_WAIT_ABANDONED_0;
+ } else {
+ assert(retVal < WAIT_OBJECT_0 + MAXIMUM_WAIT_OBJECTS);
+ retVal += blockCount * MAXIMUM_WAIT_OBJECTS;
+ }
+ break;
+ }
+
+ return retVal;
+ }
+
+ if (dwMilliseconds == 0) return retVal;
+
+ Sleep(10); /* Sleep for 10 ms */
+ }
+ }
+}
/*
* Fill a HANDLE list with handles to wait for.
@@ -69,7 +139,7 @@ DWORD
process_set_handles(HANDLE *handles)
{
DWORD count = 0;
- int i;
+ unsigned int i;
/* Build array of handles to wait for */
for (i = 0; i < proc_index; i++) {
@@ -90,7 +160,7 @@ process_set_handles(HANDLE *handles)
static void
process_adjust_wait_state(sub_process* pproc)
{
- int i;
+ unsigned int i;
if (!proc_index)
return;
@@ -114,9 +184,9 @@ process_adjust_wait_state(sub_process* pproc)
static sub_process *
process_wait_for_any_private(int block, DWORD* pdwWaitStatus)
{
- HANDLE handles[MAXIMUM_WAIT_OBJECTS];
+ HANDLE handles[GMAKE_MAXIMUM_WAIT_OBJECTS];
DWORD retval, which;
- int i;
+ unsigned int i;
if (!proc_index)
return NULL;
@@ -131,7 +201,7 @@ process_wait_for_any_private(int block, DWORD* pdwWaitStatus)
/* wait for someone to exit */
if (!fake_exits_pending) {
- retval = WaitForMultipleObjects(proc_index, handles, FALSE, (block ? INFINITE : 0));
+ retval = process_wait_for_multiple_objects(proc_index, handles, FALSE, (block ? INFINITE : 0));
which = retval - WAIT_OBJECT_0;
} else {
fake_exits_pending--;
@@ -141,10 +211,10 @@ process_wait_for_any_private(int block, DWORD* pdwWaitStatus)
/* If the pointer is not NULL, set the wait status result variable. */
if (pdwWaitStatus)
- *pdwWaitStatus = retval;
+ *pdwWaitStatus = (retval == GMAKE_WAIT_TIMEOUT) ? WAIT_TIMEOUT : retval;
/* return pointer to process */
- if ((retval == WAIT_TIMEOUT) || (retval == WAIT_FAILED)) {
+ if ((retval == GMAKE_WAIT_TIMEOUT) || (retval == WAIT_FAILED)) {
return NULL;
}
else {
@@ -166,25 +236,47 @@ process_kill(HANDLE proc, int signal)
}
/*
- * Use this function to register processes you wish to wait for by
- * calling process_file_io(NULL) or process_wait_any(). This must be done
- * because it is possible for callers of this library to reuse the same
- * handle for multiple processes launches :-(
+ * Returns true when we have no more available slots in our process table.
*/
-void
-process_register(HANDLE proc)
+BOOL
+process_table_full()
{
- if (proc_index < MAXIMUM_WAIT_OBJECTS)
- proc_array[proc_index++] = (sub_process *) proc;
+ extern int shell_function_pid;
+
+ /* Reserve slots for jobserver_semaphore if we have one and the shell function if not active */
+ return(proc_index >= GMAKE_MAXIMUM_WAIT_OBJECTS - jobserver_enabled() - (shell_function_pid == 0));
+}
+
+/*
+ * Returns the maximum number of job slots we can support when using the jobserver.
+ */
+int
+process_table_usable_size()
+{
+ /* Reserve slots for jobserver_semaphore and shell function */
+ return(GMAKE_MAXIMUM_WAIT_OBJECTS - 2);
}
/*
- * Return the number of processes that we are still waiting for.
+ * Returns the actual size of the process table.
*/
int
-process_used_slots(void)
+process_table_actual_size()
{
- return proc_index;
+ return(GMAKE_MAXIMUM_WAIT_OBJECTS);
+}
+
+/*
+ * Use this function to register processes you wish to wait for by
+ * calling process_file_io(NULL) or process_wait_any(). This must be done
+ * because it is possible for callers of this library to reuse the same
+ * handle for multiple processes launches :-(
+ */
+void
+process_register(HANDLE proc)
+{
+ assert(proc_index < GMAKE_MAXIMUM_WAIT_OBJECTS);
+ proc_array[proc_index++] = (sub_process *) proc;
}
/*
@@ -247,15 +339,6 @@ process_exit_code(HANDLE proc)
return (((sub_process *)proc)->exit_code);
}
-void
-process_noinherit(int fd)
-{
- HANDLE fh = (HANDLE)_get_osfhandle(fd);
-
- if (fh && fh != INVALID_HANDLE_VALUE)
- SetHandleInformation(fh, HANDLE_FLAG_INHERIT, 0);
-}
-
/*
2006-02:
All the following functions are currently unused.
@@ -329,9 +412,9 @@ process_init()
inherit.lpSecurityDescriptor = (PSECURITY_DESCRIPTOR)(&sd);
inherit.bInheritHandle = TRUE;
- // By convention, parent gets pipe[0], and child gets pipe[1]
- // This means the READ side of stdin pipe goes into pipe[1]
- // and the WRITE side of the stdout and stderr pipes go into pipe[1]
+ /* By convention, parent gets pipe[0], and child gets pipe[1].
+ This means the READ side of stdin pipe goes into pipe[1] and the
+ WRITE side of the stdout and stderr pipes go into pipe[1]. */
if (CreatePipe( &stdin_pipes[1], &stdin_pipes[0], &inherit, 0) == FALSE ||
CreatePipe( &stdout_pipes[0], &stdout_pipes[1], &inherit, 0) == FALSE ||
CreatePipe( &stderr_pipes[0], &stderr_pipes[1], &inherit, 0) == FALSE) {
@@ -341,9 +424,7 @@ process_init()
return((HANDLE)pproc);
}
- //
- // Mark the parent sides of the pipes as non-inheritable
- //
+ /* Mark the parent sides of the pipes as non-inheritable. */
if (SetHandleInformation(stdin_pipes[0],
HANDLE_FLAG_INHERIT, 0) == FALSE ||
SetHandleInformation(stdout_pipes[0],
@@ -495,7 +576,7 @@ process_begin(
STARTUPINFO startInfo;
PROCESS_INFORMATION procInfo;
char *envblk=NULL;
- int envsize_needed = 0;
+ size_t envsize_needed = 0;
int pass_null_exec_path = 0;
/*
@@ -532,7 +613,7 @@ process_begin(
if (exec_path[0] == '/') {
char *new_argv0;
char **argvi = argv;
- int arglen = 0;
+ size_t arglen = 0;
strcpy(buf, variable_expand ("$(SHELL)"));
shell_name = &buf[0];
@@ -625,7 +706,8 @@ process_begin(
&& _stricmp(exec_path, argv[0]) == 0) {
char *new_argv, *p;
char **argvi;
- int arglen, i;
+ size_t arglen;
+ int i;
pass_null_exec_path = 1;
/* Rewrite argv[] replacing argv[0] with exec_fname. */
for (argvi = argv + 1, arglen = strlen(exec_fname) + 1;
@@ -660,7 +742,7 @@ process_begin(
if ((pproc->last_err == ERROR_INVALID_PARAMETER
|| pproc->last_err == ERROR_MORE_DATA)
&& envsize_needed > 32*1024) {
- fprintf (stderr, "CreateProcess failed, probably because environment is too large (%d bytes).\n",
+ fprintf (stderr, "CreateProcess failed, probably because environment is too large (%Iu bytes).\n",
envsize_needed);
}
pproc->last_err = 0;
@@ -748,8 +830,8 @@ proc_stdin_thread(sub_process *pproc)
if (WriteFile( (HANDLE) pproc->sv_stdin[0], pproc->inp, pproc->incnt,
&in_done, NULL) == FALSE)
_endthreadex(0);
- // This if should never be true for anonymous pipes, but gives
- // us a chance to change I/O mechanisms later
+ /* This if should never be true for anonymous pipes, but gives
+ us a chance to change I/O mechanisms later. */
if (in_done < pproc->incnt) {
pproc->incnt -= in_done;
pproc->inp += in_done;
@@ -757,7 +839,7 @@ proc_stdin_thread(sub_process *pproc)
_endthreadex(0);
}
}
- return 0; // for compiler warnings only.. not reached
+ return 0; /* for compiler warnings only.. not reached. */
}
static DWORD
@@ -1103,7 +1185,7 @@ process_cleanup(
*
* Returns: the buffer or NULL for failure
* Shell case: sh_name a:/full/path/to/script argv[1] argv[2] ...
- * Otherwise: argv[0] argv[1] argv[2] ...
+ * Otherwise: argv[0] argv[1] argv[2] ...
*
* Notes/Dependencies:
* CreateProcess does not take an argv, so this command creates a
@@ -1113,22 +1195,22 @@ process_cleanup(
static char *
make_command_line( char *shell_name, char *full_exec_path, char **argv)
{
- int argc = 0;
- char** argvi;
- int* enclose_in_quotes = NULL;
- int* enclose_in_quotes_i;
- unsigned int bytes_required = 0;
- char* command_line;
- char* command_line_i;
- int cygwin_mode = 0; /* HAVE_CYGWIN_SHELL */
+ int argc = 0;
+ char** argvi;
+ int* enclose_in_quotes = NULL;
+ int* enclose_in_quotes_i;
+ size_t bytes_required = 0;
+ char* command_line;
+ char* command_line_i;
int have_sh = 0; /* HAVE_CYGWIN_SHELL */
+ int cygwin_mode = 0; /* HAVE_CYGWIN_SHELL */
#ifdef HAVE_CYGWIN_SHELL
- have_sh = (shell_name != NULL || strstr(full_exec_path, "sh.exe"));
cygwin_mode = 1;
#endif
if (shell_name && full_exec_path) {
+ have_sh = cygwin_mode && strstr(full_exec_path, "sh.exe");
bytes_required
= strlen(shell_name) + 1 + strlen(full_exec_path);
/*
@@ -1362,7 +1444,7 @@ process_easy(
HANDLE hProcess, tmpIn, tmpOut, tmpErr;
DWORD e;
- if (proc_index >= MAXIMUM_WAIT_OBJECTS) {
+ if (process_table_full()) {
DB (DB_JOBS, ("process_easy: All process slots used up\n"));
return INVALID_HANDLE_VALUE;
}
diff --git a/w32/subproc/w32err.c b/src/w32/subproc/w32err.c
index 14eebed..5ae3043 100644
--- a/w32/subproc/w32err.c
+++ b/src/w32/subproc/w32err.c
@@ -1,5 +1,5 @@
/* Error handling for Windows
-Copyright (C) 1996-2016 Free Software Foundation, Inc.
+Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/w32/w32os.c b/src/w32/w32os.c
index 533b910..fe74811 100644
--- a/w32/w32os.c
+++ b/src/w32/w32os.c
@@ -1,5 +1,5 @@
/* Windows32-based operating system interface for GNU Make.
-Copyright (C) 2016 Free Software Foundation, Inc.
+Copyright (C) 2016-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
@@ -36,13 +36,11 @@ static HANDLE jobserver_semaphore = NULL;
unsigned int
jobserver_setup (int slots)
{
- /* sub_proc.c cannot wait for more than MAXIMUM_WAIT_OBJECTS objects
- * and one of them is the job-server semaphore object. Limit the
- * number of available job slots to (MAXIMUM_WAIT_OBJECTS - 1). */
+ /* sub_proc.c is limited in the number of objects it can wait for. */
- if (slots >= MAXIMUM_WAIT_OBJECTS)
+ if (slots > process_table_usable_size())
{
- slots = MAXIMUM_WAIT_OBJECTS - 1;
+ slots = process_table_usable_size();
DB (DB_JOBS, (_("Jobserver slots limited to %d\n"), slots));
}
@@ -168,22 +166,26 @@ jobserver_pre_acquire ()
unsigned int
jobserver_acquire (int timeout)
{
- HANDLE handles[MAXIMUM_WAIT_OBJECTS];
+ HANDLE *handles;
DWORD dwHandleCount;
DWORD dwEvent;
+ handles = xmalloc(process_table_actual_size() * sizeof(HANDLE));
+
/* Add jobserver semaphore to first slot. */
handles[0] = jobserver_semaphore;
/* Build array of handles to wait for. */
dwHandleCount = 1 + process_set_handles (&handles[1]);
- dwEvent = WaitForMultipleObjects (
+ dwEvent = process_wait_for_multiple_objects (
dwHandleCount, /* number of objects in array */
handles, /* array of objects */
FALSE, /* wait for any object */
INFINITE); /* wait until object is signalled */
+ free(handles);
+
if (dwEvent == WAIT_FAILED)
{
DWORD err = GetLastError ();
@@ -196,3 +198,21 @@ jobserver_acquire (int timeout)
/* WAIT_OBJECT_0 indicates that the semaphore was signalled. */
return dwEvent == WAIT_OBJECT_0;
}
+
+void
+fd_inherit(int fd)
+{
+ HANDLE fh = (HANDLE)_get_osfhandle(fd);
+
+ if (fh && fh != INVALID_HANDLE_VALUE)
+ SetHandleInformation(fh, HANDLE_FLAG_INHERIT, 1);
+}
+
+void
+fd_noinherit(int fd)
+{
+ HANDLE fh = (HANDLE)_get_osfhandle(fd);
+
+ if (fh && fh != INVALID_HANDLE_VALUE)
+ SetHandleInformation(fh, HANDLE_FLAG_INHERIT, 0);
+}
diff --git a/tests/COPYING b/tests/COPYING
deleted file mode 100644
index 94a9ed0..0000000
--- a/tests/COPYING
+++ /dev/null
@@ -1,674 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- <program> Copyright (C) <year> <name of author>
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/tests/ChangeLog.1 b/tests/ChangeLog.1
deleted file mode 100644
index 684af03..0000000
--- a/tests/ChangeLog.1
+++ /dev/null
@@ -1,1429 +0,0 @@
-2013-10-09 Paul Smith <psmith@gnu.org>
-
- * scripts/features/patspecific_vars: Typo fixes.
-
-2013-10-05 Paul Smith <psmith@gnu.org>
-
- * test_driver.pl (run_all_tests): Rewrite to be more clear.
- * scripts/features/jobserver: Avoid using $ENV{HOME} as it doesn't
- exist everywhere.
- * scripts/features/default_names: End with 1;
-
- * scripts/features/loadapi: Use new calling signatures. Verify
- the NOEXPAND flag works. Test with all valid function name
- characters.
-
-2013-09-29 Paul Smith <psmith@gnu.org>
-
- * scripts/variables/SHELL: Solaris /bin/sh can't handle options in
- multiple words; skip that test.
- * scripts/targets/ONESHELL: Ditto.
-
- * scripts/variables/GNUMAKEFLAGS: Verify that GNUMAKEFLAGS is
- cleared and options are not duplicated.
-
-2013-09-23 Paul Smith <psmith@gnu.org>
-
- * scripts/options/print-directory: Rename dash-w to
- print-directory to avoid conflicts with dash-W on case-insensitive
- filesystems.
-
-2013-09-22 Paul Smith <psmith@gnu.org>
-
- * scripts/features/se_implicit: Verify that order-only tokens
- inside second expansion are parsed correctly.
- Test for Savannah bug #31155.
-
- * run_make_tests.pl (set_more_defaults): If we can't find
- gnumake.h based on the make program we might be running from a
- remote build directory. Parse the Makefile for the right path.
-
- Fix some test issues on Solaris.
-
- * scripts/features/archives: Determine what output ar gives when
- adding and replacing objects and compare with that.
- * scripts/features/escape: Solaris /bin/sh doesn't properly handle
- backslashes inside single quotes, so don't rely on it.
- * scripts/features/output-sync: false(1) gives different exit
- codes on different systems; use "exit 1" instead.
- * scripts/features/parallelism: Increase the timeout for slower systems.
-
-2013-09-21 Paul Smith <psmith@gnu.org>
-
- * scripts/features/archives: Some versions of ar (MacOSX) generate
- different output when creating archives. Run it and verify the
- real output.
- * scripts/features/default_names: MacOSX is, like Windows,
- case-preserving / case-insensitive. Redo the test to avoid
- checking for "UNIX".
- * test_driver.pl (attach_default_output): Don't dup stdout into
- stderr. Reported by Denis Excoffier <bug-tar@Denis-Excoffier.org>
-
- * scripts/features/se_explicit: Fix a test that behaves
- differently with/without archive capability enabled.
- * scripts/features/output-sync: Don't test output-sync if it's not
- enabled. We also skip it if parallelism is not enabled, although
- strictly speaking some of the output-sync tests are valid even
- without parallelism.
- * scripts/features/jobserver: Move some tests that require the
- jobserver from features/parallelism to a separate suite. Only run
- this if jobserver mode is enabled.
-
- * scripts/features/output-sync: Test shell functions writing to
- stderr in recipes: ensure it's captured via output-sync. Test
- output generated while reading makefiles and make sure it's
- captured via output-sync. Make sure that fatal errors dump the
- output so it's not lost.
-
- * scripts/options/dash-w: Add a test for -w flag.
-
-2013-09-15 Paul Smith <psmith@gnu.org>
-
- * scripts/misc/fopen-fail: Check for failure on infinite recursion.
- * run_make_tests.pl (run_make_test): Allow the answer string to be
- undef, which means that we shouldn't compare it at all. Only the
- exit code matters in this case.
- * test_driver.pl (compare_output): Ditto.
- Test for Savannah bug #27374.
-
- * scripts/features/parallelism: Test broken jobserver on recursion.
- Test for Savannah bug #39934.
-
- * scripts/options/eval: Verify --eval during restart.
- Test for Savannah bug #39203.
-
-2013-09-14 Paul Smith <psmith@gnu.org>
-
- * scripts/features/output-sync: Verify -Orecurse properly.
-
-2013-09-12 Paul Smith <psmith@gnu.org>
-
- * scripts/features/output-sync: Modify for output sync behavior.
- * scripts/variables/MAKE_RESTARTS: Ditto.
- * scripts/variables/MAKEFLAGS: Remove mode for --trace.
- * scripts/variables/GNUMAKEFLAGS: Ditto.
-
-2013-07-22 Paul Smith <psmith@gnu.org>
-
- * scripts/features/rule_glob: Add tests for wildcards in rules.
- Test for Savannah bug #39310.
-
-2013-07-09 Paul Smith <psmith@gnu.org>
-
- * scripts/features/se_implicit: Add a test for SE rules depending
- on other SE rules to be built.
-
-2013-05-26 Paul Smith <psmith@gnu.org>
-
- * scripts/features/archives: Test for Savannah bug #38442.
-
- * scripts/misc/bs-nl: Test for Savannah bug #39035.
- Add a test for Savannah bug #38945.
-
-2013-05-22 Paul Smith <psmith@gnu.org>
-
- * scripts/options/dash-n: Fix results after MAKEFLAGS fixes.
- * scripts/variables/MAKEFLAGS: Ditto.
- * scripts/variables/GNUMAKEFLAGS: Ditto.
-
-2013-05-14 Paul Smith <psmith@gnu.org>
-
- * scripts/features/loadapi: Add plugin_is_GPL_compatible symbol.
- * scripts/features/load: Ditto.
-
-2013-05-13 Paul Smith <psmith@gnu.org>
-
- * scripts/features/output-sync (output_sync_set): Update for new
- --trace behavior.
-
-2013-05-05 Paul Smith <psmith@gnu.org>
-
- * scripts/features/output-sync (output_sync_set): Remove
- extraneous enter/leave lines, which are no longer printed.
- Add tests for syncing command line printing.
- (output_sync_set): Rename options: "job"->"line"; "make"->"recurse"
-
-2013-05-04 Paul Smith <psmith@gnu.org>
-
- * scripts/features/loadapi: Use the new alloc functions.
-
- * scripts/features/output-sync (output_sync_set): New test for
- ordered recursive output for -Ojob / -Otarget.
-
-2013-05-03 Eli Zaretskii <eliz@gnu.org>
-
- * scripts/features/load: Fix signatures of testload_gmk_setup and
- explicit_setup, to bring them in line with the documentation.
-
-2013-04-28 Paul Smith <psmith@gnu.org>
-
- * scripts/features/output-sync (output_sync_set): Add tests for
- the per-job syntax mode.
- (output_sync_set): Test improved error message location.
-
-2013-04-15 Paul Smith <psmith@gnu.org>
-
- * scripts/features/output-sync (output_sync_set): New arg syntax.
-
-2013-04-14 Paul Smith <psmith@gnu.org>
-
- * scripts/features/output-sync: Rewrite to be more reliable.
-
- * test_driver.pl (_run_command): Don't set SIGALRM until after we
- start the child. Print errors to the top-level output, which will
- be stderr.
- (attach_default_output): Use a list of file handles as the stack.
- (detach_default_output): Ditto.
-
- * scripts/features/output-sync: Add a test for output-sync.
-
-2013-02-25 Paul Smith <psmith@gnu.org>
-
- * run_make_tests.pl (valid_option): Support the -srcdir flag.
- (set_more_defaults): Set up $srcdir if it's not set yet.
-
- * scripts/functions/guile: Verify gmk-eval doesn't expand twice.
- * scripts/features/load: Rework to test just the load capability.
- * scripts/features/loadapi: New set of tests for the load API.
-
-2013-01-19 Paul Smith <psmith@gnu.org>
-
- * scripts/features/load: Test loaded files with and without "./"
- prefix. Add tests for automatically rebuilding loaded files if
- they are out of date or non-existent.
-
-2013-01-13 Paul Smith <psmith@gnu.org>
-
- * scripts/features/archives: Add a check targets that have parens,
- but are not archives. See Savannah bug #37878.
-
- * scripts/options/dash-n: Verify -n is preserved after recursive /
- re-exec. See Savannah bug #38051.
-
-2013-01-12 Paul Smith <psmith@gnu.org>
-
- * scripts/features/parallelism: Change rule so it doesn't depend
- on invocation order, etc.
-
-2012-10-29 Paul Smith <psmith@gnu.org>
-
- * scripts/features/load: New test suite for the "load" directive.
-
-2012-09-09 Paul Smith <psmith@gnu.org>
-
- * scripts/functions/file: Get errors in the C locale, not the
- current locale. Fixes Savannah bug #35764.
-
- * scripts/features/escape: Check that backslashes before
- non-special characters are not removed.
-
- * scripts/features/utf8: New test for UTF-8 support.
- See Savannah bug #36529.
-
- * scripts/targets/POSIX: Add tests for default macro values as
- specified by IEEE Std 1003.1-2008. See Savannah bug #37069.
-
-2012-03-04 Paul Smith <psmith@gnu.org>
-
- * scripts/features/se_explicit: Test $(x:%=%) format in secondary
- expansion prerequisite lists. See Savannah bug #16545.
-
- * scripts/features/escape: Test escaped ":" in prerequisite lists.
- See Savannah bug #12126.
-
- * scripts/variables/private: Test appending private variables in
- pattern-specific target rules. See Savannah bug #35468.
-
-2012-03-03 Paul Smith <psmith@gnu.org>
-
- * scripts/variables/SHELL: Ensure .SHELLFLAGS works with options
- separated by whitespace.
-
- * scripts/targets/ONESHELL: Try .ONESHELL in combination with
- whitespace-separated options in .SHELLFLAGS. See Savannah bug #35397.
-
- * scripts/functions/filter-out: Add filter tests and test escape
- operations. See Savannah bug #35410.
-
- * guile.supp: Suppress valgrind errors from Guile
- * run_make_tests.pl: Use the Guile suppression file.
-
- * scripts/misc/bs-nl: Check for POSIX and non-POSIX
- backslash/newline handling. Addresses Savannah bug #16670.
-
-2012-01-29 Paul Smith <psmith@gnu.org>
-
- * scripts/variables/flavors: Add tests for ::=
- * scripts/variables/define: Ditto
-
- * scripts/functions/file: Test the new $(file ...) function.
-
-2012-01-12 Paul Smith <psmith@gnu.org>
-
- * scripts/functions/guile: New regression tests for Guile support.
-
-2011-12-10 Paul Smith <psmith@gnu.org>
-
- * scripts/targets/SECONDARY: Add prereq statements to ensure rules
- are printed in the right order for test #9
-
-2011-11-14 Paul Smith <psmith@gnu.org>
-
- * scripts/features/double_colon: Check double-colon with escaped
- filenames. See Savannah bug #33399.
-
-2011-09-18 Paul Smith <psmith@gnu.org>
-
- * scripts/features/parallelism: On re-exec make sure we preserve
- the value of MAKEFLAGS when necessary. See Savannah bug #33873.
-
- * scripts/features/vpath3: Verify handling of -lfoo libraries
- found via vpath vs. the standard directory search.
- See Savannah bug #32511.
-
-2011-09-12 Paul Smith <psmith@gnu.org>
-
- * scripts/functions/call: Verify that using export in a $(call ...)
- context creates a global variable. See Savannah bug #32498.
-
-2011-09-02 Paul Smith <psmith@gnu.org>
-
- * scripts/options/dash-n: Verify that in "-n -t", the -n takes
- priority. Patch from Michael Witten <mfwitten@gmail.com>.
-
-2011-08-29 Paul Smith <psmith@gnu.org>
-
- * scripts/features/varnesting: Test resetting of variables while
- expanding them. See Savannah patch #7534
-
-2011-06-12 Paul Smith <psmith@gnu.org>
-
- * scripts/features/archives: Check archives with whitespace at the
- beginning, end, and extra in the middle.
- Another test for Savannah bug #30612.
-
-2011-05-07 Paul Smith <psmith@gnu.org>
-
- * scripts/variables/private: Ensure we skip private variables when
- appending. Test for Savannah bug #32872.
-
- * scripts/functions/wildcard: Verify wildcard used to test for
- file existence/non-existence.
-
-2011-05-02 Paul Smith <psmith@gnu.org>
-
- * scripts/functions/sort: Add a test for Savannah bug #33125.
-
-2011-04-17 David A. Wheeler <dwheeler@dwheeler.com>
-
- * scripts/features/shell_assignment: Regression for "!=" feature
-
-2010-11-06 Paul Smith <psmith@gnu.org>
-
- * scripts/features/targetvars: Fix known-good output for BS/NL changes.
- * scripts/functions/call: Ditto.
- * scripts/variables/special: Ditto.
-
- * scripts/misc/bs-nl: New test suite for backslash/newline testing.
-
-2010-08-29 Paul Smith <psmith@gnu.org>
-
- * scripts/features/errors: Add new error message to output text.
- * scripts/variables/SHELL: Ditto.
- * scripts/targets/POSIX: Ditto.
- * scripts/options/dash-k: Ditto.
- * scripts/features/vpathplus: Ditto.
- * scripts/features/patternrules: Ditto.
- * scripts/features/parallelism: Ditto.
-
-2010-08-13 Paul Smith <psmith@gnu.org>
-
- * scripts/features/archives: New regression tests for archive
- support. Test for fix to Savannah bug #30612.
-
- * run_make_tests.pl (set_more_defaults): Set a %FEATURES hash to
- the features available in $(.FEATURES).
-
-2010-08-10 Paul Smith <psmith@gnu.org>
-
- * scripts/features/reinvoke: Ensure command line variable settings
- are preserved across make re-exec. Tests Savannah bug #30723.
-
-2010-07-28 Paul Smith <psmith@gnu.org>
-
- * scripts/targets/POSIX: Compatibility issues with Solaris (and
- Tru64?); "false" returns different exit codes, and set -x shows
- output with extra whitespace. Run the commands by hand first to
- find out what the real shell would do, then compare what make does.
- * scripts/variables/SHELL: Ditto.
-
-2010-07-12 Paul Smith <psmith@gnu.org>
-
- * test_driver.pl: Add a new $perl_name containing the path to Perl.
- * run_make_tests.pl (run_make_test): Replace the special string
- #PERL# in a makefile etc. with the path the Perl executable so
- makefiles can use it.
-
- * scripts/targets/ONESHELL: Add a new set of regression tests for
- the .ONESHELL feature.
-
-2010-07-06 Paul Smith <psmith@gnu.org>
-
- * scripts/variables/SHELL: Test the new .SHELLFLAGS variable.
-
- * scripts/targets/POSIX: New file. Test the .POSIX special target.
- Verify that enabling .POSIX changes the shell flags to set -e.
-
-2010-07-01 Paul Smith <psmith@gnu.org>
-
- * scripts/features/recursion: Add a space to separate command-line
- args. Fixes Savannah bug #29968.
-
-2009-11-12 Boris Kolpackov <boris@codesynthesis.com>
-
- * scripts/features/vpath3: Test for the new library search
- behavior.
-
-2009-10-06 Boris Kolpackov <boris@codesynthesis.com>
-
- * scripts/features/se_explicit: Enable the test for now fixed
- Savannah bug 25780.
-
-2009-10-06 Boris Kolpackov <boris@codesynthesis.com>
-
- * scripts/variables/undefine: Tests for the new undefine feature.
-
-2009-10-03 Paul Smith <psmith@gnu.org>
-
- * scripts/features/parallelism: Test for open Savannah bug #26846.
-
- * scripts/variables/MAKE: Rewrite for new run_make_test() format.
-
- * scripts/variables/MAKEFLAGS: Created.
- Add test for Savannah bug #2216 (still open).
-
- * scripts/features/include: Test for Savannah bug #102 (still open).
-
-2009-09-30 Boris Kolpackov <boris@codesynthesis.com>
-
- * scripts/features/include: Add diagnostics issuing tests for
- cases where targets have been updated and failed with the
- dontcare flag. Savannah bugs #15110, #25493, #12686, #17740.
-
-2009-09-28 Paul Smith <psmith@gnu.org>
-
- * scripts/functions/shell: Add regression test for Savannah bug
- #20513 (still open).
-
- * scripts/features/se_explicit: Add regression tests for Savannah
- bug #25780 (still open).
-
- * run_make_tests.pl (valid_option): Add a new flag, -all([-_]?tests)?
- that runs tests we know will fail. This allows us to add
- regression tests to the test suite for bugs that haven't been
- fixed yet.
-
-2009-09-28 Boris Kolpackov <boris@codesynthesis.com>
-
- * scripts/features/patspecific_vars: Add a test for the shortest
- stem first order.
-
- * scripts/features/patternrules: Add a test for the shortest stem
- first order.
-
-2009-09-24 Paul Smith <psmith@gnu.org>
-
- * scripts/features/se_implicit: Add a test for order-only
- secondary expansion prerequisites.
-
-2009-09-23 Paul Smith <psmith@gnu.org>
-
- * scripts/features/patternrules: Test that we can remove pattern
- rules, both single and multiple prerequisites. Savannah bug #18622.
-
- * scripts/features/echoing: Rework for run_make_test().
-
-2009-06-14 Paul Smith <psmith@gnu.org>
-
- * scripts/features/vpath: Verify we don't get bogus circular
- dependency warnings if we choose a different file via vpath during
- update. Savannah bug #13529.
-
-2009-06-13 Paul Smith <psmith@gnu.org>
-
- * scripts/variables/MAKEFILES: Verify that MAKEFILES included
- files (and files included by them) don't set the default goal.
- Savannah bug #13401.
-
- * scripts/functions/wildcard: Test that wildcards with
- non-existent glob matchers return empty.
-
-2009-06-09 Paul Smith <psmith@gnu.org>
-
- * scripts/options/dash-B: Test the $? works correctly with -B.
- Savannah bug #17825.
-
- * scripts/features/patternrules: Test that dependencies of
- "also_make" targets are created properly. Savannah bug #19108.
-
- * test_driver.pl (compare_output): Create a "run" file for failed
- tests containing the command that was run.
- (get_runfile): New function.
-
- * run_make_tests.pl (valid_option): Enhanced support for valgrind:
- allow memcheck and massif tools.
-
- * scripts/features/patternrules: Have to comment out a line in the
- first test due to backing out a change that broke the implicit
- rule search algorithm. Savannah bug #17752.
- * scripts/misc/general4: Remove a test that is redundant with
- patternrules.
-
- * scripts/features/parallelism: Add a test for re-exec with
- jobserver master override. Savannah bug #18124.
-
-2009-06-08 Paul Smith <psmith@gnu.org>
-
- * scripts/features/targetvars: Add a test for continued target
- vars after a semicolon. Savannah bug #17521.
-
-2009-06-07 Paul Smith <psmith@gnu.org>
-
- * scripts/features/se_explicit: Make sure we catch defining
- prereqs during snap_deps(). Savannah bug #24622.
-
- * scripts/variables/automatic: Check prereq ordering when the
- target with the recipe has no prereqs. Savannah bug #21198.
-
- * scripts/variables/LIBPATTERNS: Add a new set of test for
- $(.LIBPATTERNS) (previously untested!)
-
-2009-06-04 Paul Smith <psmith@gnu.org>
-
- * scripts/variables/SHELL: The export target-specific SHELL test
- has an incorrect known-good-value.
-
- * scripts/misc/general4: Check for whitespace (ffeed, vtab, etc.)
-
- * scripts/features/se_explicit: Add tests for Savannah bug #24588.
-
-2009-05-31 Paul Smith <psmith@gnu.org>
-
- * scripts/variables/DEFAULT_GOAL: Add tests for Savannah bug #25697.
-
- * scripts/features/targetvars: Add tests of overrides for Savannah
- bug #26207.
- * scripts/features/patspecific_vars: Ditto.
-
- * scripts/features/patternrules: Add a test for Savannah bug #26593.
-
-2009-05-30 Paul Smith <psmith@gnu.org>
-
- * scripts/variables/flavors: Update with new variable flavor tests.
- * scripts/variables/define: Create a new set of tests for
- define/endef and move those aspects of the flavors suite here.
-
-2009-05-25 Paul Smith <psmith@gnu.org>
-
- * scripts/features/targetvars: Ditto.
-
- * scripts/features/export: Test new variable parsing abilities.
-
-2009-02-23 Ramon Garcia <ramon.garcia.f@gmail.com>
-
- * scripts/variables/private: Create a new suite of tests for 'private'.
-
-2007-11-04 Paul Smith <psmith@gnu.org>
-
- * scripts/functions/eval: Update error message for command -> recipe.
-
- * test_driver.pl (compare_output): Allow the answer to be a regex,
- if surrounded by '/'.
- * scripts/misc/close_stdout: Use a regex for the answer, since
- sometimes the error will have a description and sometimes it won't.
-
-2007-09-10 Paul Smith <psmith@gnu.org>
-
- * scripts/variables/special: Add tests for .RECIPEPREFIX variable.
-
-2007-08-15 Paul Smith <psmith@gnu.org>
-
- These test cases were contributed by
- Icarus Sparry <savannah@icarus.freeuk.com> and J. David Bryan for
- Savannah bugs #3330 and #15919.
-
- * scripts/targets/SECONDARY: Add tests for Savannah bugs 3330 and
- 15919.
-
- * scripts/features/parallelism: Add tests for wrong answer/hang
- combining INTERMEDIATE, order-only prereqs, and parallelism.
- See Savannah bugs 3330 and 15919.
-
-2007-07-13 Paul Smith <psmith@gnu.org>
-
- Install a timeout so tests can never loop infinitely.
- Original idea and patch for a single-test version provided by
- Icarus Sparry <savannah@icarus.freeuk.com>
-
- * test_driver.pl (_run_command): New function: this is called by
- other functions to actually run a command. Before we run it,
- install a SIGALRM handler and set up a timer to go off in the
- future (default is 5s; this can be overridden by individual tests).
- (run_command): Call it.
- (run_command_with_output): Call it.
-
- * run_make_tests.pl (run_make_with_options): Override the default
- timeout if the caller requests it.
- (run_make_test): Pass any timeout override to run_make_with_options.
-
- * scripts/features/parallelism: Increase the timeout for long tests.
- * scripts/options/dash-l: Ditto.
-
-2006-10-01 Paul Smith <psmith@paulandlesley.org>
-
- * run_make_tests.pl (set_more_defaults): Remove setting of LANG in
- ENV here. This doesn't always work.
- * test_driver.pl (toplevel): Set LC_ALL to 'C' in the make
- environment. Fixes Savannah bug #16698.
-
-2006-09-30 Paul Smith <psmith@paulandlesley.org>
-
- * scripts/variables/automatic: Add back the test for bug #8154.
-
-2006-04-01 Paul D. Smith <psmith@gnu.org>
-
- * scripts/functions/realpath: Don't run tests with multiple
- initial slashes on Windows: those paths mean something different.
-
-2006-03-19 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/parallelism: Test that the jobserver is
- properly managed when we have to re-exec the master instance of
- make.
-
-2006-03-17 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/features/statipattrules: Add tests for bug #16053.
-
-2006-03-09 Paul Smith <psmith@gnu.org>
-
- * scripts/features/escape: Use "pre:" not "p:" to avoid conflicts
- with DOS drive letters. Fixes Savannah bug #15947.
-
- * test_driver.pl (run_each_test): Set the status properly even
- when a test fails to execute. Fixes Savannah bug #15942.
-
- * scripts/functions/foreach: Use a different environment variable
- other than PATH to avoid differences with Windows platforms.
- Fixes Savannah bug #15938.
-
-2006-03-05 Paul D. Smith <psmith@gnu.org>
-
- * run_make_tests.pl (set_more_defaults): Add CYGWIN_NT as a port
- type W32. Fixed Savannah bug #15937.
-
- * scripts/features/default_names: Don't call error() when the test
- fails. Fixes Savannah bug #15941.
-
-2006-02-17 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/targetvars: Test a complex construction which
- guarantees that we have to merge variable lists of different
- sizes. Tests for Savannah bug #15757.
-
-2006-02-15 Paul D. Smith <psmith@gnu.org>
-
- * scripts/functions/error: Make sure filename/lineno information
- is related to where the error is expanded, not where it's set.
- * scripts/functions/warning: Ditto.
- * scripts/functions/foreach: Check for different error conditions.
- * scripts/functions/word: Ditto.
- * scripts/variables/negative: Test some variable reference failure
- conditions.
- * scripts/options/warn-undefined-variables: Test the
- --warn-undefined-variables flag.
-
-2006-02-09 Paul D. Smith <psmith@gnu.org>
-
- * run_make_tests.pl (set_more_defaults): Update valgrind support
- for newer versions.
- * test_driver.pl (toplevel): Skip all hidden files/directories (ones
- beginning with ".").
-
- * scripts/functions/andor: Tests for $(and ...) and $(or ...)
- functions.
-
-2006-02-08 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/features/parallelism: Add a test for bug #15641.
-
-2006-02-06 Paul D. Smith <psmith@gnu.org>
-
- * scripts/options/dash-W: Add a test for bug #15341.
-
-2006-01-03 Paul D. Smith <psmith@gnu.org>
-
- * scripts/variables/automatic: Add a test for bug #8154.
-
- * README: Update to reflect the current state of the test suite.
-
-2005-12-12 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/parallelism, scripts/functions/wildcard,
- scripts/targets/FORCE, scripts/targets/PHONY,
- scripts/targets/SILENT: Use the default setting for
- $delete_command. Fixes bug #15085.
-
- * run_make_tests.pl (get_this_pwd) [VMS]: Use -no_ask with delete_file.
-
-2005-12-11 Paul D. Smith <psmith@gnu.org>
-
- * scripts/misc/general4: Test implicit rules with '$' in the
- prereq list & prereq patterns.
- * scripts/features/se_implicit: Add in .SECONDEXPANSION settings.
-
-2005-12-09 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/features/patternrules: Add a test for bug #13022.
-
-2005-12-07 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/features/double_colon: Add a test for bug #14334.
-
-2005-11-17 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/functions/flavor: Add a test for the flavor function.
-
-2005-11-14 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/variables/INCLUDE_DIRS: Add a test for the .INCLUDE_DIRS
- special variable.
-
-2005-10-24 Paul D. Smith <psmith@gnu.org>
-
- * scripts/misc/general4: Test '$$' in prerequisites list.
- * scripts/features/statipattrules: Rewrite to use run_make_test().
- Add various static pattern info.
- * scripts/features/se_statpat: Enable .SECONDEXPANSION target.
- * scripts/features/se_explicit: Add tests for handling '$$' in
- prerequisite lists with and without setting .SECONDEXPANSION.
- * scripts/features/order_only: Convert to run_make_test().
- * run_make_tests.pl (set_more_defaults): If we can't get the value
- of $(MAKE) from make, then fatal immediately.
-
-2005-08-31 Paul D. Smith <psmith@gnu.org>
-
- * run_make_tests.pl (get_this_pwd): Require the POSIX module (in
- an eval to trap errors) and if it exists, use POSIX::getcwd to
- find the working directory. If it doesn't exist, go back to the
- previous methods. This tries to be more accurate on Windows
- systems.
-
-2005-08-29 Paul D. Smith <psmith@gnu.org>
-
- * scripts/functions/abspath: Add some text to the error messages
- to get a better idea of what's wrong. Make warnings instead of
- errors.
-
- * scripts/features/patspecific_vars: Don't use "test", which is
- UNIX specific. Print the values and let the test script match
- them.
-
-2005-08-25 Paul Smith <psmith@gnu.org>
-
- * scripts/variables/SHELL: Use a /./ prefix instead of //: the
- former works better with non-UNIX environments. Fixes Savannah
- bug #14129.
-
-2005-08-13 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/functions/wildcard: Wrap calls to $(wildcard) with
- $(sort) so that the resulting order is no longer filesystem-
- dependent.
-
-2005-08-10 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/features/statipattrules: Add a test for Savannah bug #13881.
-
-2005-08-07 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/parallelism: Add a test for a bug reported by
- Michael Matz (matz@suse.de) in which make exits without waiting
- for all its children in some situations during parallel builds.
-
-2005-07-08 Paul D. Smith <psmith@gnu.org>
-
- * test_driver.pl: Reset the environment to a clean value every
- time before we invoke make. I'm suspicious that the environment
- isn't handled the same way in Windows as it is in UNIX, and some
- variables are leaking out beyond the tests they are intended for.
- Create an %extraENV hash tests can set to add more env. vars.
- * tests/scripts/features/export: Change to use %extraENV.
- * tests/scripts/functions/eval: Ditto.
- * tests/scripts/functions/origin: Ditto.
- * tests/scripts/options/dash-e: Ditto.
- * tests/scripts/variables/SHELL: Ditto.
-
-2005-06-27 Paul D. Smith <psmith@gnu.org>
-
- * scripts/options/dash-W: Use 'echo >>' instead of touch to update
- files.
- * scripts/features/reinvoke: Rewrite to be safer on systems with
- subsecond timestamps.
- * scripts/features/patternrules: False exits with different error
- codes on different systems (for example, Linux => 1, Solaris => 255).
-
- * scripts/options/dash-W: Set the timestamp to foo.x in the future,
- to be sure it will be considered updated when it's remade.
-
-2005-06-26 Paul D. Smith <psmith@gnu.org>
-
- * scripts/functions/shell: New test suite for the shell function.
-
-2005-06-25 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/include: Test include/-include/sinclude with no
- arguments. Tests fix for Savannah bug #1761.
-
- * scripts/misc/general3: Implement comprehensive testing of
- backslash-newline behavior in command scripts: various types of
- quoting, fast path / slow path, etc.
- Tests fix for Savannah bug #1332.
-
- * scripts/options/symlinks: Test symlinks to non-existent files.
- Tests fix for Savannah bug #13280.
-
- * scripts/misc/general3: Test semicolons in variable references.
- Tests fix for Savannah bug #1454.
-
- * scripts/variables/MAKE_RESTARTS: New file: test the
- MAKE_RESTARTS variable.
- * scripts/options/dash-B: Test re-exec doesn't loop infinitely.
- Tests fix for Savannah bug #7566.
- * scripts/options/dash-W: New file: test the -W flag, including
- re-exec infinite looping.
-
-2005-06-12 Paul D. Smith <psmith@gnu.org>
-
- * scripts/misc/close_stdout: Add a test for Savannah bug #1328.
- This test only works on systems that have /dev/full (e.g., Linux).
-
-2005-06-09 Paul D. Smith <psmith@gnu.org>
-
- * scripts/functions/foreach: Add a test for Savannah bug #11913.
-
-2005-05-31 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/features/include: Add a test for Savannah bug #13216.
- * scripts/features/patternrules: Add a test for Savannah bug #13218.
-
-2005-05-13 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/conditionals: Add tests for the new if... else
- if... endif syntax.
-
-2005-05-03 Paul D. Smith <psmith@gnu.org>
-
- * scripts/variables/DEFAULT_GOAL: Rename DEFAULT_TARGET to
- DEFAULT_GOAL.
-
-2005-05-02 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/parallelism: Add a test for exporting recursive
- variables containing $(shell) calls. Rewrite this script to use
- run_make_test() everywhere.
-
-2005-04-07 Paul D. Smith <psmith@gnu.org>
-
- * scripts/targets/SECONDARY: Add a test for Savannah bug #12331.
-
-2005-03-15 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/variables/automatic: Add a test for Savannah bug #12320.
-
-2005-03-10 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/features/patternrules: Add a test for Savannah bug #12267.
-
-2005-03-09 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/variables/DEFAULT_TARGET: Add a test for Savannah
- bug #12266.
-
-2005-03-04 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/features/patternrules: Add a test for Savannah bug #12202.
-
-2005-03-03 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/features/se_implicit: Add a test for stem
- termination bug. Add a test for stem triple-expansion bug.
-
- * scripts/features/se_statpat: Add a test for stem
- triple-expansion bug.
-
- * scripts/features/statipattrules: Change test #4 to reflect
- new way empty prerequisite list is handled.
-
-
-2005-03-01 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/features/statipattrules: Add a test for
- Savannah bug #12180.
-
-2005-02-28 Paul D. Smith <psmith@gnu.org>
-
- * scripts/options/dash-q: Add a test for Savannah bug # 7144.
-
- * scripts/options/symlinks: New file to test checking of symlink
- timestamps. Can't use filename dash-L because it conflicts with
- dash-l on case-insensitive filesystems.
-
- * scripts/variables/MAKEFILE_LIST, scripts/variables/MFILE_LIST:
- Rename MAKEFILE_LIST test to MFILE_LIST, for systems that need 8.3
- unique filenames.
-
-2005-02-28 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/variables/DEFAULT_TARGET: Test the .DEFAULT_TARGET
- special variable.
-
-2005-02-27 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/features/se_explicit: Test the second expansion in
- explicit rules.
- * scripts/features/se_implicit: Test the second expansion in
- implicit rules.
- * scripts/features/se_statpat: Test the second expansion in
- static pattern rules.
- * scripts/variables/automatic: Fix to work with the second
- expansion.
-
- * scripts/misc/general4: Add a test for bug #12091.
-
-2005-02-27 Paul D. Smith <psmith@gnu.org>
-
- * scripts/functions/eval: Check that eval of targets within
- command scripts fails. See Savannah bug # 12124.
-
-2005-02-26 Paul D. Smith <psmith@gnu.org>
-
- * test_driver.pl (compare_output): If a basic comparison of the
- log and answer doesn't match, try harder: change all backslashes
- to slashes and all CRLF to LF. This helps on DOS/Windows systems.
-
-2005-02-09 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/recursion: Test command line variable settings:
- only one instance of a given variable should be provided.
-
-2004-11-30 Boris Kolpackov <boris@kolpackov.net>
-
- * tests/scripts/functions/abspath: New file: test `abspath'
- built-in function.
-
- * tests/scripts/functions/realpath: New file: test `realpath'
- built-in function.
-
-2004-11-28 Paul D. Smith <psmith@gnu.org>
-
- * scripts/options/dash-C [WINDOWS32]: Add a test for bug #10252;
- this doesn't really test anything useful in UNIX but...
-
- * scripts/variables/SHELL: New file: test proper handling of SHELL
- according to POSIX rules. Fixes bug #1276.
-
-2004-10-21 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/functions/word: Test $(firstword ) and $(lastword ).
-
-2004-10-05 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/features/patspecific_vars: Test simple/recursive
- variable expansion.
-
-2004-09-28 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/features/include: Test dontcare flag inheritance
- when rebuilding makefiles.
-
-2004-09-27 Boris Kolpackov <boris@kolpackov.net>
-
- * scripts/features/patspecific_vars: Test exported variables.
-
-2004-09-22 Paul D. Smith <psmith@gnu.org>
-
- * run_make_tests.pl (run_make_test): Don't add newlines to the
- makestring or answer if they are completely empty.
-
- * scripts/features/patternrules: Rename from implicit_prereq_eval.
-
- * scripts/test_template: Rework the template.
-
-2004-09-21 Boris Kolpackov <boris@kolpackov.net>
-
- * run_make_tests.pl: Change `#!/usr/local/bin/perl' to be
- `#!/usr/bin/env perl'.
-
- * scripts/features/implicit_prereq_eval: Test implicit rule
- prerequisite evaluation code.
-
-2004-09-21 Paul D. Smith <psmith@gnu.org>
-
- * run_make_tests.pl (run_make_test): Enhance to allow the make
- string to be undef: in that case it reuses the previous make
- string. Allows multiple tests on the same makefile.
-
- * scripts/variables/flavors: Add some tests for prefix characters
- interacting with define/endef variables.
-
-2004-09-20 Paul D. Smith <psmith@gnu.org>
-
- * scripts/functions/substitution: Rewrite to use run_make_test()
- interface, and add test for substitution failures reported by
- Markus Mauhart <qwe123@chello.at>.
-
-2004-03-22 Paul D. Smith <psmith@gnu.org>
-
- * test_driver.pl (run_each_test, toplevel, compare_output): Change
- to track both the testing categories _AND_ the number of
- individual tests, and report both sets of numbers.
-
-2004-02-21 Paul D. Smith <psmith@gnu.org>
-
- * scripts/functions/origin: Set our own environment variable
- rather than relying on $HOME.
-
-2004-01-21 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/conditionals: Test arguments to ifn?def which
- contain whitespace (such as a function that is evaluated). Bug
- #7257.
-
-2004-01-07 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/order_only: Test order-only prerequisites in
- pattern rules (patch #2349).
-
-2003-11-02 Paul D. Smith <psmith@gnu.org>
-
- * scripts/functions/if: Test if on conditionals with trailing
- whitespace--bug #5798.
-
- * scripts/functions/eval: Test eval in a non-file context--bug #6195.
-
-2003-04-19 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/patspecific_vars: Test multiple patterns
- matching the same target--Bug #1405.
-
-2003-04-09 Paul D. Smith <psmith@gnu.org>
-
- * run_make_tests.pl (set_more_defaults): A new $port_type of
- 'OS/2' for (surprise!) OS/2. Also choose a wait time of 2 seconds
- for OS/2.
-
-2003-03-28 Paul D. Smith <psmith@gnu.org>
-
- * scripts/targets/SECONDARY: Test the "global" .SECONDARY (with
- not prerequisites)--Bug #2515.
-
-2003-01-30 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/targetvars: Test very long target-specific
- variable definition lines (longer than the default make buffer
- length). Tests patch # 1022.
-
- * scripts/functions/eval: Test very recursive $(eval ...) calls
- with simple variable expansion (bug #2238).
-
- * scripts/functions/word: Test error handling for word and
- wordlist functions (bug #2407).
-
-2003-01-22 Paul D. Smith <psmith@gnu.org>
-
- * scripts/functions/call: Test recursive argument masking (bug
- #1744).
-
-2002-10-25 Paul D. Smith <psmith@gnu.org>
-
- * scripts/functions/eval: Test using $(eval ...) inside
- conditionals (Bug #1516).
-
-2002-10-14 Paul D. Smith <psmith@gnu.org>
-
- * scripts/options/dash-t: Add a test for handling -t on targets
- with no commands (Bug #1418).
-
-2002-10-13 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/targetvars: Add a test for exporting
- target-specific vars (Bug #1391).
-
-2002-10-05 Paul D. Smith <psmith@gnu.org>
-
- * scripts/variables/automatic: Add tests for $$(@), $${@}, $${@D},
- and $${@F}.
-
-2002-09-23 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/escape: Test handling of escaped comment
- characters in targets and prerequisites.
-
-2002-09-18 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/export: Test export/unexport of multiple
- variables in a single command.
-
-2002-09-17 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/targetvars: Tests for Bug #940: test
- target-specific and pattern-specific variables in conjunction with
- double-colon targets.
-
-2002-09-10 Paul D. Smith <psmith@gnu.org>
-
- * test_driver.pl (compare_output): Match the new format for time
- skew error messages.
-
- * scripts/features/export: Created. Add tests for export/unexport
- capabilities, including exporting/unexporting expanded variables.
-
- * scripts/features/conditionals: Add a test for expanded variables
- in ifdef conditionals.
-
-2002-09-04 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/reinvoke: Change touch/sleep combos to utouch
- invocations.
- * scripts/features/vpathgpath: Ditto.
- * scripts/features/vpathplus: Ditto.
- * scripts/options/dash-n: Ditto.
- * scripts/targets/INTERMEDIATE: Ditto.
- * scripts/targets/SECONDARY: Ditto.
-
- * scripts/options/dash-t: Added a test for the -t bug fixed by
- Henning Makholm. This test was also contributed by Henning.
-
- * scripts/misc/general4: Add a test suite for obscure algorithmic
- features of make. First test: make sure creation subdirectories
- as prerequisites of targets works properly.
-
- * scripts/misc/version: Remove this bogus test.
-
-2002-08-07 Paul D. Smith <psmith@gnu.org>
-
- * scripts/misc/general3: Add a test for makefiles that don't end
- in newlines.
-
- * scripts/variables/special: Create tests for the special
- variables (.VARIABLES and .TARGETS). Comment out .TARGETS test
- for now as it's not yet supported.
-
-2002-08-01 Paul D. Smith <psmith@gnu.org>
-
- * scripts/options/dash-B: Add a test for the new -B option.
-
-2002-07-11 Paul D. Smith <psmith@gnu.org>
-
- * run_make_tests.pl (valid_option): Add support for Valgrind. Use
- -valgrind option to the test suite.
- (set_more_defaults): Set up the file descriptor to capture
- Valgrind output. We have to unset its close-on-exec flag; we
- hardcode the value for F_SETFD (2) rather than load it; hopefully
- this will help us avoid breaking the Windows/DOS test suite.
-
-2002-07-10 Paul D. Smith <psmith@gnu.org>
-
- * scripts/variables/automatic: Add some tests for $$@, $$(@D), and
- $$(@F).
-
- * test_driver.pl (utouch): Create a new function that creates a
- file with a specific timestamp offset. Use of this function will
- let us avoid lots of annoying sleep() invocations in the tests
- just to get proper timestamping, which will make the tests run a
- lot faster. So far it's only used in the automatic test suite.
-
-2002-07-09 Paul D. Smith <psmith@gnu.org>
-
- * scripts/variables/automatic: Create a test for automatic variables.
-
-2002-07-08 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/order_only: Test new order-only prerequisites.
-
-2002-07-07 Paul D. Smith <psmith@gnu.org>
-
- * scripts/functions/eval: Test new function.
- * scripts/functions/value: Test new function.
- * scripts/variables/MAKEFILE_LIST: Test new variable.
-
-2002-04-28 Paul D. Smith <psmith@gnu.org>
-
- * scripts/functions/call: New test: transitive closure
- implementation using $(call ...) to test variable recursion.
-
-2002-04-21 Paul D. Smith <psmith@gnu.org>
-
- * test_driver.pl (compare_dir_tree): Ignore CVS and RCS
- directories in the script directories.
-
-2001-05-02 Paul D. Smith <psmith@gnu.org>
-
- * scripts/variables/flavors: Test define/endef scripts where only
- one of the command lines is quiet.
-
-2000-06-22 Paul D. Smith <psmith@gnu.org>
-
- * scripts/options/dash-q: New file; test the -q option. Includes
- a test for PR/1780.
-
-2000-06-21 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/targetvars: Added a test for PR/1709: allowing
- semicolons in target-specific variable values.
-
-2000-06-19 Paul D. Smith <psmith@gnu.org>
-
- * scripts/functions/addsuffix: Test for an empty final argument.
- Actually this bug might have happened for any function, but this
- one was handy.
-
-2000-06-17 Eli Zaretskii <eliz@is.elta.co.il>
-
- * scripts/options/general: If parallel jobs are not supported,
- expect a warning message from Make.
-
-2000-06-15 Eli Zaretskii <eliz@is.elta.co.il>
-
- * scripts/options/general: Don't try -jN with N != 1 if parallel
- jobs are not supported.
-
-2000-05-24 Paul D. Smith <psmith@gnu.org>
-
- * scripts/options/general: Test general option processing (PR/1716).
-
-2000-04-11 Paul D. Smith <psmith@gnu.org>
-
- * scripts/functions/strip: Test empty value to strip (PR/1689).
-
-2000-04-08 Eli Zaretskii <eliz@is.elta.co.il>
-
- * scripts/features/reinvoke: Sleep before updating the target
- files in the first test, to ensure its time stamp really gets
- newer; otherwise Make might re-exec more than once.
-
-2000-04-07 Eli Zaretskii <eliz@is.elta.co.il>
-
- * scripts/features/double_colon: Don't run the parallel tests if
- parallel jobs aren't supported.
-
-2000-04-04 Paul D. Smith <psmith@gnu.org>
-
- * scripts/functions/word: wordlist doesn't swap arguments anymore.
-
-2000-03-27 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/statipattrules: Test that static pattern rules
- whose prerequisite patterns resolve to empty strings throw an
- error (instead of dumping core). Fixes PR/1670.
-
- * scripts/features/reinvoke: Make more robust by touching "b"
- first, to ensure it's not newer than "a".
- Reported by Marco Franzen <Marco.Franzen@Thyron.com>.
- * scripts/options/dash-n: Ditto.
-
- * scripts/functions/call: Whoops. The fix to PR/1527 caused
- recursive invocations of $(call ...) to break. I can't come up
- with any way to get both working at the same time, so I backed out
- the fix to 1527 and added a test case for recursive calls. This
- also tests the fix for PR/1610.
-
- * scripts/features/double_colon: Test that circular dependencies
- in double-colon rule sets are detected correctly (PR/1671).
-
-2000-03-26 Paul D. Smith <psmith@gnu.org>
-
- * scripts/targets/INTERMEDIATE: Test that make doesn't remove
- .INTERMEDIATE files when given on the command line (PR/1669).
-
-2000-03-08 Paul D. Smith <psmith@gnu.org>
-
- * scripts/options/dash-k: Add a test for error detection by
- multiple targets depending on the same prerequisite with -k.
- For PR/1634.
-
-2000-02-07 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/escape: Add a test for backslash-escaped spaces
- in a target name (PR/1586).
-
-2000-02-04 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/patspecific_vars: Add a test for pattern-specific
- target variables inherited from the parent target (PR/1407).
-
-2000-02-02 Paul D. Smith <psmith@gnu.org>
-
- * run_make_tests.pl (set_more_defaults): Hard-code the LANG to C
- to make sure sorting order, etc. is predictable.
- Reported by Andreas Jaeger <aj@suse.de>.
-
- * run_make_tests.pl (set_more_defaults): Set the $wtime variable
- depending on the OS. Eli Zaretskii <eliz@is.elta.co.il> reports
- this seems to need to be *4* on DOS/Windows, not just 2. Keep it
- 1 for other systems.
- * scripts/features/vpathplus (touchfiles): Use the $wtime value
- instead of hardcoding 2.
- * scripts/targets/SECONDARY: Ditto.
- * scripts/targets/INTERMEDIATE: Ditto.
-
-2000-01-27 Paul D. Smith <psmith@gnu.org>
-
- * test_driver.pl (toplevel): Don't try to run test scripts which
- are really directories.
-
-2000-01-23 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/include: Remove a check; the fix caused more
- problems than the error, so I removed it and removed the test for
- it.
-
-2000-01-11 Paul D. Smith <psmith@gnu.org>
-
- * scripts/functions/call: Add a test for PR/1517 and PR/1527: make
- sure $(call ...) doesn't eval its arguments and that you can
- invoke foreach from it without looping forever.
-
-1999-12-15 Paul D. Smith <psmith@gnu.org>
-
- * scripts/targets/INTERMEDIATE: Add a test for PR/1423: make sure
- .INTERMEDIATE settings on files don't disable them as implicit
- intermediate possibilities.
-
-1999-12-01 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/double_colon: Add a test for PR/1476: Try
- double-colon rules as non-goal targets and during parallel builds
- to make sure they're handled serially.
-
-1999-11-17 Paul D. Smith <psmith@gnu.org>
-
- * scripts/functions/if: Add a test for PR/1429: put some text
- after an if-statement to make sure it works.
-
- * scripts/features/targetvars: Add a test for PR/1380: handling +=
- in target-specific variable definitions correctly.
-
-1999-10-15 Paul D. Smith <psmith@gnu.org>
-
- * scripts/variables/MAKEFILES: This was really broken: it didn't
- test anything at all, really. Rewrote it, plus added a test for
- PR/1394.
-
-1999-10-13 Paul D. Smith <psmith@gnu.org>
-
- * scripts/options/dash-n: Add a test for PR/1379: "-n doesn't
- behave properly when used with recursive targets".
-
-1999-10-08 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/targetvars: Add a check for PR/1378:
- "Target-specific vars don't inherit correctly"
-
-1999-09-29 Paul D. Smith <psmith@gnu.org>
-
- * test_driver.pl (get_osname): Change $fancy_file_names to
- $short_filenames and reverse the logic.
- (run_each_test): Change test of non-existent $port_host to use
- $short_filenames--problem reported by Eli Zaretskii.
-
-1999-09-23 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/parallelism: Add a check to ensure that the
- jobserver works when we re-invoke. Also cleaned up the tests a
- little, reducing the number of rules we use so the test won't need
- as many "sleep" commands.
-
-1999-09-16 Paul D. Smith <psmith@gnu.org>
-
- * scripts/features/reinvoke: Remove invocations of "touch" in
- makefiles. See the comments on the touch function rewrite below.
- Note that UNIX touch behaves the same way if the file already
- exists: it sets the time to the _local_ time. We don't want
- this. This is probably a good tip for makefile writers in
- general, actually... where practical.
- * scripts/options/dash-l: Ditto.
- * scripts/options/dash-n: Ditto.
-
- * test_driver.pl (run_each_test): In retrospect, I don't like the
- .lN/.bN/.dN postfix required by DOS. So, for non-DOS systems I
- changed it back to use .log, .base, and .diff.
-
- * run_make_tests.pl (set_more_defaults): Move the check for the
- make pathname to here from set_defaults (that's too early since it
- happens before the command line processing).
- Create a new variable $port_type, calculated from $osname, to
- specify what kind of system we're running on. We should integrate
- the VOS stuff here, too.
- (valid_option): Comment out the workdir/-work stuff so people
- won't be fooled into thinking it works... someone needs to fix
- this, though!
-
- * scripts/functions/origin: Use $port_type instead of $osname.
- * scripts/functions/foreach: Ditto.
- * scripts/features/default_names: Ditto.
-
-1999-09-15 Paul D. Smith <psmith@gnu.org>
-
- * test_driver.pl (touch): Rewrite this function. Previously it
- used to use utime() to hard-set the time based on the current
- local clock, or, if the file didn't exist, it merely created it.
- This mirrors exactly what real UNIX touch does, but it fails badly
- on networked filesystems where the FS server clock is skewed from
- the local clock: normally modifying a file causes it to get a mod
- time based on the _server's_ clock. Hard-setting it based on the
- _local_ clock causes gratuitous errors and makes the tests
- unreliable except on local filesystems. The new function will
- simply modify the file, allowing the filesystem to set the mod
- time as it sees fit.
-
- * scripts/features/parallelism: The second test output could
- change depending on how fast some scripts completed; use "sleep"
- to force the order we want.
-
- * test_driver.pl (toplevel): A bug in Perl 5.000 to Perl 5.004
- means that "%ENV = ();" doesn't do the right thing. This worked
- in Perl 4 and was fixed in Perl 5.004_01, but use a loop to delete
- the environment rather than require specific versions.
-
- * run_make_tests.pl (set_more_defaults): Don't use Perl 5 s///
- modifier "s", so the tests will run with Perl 4.
- (set_more_defaults): Set $pure_log to empty if there's no -logfile
- option in PURIFYOPTIONS.
- (setup_for_test): Don't remove any logs unless $pure_log is set.
-
-1999-09-15 Eli Zaretskii <eliz@is.elta.co.il>
-
- * scripts/features/reinvoke: Put the SHELL definition in the right
- test makefile.
-
-1999-09-15 Paul D. Smith <psmith@gnu.org>
-
- ChangeLog file for the test suite created.
-
-
-Copyright (C) 1992-2016 Free Software Foundation, Inc.
-This file is part of GNU Make.
-
-GNU Make is free software; you can redistribute it and/or modify it under the
-terms of the GNU General Public License as published by the Free Software
-Foundation; either version 3 of the License, or (at your option) any later
-version.
-
-GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/tests/NEWS b/tests/NEWS
deleted file mode 100644
index f55e4ba..0000000
--- a/tests/NEWS
+++ /dev/null
@@ -1,178 +0,0 @@
-Changes from 0.4.9 to 3.78 (Sep 6, 1999):
-
- Lots of new tests. Renamed to follow the GNU make scheme. Also
- added some support for using Purify with make.
-
- Rob Tulloh contributed some changes to get the test suite running on
- NT; I tweaked them a bit (hopefully I didn't break anything!) Note
- that NT doesn't grok the self-exec funkiness that Unix shells use,
- so instead I broke that out into a separate shell script
- "run_make_tests" that invokes perl with the (renamed) script
- run_make_tests.pl.
-
- Eli Zaretski contributed changes to get the test suite running on
- DOS with DJGPP. I also meddled in these somewhat.
-
- If you're on DOS or NT you should run "perl.exe run_make_tests.pl ..."
- If you're on Unix, you can continue to run "./run_make_tests ..." as
- before.
-
-Changes from 0.4.8 to 0.4.9 (May 14, 1998):
-
- Release by Paul D. Smith <psmith@baynetworks.com>; I'm the one to
- blame for problems in this version :).
-
- Add some perl to test_driver.pl to strip out GNU make clock skew
- warning messages from the output before comparing it to the
- known-good output.
-
- A new test for escaped :'s in filenames (someone on VMS found this
- didn't work anymore in 3.77): scripts/features/escape.
-
-Changes from 0.4.7 to 0.4.8 (May 14, 1998):
-
- Release by Paul D. Smith <psmith@baynetworks.com>; I'm the one to
- blame for problems in this version :).
-
- New tests for features to be included in GNU make 3.77.
-
-Changes from 0.4.6 to 0.4.7 (August 18, 1997):
-
- Release by Paul D. Smith <psmith@baynetworks.com>; I'm the one to
- blame for problems in this version :).
-
- Reworked some tests to make sure they all work with both perl4 and perl5.
-
- Work around a bug in perl 5.004 which doesn't clean the environment
- correctly in all cases (fixed in at least 5.004_02).
-
- Updated functions/strip to test for newline stripping.
-
- Keep a $PURIFYOPTIONS env variable if present.
-
-Changes from 0.4.5 to 0.4.6 (April 07, 1997):
-
- Release by Paul D. Smith <psmith@baynetworks.com>; I'm the one to
- blame for problems in this version :).
-
- Updated to work with GNU make 3.76 (and pretests).
-
- Added new tests and updated existing ones. Note that the new tests
- weren't tested with perl 4, however I think they should work.
-
- Ignore any tests whose filenames end in "~", so that Emacs backup
- files aren't run.
-
-Changes from 0.4.4 to 0.4.5 (April 29, 1995):
-
- Updated to be compatible with perl 5.001 as well as 4.036.
-
- Note: the test suite still won't work on 14-char filesystems
- (sorry, Kaveh), but I will get to it.
-
- Also, some tests and stuff still haven't made it in because I
- haven't had time to write the test scripts for them. But they,
- too, will get in eventually. Contributions of scripts (i.e., tests
- that I can just drop in) are particularly welcome and will be
- incorporated immediately.
-
-Changes from 0.4.3 to 0.4.4 (March 1995):
-
- Updated for changes in make 3.72.12, and to ignore CVS directories
- (thanks go to Jim Meyering for the patches for this).
-
- Fixed uname call to not make a mess on BSD/OS 2.0 (whose uname -a
- is very verbose). Let me know if this doesn't work correctly on
- your system.
-
- Changed to display test name while it is running, not just when it
- finishes.
-
- Note: the test suite still won't work on 14-char filesystems
- (sorry, Kaveh), but I will get to it.
-
- Also, some tests and stuff still haven't made it in because I
- haven't had time to write the test scripts for them. But they,
- too, will get in eventually.
-
-Changes from 0.4 to 0.4.3 (October 1994):
-
- Fixed bugs (like dependencies on environment variables).
-
- Caught up with changes in make.
-
- The load_limit test should now silently ignore a failure due to
- make not being able to read /dev/kmem.
-
- Reorganized tests into subdirs and renamed lots of things so that
- those poor souls who still have to deal with 14-char filename
- limits won't hate me any more. Thanks very much to Kaveh R. Ghazi
- <ghazi@noc.rutgers.edu> for helping me with the implementation and
- testing of these changes, and for putting up with all my whining
- about it...
-
- Added a $| = 1 so that systems that don't seem to automatically
- flush their output for some reason will still print all the
- output. I'd hate for someone to miss out on the smiley that
- you're supposed to get when all the tests pass... :-)
-
-Changes from 0.3 to 0.4 (August 1993):
-
- Lost in the mists of time (and my hurry to get it out before I
- left my job).
-
-Changes from 0.2 to 0.3 (9-30-92):
-
- Several tests fixed to match the fact that MAKELEVEL > 0 or -C now
- imply -w.
-
- parallel_execution test fixed to not use double colon rules any
- more since their behavior has changed.
-
- errors_in_commands test fixed to handle different error messages
- and return codes from rm.
-
- Several tests fixed to handle -make_path with a relative path
- and/or a name other than "make" for make.
-
- dash-e-option test fixed to use $PATH instead of $USER (since the
- latter does not exist on some System V systems). This also
- removes the dependency on getlogin (which fails under certain
- weird conditions).
-
- test_driver_core changed so that you can give a test name like
- scripts/errors_in_commands and it will be handled correctly (handy
- if you have a shell with filename completion).
-
-Changes from 0.1 to 0.2 (5-4-92):
-
- README corrected to require perl 4.019, not 4.010.
-
- -make_path replaces -old.
-
- errors_in_commands test updated for change in format introduced in
- make 3.62.6.
-
- test_driver_core now uses a better way of figuring what OS it is
- running on (thanks to meyering@cs.utexas.edu (Jim Meyering) for
- suggesting this, as well as discovering the hard way that the old
- way (testing for /mnt) fails on his machine).
-
- Some new tests were added.
-
-
--------------------------------------------------------------------------------
-Copyright (C) 1992-2016 Free Software Foundation, Inc.
-This file is part of GNU Make.
-
-GNU Make is free software; you can redistribute it and/or modify it under the
-terms of the GNU General Public License as published by the Free Software
-Foundation; either version 3 of the License, or (at your option) any later
-version.
-
-GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this program. If not, see <http://www.gnu.org/licenses/>.
diff --git a/tests/README b/tests/README
index 0213159..aab3c35 100644
--- a/tests/README
+++ b/tests/README
@@ -7,7 +7,7 @@ This entire test suite, including all test files, are copyright and
distributed under the following terms:
-----------------------------------------------------------------------------
- Copyright (C) 1992-2016 Free Software Foundation, Inc.
+ Copyright (C) 1992-2020 Free Software Foundation, Inc.
This file is part of GNU Make.
GNU Make is free software; you can redistribute it and/or modify it under the
diff --git a/tests/config-flags.pm b/tests/config-flags.pm
deleted file mode 100644
index cc45c6b..0000000
--- a/tests/config-flags.pm
+++ /dev/null
@@ -1,19 +0,0 @@
-# This is a -*-perl-*- script
-#
-# Set variables that were defined by configure, in case we need them
-# during the tests.
-
-%CONFIG_FLAGS = (
- AM_LDFLAGS => '-Wl,--export-dynamic',
- AR => 'ar',
- CC => 'gcc',
- CFLAGS => '-g -O2',
- CPP => 'gcc -E',
- CPPFLAGS => '',
- GUILE_CFLAGS => '-pthread -I/usr/include/guile/2.0',
- GUILE_LIBS => '-lguile-2.0 -lgc',
- LDFLAGS => '',
- LIBS => '-ldl '
-);
-
-1;
diff --git a/tests/config-flags.pm.W32 b/tests/config-flags.pm.W32
new file mode 100644
index 0000000..9d2602b
--- /dev/null
+++ b/tests/config-flags.pm.W32
@@ -0,0 +1,9 @@
+# This is a -*-perl-*- script
+#
+# Set variables for Windows systems.
+
+%CONFIG_FLAGS = (
+ USE_SYSTEM_GLOB => 'no'
+);
+
+1;
diff --git a/tests/config-flags.pm.in b/tests/config-flags.pm.in
index 29ba146..90cd980 100644
--- a/tests/config-flags.pm.in
+++ b/tests/config-flags.pm.in
@@ -4,16 +4,17 @@
# during the tests.
%CONFIG_FLAGS = (
- AM_LDFLAGS => '@AM_LDFLAGS@',
- AR => '@AR@',
- CC => '@CC@',
- CFLAGS => '@CFLAGS@',
- CPP => '@CPP@',
- CPPFLAGS => '@CPPFLAGS@',
- GUILE_CFLAGS => '@GUILE_CFLAGS@',
- GUILE_LIBS => '@GUILE_LIBS@',
- LDFLAGS => '@LDFLAGS@',
- LIBS => '@LIBS@'
+ AM_LDFLAGS => '@AM_LDFLAGS@',
+ AR => '@AR@',
+ CC => '@CC@',
+ CFLAGS => '@CFLAGS@',
+ CPP => '@CPP@',
+ CPPFLAGS => '@CPPFLAGS@',
+ GUILE_CFLAGS => '@GUILE_CFLAGS@',
+ GUILE_LIBS => '@GUILE_LIBS@',
+ LDFLAGS => '@LDFLAGS@',
+ LIBS => '@LIBS@',
+ USE_SYSTEM_GLOB => '@USE_SYSTEM_GLOB@'
);
1;
diff --git a/tests/config_flags_pm.com b/tests/config_flags_pm.com
index a4271b6..e7da8ca 100755
--- a/tests/config_flags_pm.com
+++ b/tests/config_flags_pm.com
@@ -3,7 +3,7 @@ $! config_flags_pm.com - Build config-flags.pm on VMS.
$!
$! Just good enough to run the self tests for now.
$!
-$! Copyright (C) 2014-2016 Free Software Foundation, Inc.
+$! Copyright (C) 2014-2020 Free Software Foundation, Inc.
$! This file is part of GNU Make.
$!
$! GNU Make is free software; you can redistribute it and/or modify it under
@@ -24,7 +24,7 @@ $ open/read cfpm_in config-flags.pm.in
$!
$ outfile = "sys$disk:[]config-flags.pm"
$!
-$ cflags = "/include=([],[.glob]"
+$ cflags = "/include=([],[.lib]"
$!
$ create 'outfile'
$ open/append cfpm 'outfile'
@@ -42,6 +42,7 @@ $ if key .eqs. "CC" then value = "CC"
$ if key .eqs. "CPP" then value = "CPP"
$ if key .eqs. "CFLAGS" then value = cflags
$ if key .eqs. "GUILE_CFLAGS" then value = cflags
+$ if key .eqs. "USE_SYSTEM_GLOB" then value = "no"
$ write cfpm part1, value, part2
$ goto cfpm_read_loop
$ endif
diff --git a/tests/mkshadow b/tests/mkshadow
index 23c7ab0..e7533c8 100755
--- a/tests/mkshadow
+++ b/tests/mkshadow
@@ -3,7 +3,7 @@
# Simple script to make a "shadow" test directory, using symbolic links.
# Typically you'd put the shadow in /tmp or another local disk
#
-# Copyright (C) 1992-2016 Free Software Foundation, Inc.
+# Copyright (C) 1992-2020 Free Software Foundation, Inc.
# This file is part of GNU Make.
#
# GNU Make is free software; you can redistribute it and/or modify it under
diff --git a/subproc.bat b/tests/run_make_tests.bat
index 685ed9d..45ff930 100644
--- a/subproc.bat
+++ b/tests/run_make_tests.bat
@@ -1,24 +1,21 @@
-@echo off
-rem Copyright (C) 1996-2016 Free Software Foundation, Inc.
-rem This file is part of GNU Make.
-rem
-rem GNU Make is free software; you can redistribute it and/or modify it under
-rem the terms of the GNU General Public License as published by the Free
-rem Software Foundation; either version 3 of the License, or (at your option)
-rem any later version.
-rem
-rem GNU Make is distributed in the hope that it will be useful, but WITHOUT
-rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for.
-rem more details.
-rem
-rem You should have received a copy of the GNU General Public License along
-rem with this program. If not, see <http://www.gnu.org/licenses/>.
-
-cd w32\subproc
-set MAKE=%2
-set MAKEFILE=%1
-if x%2 == x set MAKE=nmake
-%MAKE% /f %MAKEFILE%
-if ERRORLEVEL 1 exit /B
-cd ..\..
+@echo off
+rem Copyright (C) 2017-2020 Free Software Foundation, Inc.
+rem This file is part of GNU Make.
+rem
+rem GNU Make is free software; you can redistribute it and/or modify it under
+rem the terms of the GNU General Public License as published by the Free
+rem Software Foundation; either version 3 of the License, or (at your option)
+rem any later version.
+rem
+rem GNU Make is distributed in the hope that it will be useful, but WITHOUT
+rem ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+rem FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for.
+rem more details.
+rem
+rem You should have received a copy of the GNU General Public License along
+rem with this program. If not, see <http://www.gnu.org/licenses/>.
+
+setlocal
+cd "%~dp0"
+
+perl -I. .\run_make_tests.pl %*
diff --git a/tests/run_make_tests.com b/tests/run_make_tests.com
deleted file mode 100755
index de79a91..0000000
--- a/tests/run_make_tests.com
+++ /dev/null
@@ -1,272 +0,0 @@
-$! Test_make.com
-$!
-$! This is a wrapper for the GNU make perl test programs on VMS.
-$!
-$! Parameter "-help" for description on how to use described below.
-$!
-$! Copyright (C) 2014-2016 Free Software Foundation, Inc.
-$! This file is part of GNU Make.
-$!
-$! GNU Make is free software; you can redistribute it and/or modify it under
-$! the terms of the GNU General Public License as published by the Free Software
-$! Foundation; either version 3 of the License, or (at your option) any later
-$! version.
-$!
-$! GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-$! WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-$! FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-$! details.
-$!
-$! You should have received a copy of the GNU General Public License along with
-$! this program. If not, see <http://www.gnu.org/licenses/>.
-$!
-$!
-$! Allow more than 8 paramters with using commas as a delimiter.
-$!
-$ params = "''p1',''p2',''p3',''p4',''p5',''p6',''p7',''p8'"
-$!
-$ test_flags = ",verbose,detail,keep,usage,help,debug,"
-$ test_flags_len = f$length(test_flags)
-$ verbose_flag = ""
-$ detail_flag = ""
-$ keep_flag = ""
-$ usage_flag = ""
-$ help_flag = ""
-$ debug_flag = ""
-$!
-$ ignored_options = "profile,make,srcdir,valgrind,memcheck,massif,"
-$ ignored_option_len = f$length(ignored_options)
-$!
-$ testname = ""
-$ make :== $bin:make.exe"
-$!
-$ i = 0
-$param_loop:
-$ param = f$element(i, ",", params)
-$ i = i + 1
-$ if param .eqs. "" then goto param_loop
-$ if param .eqs. "," then goto param_loop_end
-$ param_len = f$length(param)
-$ if f$locate("/", param) .lt. param_len
-$ then
-$ if testname .nes. ""
-$ then
-$ write sys$output "Only the last test name specified will be run!"
-$ endif
-$ testname = param
-$ goto param_loop
-$ endif
-$ lc_param = f$edit(param,"LOWERCASE") - "-"
-$ if f$locate(",''lc_param',", ignored_options) .lt. ignored_option_len
-$ then
-$ write sys$output "parameter ''param' is ignored on VMS for now."
-$ goto param_loop
-$ endif
-$ if f$locate(",''lc_param',", test_flags) .lt. test_flags_len
-$ then
-$ 'lc_param'_flag = "-" + lc_param
-$ goto param_loop
-$ endif
-$ write sys$output "parameter ''param' is not known to VMS."
-$ goto param_loop
-$!
-$param_loop_end:
-$!
-$no_gnv = 1
-$no_perl = 1
-$!
-$! Find GNV 2.1.3 + manditory updates
-$! If properly updated, the GNV$GNU logical name is present.
-$! Updated GNV utilities have a gnv$ prefix on them.
-$ gnv_root = f$trnlnm("GNV$GNU", "LNM$SYSTEM_TABLE")
-$ if gnv_root .nes. ""
-$ then
-$ no_gnv = 0
-$ ! Check for update ar utility.
-$ new_ar = "gnv$gnu:[usr.bin]gnv$ar.exe"
-$ if f$search(new_ar) .nes. ""
-$ then
-$ ! See if a new port of ar exists.
-$ ar :== $'new_ar'
-$ else
-$ ! Fall back to legacy GNV AR wrapper.
-$ old_ar = "gnv$gnu:[bin]ar.exe"
-$ if f$search(old_ar) .nes. ""
-$ then
-$ ar :== $'old_ar'
-$ else
-$ no_gnv = 1
-$ endif
-$ endif
-$ ! Check for updated bash
-$ if no_gnv .eq. 0
-$ then
-$ new_bash = "gnv$gnu:[bin]gnv$bash.exe"
-$ if f$search(new_bash) .nes. ""
-$ then
-$ bash :== $'new_bash'
-$ sh :== $'new_bash'
-$ else
-$ no_gnv = 1
-$ endif
-$ endif
-$ ! Check for updated coreutils
-$ if no_gnv .eq. 0
-$ then
-$ new_cat = "gnv$gnu:[bin]gnv$cat.exe"
-$ if f$search(new_cat) .nes. ""
-$ then
-$ cat :== $'new_cat'
-$ cp :== $gnv$gnu:[bin]gnv$cp.exe
-$ echo :== $gnv$gnu:[bin]gnv$echo.exe
-$ false :== $gnv$gnu:[bin]gnv$false.exe
-$ true :== $gnv$gnu:[bin]gnv$true.exe
-$ touch :== $gnv$gnu:[bin]gnv$touch.exe
-$ mkdir :== $gnv$gnu:[bin]gnv$mkdir.exe
-$ rm :== $gnv$gnu:[bin]gnv$rm.exe
-$ sleep :== $gnv$gnu:[bin]gnv$sleep.exe
-$ else
-$ no_gnv = 1
-$ endif
-$ endif
-$ ! Check for updated diff utility.
-$ if no_gnv .eq. 0
-$ then
-$ new_diff = "gnv$gnu:[usr.bin]gnv$diff.exe"
-$ if f$search(new_diff) .nes. ""
-$ then
-$ ! See if a new port of diff exists.
-$ diff :== $'new_diff'
-$ else
-$ ! Fall back to legacy GNV diff
-$ old_diff = "gnv$gnu:[bin]diff.exe"
-$ if f$search(old_diff) .nes. ""
-$ then
-$ diff :== $'old_diff'
-$ else
-$ no_gnv = 1
-$ endif
-$ endif
-$ endif
-$ endif
-$!
-$if no_gnv
-$then
-$ write sys$output "Could not find an up to date GNV installed!"
-$ help_flag = 1
-$endif
-$!
-$! Find perl 5.18.1 or later.
-$!
-$! look in perl_root:[000000]perl_setup.com
-$ perl_root = f$trnlnm("perl_root")
-$ ! This works with known perl installed from PCSI kits.
-$ if perl_root .nes. ""
-$ then
-$ perl_ver = f$element(1, ".", perl_root)
-$ if f$locate("-", perl_ver) .lt. f$length(perl_ver)
-$ then
-$ no_perl = 0
-$ endif
-$ endif
-$ if no_perl
-$ then
-$! look for sys$common:[perl-*]perl_setup.com
-$ perl_setup = f$search("sys$common:[perl-*]perl_setup.com")
-$ if perl_setup .eqs. ""
-$ then
-$ if gnv_root .nes. ""
-$ then
-$ gnv_device = f$parse(gnv_root,,,"DEVICE")
-$ perl_templ = "[vms$common.perl-*]perl_setup.com"
-$ perl_search = f$parse(perl_templ, gnv_device)
-$ perl_setup = f$search(perl_search)
-$ endif
-$ endif
-$ if perl_setup .nes. ""
-$ then
-$ @'perl_setup'
-$ no_perl = 0
-$ endif
-$ endif
-$!
-$ if no_perl
-$ then
-$ write sys$output "Could not find an up to date Perl installed!"
-$ help_flag = "-help"
-$ endif
-$!
-$!
-$ if help_flag .nes. ""
-$ then
-$ type sys$input
-$DECK
-This is a test script wrapper for the run_make_tests.pl script.
-
-This wrapper makes sure that the DCL symbols and logical names needed to
-run the perl script are in place.
-
-The test wrapper currently requires that the DCL symbols be global symbols.
-Those symbols will be left behind after the procedure is run.
-
-The PERL_ROOT will be set to a compatible perl if such a perl is found and
-is not the default PERL_ROOT:. This setting will persist after the test.
-
-This wrapper should be run with the default set to the base directory
-of the make source.
-
-The HELP parameter will bring up this text and then run the help script
-for the Perl wrapper. Not all options for the perl script have been
-implemented, such as valgrind or specifying the make path or source path.
-
-Running the wrapper script requires:
- Perl 5.18 or later.
- PCSI kits available from http://sourceforge.net/projects/vmsperlkit/files/
-
- GNV 2.1.3 or later. GNV 3.0.1 has not tested with this script.
- Bash 4.2.47 or later.
- Coreutils 8.21 or later.
- http://sourceforge.net/projects/gnv/files/
- Read before installing:
- http://sourceforge.net/p/gnv/wiki/InstallingGNVPackages/
- As updates for other GNV components get posted, those updates should
- be used.
-
-$EOD
-$ endif
-$!
-$ if no_gnv .or. no_perl then exit 44
-$!
-$!
-$ default = f$environment("DEFAULT")
-$ default_dev = f$element(0, ":", default) + ":"
-$ this = f$environment("PROCEDURE")
-$ on error then goto all_error
-$ set default 'default_dev''f$parse(this,,,"DIRECTORY")'
-$!
-$! Need to make sure that the config-flags.pm exists.
-$ if f$search("config-flags.pm") .eqs. ""
-$ then
-$ @config_flags_pm.com
-$ endif
-$ define/user bin 'default_dev'[-],gnv$gnu:[bin]
-$ define/user decc$filename_unix_noversion enable
-$ define/user decc$filename_unix_report enable
-$ define/user decc$readdir_dropdotnotype enable
-$ flags = ""
-$ if verbose_flag .nes. "" then flags = verbose_flag
-$ if detail_flag .nes. "" then flags = flags + " " + detail_flag
-$ if keep_flag .nes. "" then flags = flags + " " + keep_flag
-$ if usage_flag .nes. "" then flags = flags + " " + usage_flag
-$ if help_flag .nes. "" then flags = flags + " " + help_flag
-$ if debug_flag .nes. "" then flags = flags + " " + debug_flag
-$ flags = f$edit(flags, "TRIM, COMPRESS")
-$ if testname .nes. ""
-$ then
-$ perl run_make_tests.pl "''testname'" 'flags'
-$ else
-$ perl run_make_tests.pl 'flags'
-$ endif
-$all_error:
-$ set default 'default'
-$!
diff --git a/tests/run_make_tests.pl b/tests/run_make_tests.pl
index 916f346..d76e4f3 100644
--- a/tests/run_make_tests.pl
+++ b/tests/run_make_tests.pl
@@ -11,7 +11,7 @@
# [-make <make prog>]
# (and others)
-# Copyright (C) 1992-2016 Free Software Foundation, Inc.
+# Copyright (C) 1992-2020 Free Software Foundation, Inc.
# This file is part of GNU Make.
#
# GNU Make is free software; you can redistribute it and/or modify it under
@@ -27,6 +27,23 @@
# You should have received a copy of the GNU General Public License along with
# this program. If not, see <http://www.gnu.org/licenses/>.
+# Add the working directory to @INC and load the test driver
+use FindBin;
+use lib "$FindBin::Bin";
+
+our $testsroot = $FindBin::Bin;
+
+require "test_driver.pl";
+
+use File::Spec;
+
+use Cwd;
+$cwdpath = cwd();
+($cwdvol, $cwddir, $_) = File::Spec->splitpath($cwdpath, 1);
+
+# Some target systems might not have the POSIX module...
+$has_POSIX = eval { require "POSIX.pm" };
+
%FEATURES = ();
$valgrind = 0; # invoke make with valgrind
@@ -36,12 +53,29 @@ $massif_args = '--num-callers=15 --tool=massif --alloc-fn=xmalloc --alloc-fn=xca
$pure_log = undef;
# The location of the GNU make source directory
-$srcdir = '';
+$srcdir = undef;
+$fqsrcdir = undef;
+$srcvol = undef;
+
+# The location of the build directory
+$blddir = undef;
+$fqblddir = undef;
+$bldvol = undef;
+
+$make_path = undef;
+@make_command = ();
$command_string = '';
$all_tests = 0;
+# Shell commands
+
+$sh_name = '/bin/sh';
+$is_posix_sh = 1;
+
+$CMD_rmfile = 'rm -f';
+
# rmdir broken in some Perls on VMS.
if ($^O eq 'VMS')
{
@@ -56,13 +90,75 @@ if ($^O eq 'VMS')
};
*CORE::GLOBAL::rmdir = \&vms_rmdir;
+
+ $CMD_rmfile = 'delete_file -no_ask';
}
-require "test_driver.pl";
-require "config-flags.pm";
+%CONFIG_FLAGS = ();
-# Some target systems might not have the POSIX module...
-$has_POSIX = eval { require "POSIX.pm" };
+# Find the strings that will be generated for various error codes.
+# We want them from the C locale regardless of our current locale.
+
+$ERR_no_such_file = undef;
+$ERR_read_only_file = undef;
+$ERR_unreadable_file = undef;
+$ERR_nonexe_file = undef;
+$ERR_exe_dir = undef;
+
+{
+ use locale;
+
+ my $loc = undef;
+ if ($has_POSIX) {
+ POSIX->import(qw(locale_h));
+ # Windows has POSIX locale, but only LC_ALL not LC_MESSAGES
+ $loc = POSIX::setlocale(&POSIX::LC_ALL);
+ POSIX::setlocale(&POSIX::LC_ALL, 'C');
+ }
+
+ if (open(my $F, '<', 'file.none')) {
+ print "Opened non-existent file! Skipping related tests.\n";
+ } else {
+ $ERR_no_such_file = "$!";
+ }
+
+ unlink('file.out');
+ touch('file.out');
+
+ chmod(0444, 'file.out');
+ if (open(my $F, '>', 'file.out')) {
+ print "Opened read-only file! Skipping related tests.\n";
+ close($F);
+ } else {
+ $ERR_read_only_file = "$!";
+ }
+
+ $_ = `./file.out 2>/dev/null`;
+ if ($? == 0) {
+ print "Executed non-executable file! Skipping related tests.\n";
+ } else {
+ $ERR_nonexe_file = "$!";
+ }
+
+ $_ = `./. 2>/dev/null`;
+ if ($? == 0) {
+ print "Executed directory! Skipping related tests.\n";
+ } else {
+ $ERR_exe_dir = "$!";
+ }
+
+ chmod(0000, 'file.out');
+ if (open(my $F, '<', 'file.out')) {
+ print "Opened unreadable file! Skipping related tests.\n";
+ close($F);
+ } else {
+ $ERR_unreadable_file = "$!";
+ }
+
+ unlink('file.out') or die "Failed to delete file.out: $!\n";
+
+ $loc and POSIX::setlocale(&POSIX::LC_ALL, $loc);
+}
#$SIG{INT} = sub { print STDERR "Caught a signal!\n"; die @_; };
@@ -81,7 +177,7 @@ sub valid_option
if ($option =~ /^-srcdir$/i) {
$srcdir = shift @argv;
- if (! -f "$srcdir/gnumake.h") {
+ if (! -f File::Spec->catfile($srcdir, 'src', 'gnumake.h')) {
print "$option $srcdir: Not a valid GNU make source directory.\n";
exit 0;
}
@@ -124,7 +220,11 @@ sub valid_option
# [2] (string): Answer we should get back.
# [3] (integer): Exit code we expect. A missing code means 0 (success)
+$makefile = undef;
$old_makefile = undef;
+$mkpath = undef;
+$make_name = undef;
+$helptool = undef;
sub subst_make_string
{
@@ -133,7 +233,9 @@ sub subst_make_string
s/#MAKEPATH#/$mkpath/g;
s/#MAKE#/$make_name/g;
s/#PERL#/$perl_name/g;
- s/#PWD#/$pwd/g;
+ s/#PWD#/$cwdpath/g;
+ # If we're using a shell
+ s/#HELPER#/$perl_name $helptool/g;
return $_;
}
@@ -148,7 +250,7 @@ sub run_make_test
if (! defined $makestring) {
defined $old_makefile
- || die "run_make_test(undef) invoked before run_make_test('...')\n";
+ or die "run_make_test(undef) invoked before run_make_test('...')\n";
$makefile = $old_makefile;
} else {
if (! defined($makefile)) {
@@ -160,9 +262,9 @@ sub run_make_test
$makestring = subst_make_string($makestring);
# Populate the makefile!
- open(MAKEFILE, "> $makefile") || die "Failed to open $makefile: $!\n";
+ open(MAKEFILE, "> $makefile") or die "Failed to open $makefile: $!\n";
print MAKEFILE $makestring;
- close(MAKEFILE) || die "Failed to write $makefile: $!\n";
+ close(MAKEFILE) or die "Failed to write $makefile: $!\n";
}
# Do the same processing on $answer as we did on $makestring.
@@ -179,12 +281,35 @@ sub run_make_test
$makefile = undef;
}
+sub add_options {
+ my $cmd = shift;
+
+ foreach (@_) {
+ if (ref($cmd)) {
+ push(@$cmd, ref($_) ? @$_ : $_);
+ } else {
+ $cmd .= ' '.(ref($_) ? "@$_" : $_);
+ }
+ }
+
+ return $cmd;
+}
+
+sub create_command {
+ return !$_[0] || ref($_[0]) ? [@make_command] : join(' ', @make_command);
+}
+
# The old-fashioned way...
+# $options can be a scalar (string) or a ref to an array of options
+# If it's a scalar the entire argument is passed to system/exec etc. as
+# a single string. If it's a ref then the array is passed to system/exec.
+# Using a ref should be preferred as it's more portable but all the older
+# invocations use strings.
sub run_make_with_options {
my ($filename,$options,$logname,$expected_code,$timeout,@call) = @_;
@call = caller unless @call;
- local($code);
- local($command) = $make_path;
+ my $code;
+ my $command = create_command($options);
$expected_code = 0 unless defined($expected_code);
@@ -192,13 +317,14 @@ sub run_make_with_options {
$test_passed = 1;
if ($filename) {
- $command .= " -f $filename";
+ $command = add_options($command, '-f', $filename);
}
if ($options) {
- if ($^O eq 'VMS') {
+ if (!ref($options) && $^O eq 'VMS') {
# Try to make sure arguments are properly quoted.
# This does not handle all cases.
+ # We should convert the tests to use array refs not strings
# VMS uses double quotes instead of single quotes.
$options =~ s/\'/\"/g;
@@ -230,20 +356,22 @@ sub run_make_with_options {
print ("Options fixup = -$options-\n") if $debug;
}
- $command .= " $options";
+
+ $command = add_options($command, $options);
}
- $command_string = "";
+ my $cmdstr = ref($command) ? "'".join("' '", @$command)."'" : $command;
+
if (@call) {
- $command_string = "#$call[1]:$call[2]\n";
+ $command_string = "#$call[1]:$call[2]\n$cmdstr\n";
+ } else {
+ $command_string = $cmdstr;
}
- $command_string .= "$command\n";
if ($valgrind) {
- print VALGRIND "\n\nExecuting: $command\n";
+ print VALGRIND "\n\nExecuting: $cmdstr\n";
}
-
{
my $old_timeout = $test_timeout;
$timeout and $test_timeout = $timeout;
@@ -251,7 +379,11 @@ sub run_make_with_options {
# If valgrind is enabled, turn off the timeout check
$valgrind and $test_timeout = 0;
- $code = &run_command_with_output($logname,$command);
+ if (ref($command)) {
+ $code = run_command_with_output($logname, @$command);
+ } else {
+ $code = run_command_with_output($logname, $command);
+ }
$test_timeout = $old_timeout;
}
@@ -265,8 +397,7 @@ sub run_make_with_options {
# If we have a purify log, save it
$tn = $pure_testname . ($num_of_logfiles ? ".$num_of_logfiles" : "");
print("Renaming purify log file to $tn\n") if $debug;
- rename($pure_log, "$tn")
- || die "Can't rename $log to $tn: $!\n";
+ rename($pure_log, "$tn") or die "Can't rename $pure_log to $tn: $!\n";
++$purify_errors;
} else {
unlink($pure_log);
@@ -274,9 +405,8 @@ sub run_make_with_options {
}
if ($code != $expected_code) {
- print "Error running $make_path (expected $expected_code; got $code): $command\n";
+ print "Error running @make_command (expected $expected_code; got $code): $cmdstr\n";
$test_passed = 0;
- $runf = &get_runfile;
&create_file (&get_runfile, $command_string);
# If it's a SIGINT, stop here
if ($code & 127) {
@@ -287,7 +417,7 @@ sub run_make_with_options {
}
if ($profile & $vos) {
- system "add_profile $make_path";
+ system "add_profile @make_command";
}
return 1;
@@ -311,180 +441,241 @@ sub print_help
"\tRun the test suite under valgrind's memcheck tool.",
"\tChange the default valgrind args with the VALGRIND_ARGS env var.",
"-massif",
- "\tRun the test suite under valgrind's massif toool.",
+ "\tRun the test suite under valgrind's massif tool.",
"\tChange the default valgrind args with the VALGRIND_ARGS env var."
);
}
-sub get_this_pwd {
- $delete_command = 'rm -f';
- if ($has_POSIX) {
- $__pwd = POSIX::getcwd();
- } elsif ($vos) {
- $delete_command = "delete_file -no_ask";
- $__pwd = `++(current_dir)`;
+sub set_defaults
+{
+ # $profile = 1;
+ $testee = "GNU make";
+ $make_path = "make";
+ $tmpfilesuffix = "mk";
+ if ($port_type eq 'UNIX') {
+ $scriptsuffix = '.sh';
+ } elsif ($port_type eq 'VMS') {
+ $scriptsuffix = '.com';
} else {
- # No idea... just try using pwd as a last resort.
- chop ($__pwd = `pwd`);
+ $scriptsuffix = '.bat';
+ }
+}
+
+# This is no longer used: we import config-flags.pm instead
+# sub parse_status
+# {
+# if (open(my $fh, '<', "$_[0]/config.status")) {
+# while (my $line = <$fh>) {
+# $line =~ m/^[SD]\["([^\"]+)"\]=" *(.*)"/ and $CONFIG_FLAGS{$1} = $2;
+# }
+# return 1;
+# }
+# return 0;
+# }
+
+sub find_prog
+{
+ my $prog = $_[0];
+ my ($v, $d, $f) = File::Spec->splitpath($prog);
+
+ # If there's no directory then we need to search the PATH
+ if (! $d) {
+ foreach my $e (File::Spec->path()) {
+ $prog = File::Spec->catfile($e, $f);
+ if (-x $prog) {
+ ($v, $d, $f) = File::Spec->splitpath($prog);
+ last;
+ }
+ }
}
- return $__pwd;
+ return ($v, $d, $f);
}
-sub set_defaults
+sub get_config
{
- # $profile = 1;
- $testee = "GNU make";
- $make_path = "make";
- $tmpfilesuffix = "mk";
- $pwd = &get_this_pwd;
+ return exists($CONFIG_FLAGS{$_[0]}) ? $CONFIG_FLAGS{$_[0]} : '';
}
sub set_more_defaults
{
- local($string);
- local($index);
-
- # find the type of the port. We do this up front to have a single
- # point of change if it needs to be tweaked.
- #
- # This is probably not specific enough.
- #
- if ($osname =~ /Windows/i || $osname =~ /MINGW32/i || $osname =~ /CYGWIN_NT/i) {
- $port_type = 'W32';
- }
- # Bleah, the osname is so variable on DOS. This kind of bites.
- # Well, as far as I can tell if we check for some text at the
- # beginning of the line with either no spaces or a single space, then
- # a D, then either "OS", "os", or "ev" and a space. That should
- # match and be pretty specific.
- elsif ($osname =~ /^([^ ]*|[^ ]* [^ ]*)D(OS|os|ev) /) {
- $port_type = 'DOS';
- }
- # Check for OS/2
- elsif ($osname =~ m%OS/2%) {
- $port_type = 'OS/2';
- }
+ my $string;
- # VMS has a GNV Unix mode or a DCL mode.
- # The SHELL environment variable should not be defined in VMS-DCL mode.
- elsif ($osname eq 'VMS' && !defined $ENV{"SHELL"}) {
- $port_type = 'VMS-DCL';
- }
- # Everything else, right now, is UNIX. Note that we should integrate
- # the VOS support into this as well and get rid of $vos; we'll do
- # that next time.
- else {
- $port_type = 'UNIX';
- }
+ # Now that we have located make_path, locate the srcdir and blddir
+ my ($mpv, $mpd, $mpf) = find_prog($make_path);
- # On DOS/Windows system the filesystem apparently can't track
- # timestamps with second granularity (!!). Change the sleep time
- # needed to force a file to be considered "old".
- $wtime = $port_type eq 'UNIX' ? 1 : $port_type eq 'OS/2' ? 2 : 4;
-
- print "Port type: $port_type\n" if $debug;
- print "Make path: $make_path\n" if $debug;
-
- # Find the full pathname of Make. For DOS systems this is more
- # complicated, so we ask make itself.
- if ($osname eq 'VMS') {
- $port_type = 'VMS-DCL' unless defined $ENV{"SHELL"};
- # On VMS pre-setup make to be found with simply 'make'.
- $make_path = 'make';
- } else {
- my $mk = `sh -c 'echo "all:;\@echo \\\$(MAKE)" | $make_path -f-'`;
- chop $mk;
- $mk or die "FATAL ERROR: Cannot determine the value of \$(MAKE):\n
-'echo \"all:;\@echo \\\$(MAKE)\" | $make_path -f-' failed!\n";
- $make_path = $mk;
- }
- print "Make\t= '$make_path'\n" if $debug;
+ # We have a make program so try to compute the blddir.
+ if ($mpd) {
+ my $f = File::Spec->catpath($mpv, File::Spec->catdir($mpd, 'tests'), 'config-flags.pm');
+ if (-f $f) {
+ $bldvol = $mpv;
+ $blddir = $mpd;
+ }
+ }
- my $redir2 = '2> /dev/null';
- $redir2 = '' if os_name eq 'VMS';
- $string = `$make_path -v -f /dev/null $redir2`;
+ # If srcdir wasn't provided on the command line, try to find it.
+ if (! $srcdir && $blddir) {
+ # See if the blddir is the srcdir
+ my $f = File::Spec->catpath($bldvol, File::Spec->catdir($blddir, 'src'), 'gnumake.h');
+ if (-f $f) {
+ $srcdir = $blddir;
+ $srcvol = $bldvol;
+ }
+ }
- $string =~ /^(GNU Make [^,\n]*)/;
- $testee_version = "$1\n";
+ if (! $srcdir) {
+ # Not found, see if our parent is the source dir
+ my $f = File::Spec->catpath($cwdvol, File::Spec->catdir(File::Spec->updir(), 'src'), 'gnumake.h');
+ if (-f $f) {
+ $srcdir = File::Spec->updir();
+ $srcvol = $cwdvol;
+ }
+ }
- my $redir = '2>&1';
- $redir = '' if os_name eq 'VMS';
- $string = `sh -c "$make_path -f /dev/null $redir"`;
- if ($string =~ /(.*): \*\*\* No targets\. Stop\./) {
- $make_name = $1;
- }
- else {
- $make_path =~ /^(?:.*$pathsep)?(.+)$/;
- $make_name = $1;
- }
+ # If we have srcdir but not blddir, set them equal
+ if ($srcdir && !$blddir) {
+ $blddir = $srcdir;
+ $bldvol = $srcvol;
+ }
- # prepend pwd if this is a relative path (ie, does not
- # start with a slash, but contains one). Thanks for the
- # clue, Roland.
+ # Load the config flags
+ if (!$blddir) {
+ warn "Cannot locate config-flags.pm (no blddir)\n";
+ } else {
+ my $f = File::Spec->catpath($bldvol, File::Spec->catdir($blddir, 'tests'), 'config-flags.pm');
+ if (! -f $f) {
+ warn "Cannot locate $f\n";
+ } else {
+ unshift(@INC, File::Spec->catpath($bldvol, File::Spec->catdir($blddir, 'tests'), ''));
+ require "config-flags.pm";
+ }
+ }
- if (index ($make_path, ":") != 1 && index ($make_path, "/") > 0)
- {
- $mkpath = "$pwd$pathsep$make_path";
- }
- else
- {
- $mkpath = $make_path;
- }
+ # Find the full pathname of Make. For DOS systems this is more
+ # complicated, so we ask make itself.
+ if ($osname eq 'VMS') {
+ $port_type = 'VMS-DCL' unless defined $ENV{"SHELL"};
+ # On VMS pre-setup make to be found with simply 'make'.
+ $make_path = 'make';
+ } else {
+ create_file('make.mk', 'all:;$(info $(MAKE))');
+ my $mk = `$make_path -sf make.mk`;
+ unlink('make.mk');
+ chop $mk;
+ $mk or die "FATAL ERROR: Cannot determine the value of \$(MAKE)\n";
+ $make_path = $mk;
+ }
+ ($mpv, $mpd, $mpf) = File::Spec->splitpath($make_path);
+
+ # Ask make what shell to use
+ create_file('shell.mk', 'all:;$(info $(SHELL))');
+ $sh_name = `$make_path -sf shell.mk`;
+ unlink('shell.mk');
+ chop $sh_name;
+ if (! $sh_name) {
+ print "Cannot determine shell\n";
+ $is_posix_sh = 0;
+ } else {
+ my $o = `$sh_name -c ': do nothing' 2>&1`;
+ $is_posix_sh = $? == 0 && $o eq '';
+ }
- # If srcdir wasn't provided on the command line, see if the
- # location of the make program gives us a clue. Don't fail if not;
- # we'll assume it's been installed into /usr/include or wherever.
- if (! $srcdir) {
- $make_path =~ /^(.*$pathsep)?/;
- my $d = $1 || '../';
- -f "${d}gnumake.h" and $srcdir = $d;
- }
+ $string = `$make_path -v`;
+ $string =~ /^(GNU Make [^,\n]*)/ or die "$make_path is not GNU make. Version:\n$string";
+ $testee_version = "$1\n";
- # Not with the make program, so see if we can get it out of the makefile
- if (! $srcdir && open(MF, "< ../Makefile")) {
- local $/ = undef;
- $_ = <MF>;
- close(MF);
- /^abs_srcdir\s*=\s*(.*?)\s*$/m;
- -f "$1/gnumake.h" and $srcdir = $1;
- }
+ create_file('null.mk', '');
- # Get Purify log info--if any.
+ my $redir = '2>&1';
+ $redir = '' if os_name eq 'VMS';
+ $string = `$make_path -f null.mk $redir`;
+ if ($string =~ /(.*): \*\*\* No targets\. Stop\./) {
+ $make_name = $1;
+ } else {
+ $make_name = $mpf;
+ }
- if (exists $ENV{PURIFYOPTIONS}
- && $ENV{PURIFYOPTIONS} =~ /.*-logfile=([^ ]+)/) {
- $pure_log = $1 || '';
- $pure_log =~ s/%v/$make_name/;
- $purify_errors = 0;
- }
+ # prepend pwd if this is a relative path (ie, does not
+ # start with a slash, but contains one). Thanks for the
+ # clue, Roland.
- $string = `sh -c "$make_path -j 2 -f /dev/null $redir"`;
- if ($string =~ /not supported/) {
- $parallel_jobs = 0;
- }
- else {
- $parallel_jobs = 1;
- }
+ if ($mpd && !File::Spec->file_name_is_absolute($make_path) && $cwdvol == $mpv) {
+ $mkpath = File::Spec->catpath($cwdvol, File::Spec->catdir($cwd, $mpd), $mpf);
+ } else {
+ $mkpath = $make_path;
+ }
- %FEATURES = map { $_ => 1 } split /\s+/, `sh -c "echo '\\\$(info \\\$(.FEATURES))' | $make_path -f- 2>/dev/null"`;
+ # Not with the make program, so see if we can get it out of the makefile
+ if (! $srcdir && open(MF, '<', File::Spec->catfile(File::Spec->updir(), 'Makefile'))) {
+ local $/ = undef;
+ $_ = <MF>;
+ close(MF);
+ /^abs_srcdir\s*=\s*(.*?)\s*$/m;
+ -f File::Spec->catfile($1, 'src', 'gnumake.h') and $srcdir = $1;
+ }
- # Set up for valgrind, if requested.
+ # At this point we should have srcdir and blddir: get fq versions
+ $fqsrcdir = File::Spec->rel2abs($srcdir);
+ $fqblddir = File::Spec->rel2abs($blddir);
- $make_command = $make_path;
+ # Find the helper tool
+ $helptool = File::Spec->catfile($fqsrcdir, 'tests', 'thelp.pl');
- if ($valgrind) {
- my $args = $valgrind_args;
- open(VALGRIND, "> valgrind.out")
- || die "Cannot open valgrind.out: $!\n";
- # -q --leak-check=yes
- exists $ENV{VALGRIND_ARGS} and $args = $ENV{VALGRIND_ARGS};
- $make_path = "valgrind --log-fd=".fileno(VALGRIND)." $args $make_path";
- # F_SETFD is 2
- fcntl(VALGRIND, 2, 0) or die "fcntl(setfd) failed: $!\n";
- system("echo Starting on `date` 1>&".fileno(VALGRIND));
- print "Enabled valgrind support.\n";
- }
+ # It's difficult to quote this properly in all the places it's used so
+ # ensure it doesn't need to be quoted.
+ $helptool =~ s,\\,/,g if $port_type eq 'W32';
+ $helptool =~ s, ,\\ ,g;
+
+ # Get Purify log info--if any.
+
+ if (exists $ENV{PURIFYOPTIONS}
+ && $ENV{PURIFYOPTIONS} =~ /.*-logfile=([^ ]+)/) {
+ $pure_log = $1 || '';
+ $pure_log =~ s/%v/$make_name/;
+ $purify_errors = 0;
+ }
+
+ $string = `$make_path -j 2 -f null.mk $redir`;
+ if ($string =~ /not supported/) {
+ $parallel_jobs = 0;
+ }
+ else {
+ $parallel_jobs = 1;
+ }
+
+ unlink('null.mk');
+
+ create_file('features.mk', 'all:;$(info $(.FEATURES))');
+ %FEATURES = map { $_ => 1 } split /\s+/, `$make_path -sf features.mk`;
+ unlink('features.mk');
+
+ # Set up for valgrind, if requested.
+
+ @make_command = ($make_path);
+
+ if ($valgrind) {
+ my $args = $valgrind_args;
+ open(VALGRIND, "> valgrind.out") or die "Cannot open valgrind.out: $!\n";
+ # -q --leak-check=yes
+ exists $ENV{VALGRIND_ARGS} and $args = $ENV{VALGRIND_ARGS};
+ @make_command = ('valgrind', '--log-fd='.fileno(VALGRIND));
+ push(@make_command, split(' ', $args));
+ push(@make_command, $make_path);
+ # F_SETFD is 2
+ fcntl(VALGRIND, 2, 0) or die "fcntl(setfd) failed: $!\n";
+ system("echo Starting on `date` 1>&".fileno(VALGRIND));
+ print "Enabled valgrind support.\n";
+ }
+
+ if ($debug) {
+ print "Port type: $port_type\n";
+ print "Make command: @make_command\n";
+ print "Shell path: $sh_name".($is_posix_sh ? ' (POSIX)' : '')."\n";
+ print "#PWD#: $cwdpath\n";
+ print "#PERL#: $perl_name\n";
+ print "#MAKEPATH#: $mkpath\n";
+ print "#MAKE#: $make_name\n";
+ }
}
sub setup_for_test
diff --git a/tests/scripts/features/archives b/tests/scripts/features/archives
index a064dd4..dcd38e5 100644
--- a/tests/scripts/features/archives
+++ b/tests/scripts/features/archives
@@ -8,10 +8,12 @@ This only works on systems that support it.";
# If this instance of make doesn't support archives, skip it
exists $FEATURES{archives} or return -1;
+# In theory archive support exists on Windows but it doesn't use ar;
+# someone will need to port this test.
+$port_type eq 'W32' and return -1;
+
# Create some .o files to work with
if ($osname eq 'VMS') {
- use Cwd;
- my $pwd = getcwd;
# VMS AR needs real object files at this time.
foreach $afile ('a1', 'a2', 'a3') {
# Use non-standard extension to prevent implicit rules from recreating
@@ -27,11 +29,8 @@ if ($osname eq 'VMS') {
utouch(-60, qw(a1.o a2.o a3.o));
}
-my $ar = $CONFIG_FLAGS{AR};
-
-# Fallback if configure did not find AR, such as VMS
-# which does not run configure.
-$ar = 'ar' if $ar eq '';
+# Fallback if configure did not find AR
+my $ar = get_config('AR') || 'ar';
my $redir = '2>&1';
$redir = '' if $osname eq 'VMS';
@@ -52,6 +51,7 @@ if ($? == 0) {
# Some versions of ar print different things on creation. Find out.
unlink('libxx.a');
my $created = `$ar $arflags libxx.a a1.o $redir`;
+$created =~ s/a1\.o/#OBJECT#/g;
# Some versions of ar print different things on add. Find out.
my $add = `$ar $arflags libxx.a a2.o $redir`;
@@ -64,7 +64,8 @@ $repl =~ s/a2\.o/#OBJECT#/g;
unlink('libxx.a');
# Very simple
-my $answer = "$ar $arflags libxx.a a1.o\n$created";
+($_ = $created) =~ s/#OBJECT#/a1.o/g;
+my $answer = "$ar $arflags libxx.a a1.o\n$_";
if ($port_type eq 'VMS-DCL') {
$answer = 'library /replace libxx.a a1.o';
}
@@ -204,10 +205,37 @@ run_make_test(undef, $arvar, "#MAKE#: Nothing to be done for 'default'.\n");
unlink('foo.vhd');
if ($osname eq 'VMS') {
- remove_directory_tree("$pwd/artest");
+ remove_directory_tree("$cwdpath/artest");
} else {
remove_directory_tree('artest');
}
+# Check long names for archive members.
+# See Savannah bug #54395
+
+if ($osname ne 'VMS') {
+ my $pre = '1234567890123456';
+ my $lib = 'libxx.a';
+ my $cr = $created;
+ $cr =~ s/#OBJECT#/${pre}a/g;
+ my $ad = $add;
+ $ad =~ s/#OBJECT#/${pre}b/g;
+
+ run_make_test(qq!
+# Both member names > 16 characters long
+default: $lib(${pre}a) $lib(${pre}b)
+
+(%): % ; \$(AR) \$(ARFLAGS) \$@ \$%
+
+$pre%: ; touch \$\@
+!,
+ $arvar, "touch ${pre}a\n$ar $arflags $lib ${pre}a\n${cr}touch ${pre}b\n$ar $arflags $lib ${pre}b\n${ad}rm ${pre}a ${pre}b\n");
+
+ # Run it again; nothing should happen
+ run_make_test(undef, $arvar, "#MAKE#: Nothing to be done for 'default'.\n");
+
+ unlink($lib);
+}
+
# This tells the test driver that the perl test script executed properly.
1;
diff --git a/tests/scripts/features/echoing b/tests/scripts/features/echoing
index 40debf5..a666a26 100644
--- a/tests/scripts/features/echoing
+++ b/tests/scripts/features/echoing
@@ -36,7 +36,7 @@ run_make_test("
all:
\techo This makefile did not clean the dir... good
clean:
-\t\@$delete_command $example\n",
+\t\@$CMD_rmfile $example\n",
'', 'echo This makefile did not clean the dir... good
This makefile did not clean the dir... good');
@@ -52,7 +52,7 @@ if (-f $example) {
# TEST #3
# -------
-run_make_test(undef, '-n clean', "$delete_command $example\n");
+run_make_test(undef, '-n clean', "$CMD_rmfile $example\n");
# TEST #4
diff --git a/tests/scripts/features/errors b/tests/scripts/features/errors
index ebd4383..f236d51 100644
--- a/tests/scripts/features/errors
+++ b/tests/scripts/features/errors
@@ -1,107 +1,105 @@
# -*-perl-*-
-$description = "The following tests the -i option and the '-' in front of \n"
- ."commands to test that make ignores errors in these commands\n"
- ."and continues processing.";
-
-$details = "This test runs two makes. The first runs on a target with a \n"
- ."command that has a '-' in front of it (and a command that is \n"
- ."intended to fail) and then a delete command after that is \n"
- ."intended to succeed. If make ignores the failure of the first\n"
- ."command as it is supposed to, then the second command should \n"
- ."delete a file and this is what we check for. The second make\n"
- ."that is run in this test is identical except that the make \n"
- ."command is given with the -i option instead of the '-' in \n"
- ."front of the command. They should run the same. ";
-
-if ($vos)
-{
- $rm_command = "delete_file";
-}
-else
-{
- $rm_command = "rm";
-}
+$description = "Test ignored failures in recipe command lines";
+
+run_make_test(qq!
+one:
+\t-exit 1
+\texit 0
+two:
+\texit 1
+\texit 0
+!,
+ "one", "exit 1\n#MAKE#: [#MAKEFILE#:3: one] Error 1 (ignored)\nexit 0\n");
-open(MAKEFILE,"> $makefile");
+# TEST #1
+# -------
-# The Contents of the MAKEFILE ...
+run_make_test(undef, " -i two",
+ "exit 1\n#MAKE#: [#MAKEFILE#:6: two] Error 1 (ignored)\nexit 0\n");
-print MAKEFILE "clean:\n"
- ."\t-$rm_command cleanit\n"
- ."\t$rm_command foo\n"
- ."clean2: \n"
- ."\t$rm_command cleanit\n"
- ."\t$rm_command foo\n";
+# TEST #2
+# -------
-# END of Contents of MAKEFILE
+# Test that error line offset works
-close(MAKEFILE);
+run_make_test(qq!
+all:
+\t\@echo hi
+\t\@echo there
+\t\@exit 1
+!,
+ '', "hi\nthere\n#MAKE#: *** [#MAKEFILE#:5: all] Error 1", 512);
-&touch("foo");
+# TEST #3
+# -------
-unlink("cleanit");
-$cleanit_error = `sh -c "$rm_command cleanit 2>&1"`;
-chomp $cleanit_error;
-$delete_error_code = $? >> 8;
+# Try failing due to unknown command
+my $unk = './foobarbazbozblat';
+unlink($unk);
-# TEST #1
-# -------
+my $err = $ERR_no_such_file;
-$answer = "$rm_command cleanit
-$cleanit_error
-$make_name: [$makefile:2: clean] Error $delete_error_code (ignored)
-$rm_command foo\n";
+run_make_test(qq!
+one: ; -$unk xx yy
+!,
+ 'one', "$unk xx yy\n#MAKE#: $unk: $err\n#MAKE#: [#MAKEFILE#:2: one] Error 127 (ignored)\n");
-&run_make_with_options($makefile,"",&get_logfile);
+# TEST #4
+# -------
-# If make acted as planned, it should ignore the error from the first
-# command in the target and execute the second which deletes the file "foo"
-# This file, therefore, should not exist if the test PASSES.
-if (-f "foo") {
- $test_passed = 0;
-}
+run_make_test(qq!
+two: ; $unk aa bb
+!, 'two -i',
+ "$unk aa bb\n#MAKE#: $unk: $err\n#MAKE#: [#MAKEFILE#:2: two] Error 127 (ignored)\n");
-# The output for this on VOS is too hard to replicate, so we only check it
-# on unix.
-if (!$vos)
-{
- &compare_output($answer,&get_logfile(1));
-}
+# TEST #5
+# -------
+run_make_test(undef, 'two',
+ "$unk aa bb\n#MAKE#: $unk: $err\n#MAKE#: *** [#MAKEFILE#:2: two] Error 127\n", 512);
-&touch("foo");
+# SV #56918 : Test the unknown command as the second recipe line
-# TEST #2
-# -------
+run_make_test(qq!
+three:
+\t\@echo one
+\t$unk qq rr
+!, 'three',
+ "one\n$unk qq rr\n#MAKE#: $unk: $err\n#MAKE#: *** [#MAKEFILE#:4: three] Error 127\n", 512);
-$answer = "$rm_command cleanit
-$cleanit_error
-$make_name: [$makefile:5: clean2] Error $delete_error_code (ignored)
-$rm_command foo\n";
+# Try failing due to non-executable file
-&run_make_with_options($makefile,"clean2 -i",&get_logfile);
+if ($ERR_nonexe_file) {
+ my $noexe = './barfooblatboz';
+ touch($noexe);
-if (-f "foo") {
- $test_passed = 0;
-}
+ run_make_test(qq!
+ one: ; -$noexe xx yy
+ two: ; $noexe aa bb
+ !,
+ 'one', "$noexe xx yy\n#MAKE#: $noexe: $ERR_nonexe_file\n#MAKE#: [#MAKEFILE#:2: one] Error 127 (ignored)\n");
-if (!$vos) {
- &compare_output($answer,&get_logfile(1));
+ unlink($noexe);
}
-# Test that error line offset works
+# Try failing by "running" a directory
-run_make_test(q!
-all:
- @echo hi
- @echo there
- @exit 1
+if ($ERR_exe_dir) {
+ mkdir('sd', 0775);
+
+ run_make_test(q!
+PATH := .
+all: ; sd
!,
- '', "hi\nthere\n#MAKE#: *** [#MAKEFILE#:5: all] Error 1", 512);
+ '', "sd\n#MAKE#: sd: $ERR_exe_dir\n#MAKE#: *** [#MAKEFILE#:3: all] Error 127", 512);
-1;
+ run_make_test(q!
+all: ; ./sd
+!,
+ '', "./sd\n#MAKE#: ./sd: $ERR_exe_dir\n#MAKE#: *** [#MAKEFILE#:2: all] Error 127", 512);
-### Local Variables:
-### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action))
-### End:
+ rmdir('sd');
+}
+
+1;
diff --git a/tests/scripts/features/escape b/tests/scripts/features/escape
index bf069df..5157a97 100644
--- a/tests/scripts/features/escape
+++ b/tests/scripts/features/escape
@@ -10,47 +10,58 @@ Make sure that backslash before non-special characters are kept.";
# TEST 1
-run_make_test('
+run_make_test(q!
+ifdef NOESC
+path = pre:
+endif
+ifdef ONEESC
+path = pre\:
+endif
+ifdef TWOESC
+path = pre\\\\:
+endif
+
$(path)foo : ; @echo "touch ($@)"
foo\ bar: ; @echo "touch ($@)"
sharp: foo\#bar.ext
-foo\#bar.ext: ; @echo "foo#bar.ext = ($@)"',
- '',
- 'touch (foo)');
+foo\#bar.ext: ; @echo "foo#bar.ext = ($@)"
+!,
+ '',
+ 'touch (foo)');
# TEST 2: This one should fail, since the ":" is unquoted.
run_make_test(undef,
- 'path=pre:',
- "#MAKEFILE#:2: *** target pattern contains no '%'. Stop.",
- 512);
+ 'NOESC=1',
+ "#MAKEFILE#:12: *** target pattern contains no '%'. Stop.",
+ 512);
# TEST 3: This one should work, since we escape the ":".
run_make_test(undef,
- "'path=pre\\:'",
- 'touch (pre:foo)');
+ 'ONEESC=1',
+ 'touch (pre:foo)');
# TEST 4: This one should fail, since the escape char is escaped.
run_make_test(undef,
- "'path=pre\\\\:'",
- "#MAKEFILE#:2: *** target pattern contains no '%'. Stop.",
- 512);
+ 'TWOESC=1',
+ "#MAKEFILE#:12: *** target pattern contains no '%'. Stop.",
+ 512);
# TEST 5: This one should work
run_make_test(undef,
- "'foo bar'",
- 'touch (foo bar)');
+ ['foo bar'],
+ 'touch (foo bar)');
# TEST 6: Test escaped comments
run_make_test(undef,
- 'sharp',
- 'foo#bar.ext = (foo#bar.ext)');
+ 'sharp',
+ 'foo#bar.ext = (foo#bar.ext)');
# Test escaped colons in prerequisites
# Quoting of backslashes in q!! is kind of messy.
@@ -70,5 +81,23 @@ all: ..\foo
!,
'', ": '..\\foo'\n");
+# Test escaped comments in variable assignments
+run_make_test(q!
+self = $1
+foo := $(call self,#foo#)#foo
+bar := $(call self,\#bar\#)#bar
+all:;@echo '$(foo) $(bar)'
+!,
+ '',"#foo# \\#bar\\#");
+
+# Test escaped comments in variable assignments in a variable
+run_make_test(q!
+C = \#
+self = $1
+foo := $(call self,$Cfoo$C)#foo
+all:;@echo '$(foo)'
+!,
+ '',"#foo#");
+
# This tells the test driver that the perl test script executed properly.
1;
diff --git a/tests/scripts/features/exec b/tests/scripts/features/exec
new file mode 100644
index 0000000..91181f4
--- /dev/null
+++ b/tests/scripts/features/exec
@@ -0,0 +1,63 @@
+# -*-perl-*-
+
+use warnings;
+
+my $description = "Test that make can execute binaries as well as scripts with"
+ ." various shabangs and without a shebang";
+my $details = "The various shells that this test uses are the default"
+ ." /bin/sh, \$SHELL and the perl interpreter that is"
+ ." executing this test program. The shells are used for the value"
+ ." of SHELL inside the test makefile and also as a shebang in the"
+ ." executed script. There is also a test which executes a script"
+ ." that has no shebang.";
+
+# Only bother with this on UNIX systems
+$port_type eq 'UNIX' or return -1;
+
+my $usersh = $origENV{SHELL};
+my $answer = 'hello, world';
+
+my @shebangs = ('', '#!/bin/sh', "#!$usersh", "#!$perl_name");
+my @shells = ('', 'SHELL=/bin/sh', "SHELL=$usersh");
+
+# tests [0-11]
+# Have a makefile with various SHELL= exec a shell program with varios
+# shebangs or without a shebang at all.
+my $stem = './exec.cmd';
+my $k = 0;
+for my $shebang (@shebangs) {
+ for my $shell (@shells) {
+ my $cmd = $k ? "$stem.$k" : $stem;
+ ++$k;
+ unlink $cmd;
+ open(CMD,"> $cmd");
+ print CMD "$shebang\n";
+ print CMD "printf \"$answer\\n\";\n";
+ close(CMD);
+ chmod 0700, $cmd;
+
+ run_make_test(q!
+all:; @$(CMD)
+!, "$shell CMD=$cmd", "$answer\n");
+
+ rmfiles($cmd);
+ }
+}
+
+# tests [12-14]
+# Exec a binary from a makefile that has SHELL=.
+for my $shell (@shells) {
+ run_make_test(q!
+all:; @#PERL# -e 'printf "$(ANSWER)\n"';
+!, "$shell ANSWER='$answer'", "$answer\n");
+}
+
+# test 15
+# Use perl as a shell.
+run_make_test(q!
+SHELL = #PERL#
+.SHELLFLAGS = -e
+all:; @printf "$(ANSWER)\n";
+!, "ANSWER='$answer'", "$answer\n");
+
+1;
diff --git a/tests/scripts/features/grouped_targets b/tests/scripts/features/grouped_targets
new file mode 100644
index 0000000..615e962
--- /dev/null
+++ b/tests/scripts/features/grouped_targets
@@ -0,0 +1,133 @@
+# -*-perl-*-
+
+$description = "This test is about grouped multiple targets indicated by &:";
+$details = "Here we test for requirements like\n"
+ ."- if multiple such targets are updated, the recipe is run once\n"
+ ."- parsing issues related to the &: syntax itself\n";
+
+# Parsing: &: allowed without any targets.
+run_make_test(q{
+.PHONY: all
+&:;
+all: ;@printf ''
+},
+'', "");
+
+# Parsing: &: works not preceded by whitespace.
+run_make_test(q{
+foo&:;@echo foo
+},
+'foo', "foo");
+
+# Ordinary rule runs recipe four times for t1 t2 t3 t4.
+# Grouped target rule runs recipe once; others are considered updated.
+run_make_test(q{
+.PHONY: t1 t2 t3 t4 g1 g2 g3 g4
+t1 t2 t3 t4: ; @echo $@
+g1 g2 g3 g4 &: ; @echo $@
+},
+'t1 t2 t3 t4 g1 g2 g3 g4',
+"t1\n"
+."t2\n"
+."t3\n"
+."t4\n"
+."g1\n"
+."#MAKE#: Nothing to be done for 'g2'.\n"
+."#MAKE#: Nothing to be done for 'g3'.\n"
+."#MAKE#: Nothing to be done for 'g4'.");
+
+# Similar to previous test, but targets come from m1 phony
+# rather than from the command line. We don't see "Nothing to
+# be done for" messages. Also, note reversed order g4 g3 ...
+# Thus the auto variable $@ is "g4" when that rule fires.
+run_make_test(q{
+.PHONY: m1 t1 t2 t3 t4 g1 g2 g3 g4
+m1: t1 t2 t3 t4 g4 g3 g2 g1
+t1 t2 t3 t4: ; @echo $@
+g1 g2 g3 g4&: ; @echo $@
+},
+'',
+"t1\nt2\nt3\nt4\ng4");
+
+# Set a grouped target recipe for existing targets
+run_make_test(q{
+.PHONY: M a b
+M: a b
+a:
+a b&: ; @echo Y
+b:
+},
+'',
+"Y");
+
+# grouped targets require a recipe
+run_make_test(q{
+.PHONY: M a b
+M: a b
+a b&:
+},
+'',
+"#MAKEFILE#:4: *** grouped targets must provide a recipe. Stop.", 512);
+
+# Pattern rules use grouped targets anyway so it's a no-op
+run_make_test(q{
+.PHONY: M
+M: a.q b.q
+a.% b.%&: ; @echo Y
+},
+'',
+"Y");
+
+# Double-colon grouped target rules.
+run_make_test(q{
+.PHONY: M a b c d e f g h
+M: a b
+a b c&:: ; @echo X
+c d e&:: ; @echo Y
+f g h&:: ; @echo Z
+},
+'',
+"X");
+
+run_make_test(q{
+.PHONY: M a b c d e f g h
+M: c
+a b c&:: ; @echo X
+c d e&:: ; @echo Y
+f g h&:: ; @echo Z
+},
+'',
+"X\nY");
+
+run_make_test(q{
+.PHONY: M a b c d e f g h
+M: a b c d e
+a b c&:: ; @echo X
+c d e&:: ; @echo Y
+f g h&:: ; @echo Z
+},
+'',
+"X\nY");
+
+run_make_test(q{
+.PHONY: M a b c d e f g h
+M: d e
+a b c&:: ; @echo X
+c d e&:: ; @echo Y
+f g h&:: ; @echo Z
+},
+'',
+"Y");
+
+run_make_test(q{
+.PHONY: M a b c d e f g h
+M: f g h
+a b c&:: ; @echo X
+c d e&:: ; @echo Y
+f g h&:: ; @echo Z
+},
+'',
+"Z");
+
+# This tells the test driver that the perl test script executed properly.
+1;
diff --git a/tests/scripts/features/include b/tests/scripts/features/include
index f78563f..0c63c06 100644
--- a/tests/scripts/features/include
+++ b/tests/scripts/features/include
@@ -147,24 +147,6 @@ baz: end
"#MAKE#: *** No rule to make target 'end', needed by 'baz'. Stop.\n",
512);
-# Test that the diagnostics is issued even if the target has been
-# tried before with the dontcare flag (include/-include case).
-#
-run_make_test('
-include bar
--include foo
-
-all:
-
-foo: baz
-bar: baz
-baz: end
-',
-'',
-"#MAKEFILE#:2: bar: No such file or directory
-#MAKE#: *** No rule to make target 'end', needed by 'baz'. Stop.\n",
-512);
-
# Test include of make-able file doesn't show an error (Savannah #102)
run_make_test(q!
.PHONY: default
@@ -179,18 +161,13 @@ inc2:; echo > $@
rmfiles('inc1', 'inc2');
-# Test include of non-make-able file does show an error (Savannah #102)
-run_make_test(q!
-.PHONY: default
-default:; @echo DONE
-
-inc1:; echo > $@
-include inc1
-include inc2
-!,
- '', "#MAKEFILE#:7: inc2: No such file or directory\n#MAKE#: *** No rule to make target 'inc2'. Stop.\n", 512);
+# No target gets correct error
+run_make_test('', '', '#MAKE#: *** No targets. Stop.', 512);
-rmfiles('inc1');
+# No target in included file either, still gets correct error.
+touch('inc1.mk');
+run_make_test('include inc1.mk', '', '#MAKE#: *** No targets. Stop.', 512);
+rmfiles('inc1.mk');
# Include same file multiple times
@@ -204,40 +181,83 @@ include inc1
rmfiles('inc1');
-# Included file has a prerequisite that fails to build
+if (defined $ERR_no_such_file) {
-run_make_test(q!
+ # Test that the diagnostics is issued even if the target has been
+ # tried before with the dontcare flag (include/-include case).
+ #
+ run_make_test('
+include bar
+-include foo
+
+all:
+
+foo: baz
+bar: baz
+baz: end
+',
+'',
+ "#MAKEFILE#:2: bar: $ERR_no_such_file\n#MAKE#: *** No rule to make target 'end', needed by 'baz'. Stop.\n",
+ 512);
+
+ # Test include of non-make-able file does show an error (Savannah #102)
+ run_make_test(q!
+.PHONY: default
+default:; @echo DONE
+
+inc1:; echo > $@
+include inc1
+include inc2
+!,
+ '', "#MAKEFILE#:7: inc2: $ERR_no_such_file\n#MAKE#: *** No rule to make target 'inc2'. Stop.\n", 512);
+
+ rmfiles('inc1');
+
+ # Included file has a prerequisite that fails to build
+
+ run_make_test(q!
default:; @echo DEFAULT
include inc1
inc1: foo; echo > $@
foo:; exit 1
!,
- '', "exit 1\n#MAKEFILE#:3: inc1: No such file or directory\n#MAKE#: *** [#MAKEFILE#:5: foo] Error 1\n", 512);
+ '', "exit 1\n#MAKEFILE#:3: inc1: $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:5: foo] Error 1\n", 512);
-rmfiles('inc1');
+ rmfiles('inc1');
-# Included file has a prerequisite we don't know how to build
+ # Included file has a prerequisite we don't know how to build
-run_make_test(q!
+ run_make_test(q!
default:; @echo DEFAULT
include inc1
inc1: foo; echo > $@
!,
- '', "#MAKEFILE#:3: inc1: No such file or directory\n#MAKE#: *** No rule to make target 'foo', needed by 'inc1'. Stop.\n", 512);
+ '', "#MAKEFILE#:3: inc1: $ERR_no_such_file\n#MAKE#: *** No rule to make target 'foo', needed by 'inc1'. Stop.\n", 512);
-rmfiles('inc1');
+ rmfiles('inc1');
+}
-# include a directory
+# Including files that can't be read should show an error
+if (defined $ERR_unreadable_file) {
+ create_file('inc1', 'FOO := foo');
+ chmod 0000, 'inc1';
-if ($all_tests) {
- # Test that include of a rebuild-able file doesn't show a warning
- # Savannah bug #102
run_make_test(q!
-include foo
-foo: ; @echo foo = bar > $@
+include inc1
+all:;@echo $(FOO)
!,
- '', "#MAKE#: 'foo' is up to date.\n");
- rmfiles('foo');
+ '', "#MAKEFILE#:2: inc1: $ERR_unreadable_file\n#MAKE#: *** No rule to make target 'inc1'. Stop.", 512);
+
+# Unreadable files that we know how to successfully recreate should work
+
+ run_make_test(sprintf(q!
+all:;@echo $(FOO)
+include inc1
+inc1:; @%s $@ && echo FOO := bar > $@
+!, $CMD_rmfile),
+ '', "bar");
+
+ rmfiles('inc1');
}
1;
diff --git a/tests/scripts/features/jobserver b/tests/scripts/features/jobserver
index 7da4a65..73d10d9 100644
--- a/tests/scripts/features/jobserver
+++ b/tests/scripts/features/jobserver
@@ -42,7 +42,7 @@ recurse: ; @echo $@: "/$(SHOW)/"; $(MAKE) -j3 -f #MAKEFILE# recurse2
recurse2: ; @echo $@: "/$(SHOW)/"; $(MAKE) -f #MAKEFILE# all
all:;@echo $@: "/$(SHOW)/"
!,
- "-j2 $np", "recurse: /-j2 --jobserver-auth=<auth> $np/\n#MAKE#[1]: warning: -jN forced in submake: disabling jobserver mode.\nrecurse2: /-j3 --jobserver-auth=<auth> $np/\nall: /-j3 --jobserver-auth=<auth> $np/\n");
+ "-j2 $np", "recurse: /-j2 --jobserver-auth=<auth> $np/\n#MAKE#[1]: warning: -j3 forced in submake: resetting jobserver mode.\nrecurse2: /-j3 --jobserver-auth=<auth> $np/\nall: /-j3 --jobserver-auth=<auth> $np/\n");
delete $extraENV{MAKEFLAGS};
# Test override of -jN with -j
@@ -52,7 +52,7 @@ recurse: ; @echo $@: "/$(SHOW)/"; $(MAKE) -j -f #MAKEFILE# recurse2
recurse2: ; @echo $@: "/$(SHOW)/"; $(MAKE) -f #MAKEFILE# all
all:;@echo $@: "/$(SHOW)/"
!,
- "-j2 $np", "recurse: /-j2 --jobserver-auth=<auth> $np/\n#MAKE#[1]: warning: -jN forced in submake: disabling jobserver mode.\nrecurse2: /-j $np/\nall: /-j $np/\n");
+ "-j2 $np", "recurse: /-j2 --jobserver-auth=<auth> $np/\n#MAKE#[1]: warning: -j0 forced in submake: resetting jobserver mode.\nrecurse2: /-j $np/\nall: /-j $np/\n");
# Don't put --jobserver-auth into a re-exec'd MAKEFLAGS.
# We can't test this directly because there's no way a makefile can
@@ -76,29 +76,31 @@ inc.mk:
# @echo 'MAKEFLAGS = $(MAKEFLAGS)'
@echo 'FOO = bar' > $@
!,
- "$np -j2", "#MAKE#[1]: warning: -jN forced in submake: disabling jobserver mode.\nall\n");
+ "$np -j2", "#MAKE#[1]: warning: -j2 forced in submake: resetting jobserver mode.\nall\n");
unlink('inc.mk');
-# Test recursion when make doesn't think it exists.
+# Test recursion which is hidden from make.
# See Savannah bug #39934
# Or Red Hat bug https://bugzilla.redhat.com/show_bug.cgi?id=885474
-
-open(MAKEFILE,"> Makefile2");
-print MAKEFILE '
-vpath %.c ../
-foo:
-';
-close(MAKEFILE);
-
-run_make_test(q!
+# Windows doesn't use a pipe, and doesn't close access, so this won't happen.
+if ($port_type ne 'W32') {
+ open(MAKEFILE,"> Makefile2");
+ print MAKEFILE '
+ vpath %.c ../
+ foo:
+ ';
+ close(MAKEFILE);
+
+ run_make_test(q!
default: ; @ #MAKEPATH# -f Makefile2
!,
"-j2 $np",
"#MAKE#[1]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule.
#MAKE#[1]: Nothing to be done for 'foo'.");
-rmfiles('Makefile2');
+ rmfiles('Makefile2');
+}
1;
diff --git a/tests/scripts/features/load b/tests/scripts/features/load
index 2e9318d..fa4b86f 100644
--- a/tests/scripts/features/load
+++ b/tests/scripts/features/load
@@ -6,6 +6,12 @@ $details = "Test dynamic loading of modules.";
# Don't do anything if this system doesn't support "load"
exists $FEATURES{load} or return -1;
+my $cc = get_config('CC');
+if (! $cc) {
+ $verbose and print "Skipping load test: no CC defined\n";
+ return -1;
+}
+
# First build a shared object
# Provide both a default and non-default load symbol
@@ -39,9 +45,11 @@ EOF
close($F) or die "close: testload.c: $!\n";
# Make sure we can compile
-# CONFIG_FLAGS are loaded from config-flags.pm and set by configure
-my $sobuild = "$CONFIG_FLAGS{CC} ".($srcdir? "-I$srcdir":'')." $CONFIG_FLAGS{CPPFLAGS} $CONFIG_FLAGS{CFLAGS} -shared -fPIC $CONFIG_FLAGS{LDFLAGS} -o testload.so testload.c";
+my $cflags = get_config('CFLAGS');
+my $cppflags = get_config('CPPFLAGS');
+my $ldflags = get_config('LDFLAGS');
+my $sobuild = "$cc ".($srcdir? "-I$srcdir/src":'')." $cppflags $cflags -shared -fPIC $ldflags -o testload.so testload.c";
my $clog = `$sobuild 2>&1`;
if ($? != 0) {
diff --git a/tests/scripts/features/loadapi b/tests/scripts/features/loadapi
index 8c824c0..ba14928 100644
--- a/tests/scripts/features/loadapi
+++ b/tests/scripts/features/loadapi
@@ -6,6 +6,12 @@ $details = "Verify the different aspects of the shared object API.";
# Don't do anything if this system doesn't support "load"
exists $FEATURES{load} or return -1;
+my $cc = get_config('CC');
+if (! $cc) {
+ $verbose and print "Skipping load test: no CC defined\n";
+ return -1;
+}
+
# First build a shared object
# Provide both a default and non-default load symbol
@@ -72,7 +78,12 @@ testapi_gmk_setup ()
EOF
close($F) or die "close: testapi.c: $!\n";
-my $sobuild = "$CONFIG_FLAGS{CC} ".($srcdir? "-I$srcdir":'')." $CONFIG_FLAGS{CPPFLAGS} $CONFIG_FLAGS{CFLAGS} -shared -fPIC $CONFIG_FLAGS{LDFLAGS} -o testapi.so testapi.c";
+# Make sure we can compile
+
+my $cflags = get_config('CFLAGS');
+my $cppflags = get_config('CPPFLAGS');
+my $ldflags = get_config('LDFLAGS');
+my $sobuild = "$cc ".($srcdir? "-I$srcdir/src":'')." $cppflags $cflags -shared -fPIC $ldflags -o testapi.so testapi.c";
my $clog = `$sobuild 2>&1`;
if ($? != 0) {
diff --git a/tests/scripts/features/output-sync b/tests/scripts/features/output-sync
index 7237e65..1d09174 100644
--- a/tests/scripts/features/output-sync
+++ b/tests/scripts/features/output-sync
@@ -11,13 +11,6 @@ exists $FEATURES{'output-sync'} or return -1;
$parallel_jobs or return -1;
-if ($vos) {
- $sleep_command = "sleep -seconds";
-}
-else {
- $sleep_command = "sleep";
-}
-
# The following subdirectories with Makefiles are used in several
# of the following tests. The model is:
# foo/Makefile - has a "foo" target that waits for the bar target
@@ -45,10 +38,10 @@ sub output_sync_clean {
# reliable. If things are too fast, then sometimes a different job will steal
# the output sync lock and the output is mis-ordered from what we expect.
sub output_sync_wait {
- return "while [ ! -f ../mksync.$_[0] ]; do :; done; rm -f ../mksync.$_[0].wait; $sleep_command 1";
+ return subst_make_string("#HELPER# -q wait ../mksync.$_[0] sleep 1");
}
sub output_sync_set {
- return "date > ../mksync.$_[0]";
+ return subst_make_string("#HELPER# -q file ../mksync.$_[0]");
}
@syncfiles = qw(mksync.foo mksync.foo_start mksync.bar mksync.bar_start);
@@ -158,10 +151,10 @@ all: make-foo make-bar
make-foo: ; \$(MAKE) -C foo
-make-bar: ; $sleep_command 1 ; \$(MAKE) -C bar!,
+make-bar: ; #HELPER# -q sleep 1 ; \$(MAKE) -C bar!,
'-j --output-sync=target',
"#MAKEPATH# -C foo
-$sleep_command 1 ; #MAKEPATH# -C bar
+#HELPER# -q sleep 1 ; #MAKEPATH# -C bar
#MAKE#[1]: Entering directory '#PWD#/bar'
bar: start
bar: end
@@ -179,7 +172,7 @@ baz: end
unlink(@syncfiles);
run_make_test(undef, '-j --output-sync=target x=',
"#MAKEPATH# -C foo
-$sleep_command 1 ; #MAKEPATH# -C bar
+#HELPER# -q sleep 1 ; #MAKEPATH# -C bar
bar: start
bar: end
foo: start
@@ -195,10 +188,10 @@ all: make-foo-fail make-bar-bar
make-foo-fail: ; \$(MAKE) -C foo foo-fail
-make-bar-bar: ; $sleep_command 1 ; \$(MAKE) -C bar bar!,
+make-bar-bar: ; #HELPER# -q sleep 1 ; \$(MAKE) -C bar bar!,
'-j -O',
"#MAKEPATH# -C foo foo-fail
-$sleep_command 1 ; #MAKEPATH# -C bar bar
+#HELPER# -q sleep 1 ; #MAKEPATH# -C bar bar
#MAKE#[1]: Entering directory '#PWD#/bar'
bar: start
bar: end
@@ -223,10 +216,10 @@ all: make-foo make-bar
make-foo: ; \$(MAKE) -C foo foo-job
-make-bar: ; $sleep_command 1 ; \$(MAKE) -C bar bar-job!,
+make-bar: ; #HELPER# -q sleep 1 ; \$(MAKE) -C bar bar-job!,
'-j --output-sync=line',
"#MAKEPATH# -C foo foo-job
-$sleep_command 1 ; #MAKEPATH# -C bar bar-job
+#HELPER# -q sleep 1 ; #MAKEPATH# -C bar bar-job
#MAKE#[1]: Entering directory '#PWD#/foo'
foo: start
#MAKE#[1]: Leaving directory '#PWD#/foo'
@@ -240,7 +233,6 @@ bar: end
foo: end
#MAKE#[1]: Leaving directory '#PWD#/foo'\n", 0, $tmout);
-
# Remove temporary directories and contents.
output_sync_clean();
@@ -338,12 +330,13 @@ foo: $(OBJS) ; echo $(or $(filter %.o,$^),$(error fail))
'-O', "#MAKEFILE#:2: *** fail. Stop.\n", 512);
# SV 47365: Make sure exec failure error messages are shown
-# Is "127" not always the same everywhere? We may have to detect it?
-
-run_make_test(q!
+# Needs to be ported to Windows
+if ($port_type ne 'W32') {
+ run_make_test(q!
all:: ; @./foo bar baz
!,
- '-O', "#MAKE#: ./foo: Command not found\n#MAKE#: *** [#MAKEFILE#:2: all] Error 127\n", 512);
+ '-O', "#MAKE#: ./foo: $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:2: all] Error 127\n", 512);
+}
# This tells the test driver that the perl test script executed properly.
1;
diff --git a/tests/scripts/features/parallelism b/tests/scripts/features/parallelism
index fabe548..08f94a6 100644
--- a/tests/scripts/features/parallelism
+++ b/tests/scripts/features/parallelism
@@ -1,68 +1,73 @@
# -*-perl-*-
$description = "Test parallelism (-j) option.";
-
-
-$details = "This test creates a makefile with two double-colon default
-rules. The first rule has a series of sleep and echo commands
-intended to run in series. The second and third have just an
-echo statement. When make is called in this test, it is given
-the -j option with a value of 4. This tells make that it may
-start up to four jobs simultaneously. In this case, since the
-first command is a sleep command, the output of the second
-and third commands will appear before the first if indeed
-make is running all of these commands in parallel.";
+$details = "";
if (!$parallel_jobs) {
return -1;
}
-if ($vos) {
- $sleep_command = "sleep -seconds";
-}
-else {
- $sleep_command = "sleep";
-}
+run_make_test("
+all : def_1 def_2 def_3
+def_1 : ; \@#HELPER# file ONE wait THREE out TWO
+def_2 : ; \@#HELPER# wait FOUR file THREE
+def_3 : ; \@#HELPER# wait ONE file FOUR",
+ '-j4', "file ONE\nwait ONE\nfile FOUR\nwait FOUR\nfile THREE\nwait THREE\nTWO");
+rmfiles(qw(ONE TWO THREE FOUR));
+# Verify -j added to MAKEFLAGS in the makefile
+run_make_test("
+MAKEFLAGS += -j4
+all : def_1 def_2 def_3
+def_1 : ; \@#HELPER# file ONE wait THREE out TWO
+def_2 : ; \@#HELPER# wait FOUR file THREE
+def_3 : ; \@#HELPER# wait ONE file FOUR",
+ '', "file ONE\nwait ONE\nfile FOUR\nwait FOUR\nfile THREE\nwait THREE\nTWO");
+rmfiles(qw(ONE TWO THREE FOUR));
+# Command line should take precedence
run_make_test("
+MAKEFLAGS += -j2
all : def_1 def_2 def_3
-def_1 : ; \@echo ONE; $sleep_command 3 ; echo TWO
-def_2 : ; \@$sleep_command 2 ; echo THREE
-def_3 : ; \@$sleep_command 1 ; echo FOUR",
- '-j4', "ONE\nFOUR\nTHREE\nTWO");
+def_1 : ; \@#HELPER# file ONE wait THREE out TWO
+def_2 : ; \@#HELPER# wait FOUR file THREE
+def_3 : ; \@#HELPER# wait ONE file FOUR",
+ '-j4', "file ONE\nwait ONE\nfile FOUR\nwait FOUR\nfile THREE\nwait THREE\nTWO");
+rmfiles(qw(ONE TWO THREE FOUR));
# Test parallelism with included files. Here we sleep/echo while
# building the included files, to test that they are being built in
# parallel.
run_make_test("
-all: 1 2; \@echo success
+all: 1 2; \@#HELPER# out success
-include 1.inc 2.inc
-1.inc: ; \@echo ONE.inc; $sleep_command 2; echo TWO.inc; echo '1: ; \@echo ONE; $sleep_command 2; echo TWO' > \$\@
-2.inc: ; \@$sleep_command 1; echo THREE.inc; echo '2: ; \@$sleep_command 1; echo THREE' > \$\@",
+1.inc:
+\t\@#HELPER# file ONE.inc wait THREE.inc file TWO.inc
+\t\@echo '1: ; \@#HELPER# file ONE wait THREE file TWO' > \$\@
+2.inc:
+\t\@#HELPER# wait ONE.inc file THREE.inc
+\t\@echo '2: ; \@#HELPER# wait ONE file THREE' > \$\@",
"-j4",
- "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n", 0, 7);
-
-rmfiles(qw(1.inc 2.inc));
+ "file ONE.inc\nwait ONE.inc\nfile THREE.inc\nwait THREE.inc\nfile TWO.inc\nfile ONE\nwait ONE\nfile THREE\nwait THREE\nfile TWO\nsuccess\n", 0, 7);
+rmfiles(qw(ONE.inc TWO.inc THREE.inc ONE TWO THREE 1.inc 2.inc));
# Test parallelism with included files--this time recurse first and make
# sure the jobserver works.
run_make_test("
recurse: ; \@\$(MAKE) --no-print-directory -f #MAKEFILE# INC=yes all
-all: 1 2; \@echo success
+all: 1 2; \@#HELPER# out success
INC = no
ifeq (\$(INC),yes)
-include 1.inc 2.inc
endif
-1.inc: ; \@echo ONE.inc; $sleep_command 2; echo TWO.inc; echo '1: ; \@echo ONE; $sleep_command 2; echo TWO' > \$\@
-2.inc: ; \@$sleep_command 1; echo THREE.inc; echo '2: ; \@$sleep_command 1; echo THREE' > \$\@",
+1.inc: ; \@#HELPER# file ONE.inc wait THREE.inc file TWO.inc; echo '1: ; \@#HELPER# file ONE wait THREE file TWO' > \$\@
+2.inc: ; \@#HELPER# wait ONE.inc file THREE.inc; echo '2: ; \@#HELPER# wait ONE file THREE' > \$\@",
"-j4",
- "ONE.inc\nTHREE.inc\nTWO.inc\nONE\nTHREE\nTWO\nsuccess\n", 0, 7);
-
-rmfiles(qw(1.inc 2.inc));
+ "file ONE.inc\nwait ONE.inc\nfile THREE.inc\nwait THREE.inc\nfile TWO.inc\nfile ONE\nwait ONE\nfile THREE\nwait THREE\nfile TWO\nsuccess\n", 0, 7);
+rmfiles(qw(ONE.inc TWO.inc THREE.inc ONE TWO THREE 1.inc 2.inc));
# Grant Taylor reports a problem where tokens can be lost (not written back
# to the pipe when they should be): this happened when there is a $(shell ...)
@@ -73,14 +78,14 @@ rmfiles(qw(1.inc 2.inc));
run_make_test("
export HI = \$(shell \$(\$\@.CMD))
-first.CMD = echo hi
-second.CMD = $sleep_command 4; echo hi
+first.CMD = #HELPER# out hi
+second.CMD = #HELPER# sleep 4
.PHONY: all first second
all: first second
-first second: ; \@echo \$\@; $sleep_command 1; echo \$\@",
- '-j2', "first\nfirst\nsecond\nsecond", 0, 7);
+first second: ; \@#HELPER# out \$\@ sleep 1 out \$\@",
+ '-j2', "first\nsleep 1\nfirst\nsecond\nsleep 1\nsecond", 0, 7);
# Michael Matz <matz@suse.de> reported a bug where if make is running in
# parallel without -k and two jobs die in a row, but not too close to each
@@ -90,22 +95,24 @@ run_make_test("
.PHONY: all fail.1 fail.2 fail.3 ok
all: fail.1 ok fail.2 fail.3
+.RECIPEPREFIX := >
+
fail.1 fail.2 fail.3:
- \@$sleep_command \$(patsubst fail.%,%,\$\@)
- \@echo Fail
- \@exit 1
+> \@#HELPER# sleep \$(patsubst fail.%,%,\$\@)
+> \@#HELPER# out Fail
+> \@#HELPER# fail 1
ok:
- \@$sleep_command 4
- \@echo Ok done",
- '-rR -j5', "Fail
-#MAKE#: *** [#MAKEFILE#:8: fail.1] Error 1
+> \@#HELPER# sleep 4
+> \@#HELPER# out OK",
+ '-rR -j5', "sleep 1\nFail\nfail 1
+#MAKE#: *** [#MAKEFILE#:10: fail.1] Error 1
#MAKE#: *** Waiting for unfinished jobs....
-Fail
-#MAKE#: *** [#MAKEFILE#:8: fail.2] Error 1
-Fail
-#MAKE#: *** [#MAKEFILE#:8: fail.3] Error 1
-Ok done",
+sleep 2\nFail\nfail 1
+#MAKE#: *** [#MAKEFILE#:10: fail.2] Error 1
+sleep 3\nFail\nfail 1
+#MAKE#: *** [#MAKEFILE#:10: fail.3] Error 1
+sleep 4\nOK",
512);
@@ -117,24 +124,22 @@ all:; @:
-include foo.d
-foo.d: comp
- @echo building $@
+foo.d: comp ; @#HELPER# out $@
comp: mod_a.o mod_b.o; @:
-mod_a.o mod_b.o:
- @exit 1
-', '-j2', '');
+mod_a.o mod_b.o: ; @#HELPER# fail 1
+', '-j2', "fail 1\nfail 1\n");
# TEST #9 -- Savannah bugs 3330 and 15919
# In earlier versions of make this will either give the wrong answer, or hang.
utouch(-10, 'target');
-run_make_test('target: intermed ; touch $@
+run_make_test('target: intermed ; #HELPER# file $@
.INTERMEDIATE: intermed
-intermed: | phony ; touch $@
+intermed: | phony ; #HELPER# file $@
.PHONY: phony
phony: ; : phony', '-rR -j', ': phony');
@@ -148,15 +153,15 @@ $extraENV{MAKEFLAGS} = '-j4';
run_make_test(q!
things = thing1 thing2
all: $(things)
-thing1:; @sleep 1; echo '$@ start'; sleep 2; echo '$@ end'
-thing2:; @echo '$@ start'; sleep 2; echo '$@ end'
+thing1:; @#HELPER# wait thing2start file $@start wait thing2end out $@end
+thing2:; @#HELPER# file $@start wait thing1start file $@end
-include inc.mk
inc.mk: ; @touch $@
!,
- '', "thing2 start\nthing1 start\nthing2 end\nthing1 end\n");
+ '', "file thing2start\nwait thing2start\nfile thing1start\nwait thing1start\nfile thing2end\nwait thing2end\nthing1end\n");
delete $extraENV{MAKEFLAGS};
-rmfiles('inc.mk');
+rmfiles(qw(inc.mk thing1start thing1end thing2start thing2end));
# Ensure intermediate/secondary files are not pruned incorrectly.
# See Savannah bug #30653
@@ -175,6 +180,41 @@ file2: file1 ; @touch $@
rmfiles('file1', 'file2', 'file3', 'file4');
+# Ensure that the jobserver is preserved across make re-exec.
+
+run_make_test(q!
+all: one two
+one: ;@ #HELPER# wait TWO file ONE
+two: ;@ #HELPER# file TWO
+include fff1.mk
+fff1.mk: ; touch $@
+!,
+ '-j2', "touch fff1.mk\nfile TWO\nwait TWO\nfile ONE\n");
+
+unlink('fff1.mk', 'ONE', 'TWO');
+
+# Test if a sub-make needs to re-exec and the makefile is built via
+# sub-make. Reported by Masahiro Yamada <yamada.masahiro@socionext.com>
+
+run_make_test(q!
+all: ; @$(MAKE) -f #MAKEFILE# recurse
+
+recurse: one two ; @#HELPER# out $@
+one: ;@ #HELPER# wait TWO file ONE
+two: ;@ #HELPER# file TWO
+
+mkinclude: ; touch fff1.mk
+
+ifeq ($(MAKECMDGOALS),recurse)
+include fff1.mk
+fff1.mk: ; @$(MAKE) -f #MAKEFILE# mkinclude
+endif
+!,
+ '--no-print-directory -j2', "touch fff1.mk\nfile TWO\nwait TWO\nfile ONE\nrecurse\n");
+
+unlink('fff1.mk', 'ONE', 'TWO');
+
+
# Make sure that all jobserver FDs are closed if we need to re-exec the
# master copy.
#
@@ -211,7 +251,3 @@ rmfiles('file1', 'file2', 'file3', 'file4');
# rmfiles(qw(dependfile output));
1;
-
-### Local Variables:
-### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action))
-### End:
diff --git a/tests/scripts/features/patternrules b/tests/scripts/features/patternrules
index c7ae7cf..6510c38 100644
--- a/tests/scripts/features/patternrules
+++ b/tests/scripts/features/patternrules
@@ -163,16 +163,16 @@ p1.% p2.%: %.orig
# TEST 6: Make sure that non-target files are still eligible to be created
# as part of implicit rule chaining. Savannah bug #17752.
-run_make_test(q!
+run_make_test(sprintf(q!
BIN = xyz
COPY = $(BIN).cp
SRC = $(BIN).c
allbroken: $(COPY) $(BIN) ; @echo ok
$(SRC): ; @echo 'main(){}' > $@
-%.cp: % ; @cp $< $@
-% : %.c ; @cp $< $@
-clean: ; @rm -rf $(SRC) $(COPY) $(BIN)
-!,
+%%.cp: %% ; @cp $< $@
+%% : %%.c ; @cp $< $@
+clean: ; @%s $(SRC) $(COPY) $(BIN)
+!, $CMD_rmfile),
'', "ok\n");
unlink(qw(xyz xyz.cp xyz.c));
@@ -220,6 +220,30 @@ all: foo.x foo-mt.x
1;
+# Test pattern rules building the same targets
+# See SV 54233. Rely on our standard test timeout to break the loop
+
+touch('a.c');
+
+run_make_test(q!
+all: a.elf a.dbg
+
+%.elf %.lnk: %.c ; : $*.elf $*.lnk
+
+%.elf %.dbg: %.lnk ; : $*.elf $*.dbg
+!,
+ '-j2', ": a.elf a.lnk\n: a.elf a.dbg\n");
+
+unlink('a.c');
+
+# SV 56655: Test patterns matching files containing whitespace
+touch('some file.yy');
+run_make_test(q!
+%.xx : %.yy ; @echo matched
+!, '"some file.xx"', "matched\n");
+
+unlink('some file.xx', 'some file.yy');
+
# This tells the test driver that the perl test script executed properly.
1;
diff --git a/tests/scripts/features/quoting b/tests/scripts/features/quoting
index 916681c..b7d9526 100644
--- a/tests/scripts/features/quoting
+++ b/tests/scripts/features/quoting
@@ -8,7 +8,6 @@ open(MAKEFILE,"> $makefile");
# The Contents of the MAKEFILE ...
print MAKEFILE <<'EOM';
-SHELL = /bin/sh
TEXFONTS = NICEFONT
DEFINES = -DDEFAULT_TFM_PATH=\".:$(TEXFONTS)\"
test: ; @"echo" 'DEFINES = $(DEFINES)'
diff --git a/tests/scripts/features/recursion b/tests/scripts/features/recursion
index fd5e351..d225c13 100644
--- a/tests/scripts/features/recursion
+++ b/tests/scripts/features/recursion
@@ -5,16 +5,17 @@ $details = "DETAILS";
# Test some basic recursion.
run_make_test('
+.RECIPEPREFIX := |
all:
- $(MAKE) -f #MAKEFILE# foo
+| $(MAKE) -f #MAKEFILE# foo
foo:
- @echo $(MAKE)
- @echo MAKELEVEL = $(MAKELEVEL)
- $(MAKE) -f #MAKEFILE# last
+| @echo $(MAKE)
+| @echo MAKELEVEL = $(MAKELEVEL)
+| $(MAKE) -f #MAKEFILE# last
last:
- @echo $(MAKE)
- @echo MAKELEVEL = $(MAKELEVEL)
- @echo THE END
+| @echo $(MAKE)
+| @echo MAKELEVEL = $(MAKELEVEL)
+| @echo THE END
',
('CFLAGS=-O -w' . ($parallel_jobs ? ' -j 2' : '')),
($vos
@@ -52,4 +53,15 @@ all: ; @echo "MAKEOVERRIDES = $(MAKEOVERRIDES)"
MAKEOVERRIDES = a=AA
');
+# SV 46013: Ensure that MAKEOVERRIDES is passed even if set in the makefile
+run_make_test(q!
+ifeq ($(MAKELEVEL),0)
+MAKEOVERRIDES += FOO+=bar
+endif
+.PHONY: M R
+M: ; @$(MAKE) --no-print-directory -f #MAKEFILE# R
+R: ; @echo '$(FOO)'
+!,
+ '', 'bar');
+
1;
diff --git a/tests/scripts/features/reinvoke b/tests/scripts/features/reinvoke
index eb1a349..d2a1f50 100644
--- a/tests/scripts/features/reinvoke
+++ b/tests/scripts/features/reinvoke
@@ -41,8 +41,6 @@ run_make_test(undef, '', "rebuilding #MAKEFILE#\nrunning rules.\n");
&touch('c');
run_make_test('
-SHELL = /bin/sh
-
all: ; @echo hello
a : b ; echo >> $@
@@ -57,7 +55,7 @@ include $(F)',
# Now try with the file we're not updating being the actual file we're
# including: this and the previous one test different parts of the code.
-run_make_test(undef, 'F=b', "[ -f b ] || echo >> b\nhello\n")
+run_make_test(undef, 'F=b', "[ -f b ] || echo >> b\nhello\n");
&rmfiles('a','b','c');
@@ -78,3 +76,7 @@ unlink('foo30723');
# This tells the test driver that the perl test script executed properly.
1;
+
+### Local Variables:
+### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action))
+### End:
diff --git a/tests/scripts/features/se_explicit b/tests/scripts/features/se_explicit
index 790017a..c28641c 100644
--- a/tests/scripts/features/se_explicit
+++ b/tests/scripts/features/se_explicit
@@ -164,4 +164,40 @@ foo: $$(@\\:%=%.bar); @echo '$^'
!,
'', "foo.bar\n");
+# SV 54549 : Ensure we don't free used variable_sets
+run_make_test(q!
+foo: -lcat
+
+# Removing second expansion prevents segfault
+.SECONDEXPANSION:
+foo: $$@.o ;
+
+# Having an empty command here prevents segfault unless,
+# the environment is empty. `env -i make foo`
+# MFLAGS=-w or MAKEFLAGS=-w `env MFLAGS=-w make foo`
+# libcat.a target calls an extra command, `@true \n @touch $@`
+# odd.
+%.o: ; @true
+
+# Having an empty command prevents segfault.
+-l%: lib%.a ; @true
+
+# Not creating libcat.a here prevents segfault,
+libcat.a: ; @touch $@
+!,
+ '', q!#MAKEFILE#:16: Recipe was specified for file '-lcat' at #MAKEFILE#:19,
+#MAKEFILE#:16: but '-lcat' is now considered the same file as 'libcat.a'.
+#MAKEFILE#:16: Recipe for 'libcat.a' will be ignored in favor of the one for '-lcat'.!);
+unlink('libcat.a');
+
+# SV 28456 : Don't reset $$< for default recipes
+run_make_test(q!
+.SECONDEXPANSION:
+
+.PHONY: biz baz
+biz: baz ;
+biz: $$(info $$<)
+!,
+ '', "baz\n#MAKE#: Nothing to be done for 'biz'.\n");
+
1;
diff --git a/tests/scripts/features/se_implicit b/tests/scripts/features/se_implicit
index ec09d8d..866d1fb 100644
--- a/tests/scripts/features/se_implicit
+++ b/tests/scripts/features/se_implicit
@@ -1,5 +1,5 @@
# -*-perl-*-
-$description = "Test second expansion in ordinary rules.";
+$description = "Test second expansion in implicit rules.";
$details = "";
@@ -24,8 +24,7 @@ foo.%: 1.$$@ \
$$(addprefix 3.,$$^) \
$$(addprefix 4.,$$+) \
5.$$| \
- 6.$$*
- @:
+ 6.$$* ; @:
1.foo.a \
2.bar \
@@ -36,8 +35,7 @@ foo.%: 1.$$@ \
4.baz \
4.biz \
5.buz \
-6.a:
- @echo '$@'
+6.a: ; @echo '$@'
!,
'',
@@ -64,8 +62,7 @@ run_make_test(q!
.SECONDEXPANSION:
foo.x:
-foo.%: $$(%_a) $$(%_b) bar
- @:
+foo.%: $$(%_a) $$(%_b) bar ; @:
foo.x: x_a := bar
@@ -137,8 +134,7 @@ $(dir)/tmp/foo/bar.c: ; @echo '$@'
$(dir)/tmp/bar/bar.c: ; @echo '$@'
foo.h: ; @echo '$@'
-%.o: $$(addsuffix /%.c,foo bar) foo.h
- @echo '$@: {$<} $^'
+%.o: $$(addsuffix /%.c,foo bar) foo.h ; @echo '$@: {$<} $^'
!,
"dir=$dir", "$dir/tmp/foo/bar.c
$dir/tmp/bar/bar.c
@@ -155,8 +151,7 @@ $(dir)/tmp/foo.o: $(dir)/tmp/foo.c
$(dir)/tmp/foo.c: ; @echo '$@'
bar.h: ; @echo '$@'
-%.o: %.c|bar.h
- @echo '$@: {$<} {$|} $^'
+%.o: %.c|bar.h ; @echo '$@: {$<} {$|} $^'
!,
"dir=$dir", "$dir/tmp/foo.c
@@ -172,8 +167,7 @@ run_make_test(q!
foo.o: foo.c
foo.c: ; @echo '$@'
-%.o:
- @echo '$@: {$<} $^'
+%.o: ; @echo '$@: {$<} $^'
!,
'', "foo.c\nfoo.o: {foo.c} foo.c\n");
@@ -184,11 +178,9 @@ run_make_test(q!
.SECONDEXPANSION:
foobarbaz:
-foo%baz: % $$*.1
- @echo '$*'
+foo%baz: % $$*.1 ; @echo '$*'
-bar bar.1:
- @echo '$@'
+bar bar.1: ; @echo '$@'
!,
'', "bar\nbar.1\nbar\n");
@@ -199,11 +191,9 @@ run_make_test(q!
.SECONDEXPANSION:
foo$$bar:
-f%r: % $$*.1
- @echo '$*'
+f%r: % $$*.1 ; @echo '$*'
-oo$$ba oo$$ba.1:
- @echo '$@'
+oo$$ba oo$$ba.1: ; @echo '$@'
!,
'', 'oo$ba
oo$ba.1
@@ -230,15 +220,12 @@ run_make_test(q!
sim_base_rgg := just_a_name
sim_base_src := a
sim_base_f := a a a
-sim_%.f: $${sim_$$*_f}
- echo $@
-sim_%.src: $${sim_$$*_src}
- echo $@
+sim_%.f: $${sim_$$*_f} ; echo $@
+sim_%.src: $${sim_$$*_src} ; echo $@
sim_%: \
- $$(if $$(sim_$$*_src),sim_%.src) \
- $$(if $$(sim_$$*_f),sim_%.f) \
- $$(if $$(sim_$$*_rgg),$$(sim_$$*_rgg).s)
- echo $@
+ $$(if $$(sim_$$*_src),sim_%.src) \
+ $$(if $$(sim_$$*_f),sim_%.f) \
+ $$(if $$(sim_$$*_rgg),$$(sim_$$*_rgg).s) ; echo $@
!,
'-s sim_base', "#MAKE#: *** No rule to make target 'sim_base'. Stop.", 512);
@@ -256,5 +243,24 @@ p% : ; : $@
!,
"", ": p1\n: p2\nfoo from p1 and p2\nbar from p1 and p2\n");
+# SV 28456 : Don't reset $$< for default recipes
+run_make_test(q!
+.SECONDEXPANSION:
+
+.PHONY: foo bar
+foo: bar
+foo: $$(info $$<)
+%oo: ;
+!,
+ '', "bar\n#MAKE#: Nothing to be done for 'foo'.\n");
+
+# SV 54161: Expand $$* properly when it contains a path
+
+run_make_test(q!
+.SECONDEXPANSION:
+%x: $$(info $$*); @echo '$*'
+!,
+ 'q/ux', "q/u\nq/u\n");
+
# This tells the test driver that the perl test script executed properly.
1;
diff --git a/tests/scripts/features/suffixrules b/tests/scripts/features/suffixrules
new file mode 100644
index 0000000..b8f4652
--- /dev/null
+++ b/tests/scripts/features/suffixrules
@@ -0,0 +1,99 @@
+# -*-perl-*-
+
+$description = "Test suffix rules.";
+
+$details = "";
+
+# TEST #0: Clear all suffixes
+
+touch('foo.c');
+
+run_make_test(q!
+.SUFFIXES:
+all: foo.o ; @echo $@ $<
+!,
+ '', "#MAKE#: *** No rule to make target 'foo.o', needed by 'all'. Stop.\n", 512);
+
+unlink('foo.c');
+
+# Test #1: Add a simple suffix rule
+
+touch('foo.baz');
+
+run_make_test(q!
+.SUFFIXES: .biz .baz
+
+.baz.biz: ; @echo make $@
+!,
+ 'foo.biz', "make foo.biz\n");
+
+unlink('foo.baz');
+
+# Test #2: Make sure the defaults still work
+
+touch('foo.c');
+
+run_make_test(undef, 'foo.o COMPILE.c=@echo OUTPUT_OPTION=', "foo.c\n");
+
+unlink('foo.c');
+
+# Test #3: Replacing all suffixes
+
+touch('foo.baz');
+
+run_make_test(q!
+.SUFFIXES:
+.SUFFIXES: .biz .baz
+
+.baz.biz: ; @echo make $@
+!,
+ 'foo.biz', "make foo.biz\n");
+
+unlink('foo.baz');
+
+# SV 40657: Test #4: "Suffix rules" with deps are normal rules
+
+my $prewarn = 'warning: ignoring prerequisites on suffix rule definition';
+
+touch('foo.bar');
+
+run_make_test(q!
+.SUFFIXES:
+.SUFFIXES: .biz .baz
+
+$X.POSIX:
+
+.baz.biz: foo.bar ; @echo make $@ from $<
+!,
+ 'X=1 .baz.biz', "#MAKEFILE#:7: $prewarn\nmake .baz.biz from foo.bar\n");
+
+# SV 40657: Test #5: In POSIX mode we don't get a warning
+
+run_make_test(undef, 'X= .baz.biz', "make .baz.biz from foo.bar\n");
+
+unlink('foo.bar');
+
+# SV 40657: Test #6: In POSIX mode, no pattern rules should be created
+
+utouch(-20, 'foo.baz');
+
+run_make_test(undef,
+ 'X= foo.biz', "#MAKE#: *** No rule to make target 'foo.biz'. Stop.\n", 512);
+
+# SV 40657: Test #7: In Non-POSIX mode, a pattern rule is created
+
+run_make_test(undef,
+ 'X=1 foo.biz', "#MAKEFILE#:7: $prewarn\nmake foo.biz from foo.baz\n");
+
+# SV 40657: Test #8: ... but any prerequisites are ignored
+
+utouch(-10, 'foo.biz');
+touch('foo.bar');
+
+run_make_test(undef,
+ 'X=1 foo.biz', "#MAKEFILE#:7: $prewarn\n#MAKE#: 'foo.biz' is up to date.\n");
+
+unlink('foo.baz', 'foo.biz', 'foo.bar');
+
+# Complete
+1;
diff --git a/tests/scripts/features/targetvars b/tests/scripts/features/targetvars
index a9b8dbe..2929b2c 100644
--- a/tests/scripts/features/targetvars
+++ b/tests/scripts/features/targetvars
@@ -7,7 +7,6 @@ values, override and non-override, and using various variable expansion
rules, semicolon interference, etc.";
run_make_test('
-SHELL = /bin/sh
export FOO = foo
export BAR = bar
one: override FOO = one
@@ -256,6 +255,32 @@ a: ; @echo $(A)
!,
'', "hello; world\n");
+# TEST #21: SV-56834 Ensure setting PATH in a target var works properly
+my $sname = "foobar$scriptsuffix";
+
+mkdir('sd', 0775);
+create_file("sd/$sname", "exit 0\n");
+chmod 0755, "sd/$sname";
+
+run_make_test(qq!
+all: PATH := sd
+all: ; $sname >/dev/null
+!,
+ '', "$sname >/dev/null\n");
+
+# Don't use the general PATH if not found on the target path
+
+$extraENV{PATH} = "$ENV{PATH}:sd";
+
+run_make_test(qq!
+all: PATH := ..
+all: ; $sname
+!,
+ '', "$sname\n#MAKE#: $sname: $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:3: all] Error 127", 512);
+
+unlink("sd/$sname");
+rmdir ('sd');
+
# TEST #19: Test define/endef variables as target-specific vars
# run_make_test('
@@ -271,3 +296,7 @@ a: ; @echo $(A)
# '', "local\n");
1;
+
+### Local Variables:
+### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action))
+### End:
diff --git a/tests/scripts/features/vpath2 b/tests/scripts/features/vpath2
index 7e970a7..c8de29b 100644
--- a/tests/scripts/features/vpath2
+++ b/tests/scripts/features/vpath2
@@ -13,10 +13,10 @@ open(MAKEFILE,"> $makefile");
# The Contents of the MAKEFILE ...
-print MAKEFILE "VPATH = $workdir:$sourcedir\n";
+print MAKEFILE "VPATH = $workdir:$scriptdir\n";
print MAKEFILE "vpath %.c foo\n";
print MAKEFILE "vpath %.c $workdir\n";
-print MAKEFILE "vpath %.c $sourcedir\n";
+print MAKEFILE "vpath %.c $scriptdir\n";
print MAKEFILE "vpath %.h $workdir\n";
print MAKEFILE "vpath %.c\n";
print MAKEFILE "vpath\n";
diff --git a/tests/scripts/features/vpathplus b/tests/scripts/features/vpathplus
index 9ade3f0..978aecb 100644
--- a/tests/scripts/features/vpathplus
+++ b/tests/scripts/features/vpathplus
@@ -12,9 +12,6 @@ open(MAKEFILE,"> $makefile");
print MAKEFILE "VPATH = $VP\n";
print MAKEFILE <<'EOMAKE';
-
-SHELL = /bin/sh
-
.SUFFIXES: .a .b .c .d
.PHONY: general rename notarget intermediate
@@ -86,7 +83,7 @@ cat ${VP}foo.c bar.c > foo.b 2>/dev/null || exit 1
$answer = "not creating notarget.c from notarget.d
cat notarget.c > notarget.b 2>/dev/null || exit 1
-$make_name: *** [$makefile:16: notarget.b] Error 1
+$make_name: *** [$makefile:13: notarget.b] Error 1
";
&compare_output($answer,&get_logfile(1));
@@ -99,10 +96,12 @@ $make_name: *** [$makefile:16: notarget.b] Error 1
push(@touchedfiles, "inter.a", "inter.b");
+my $be = pack("L", 1) eq pack("N", 1);
+my $intfiles = $be ? "inter.c inter.b" : "inter.b inter.c";
$answer = "cat ${VP}inter.d > inter.c
cat inter.c > inter.b 2>/dev/null || exit 1
cat inter.b > inter.a
-rm inter.b inter.c
+rm $intfiles
";
&compare_output($answer,&get_logfile(1));
diff --git a/tests/scripts/functions/abspath b/tests/scripts/functions/abspath
index 84c30ab..59bd384 100644
--- a/tests/scripts/functions/abspath
+++ b/tests/scripts/functions/abspath
@@ -3,6 +3,9 @@ $description = "Test the abspath functions.";
$details = "";
+# Someone needs to rewrite this to be portable for Windows
+$port_type eq 'W32' and return -1;
+
run_make_test('
ifneq ($(realpath $(abspath .)),$(CURDIR))
$(warning .: abs="$(abspath .)" real="$(realpath $(abspath .))" curdir="$(CURDIR)")
diff --git a/tests/scripts/functions/file b/tests/scripts/functions/file
index 904db79..eaabd3a 100644
--- a/tests/scripts/functions/file
+++ b/tests/scripts/functions/file
@@ -48,22 +48,11 @@ x:;@cat 4touch
unlink('4touch');
# Test > to a read-only file
-touch('file.out');
-chmod(0444, 'file.out');
-
-# Find the error that will be printed
-# This seems complicated, but we need the message from the C locale
-my $loc = undef;
-if ($has_POSIX) {
- $loc = POSIX::setlocale(POSIX::LC_MESSAGES);
- POSIX::setlocale(POSIX::LC_MESSAGES, 'C');
-}
-my $e;
-open(my $F, '>', 'file.out') and die "Opened read-only file!\n";
-$e = "$!";
-$loc and POSIX::setlocale(POSIX::LC_MESSAGES, $loc);
+if (defined $ERR_read_only_file) {
+ touch('file.out');
+ chmod(0444, 'file.out');
-run_make_test(q!
+ run_make_test(q!
define A
a
b
@@ -71,10 +60,11 @@ endef
$(file > file.out,$(A))
x:;@cat file.out
!,
- '', "#MAKEFILE#:6: *** open: file.out: $e. Stop.",
- 512);
+ '', "#MAKEFILE#:6: *** open: file.out: $ERR_read_only_file. Stop.",
+ 512);
-unlink('file.out');
+ unlink('file.out');
+}
# Use variables for operator and filename
run_make_test(q!
diff --git a/tests/scripts/functions/foreach b/tests/scripts/functions/foreach
index 451839a..9badc52 100644
--- a/tests/scripts/functions/foreach
+++ b/tests/scripts/functions/foreach
@@ -7,7 +7,7 @@ $details = "This is a test of the foreach function in gnu make.
This function starts with a space separated list of
names and a variable. Each name in the list is subsituted
into the variable and the given text evaluated. The general
-form of the command is $(foreach var,$list,$text). Several
+form of the command is $(foreach var,\$list,\$text). Several
types of foreach loops are tested\n";
diff --git a/tests/scripts/functions/guile b/tests/scripts/functions/guile
index c63bec9..120aaf3 100644
--- a/tests/scripts/functions/guile
+++ b/tests/scripts/functions/guile
@@ -21,6 +21,9 @@ $details = 'This only works on systems that support it.';
# If we don't have Guile support, never mind.
exists $FEATURES{guile} or return -1;
+# Guile and Valgrind don't play together at all.
+$valgrind and return -1;
+
# Verify simple data type conversions
# Currently we don't support vectors:
# echo '$(guile (vector 1 2 3))'; \
@@ -36,6 +39,20 @@ x:;@echo '$(guile #f)'; \
!,
'', "\n#t\nc\n1234\nfoo\nbar\na b\na b c d 1 2 3");
+# Verify guile functions in variables -- SV 43378
+run_make_test(q!
+res := $(guile #f) \
+ $(guile #t) \
+ $(guile #\c) \
+ $(guile 1234) \
+ $(guile 'foo) \
+ $(guile "bar") \
+ $(guile (cons 'a 'b)) \
+ $(guile '(a b (c . d) 1 (2) 3))
+x:;@echo '$(res)'
+!,
+ '', " #t c 1234 foo bar a b a b c d 1 2 3");
+
# Verify the gmk-expand function
run_make_test(q!
VAR = $(guile (gmk-expand "$(shell echo hi)"))
diff --git a/tests/scripts/functions/realpath b/tests/scripts/functions/realpath
index 9b503b4..fcea515 100644
--- a/tests/scripts/functions/realpath
+++ b/tests/scripts/functions/realpath
@@ -3,78 +3,88 @@ $description = "Test the realpath functions.";
$details = "";
+# Check the local directory's realpath
run_make_test('
ifneq ($(realpath .),$(CURDIR))
- $(error )
+ $(warning $(realpath .) != $(CURDIR))
endif
ifneq ($(realpath ./),$(CURDIR))
- $(error )
+ $(warning $(realpath ./) != $(CURDIR))
endif
ifneq ($(realpath .///),$(CURDIR))
- $(error )
+ $(warning $(realpath .///) != $(CURDIR))
endif
-ifneq ($(realpath /),/)
- $(error )
-endif
+.PHONY: all
+all: ; @:
+',
+ '', '');
-ifneq ($(realpath /.),/)
- $(error )
+# Find the realpath to the root of the partition
+create_file('root.mk', 'all:;$(info $(realpath /))');
+my $root = `$make_path -sf root.mk`;
+unlink('root.mk');
+chomp $root;
+
+my $tst = '
+ifneq ($(realpath /.),#ROOT#)
+ $(warning $(realpath /.) != #ROOT#)
endif
-ifneq ($(realpath /./),/)
- $(error )
+ifneq ($(realpath /./),#ROOT#)
+ $(warning $(realpath /./) != #ROOT#)
endif
-ifneq ($(realpath /.///),/)
- $(error )
+ifneq ($(realpath /.///),#ROOT#)
+ $(warning $(realpath /.///) != #ROOT#)
endif
-ifneq ($(realpath /..),/)
- $(error )
+ifneq ($(realpath /..),#ROOT#)
+ $(warning $(realpath /..) != #ROOT#)
endif
-ifneq ($(realpath /../),/)
- $(error )
+ifneq ($(realpath /../),#ROOT#)
+ $(warning $(realpath /../) != #ROOT#)
endif
-ifneq ($(realpath /..///),/)
- $(error )
+ifneq ($(realpath /..///),#ROOT#)
+ $(warning $(realpath /..///) != #ROOT#)
endif
-ifneq ($(realpath . /..),$(CURDIR) /)
- $(error )
+ifneq ($(realpath . /..),$(CURDIR) #ROOT#)
+ $(warning $(realpath . /..) != $(CURDIR) #ROOT#)
endif
.PHONY: all
all: ; @:
-',
- '',
- '');
+';
+$tst =~ s/#ROOT#/$root/g;
+run_make_test($tst, '', '');
-# On Windows platforms, "//" means something special. So, don't do these
-# tests there.
+# On Windows platforms "//" means something special. So, don't do these tests
+# there.
if ($port_type ne 'W32') {
- run_make_test('
-ifneq ($(realpath ///),/)
- $(error )
+ $tst = '
+ifneq ($(realpath ///),#ROOT#)
+ $(warning $(realpath ///) != #ROOT#)
endif
-ifneq ($(realpath ///.),/)
- $(error )
+ifneq ($(realpath ///.),#ROOT#)
+ $(warning $(realpath ///.) != #ROOT#)
endif
-ifneq ($(realpath ///..),/)
- $(error )
+ifneq ($(realpath ///..),#ROOT#)
+ $(warning $(realpath ///..) != #ROOT#)
endif
.PHONY: all
-all: ; @:',
- '',
- '');
+all: ; @:';
+ $tst =~ s/#ROOT#/$root/g;
+
+ run_make_test($tst, '', '');
}
diff --git a/tests/scripts/functions/shell b/tests/scripts/functions/shell
index 809c77f..5986529 100644
--- a/tests/scripts/functions/shell
+++ b/tests/scripts/functions/shell
@@ -25,15 +25,12 @@ BAD := $(.SHELLSTATUS)
all: ; @echo PRE=$(PRE) OK=$(OK) BAD=$(BAD)
','','PRE= OK=0 BAD=1');
-
# Test unescaped comment characters in shells. Savannah bug #20513
-if ($all_tests) {
- run_make_test(q!
+run_make_test(q!
FOO := $(shell echo '#')
foo: ; echo '$(FOO)'
!,
- '', "#\n");
-}
+ '', "echo '#'\n#\n");
# Test shells inside exported environment variables.
# This is the test that fails if we try to put make exported variables into
@@ -44,14 +41,47 @@ export HI = $(shell echo hi)
all: ; @echo $$HI
','','hi');
-# Test shell errors in recipes including offset
-run_make_test('
+if ($port_type ne 'W32') {
+ # Test shell errors in recipes including offset
+ # This needs to be ported to Windows, or else Windows error messages
+ # need to converted to look like more normal make errors.
+ run_make_test('
all:
@echo hi
$(shell ./basdfdfsed there)
- @echo there
+ @echo $(.SHELLSTATUS)
+',
+ '', "#MAKE#: ./basdfdfsed: $ERR_no_such_file\nhi\n127\n");
+
+ run_make_test('
+$(shell ./basdfdfsed where)
+all: ; @echo $(.SHELLSTATUS)
',
- '', "#MAKE#: ./basdfdfsed: Command not found\nhi\nthere\n");
+ '', "#MAKE#: ./basdfdfsed: $ERR_no_such_file\n127\n");
+
+ # Test SHELLSTATUS for kill.
+ # This test could be ported to Windows, using taskkill ... ?
+
+ # Figure out the exit code for SIGINT
+ my $pid = fork();
+ if (! $pid) {
+ exec('kill -2 $$') or die "exec: Cannot execute sleep\n";
+ }
+ waitpid($pid, 0);
+ # .SHELLSTATUS for a signal gives 128 + the signal number
+ my $ret = $?;
+ if ($ret > 255) {
+ # Solaris 10 perl 5.8.4 puts signal number + 128 into the high 8 bits.
+ $ret >>= 8;
+ }
+ $ret |= 128;
+
+ run_make_test('.PHONY: all
+$(shell kill -2 $$$$)
+STAT := $(.SHELLSTATUS)
+all: ; @echo STAT=$(STAT)
+ ','',"STAT=$ret\n");
+}
1;
diff --git a/tests/scripts/functions/wildcard b/tests/scripts/functions/wildcard
index bcd84ad..f01f574 100644
--- a/tests/scripts/functions/wildcard
+++ b/tests/scripts/functions/wildcard
@@ -13,57 +13,38 @@ test echo's all files which match '?.example' and
[a-z0-9].example. Lastly we clean up all of the files using
the '*' wildcard as in the first test";
-open(MAKEFILE,"> $makefile");
+touch("example.1");
+touch("example.two");
+touch("example.3");
+touch("example.for");
+touch("example._");
-# The Contents of the MAKEFILE ...
+# TEST #1
+# -------
-print MAKEFILE <<EOM;
+run_make_test(qq/
.PHONY: print1 print2 clean
-print1: ;\@echo \$(sort \$(wildcard example.*))
+print1: ;\@echo \$(wildcard example.*)
print2:
-\t\@echo \$(sort \$(wildcard example.?))
-\t\@echo \$(sort \$(wildcard example.[a-z0-9]))
-\t\@echo \$(sort \$(wildcard example.[!A-Za-z_\\!]))
+\t\@echo \$(wildcard example.?)
+\t\@echo \$(wildcard example.[a-z0-9])
+\t\@echo \$(wildcard example.[!A-Za-z_\\!])
clean:
-\t$delete_command \$(sort \$(wildcard example.*))
-EOM
-
-# END of Contents of MAKEFILE
-
-close(MAKEFILE);
-
-&touch("example.1");
-&touch("example.two");
-&touch("example.3");
-&touch("example.for");
-&touch("example._");
-
-# TEST #1
-# -------
-
-$answer = "example.1 example.3 example._ example.for example.two\n";
-
-&run_make_with_options($makefile,"print1",&get_logfile);
-
-&compare_output($answer,&get_logfile(1));
-
+\t$CMD_rmfile \$(wildcard example.*)
+/,
+ 'print1', "example.1 example.3 example._ example.for example.two\n");
# TEST #2
# -------
-$answer = "example.1 example.3 example._\n"
- ."example.1 example.3\n"
- ."example.1 example.3\n";
-
-&run_make_with_options($makefile,"print2",&get_logfile);
-
-&compare_output($answer,&get_logfile(1));
-
+run_make_test(undef, 'print2', "example.1 example.3 example._\n"
+ ."example.1 example.3\n"
+ ."example.1 example.3\n");
# TEST #3
# -------
-$answer = "$delete_command example.1 example.3 example._ example.for example.two";
+$answer = "$CMD_rmfile example.1 example.3 example._ example.for example.two";
if ($vos)
{
$answer .= " \n";
@@ -73,13 +54,7 @@ else
$answer .= "\n";
}
-&run_make_with_options($makefile,"clean",&get_logfile);
-
-if ((-f "example.1")||(-f "example.two")||(-f "example.3")||(-f "example.for")) {
- $test_passed = 0;
-}
-
-&compare_output($answer,&get_logfile(1));
+run_make_test(undef, 'clean', $answer);
# TEST #4: Verify that failed wildcards don't return the pattern
@@ -92,12 +67,97 @@ all: ; @echo $(wildcard xz--y*.7)
touch('xxx.yyy');
-run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!,
- '', "file=xxx.yyy\n");
+run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!, '', "file=xxx.yyy\n");
unlink('xxx.yyy');
-run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!,
- '', "file=\n");
+run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!, '', "file=\n");
+
+# TEST #7: verify that when the input pattern has a trailing slash wildcard
+# returns only directories.
+#
+# Currently this doesn't work with our embedded GLOB so disable it.
+# -------
+
+if (get_config('USE_SYSTEM_GLOB') eq 'yes') {
+ touch("hellof");
+ mkdir("hellod", 0770);
+ mkdir("hellod/worldd", 0770);
+ touch("hellod/worldf");
+ mkdir("hellod/worldd/kend1", 0770);
+ mkdir("hellod/worldd/kend2", 0770);
+ touch("hellod/worldd/kenf1");
+ touch("hellod/worldd/kenf2");
+
+ run_make_test(qq!
+print3:
+\t\@echo \$(wildcard hello*)
+\t\@echo \$(wildcard hello*/)
+\t\@echo \$(wildcard hellod/world*)
+\t\@echo \$(wildcard hellod/world*/)
+\t\@echo \$(wildcard hello* hellod/world*)
+\t\@echo \$(wildcard hello*/ hellod/world*/)
+\t\@echo \$(wildcard hellod/*)
+\t\@echo \$(wildcard hellod/*/)
+\t\@echo \$(wildcard */world*)
+\t\@echo \$(wildcard */worldd/)
+\t\@echo \$(wildcard hellod/*/ken*/)
+\t\@echo \$(wildcard hellod/*/ken?[12])
+\t\@echo \$(wildcard hellod/*/ken?[12]/)
+!, '',
+ "hellod hellof\n"
+ ."hellod/\n"
+ ."hellod/worldd hellod/worldf\n"
+ ."hellod/worldd/\n"
+ ."hellod hellof hellod/worldd hellod/worldf\n"
+ ."hellod/ hellod/worldd/\n"
+ ."hellod/worldd hellod/worldf\n"
+ ."hellod/worldd/\n"
+ ."hellod/worldd hellod/worldf\n"
+ ."hellod/worldd/\n"
+ ."hellod/worldd/kend1/ hellod/worldd/kend2/\n"
+ ."hellod/worldd/kend1 hellod/worldd/kend2 "
+ ."hellod/worldd/kenf1 hellod/worldd/kenf2\n"
+ ."hellod/worldd/kend1/ hellod/worldd/kend2/\n");
+
+ unlink('hellof', 'hellod/worldf', 'hellod/worldd/kenf1',
+ 'hellod/worldd/kenf2');
+ foreach $d ('hellod/worldd/kend1', 'hellod/worldd/kend2', 'hellod/worldd',
+ 'hellod') {
+ rmdir($d);
+ }
+}
+
+if ($port_type ne 'W32') {
+ # Check wildcard on the root directory
+ run_make_test('print4: ; @echo $(wildcard /)', '', "/\n");
+}
+
+if ($port_type ne 'W32' && eval { symlink("",""); 1 }) {
+
+ # TEST #6: check for wildcards matching directories
+ # See SV 53465
+
+ my $dir = '__rdir';
+ my $lnk = '__ldir';
+ mkdir($dir, 0777);
+ symlink($dir, $lnk);
+
+ run_make_test(qq!all: ; \@echo \$(wildcard $lnk*/.)!, '', "$lnk/.");
+
+ unlink($lnk);
+ rmdir($dir);
+
+ # Test for dangling symlinks
+ # This doesn't work with the built-in glob... needs to be updated!
+
+ if (get_config('USE_SYSTEM_GLOB') eq 'yes') {
+ symlink($dir, $lnk);
+
+ run_make_test(qq!all: ; \@echo \$(wildcard $lnk)!, '', "$lnk");
+
+ unlink($lnk);
+ }
+}
1;
diff --git a/tests/scripts/misc/bs-nl b/tests/scripts/misc/bs-nl
index fc323ce..fdf4aab 100644
--- a/tests/scripts/misc/bs-nl
+++ b/tests/scripts/misc/bs-nl
@@ -18,8 +18,11 @@ run_make_test("slow:;\@: no-op; echo sl\\\now\n",
run_make_test("dquote:;\@echo \"dqu\\\note\"\n",
'', 'dquote');
-run_make_test("squote:;\@echo 'squ\\\note'\n",
+# Single quotes don't behave the same in Windows
+if ($port_type ne 'W32') {
+ run_make_test("squote:;\@echo 'squ\\\note'\n",
'', "squ\\\note");
+}
# Ensure that a leading prefix character is omitted
run_make_test("fast:;\@echo fa\\\n\tst\n",
@@ -31,8 +34,11 @@ run_make_test("slow:;\@: no-op; echo sl\\\n\tow\n",
run_make_test("dquote:;\@echo \"dqu\\\n\tote\"\n",
'', 'dquote');
-run_make_test("squote:;\@echo 'squ\\\n\tote'\n",
+# Single quotes don't behave the same in Windows
+if ($port_type ne 'W32') {
+ run_make_test("squote:;\@echo 'squ\\\n\tote'\n",
'', "squ\\\note");
+}
# Ensure that ONLY the leading prefix character is omitted
run_make_test("fast:;\@echo fa\\\n\t st\n",
@@ -133,7 +139,6 @@ sub xlate
s/\\r/\r/g;
s/\\t/\t/g;
s/\\f/\f/g;
- s/\\v/\v/g;
s/\\n/\n/g;
return $_;
}
diff --git a/tests/scripts/misc/close_stdout b/tests/scripts/misc/close_stdout
index 18606c3..b16ea8d 100644
--- a/tests/scripts/misc/close_stdout
+++ b/tests/scripts/misc/close_stdout
@@ -2,8 +2,8 @@
$description = "Make sure make exits with an error if stdout is full.";
-if (-e '/dev/full') {
- run_make_test('', '-v > /dev/full', '/^#MAKE#: write error/', 256);
-}
+-e '/dev/full' or return -1;
+
+run_make_test('', '-v > /dev/full', '/^#MAKE#: write error/', 256);
1;
diff --git a/tests/scripts/misc/general3 b/tests/scripts/misc/general3
index 7bbff1c..455027a 100644
--- a/tests/scripts/misc/general3
+++ b/tests/scripts/misc/general3
@@ -88,25 +88,27 @@ foo bar
foo bar');
# Test the fastpath / single quotes
-run_make_test("
+# Single quotes don't behave the same in Windows
+if ($port_type ne 'W32') {
+ run_make_test(q!
all:
- \@echo 'foo\\
+ @echo 'foo\
bar'
- \@echo 'foo\\
+ @echo 'foo\
bar'
- \@echo 'foo\\
+ @echo 'foo\
bar'
- \@echo 'foo\\
+ @echo 'foo\
bar'
- \@echo 'foo \\
+ @echo 'foo \
bar'
- \@echo 'foo \\
+ @echo 'foo \
bar'
- \@echo 'foo \\
+ @echo 'foo \
bar'
- \@echo 'foo \\
+ @echo 'foo \
bar'
-",
+!,
'', 'foo\
bar
foo\
@@ -123,6 +125,7 @@ foo \
bar
foo \
bar');
+}
# Test the fastpath / double quotes
run_make_test('
@@ -229,25 +232,25 @@ foo bar
hi');
# Test the slow path / single quotes
-run_make_test("
+run_make_test(q!
all:
- \@echo hi; echo 'foo\\
+ @echo hi; echo 'foo\
bar'
- \@echo hi; echo 'foo\\
+ @echo hi; echo 'foo\
bar'
- \@echo hi; echo 'foo\\
+ @echo hi; echo 'foo\
bar'
- \@echo hi; echo 'foo\\
+ @echo hi; echo 'foo\
bar'
- \@echo hi; echo 'foo \\
+ @echo hi; echo 'foo \
bar'
- \@echo hi; echo 'foo \\
+ @echo hi; echo 'foo \
bar'
- \@echo hi; echo 'foo \\
+ @echo hi; echo 'foo \
bar'
- \@echo hi; echo 'foo \\
+ @echo hi; echo 'foo \
bar'
-",
+!,
'', 'hi
foo\
bar
@@ -312,4 +315,33 @@ foo bar');
run_make_test('x:;@-exit 1', '', "#MAKE#: [#MAKEFILE#:1: x] Error 1 (ignored)\n");
+# Slow path with odd setups
+
+if ($port_type ne 'W32') {
+ run_make_test(q!
+ slow: SHELL := echo
+ slow: .SHELLFLAGS := hoho
+ slow:; @foo bar
+ !,
+ '', "hoho foo bar\n");
+
+ run_make_test(q!
+ slow: SHELL := echo hi
+ slow: .SHELLFLAGS := ho ho
+ slow:; @foo bar
+ !,
+ '', "hi ho ho foo bar\n");
+
+ run_make_test(q!
+ slow: SHELL := echo hi
+ slow: .SHELLFLAGS := 'ho;ho'
+ slow:; @foo bar
+ !,
+ '', "hi ho;ho foo bar\n");
+}
+
1;
+
+### Local Variables:
+### eval: (setq whitespace-action (delq 'auto-cleanup whitespace-action))
+### End:
diff --git a/tests/scripts/misc/general4 b/tests/scripts/misc/general4
index 6d42a16..eeb8d10 100644
--- a/tests/scripts/misc/general4
+++ b/tests/scripts/misc/general4
@@ -79,4 +79,43 @@ all: ; \@echo hi
",
'', "hi\n");
+# SV-56834 Ensure setting PATH in the makefile works properly
+my $sname = "foobar$scriptsuffix";
+
+mkdir('sd', 0775);
+create_file("sd/$sname", "exit 0\n");
+chmod 0755, "sd/$sname";
+
+run_make_test(qq!
+PATH := sd
+all: ; $sname >/dev/null
+!,
+ '', "$sname >/dev/null\n");
+
+# Don't use the general PATH if not found on the target path
+
+$extraENV{PATH} = "$ENV{PATH}:sd";
+
+run_make_test(qq!
+PATH := ..
+all: ; $sname
+!,
+ '', "$sname\n#MAKE#: $sname: $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:3: all] Error 127", 512);
+
+unlink("sd/$sname");
+rmdir('sd');
+
+# Ensure that local programs are not found if "." is not on the PATH
+
+create_file($sname, '');
+chmod 0755, $sname;
+
+run_make_test(qq!
+PATH := ..
+all: ; $sname
+!,
+ '', "$sname\n#MAKE#: $sname: $ERR_no_such_file\n#MAKE#: *** [#MAKEFILE#:3: all] Error 127", 512);
+
+unlink($sname);
+
1;
diff --git a/tests/scripts/options/dash-C b/tests/scripts/options/dash-C
index 42d0a8b..7daf69f 100644
--- a/tests/scripts/options/dash-C
+++ b/tests/scripts/options/dash-C
@@ -11,23 +11,23 @@ find the makefile and the file to delete in the work directory.";
$example = $workdir . $pathsep . "EXAMPLE";
open(MAKEFILE,"> $makefile");
-print MAKEFILE <<EOF;
+print MAKEFILE qq!
all: ; \@echo This makefile did not clean the dir ... good
-clean: ; $delete_command EXAMPLE\$(ext)
-EOF
+clean: ; $CMD_rmfile EXAMPLE\$(ext)
+!;
close(MAKEFILE);
# TEST #1
# -------
-&touch($example);
+touch($example);
-&run_make_with_options("${testname}.mk",
- "-C $workdir clean",
- &get_logfile);
+run_make_with_options("${testname}.mk", "-C $workdir clean", &get_logfile);
+
+use Cwd;
chdir $workdir;
-$wpath = &get_this_pwd;
-chdir $pwd;
+$wpath = cwd();
+chdir $cwdpath;
if (-f $example) {
$test_passed = 0;
@@ -35,10 +35,10 @@ if (-f $example) {
# Create the answer to what should be produced by this Makefile
$answer = "$make_name: Entering directory '$wpath'\n"
- . "$delete_command EXAMPLE\n"
+ . "$CMD_rmfile EXAMPLE\n"
. "$make_name: Leaving directory '$wpath'\n";
-&compare_output($answer,&get_logfile(1));
+compare_output($answer,&get_logfile(1));
# TEST #2
@@ -47,15 +47,9 @@ $answer = "$make_name: Entering directory '$wpath'\n"
$example .= "slash";
-&touch($example);
+touch($example);
-&run_make_with_options("${testname}.mk",
- "-C $workdir/ clean ext=slash",
- &get_logfile);
-
-chdir $workdir;
-$wpath = &get_this_pwd;
-chdir $pwd;
+run_make_with_options("${testname}.mk", "-C $workdir/ clean ext=slash", &get_logfile);
if (-f $example) {
$test_passed = 0;
@@ -63,9 +57,10 @@ if (-f $example) {
# Create the answer to what should be produced by this Makefile
$answer = "$make_name: Entering directory '$wpath'\n"
- . "$delete_command EXAMPLEslash\n"
+ . "$CMD_rmfile EXAMPLEslash\n"
. "$make_name: Leaving directory '$wpath'\n";
&compare_output($answer,&get_logfile(1));
+unlink($example);
1;
diff --git a/tests/scripts/options/dash-I b/tests/scripts/options/dash-I
index d47a8d8..5d2df38 100644
--- a/tests/scripts/options/dash-I
+++ b/tests/scripts/options/dash-I
@@ -50,10 +50,12 @@ $answer = "This is another included makefile\n";
&compare_output($answer,&get_logfile(1));
-$answer = "$mkpath ANOTHER -f $makefile
-${make_name}[1]: Entering directory '$pwd'
+$answer = subst_make_string("$mkpath ANOTHER -f $makefile
+#MAKE#[1]: Entering directory '#PWD#'
This is another included makefile
-${make_name}[1]: Leaving directory '$pwd'\n";
+#MAKE#[1]: Leaving directory '#PWD#'\n");
&run_make_with_options($makefile,"-I $workdir recurse",&get_logfile);
&compare_output($answer,&get_logfile(1));
+
+1;
diff --git a/tests/scripts/options/dash-k b/tests/scripts/options/dash-k
index 85dd0b0..cd78e7f 100644
--- a/tests/scripts/options/dash-k
+++ b/tests/scripts/options/dash-k
@@ -100,15 +100,17 @@ $make_name: Target 'all' not remade because of errors.\n";
# TEST -- make sure we keep the error code if we can't create an included
# makefile.
-run_make_test('all: ; @echo hi
+if (defined $ERR_no_such_file) {
+ run_make_test('all: ; @echo hi
include ifile
ifile: no-such-file; @false
',
- '-k',
- "#MAKEFILE#:2: ifile: No such file or directory
+ '-k',
+ "#MAKEFILE#:2: ifile: $ERR_no_such_file
#MAKE#: *** No rule to make target 'no-such-file', needed by 'ifile'.
#MAKE#: Failed to remake makefile 'ifile'.
hi\n",
- 512);
+ 512);
+}
1;
diff --git a/tests/scripts/options/dash-l b/tests/scripts/options/dash-l
index 0b0f196..637c8bd 100644
--- a/tests/scripts/options/dash-l
+++ b/tests/scripts/options/dash-l
@@ -16,16 +16,14 @@ that the load will be above this number and make will therefore
decide that it cannot run more than one job even though -j 4 was
also specified on the command line.";
-open(MAKEFILE,"> $makefile");
-
-# The Contents of the MAKEFILE ...
-
-print MAKEFILE <<'EOF';
-SHELL = /bin/sh
+# On Windows a very different algorithm is used.
+$port_type eq 'W32' and return -1;
+open(MAKEFILE,"> $makefile");
+printf MAKEFILE q,
define test
if [ ! -f test-file ]; then \
- echo >> test-file; sleep 2; rm -f test-file; \
+ echo >> test-file; sleep 2; %s test-file; \
else \
echo $@ FAILED; \
fi
@@ -35,11 +33,7 @@ all : ONE TWO THREE
ONE : ; @$(test)
TWO : ; @$(test)
THREE : ; @$(test)
-EOF
-
-
-# END of Contents of MAKEFILE
-
+,, $CMD_rmfile;
close(MAKEFILE);
$mkoptions = "-l 0.0001";
diff --git a/tests/scripts/options/dash-n b/tests/scripts/options/dash-n
index 02ae4a9..ca3b43d 100644
--- a/tests/scripts/options/dash-n
+++ b/tests/scripts/options/dash-n
@@ -92,7 +92,7 @@ EOF
close(MAKEFILE);
&run_make_with_options($topmake, '-n --no-print-directory', &get_logfile);
-$answer = "$make_command -f \"$submake\" bar\ntouch inc\necho n --no-print-directory\n";
+$answer = subst_make_string("#MAKEPATH# -f \"$submake\" bar\ntouch inc\necho n --no-print-directory\n");
&compare_output($answer, &get_logfile(1));
unlink('inc');
diff --git a/tests/scripts/options/dash-s b/tests/scripts/options/dash-s
new file mode 100644
index 0000000..76bffe6
--- /dev/null
+++ b/tests/scripts/options/dash-s
@@ -0,0 +1,26 @@
+# -*-perl-*-
+
+$description = "Test the -s (silent) and --no-silent options.\n";
+
+run_make_test(q!
+all: one two
+one: ; @echo MAKEFLAGS=$$MAKEFLAGS
+two: ; echo two
+!,
+ '', "MAKEFLAGS=\necho two\ntwo");
+
+run_make_test(undef, '-s', "MAKEFLAGS=s\ntwo");
+run_make_test(undef, '--silent', "MAKEFLAGS=s\ntwo");
+run_make_test(undef, '--quiet', "MAKEFLAGS=s\ntwo");
+
+run_make_test(undef, '--no-silent', "MAKEFLAGS=\necho two\ntwo");
+
+run_make_test(undef, '-s --no-silent', "MAKEFLAGS=\necho two\ntwo");
+run_make_test(undef, '--silent --no-silent', "MAKEFLAGS=\necho two\ntwo");
+run_make_test(undef, '--quiet --no-silent', "MAKEFLAGS=\necho two\ntwo");
+
+run_make_test(undef, '--no-silent -s', "MAKEFLAGS=s\ntwo");
+run_make_test(undef, '--no-silent --silent', "MAKEFLAGS=s\ntwo");
+run_make_test(undef, '--no-silent --quiet', "MAKEFLAGS=s\ntwo");
+
+1;
diff --git a/tests/scripts/options/eval b/tests/scripts/options/eval
index 0f82409..54a3a4f 100644
--- a/tests/scripts/options/eval
+++ b/tests/scripts/options/eval
@@ -7,14 +7,22 @@ and are passed to sub-makes.";
# Verify that --eval is evaluated first
run_make_test(q!
+$(info infile)
BAR = bar
all: ; @echo all
recurse: ; @$(MAKE) -f #MAKEFILE# && echo recurse!,
- '--eval=\$\(info\ eval\) FOO=\$\(BAR\)', "eval\nall");
+ ['--eval=$(info eval)', 'FOO=$(BAR)'], "eval\ninfile\nall");
# Make sure that --eval is handled correctly during recursion
-run_make_test(undef, '--no-print-directory --eval=\$\(info\ eval\) recurse',
- "eval\neval\nall\nrecurse");
+run_make_test(undef, ['--no-print-directory', '--eval=$(info eval)', 'recurse'],
+ "eval\ninfile\neval\ninfile\nall\nrecurse");
+
+# Make sure that --eval is not passed in MAKEFLAGS
+run_make_test(q!
+all: ; @echo "MAKEFLAGS=$$MAKEFLAGS"
+!,
+ ['--eval=$(info eval)'],
+ "eval\n".'MAKEFLAGS= --eval=$$(info\ eval)');
# Make sure that --eval is handled correctly during restarting
run_make_test(q!
@@ -22,8 +30,15 @@ all: ; @echo $@
-include gen.mk
gen.mk: ; @echo > $@
!,
- '--eval=\$\(info\ eval\)', "eval\neval\nall");
+ ['--eval=$(info eval)'], "eval\neval\nall");
unlink('gen.mk');
+# Check -E
+run_make_test(q!
+BAR = bar
+all: ; @echo all
+recurse: ; @$(MAKE) -f #MAKEFILE# && echo recurse!,
+ ['-E', '$(info eval)', 'FOO=$(BAR)'], "eval\nall");
+
1;
diff --git a/tests/scripts/options/general b/tests/scripts/options/general
index d35bb35..702fb55 100644
--- a/tests/scripts/options/general
+++ b/tests/scripts/options/general
@@ -1,35 +1,30 @@
# -*-perl-*-
$description = "Test generic option processing.\n";
-open(MAKEFILE, "> $makefile");
-
-# The Contents of the MAKEFILE ...
-
-print MAKEFILE "foo 1foo: ; \@echo \$\@\n";
-
-close(MAKEFILE);
-
# TEST 0
-&run_make_with_options($makefile, "-j 1foo", &get_logfile);
if (!$parallel_jobs) {
- $answer = "$make_name: Parallel jobs (-j) are not supported on this platform.\n$make_name: Resetting to single job (-j1) mode.\n1foo\n";
+ $answer = "#MAKE#: Parallel jobs (-j) are not supported on this platform.\n#MAKE#: Resetting to single job (-j1) mode.\n1foo\n";
}
else {
$answer = "1foo\n";
}
+run_make_test(q!
+foo 1foo: ; @echo $@
+!,
+ "-j 1foo", $answer);
+
# TEST 1
# This test prints the usage string; I don't really know a good way to
# test it. I guess I could invoke make with a known-bad option to see
# what the usage looks like, then compare it to what I get here... :(
-# If I were always on UNIX, I could invoke it with 2>/dev/null, then
-# just check the error code.
+# On UNIX I can invoke it with 2>/dev/null, then just check the error code.
-&run_make_with_options($makefile, "-j1foo 2>/dev/null", &get_logfile, 512);
-$answer = "";
-&compare_output($answer, &get_logfile(1));
+if ($port_type ne 'W32') {
+ run_make_test(undef, "-j1foo 2>/dev/null", '', 512);
+}
1;
diff --git a/tests/scripts/options/symlinks b/tests/scripts/options/symlinks
index a1bfce0..bf8a892 100644
--- a/tests/scripts/options/symlinks
+++ b/tests/scripts/options/symlinks
@@ -11,58 +11,59 @@ $details = "Verify that symlink handling with and without -L works properly.";
# check for it explicitly.
if ($port_type eq 'W32' || !( eval { symlink("",""); 1 })) {
- # This test is N/A
- -1;
-} else {
+ # This test is N/A
+ return -1;
+}
- # Set up a symlink sym -> dep
- # We'll make both dep and targ older than sym
- $pwd =~ m%/([^/]+)$%;
- $dirnm = $1;
- &utouch(-10, 'dep');
- &utouch(-5, 'targ');
- symlink("../$dirnm/dep", 'sym');
+use File::Spec;
- # Without -L, nothing should happen
- # With -L, it should update targ
- run_make_test('targ: sym ; @echo make $@ from $<', '',
- "#MAKE#: 'targ' is up to date.");
- run_make_test(undef, '-L', "make targ from sym");
+# Set up a symlink sym -> dep
+# We'll make both dep and targ older than sym
+&utouch(-10, 'dep');
+&utouch(-5, 'targ');
- # Now update dep; in all cases targ should be out of date.
- &touch('dep');
- run_make_test(undef, '', "make targ from sym");
- run_make_test(undef, '-L', "make targ from sym");
+$dirnm = (File::Spec->splitdir($cwddir))[-1];
+symlink(File::Spec->catfile(File::Spec->updir(), $dirnm, 'dep'), 'sym');
- # Now update targ; in all cases targ should be up to date.
- &touch('targ');
- run_make_test(undef, '', "#MAKE#: 'targ' is up to date.");
- run_make_test(undef, '-L', "#MAKE#: 'targ' is up to date.");
+# Without -L, nothing should happen
+# With -L, it should update targ
+run_make_test('targ: sym ; @echo make $@ from $<', '',
+ "#MAKE#: 'targ' is up to date.");
+run_make_test(undef, '-L', "make targ from sym");
- # Add in a new link between sym and dep. Be sure it's newer than targ.
- sleep(1);
- rename('dep', 'dep1');
- symlink('dep1', 'dep');
+# Now update dep; in all cases targ should be out of date.
+&touch('dep');
+run_make_test(undef, '', "make targ from sym");
+run_make_test(undef, '-L', "make targ from sym");
- # Without -L, nothing should happen
- # With -L, it should update targ
- run_make_test(undef, '', "#MAKE#: 'targ' is up to date.");
- run_make_test(undef, '-L', "make targ from sym");
+# Now update targ; in all cases targ should be up to date.
+&touch('targ');
+run_make_test(undef, '', "#MAKE#: 'targ' is up to date.");
+run_make_test(undef, '-L', "#MAKE#: 'targ' is up to date.");
- rmfiles('targ', 'dep', 'sym', 'dep1');
+# Add in a new link between sym and dep. Be sure it's newer than targ.
+sleep(1);
+rename('dep', 'dep1');
+symlink('dep1', 'dep');
- # Check handling when symlinks point to non-existent files. Without -L we
- # should get an error: with -L we should use the timestamp of the symlink.
+# Without -L, nothing should happen
+# With -L, it should update targ
+run_make_test(undef, '', "#MAKE#: 'targ' is up to date.");
+run_make_test(undef, '-L', "make targ from sym");
- symlink("../$dirname/dep", 'sym');
- run_make_test('targ: sym ; @echo make $@ from $<', '',
- "#MAKE#: *** No rule to make target 'sym', needed by 'targ'. Stop.", 512);
+rmfiles('targ', 'dep', 'sym', 'dep1');
- run_make_test('targ: sym ; @echo make $@ from $<', '-L',
- 'make targ from sym');
+# Check handling when symlinks point to non-existent files. Without -L we
+# should get an error: with -L we should use the timestamp of the symlink.
+symlink("../$dirnm/dep", 'sym');
+run_make_test('targ: sym ; @echo make $@ from $<', '',
+ "#MAKE#: *** No rule to make target 'sym', needed by 'targ'. Stop.", 512);
- rmfiles('targ', 'sym');
+run_make_test('targ: sym ; @echo make $@ from $<', '-L',
+ 'make targ from sym');
- 1;
-}
+
+rmfiles('targ', 'sym');
+
+1;
diff --git a/tests/scripts/targets/DEFAULT b/tests/scripts/targets/DEFAULT
index f3d5148..955c560 100644
--- a/tests/scripts/targets/DEFAULT
+++ b/tests/scripts/targets/DEFAULT
@@ -1,3 +1,5 @@
+# -*-perl-*-
+
$description = "The following test creates a makefile to override part\n"
."of one Makefile with Another Makefile with the .DEFAULT\n"
."rule.";
@@ -9,41 +11,21 @@ $details = "This tests the use of the .DEFAULT special target to say that \n"
."defined here but passes the target bar on to another makefile\n"
."which does have the target bar defined.\n";
-$makefile2 = &get_tmpfile;
-
-open(MAKEFILE,"> $makefile");
-
-# The Contents of the MAKEFILE ...
-
-print MAKEFILE "foo:\n";
-print MAKEFILE "\t\@echo Executing rule FOO\n\n";
-print MAKEFILE ".DEFAULT:\n";
-print MAKEFILE "\t\@\$(MAKE) -f $makefile2 \$\@ \n";
-
-# END of Contents of MAKEFILE
-
-close(MAKEFILE);
-
-
-open(MAKEFILE,"> $makefile2");
-
-print MAKEFILE "bar:\n";
-print MAKEFILE "\t\@echo Executing rule BAR\n\n";
-
-close(MAKEFILE);
-
-&run_make_with_options($makefile,'bar',&get_logfile);
+create_file('defsub.mk', q!
+bar: ; @echo Executing rule BAR
+!);
-# Create the answer to what should be produced by this Makefile
-$answer = "${make_name}[1]: Entering directory '$pwd'\n"
- . "Executing rule BAR\n"
- . "${make_name}[1]: Leaving directory '$pwd'\n";
+run_make_test(q!
+foo:; @echo Executing rule FOO
-# COMPARE RESULTS
+.DEFAULT: ; @$(MAKE) -f defsub.mk $@
+!,
+ 'bar',"#MAKE#[1]: Entering directory '#PWD#'\n"
+ . "Executing rule BAR\n"
+ . "#MAKE#[1]: Leaving directory '#PWD#'\n");
-&compare_output($answer,&get_logfile(1));
+unlink('defsub.mk');
-# This tells the test driver that the perl test script executed properly.
1;
diff --git a/tests/scripts/targets/FORCE b/tests/scripts/targets/FORCE
index eb8f251..297bb38 100644
--- a/tests/scripts/targets/FORCE
+++ b/tests/scripts/targets/FORCE
@@ -2,39 +2,18 @@
$description = "The following tests rules without Commands or Dependencies.";
-$details = "If the rule ...\n";
-
-open(MAKEFILE,"> $makefile");
-
-# The Contents of the MAKEFILE ...
-
-print MAKEFILE ".IGNORE :\n";
-print MAKEFILE "clean: FORCE\n";
-print MAKEFILE "\t$delete_command clean\n";
-print MAKEFILE "FORCE:\n";
-
-# END of Contents of MAKEFILE
-
-close(MAKEFILE);
-
-
# Create a file named "clean". This is the same name as the target clean
# and tricks the target into thinking that it is up to date. (Unless you
# use the .PHONY target.
-&touch("clean");
+touch('clean');
-$answer = "$delete_command clean\n";
-&run_make_with_options($makefile,"clean",&get_logfile);
+run_make_test(qq!
+.IGNORE :
+clean: FORCE ; $CMD_rmfile clean
+FORCE:
+!,
+ '', "$CMD_rmfile clean");
-&compare_output($answer,&get_logfile(1));
+rmfiles('clean');
1;
-
-
-
-
-
-
-
-
-
diff --git a/tests/scripts/targets/INTERMEDIATE b/tests/scripts/targets/INTERMEDIATE
index 2b3021b..512498c 100644
--- a/tests/scripts/targets/INTERMEDIATE
+++ b/tests/scripts/targets/INTERMEDIATE
@@ -57,7 +57,7 @@ $answer = "cp foo.f foo.e\ncp foo.e foo.d\nrm foo.e\n";
# TEST #3
&run_make_with_options($makefile,'foo.c',&get_logfile);
-$answer = "cp foo.f foo.e\ncp bar.f bar.e\ncat foo.e bar.e > foo.c\nrm bar.e foo.e\n";
+$answer = "cp foo.f foo.e\ncp bar.f bar.e\ncat foo.e bar.e > foo.c\nrm foo.e bar.e\n";
&compare_output($answer, &get_logfile(1));
# TEST #4
@@ -72,7 +72,7 @@ $answer = "$make_name: 'foo.c' is up to date.\n";
&touch('foo.f');
&run_make_with_options($makefile,'foo.c',&get_logfile);
-$answer = "cp foo.f foo.e\ncp bar.f bar.e\ncat foo.e bar.e > foo.c\nrm bar.e foo.e\n";
+$answer = "cp foo.f foo.e\ncp bar.f bar.e\ncat foo.e bar.e > foo.c\nrm foo.e bar.e\n";
&compare_output($answer, &get_logfile(1));
# TEST #6 -- added for PR/1669: don't remove files mentioned on the cmd line.
diff --git a/tests/scripts/targets/ONESHELL b/tests/scripts/targets/ONESHELL
index 87713da..3876966 100644
--- a/tests/scripts/targets/ONESHELL
+++ b/tests/scripts/targets/ONESHELL
@@ -4,10 +4,14 @@ $description = "Test the behaviour of the .ONESHELL target.";
$details = "";
-# Some shells (*shakes fist at Solaris*) cannot handle multiple flags in
-# separate arguments.
-my $t = `/bin/sh -e -c true 2>/dev/null`;
-my $multi_ok = $? == 0;
+my $multi_ok = 0;
+
+if ($port_type ne 'W32') {
+ # Some shells (*shakes fist at Solaris*) cannot handle multiple flags in
+ # separate arguments.
+ my $t = `$sh_name -e -c true 2>/dev/null`;
+ my $multi_ok = $? == 0;
+}
# Simple
@@ -71,8 +75,9 @@ all:
# Now try using a different interpreter
-
-run_make_test(q!
+# This doesn't work on Windows right now
+if ($port_type ne 'W32') {
+ run_make_test(q!
.RECIPEPREFIX = >
.ONESHELL:
SHELL = #PERL#
@@ -83,6 +88,7 @@ all:
> @y=qw(a b c);
>print "a = $$a, y = (@y)\n";
!,
- '', "a = 12, y = (a b c)\n");
+ '', "a = 12, y = (a b c)\n");
+}
1;
diff --git a/tests/scripts/targets/PHONY b/tests/scripts/targets/PHONY
index c8e2110..d49e3f8 100644
--- a/tests/scripts/targets/PHONY
+++ b/tests/scripts/targets/PHONY
@@ -12,28 +12,22 @@ $details = "This makefile in this test declares the target clean to be a \n"
$example = "EXAMPLE_FILE";
-open(MAKEFILE,"> $makefile");
-
-# The Contents of the MAKEFILE ...
-
-print MAKEFILE ".PHONY : clean \n";
-print MAKEFILE "all: \n";
-print MAKEFILE "\t\@echo This makefile did not clean the dir ... good\n";
-print MAKEFILE "clean: \n";
-print MAKEFILE "\t$delete_command $example clean\n";
-
-# END of Contents of MAKEFILE
-
-close(MAKEFILE);
-
-&touch($example);
+touch($example);
# Create a file named "clean". This is the same name as the target clean
# and tricks the target into thinking that it is up to date. (Unless you
# use the .PHONY target.
-&touch("clean");
+touch('clean');
+
+open(MAKEFILE, "> $makefile");
+print MAKEFILE qq!
+.PHONY : clean
+all: ; \@echo This makefile did not clean the dir ... good
+clean: ; $CMD_rmfile $example clean
+!;
+close(MAKEFILE);
-$answer = "$delete_command $example clean\n";
+$answer = "$CMD_rmfile $example clean\n";
&run_make_with_options($makefile,"clean",&get_logfile);
if (-f $example) {
@@ -42,13 +36,7 @@ if (-f $example) {
&compare_output($answer,&get_logfile(1));
-1;
-
-
-
-
-
-
-
-
+# Just in case
+unlink($example, 'clean');
+1;
diff --git a/tests/scripts/targets/POSIX b/tests/scripts/targets/POSIX
index 5c3c7f8..c44cc50 100644
--- a/tests/scripts/targets/POSIX
+++ b/tests/scripts/targets/POSIX
@@ -11,7 +11,7 @@ $details = "";
my $script = 'false; true';
my $flags = '-ec';
-my $out = `/bin/sh $flags '$script' 2>&1`;
+my $out = `$sh_name $flags '$script' 2>&1`;
my $err = $? >> 8;
run_make_test(qq!
.POSIX:
@@ -21,7 +21,7 @@ all: ; \@$script
# User settings must override .POSIX
$flags = '-xc';
-$out = `/bin/sh $flags '$script' 2>&1`;
+$out = `$sh_name $flags '$script' 2>&1`;
run_make_test(qq!
.SHELLFLAGS = $flags
.POSIX:
@@ -34,9 +34,8 @@ my %POSIX = (AR => 'ar', ARFLAGS => '-rv',
YACC => 'yacc', YFLAGS => '',
LEX => 'lex', LFLAGS => '',
LDFLAGS => '',
- CC => 'c99', CFLAGS => '-O',
- FC => 'fort77', FFLAGS => '-O 1',
- GET => 'get', GFLAGS => '',
+ CC => 'c99', CFLAGS => '-O1',
+ FC => 'fort77', FFLAGS => '-O1',
SCCSFLAGS => '', SCCSGETFLAGS => '-s');
my $make = join('', map { "\t\@echo '$_=\$($_)'\n" } sort keys %POSIX);
my $r = join('', map { "$_=$POSIX{$_}\n"} sort keys %POSIX);
diff --git a/tests/scripts/targets/SECONDARY b/tests/scripts/targets/SECONDARY
index 447c275..963c240 100644
--- a/tests/scripts/targets/SECONDARY
+++ b/tests/scripts/targets/SECONDARY
@@ -93,8 +93,7 @@ print MAKEFILE <<'EOF';
final: intermediate
intermediate: source
-final intermediate source:
- echo $< > $@
+final intermediate source: ; echo $< > $@
EOF
close(MAKEFILE);
@@ -135,7 +134,7 @@ all : 1.c 2.c
cp 1.b 1.c
cp 2.a 2.b
cp 2.b 2.c
-rm 1.b 2.b');
+rm 2.b 1.b');
unlink(qw(1.a 2.a 1.c 2.c));
diff --git a/tests/scripts/targets/SILENT b/tests/scripts/targets/SILENT
index 4bb0a0f..df396a4 100644
--- a/tests/scripts/targets/SILENT
+++ b/tests/scripts/targets/SILENT
@@ -1,42 +1,33 @@
# -*-perl-*-
-$description = "The following tests the special target .SILENT. By simply\n"
- ."mentioning this as a target, it tells make not to print\n"
- ."commands before executing them.";
-
-$details = "This test is the same as the clean test except that it should\n"
- ."not echo its command before deleting the specified file.\n";
-
-$example = "EXAMPLE_FILE";
-
-open(MAKEFILE,"> $makefile");
-
-# The Contents of the MAKEFILE ...
-
-print MAKEFILE ".SILENT : clean\n";
-print MAKEFILE "clean: \n";
-print MAKEFILE "\t$delete_command EXAMPLE_FILE\n";
-
-# END of Contents of MAKEFILE
-
-close(MAKEFILE);
-
-&touch($example);
-
-$answer = "";
-&run_make_with_options($makefile,"clean",&get_logfile,0);
-if (-f $example) {
- $test_passed = 0;
-}
-&compare_output($answer,&get_logfile(1));
+$description = "Test the special target .SILENT.";
+
+run_make_test(q!
+.PHONY: M a b
+M: a b
+.SILENT : b
+a b: ; echo $@
+!,
+ '', "echo a\na\nb");
+
+run_make_test(q!
+.PHONY: M a b
+M: a b
+.SILENT:
+a b: ; echo $@
+!,
+ '', "a\nb");
+
+# SV 54740 : don't inherit .SILENT settings in sub-makes
+run_make_test(q!
+.PHONY: M r a b
+r: a b ; @$(MAKE) -f #MAKEFILE# M V=x
+a b: ; echo $@
+
+V =
+$V.SILENT:
+M: a b
+!,
+ '--no-print-directory', "a\nb\necho a\na\necho b\nb");
1;
-
-
-
-
-
-
-
-
-
diff --git a/tests/scripts/targets/clean b/tests/scripts/targets/clean
index b32c976..e67458e 100644
--- a/tests/scripts/targets/clean
+++ b/tests/scripts/targets/clean
@@ -8,43 +8,24 @@ $description = "The following test creates a makefile to delete a \n"
$example = "EXAMPLE_FILE";
open(MAKEFILE,"> $makefile");
-
-# The Contents of the MAKEFILE ...
-
-print MAKEFILE "all: \n";
-print MAKEFILE "\t\@echo This makefile did not clean the dir... good\n";
-print MAKEFILE "clean: \n";
-print MAKEFILE "\t$delete_command EXAMPLE_FILE\n";
-
-# END of Contents of MAKEFILE
-
+print MAKEFILE qq!
+all: ; \@echo This makefile did not clean the dir... good
+clean: ; $CMD_rmfile $example
+!;
close(MAKEFILE);
-&touch($example);
+touch($example);
+run_make_with_options($makefile,"",&get_logfile,0);
-
-&run_make_with_options($makefile,"",&get_logfile,0);
-
-# Create the answer to what should be produced by this Makefile
$answer = "This makefile did not clean the dir... good\n";
+compare_output($answer,&get_logfile(1)) || error("abort");
-&compare_output($answer,&get_logfile(1)) || &error ("abort");
-
-$answer = "$delete_command $example\n";
-&run_make_with_options($makefile,"clean",&get_logfile,0);
+$answer = "$CMD_rmfile $example\n";
+run_make_with_options($makefile,"clean",&get_logfile,0);
if (-f $example) {
$test_passed = 0;
}
-&compare_output($answer,&get_logfile(1)) || &error ("abort");
+compare_output($answer,&get_logfile(1)) || error("abort");
1;
-
-
-
-
-
-
-
-
-
diff --git a/tests/scripts/variables/CURDIR b/tests/scripts/variables/CURDIR
index ee7cacb..1be54f1 100644
--- a/tests/scripts/variables/CURDIR
+++ b/tests/scripts/variables/CURDIR
@@ -1,20 +1,16 @@
# -*-perl-*-
-$description = "This tests the CURDIR varaible.";
+$description = "This tests the CURDIR variable.";
$details = "Echo CURDIR both with and without -C. Also ensure overrides work.";
-open(MAKEFILE,"> $makefile");
-print MAKEFILE "all: ; \@echo \$(CURDIR)\n";
-close(MAKEFILE);
-
# TEST #1
# -------
-&run_make_with_options($makefile,"",&get_logfile);
-$answer = "$pwd\n";
-&compare_output($answer,&get_logfile(1));
-
+run_make_test(q!
+all: ; @echo $(CURDIR)
+!,
+ '', "#PWD#\n");
1;
diff --git a/tests/scripts/variables/EXTRA_PREREQS b/tests/scripts/variables/EXTRA_PREREQS
new file mode 100644
index 0000000..57ad597
--- /dev/null
+++ b/tests/scripts/variables/EXTRA_PREREQS
@@ -0,0 +1,151 @@
+# -*-perl-*-
+
+$description = "Test the .EXTRA_PREREQS special variable.";
+$details = "";
+
+# Simple global .EXTRA_PREREQS and automatic variable settings
+run_make_test('
+.EXTRA_PREREQS = tick tack
+.PHONY: all
+all: ; @echo ${.EXTRA_PREREQS}/$@/$</$^/$?/$+/$|/$*/
+tick tack: ; @echo $@
+',
+ '', "tick\ntack\ntick tack/all///////\n");
+
+# Global .EXTRA_PREREQS and pattern rules
+run_make_test('
+.EXTRA_PREREQS = tick tack
+a%: ; @echo ${.EXTRA_PREREQS}/$@/$</$^/$?/$+/$|/$*/
+tick tack: ; @echo $@
+',
+ 'all', "tick\ntack\ntick tack/all//////ll/\n");
+
+# Simple target-specific .EXTRA_PREREQS and automatic variable settings
+run_make_test('
+.PHONY: all
+all: ; @echo ${.EXTRA_PREREQS}/$@/$</$^/$?/$+/$|/$*/
+all: .EXTRA_PREREQS = tick tack
+tick tack: ; @echo $@
+',
+ '', "tick\ntack\ntick tack/all///////\n");
+
+# Simple pattern-specific .EXTRA_PREREQS and automatic variable settings
+# This is not currently supported :-/
+if (0) {
+ run_make_test('
+.PHONY: all
+all: ; @echo ${.EXTRA_PREREQS}/$@/$</$^/$?/$+/$|/$*/
+a%: .EXTRA_PREREQS = tick tack
+tick tack: ; @echo $@
+',
+ '', "tick\ntack\ntick tack/all///////\n");
+}
+
+touch('hi');
+
+# Basic test target specific .EXTRA_PREREQS:
+run_make_test('
+DEPENDENCY_ONLY_PREREQUISITES = ho hey
+OTHER_PREREQUISITES := foo bar baz
+target: .EXTRA_PREREQS := hi ${DEPENDENCY_ONLY_PREREQUISITES}
+target: ${OTHER_PREREQUISITES} ; @echo ${.EXTRA_PREREQS} $^
+.PHONY: target ${DEPENDENCY_ONLY_PREREQUISITES} ${OTHER_PREREQUISITES}
+${DEPENDENCY_ONLY_PREREQUISITES} ${OTHER_PREREQUISITES}: ; @echo $@
+',
+ '', "foo\nbar\nbaz\nho\nhey\nhi ho hey foo bar baz\n");
+
+# Test target specific .EXTRA_PREREQS and pattern rules:
+run_make_test('
+all: target.dst
+DEPENDENCY_ONLY_PREREQUISITES = ho hey
+target.dst: .EXTRA_PREREQS := hi ${DEPENDENCY_ONLY_PREREQUISITES}
+%.dst: %.src ; @echo ${.EXTRA_PREREQS} $^
+.PHONY: ${DEPENDENCY_ONLY_PREREQUISITES} target.src
+${DEPENDENCY_ONLY_PREREQUISITES} target.src: ; @echo $@
+',
+ '', "target.src\nho\nhey\nhi ho hey target.src\n");
+
+# Test that global .EXTRA_PREREQS are built first:
+run_make_test('
+.EXTRA_PREREQS = hi ho hey
+OTHER_PREREQUISITES := foo bar baz
+target: ${OTHER_PREREQUISITES} ; @echo ${.EXTRA_PREREQS} $^
+.PHONY: target ${.EXTRA_PREREQS} ${OTHER_PREREQUISITES}
+${.EXTRA_PREREQS} ${OTHER_PREREQUISITES}: ; @echo $@
+',
+ '', "hi\nho\nhey\nfoo\nbar\nbaz\nhi ho hey foo bar baz\n");
+
+# Test that target specific .EXTRA_PREREQS override global .EXTRA_PREREQS:
+run_make_test('
+.EXTRA_PREREQS = tick tack
+DEPENDENCY_ONLY_PREREQUISITES = ho hey
+OTHER_PREREQUISITES := foo bar baz
+target: .EXTRA_PREREQS := hi ${DEPENDENCY_ONLY_PREREQUISITES}
+target: ${OTHER_PREREQUISITES} ; @echo ${.EXTRA_PREREQS} $^
+.PHONY: target ${DEPENDENCY_ONLY_PREREQUISITES} ${OTHER_PREREQUISITES} ${.EXTRA_PREREQS}
+${DEPENDENCY_ONLY_PREREQUISITES} ${OTHER_PREREQUISITES} ${.EXTRA_PREREQS}: ; @echo $@
+',
+ '', "tick\ntack\nfoo\nbar\nbaz\nho\nhey\nhi ho hey foo bar baz\n");
+
+# Cleanup:
+unlink('hi');
+
+# Test error reporting of global .EXTRA_PREREQS:
+run_make_test('
+.EXTRA_PREREQS = tick tack
+.PHONY: all
+all: ; @echo ${.EXTRA_PREREQS} $^
+',
+ '', "#MAKE#: *** No rule to make target 'tick', needed by 'all'. Stop.", 512);
+
+# Test error reporting of global .EXTRA_PREREQS and keep-going:
+run_make_test('
+.EXTRA_PREREQS = tick tack
+.PHONY: all
+all: ; @echo ${.EXTRA_PREREQS} $^
+',
+ '-k', "#MAKE#: *** No rule to make target 'tick', needed by 'all'.\n#MAKE#: *** No rule to make target 'tack', needed by 'all'.\n#MAKE#: Target 'all' not remade because of errors.", 512);
+
+# Test error reporting of target specific .EXTRA_PREREQS and keep-going:
+run_make_test('
+all: .EXTRA_PREREQS = tick tack
+.PHONY: all
+all: ; @echo ${.EXTRA_PREREQS} $^
+',
+ '-k',
+ "#MAKE#: *** No rule to make target 'tick', needed by 'all'.
+#MAKE#: *** No rule to make target 'tack', needed by 'all'.
+#MAKE#: Target 'all' not remade because of errors.\n", 512);
+
+# Test wildcard
+
+touch('tick', 'tack');
+
+run_make_test('
+.EXTRA_PREREQS = *ck
+.PHONY: all tick tack
+all: ; @echo ${.EXTRA_PREREQS} $^
+tick tack: ; @echo $@
+',
+ '', "tack\ntick\ntack tick\n");
+
+run_make_test('
+.PHONY: all tick tack
+all: ; @echo ${.EXTRA_PREREQS} $^
+all: .EXTRA_PREREQS = *ck
+tick tack: ; @echo $@
+',
+ '', "tack\ntick\ntack tick\n");
+
+run_make_test('
+.PHONY: tick tack
+a%: ; @echo ${.EXTRA_PREREQS} $^
+.EXTRA_PREREQS = *ck
+tick tack: ; @echo $@
+',
+ 'all', "tack\ntick\ntack tick\n");
+
+unlink('tick', 'tack');
+
+# This tells the test driver that the perl test script executed properly.
+1;
diff --git a/tests/scripts/variables/MAKEFILES b/tests/scripts/variables/MAKEFILES
index b23da8e..564d996 100644
--- a/tests/scripts/variables/MAKEFILES
+++ b/tests/scripts/variables/MAKEFILES
@@ -5,11 +5,6 @@ $description = "Test the MAKEFILES variable.";
$makefile2 = &get_tmpfile;
$makefile3 = &get_tmpfile;
-open(MAKEFILE,"> $makefile");
-print MAKEFILE 'all: ; @echo DEFAULT RULE: M2=$(M2) M3=$(M3)', "\n";
-close(MAKEFILE);
-
-
open(MAKEFILE,"> $makefile2");
print MAKEFILE <<EOF;
M2 = m2
@@ -25,11 +20,10 @@ NDEF3: ; \@echo RULE FROM MAKEFILE 3
EOF
close(MAKEFILE);
-
-&run_make_with_options($makefile, "MAKEFILES='$makefile2 $makefile3'",
- &get_logfile);
-$answer = "DEFAULT RULE: M2=m2 M3=m3\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(q!
+all: ; @echo DEFAULT RULE: M2=$(M2) M3=$(M3)
+!,
+ ["MAKEFILES=$makefile2 $makefile3"], "DEFAULT RULE: M2=m2 M3=m3\n");
# TEST 2: Verify that included makefiles don't set the default goal.
# See Savannah bug #13401.
diff --git a/tests/scripts/variables/MFILE_LIST b/tests/scripts/variables/MFILE_LIST
index 076e42d..b75eea7 100644
--- a/tests/scripts/variables/MFILE_LIST
+++ b/tests/scripts/variables/MFILE_LIST
@@ -2,29 +2,39 @@
$description = "Test the MAKEFILE_LIST variable.";
-$makefile2 = &get_tmpfile;
+create_file('incl2', "m2 := \$(MAKEFILE_LIST)\n");
-open(MAKEFILE,"> $makefile");
-print MAKEFILE <<EOF;
+run_make_test(qq!
m1 := \$(MAKEFILE_LIST)
-include $makefile2
+include incl2
m3 := \$(MAKEFILE_LIST)
all:
\t\@echo \$(m1)
\t\@echo \$(m2)
\t\@echo \$(m3)
-EOF
-close(MAKEFILE);
+!,
+ '', "#MAKEFILE#\n#MAKEFILE# incl2\n#MAKEFILE# incl2\n");
+unlink('incl2');
-open(MAKEFILE,"> $makefile2");
-print MAKEFILE "m2 := \$(MAKEFILE_LIST)\n";
-close(MAKEFILE);
+# SV 50823 -- makefiles containing '$' chars
+create_file('foo$bar', "m2 := \$(MAKEFILE_LIST)\n");
-&run_make_with_options($makefile, "", &get_logfile);
-$answer = "$makefile\n$makefile $makefile2\n$makefile $makefile2\n";
-&compare_output($answer,&get_logfile(1));
+run_make_test(qq!
+m1 := \$(MAKEFILE_LIST)
+include foo\$\$bar
+m3 := \$(MAKEFILE_LIST)
+
+all:
+\t\@echo '\$(m1)'
+\t\@echo '\$(m2)'
+\t\@echo '\$(m3)'
+\t\@echo '\$(value MAKEFILE_LIST)'
+!,
+ '', "#MAKEFILE#\n#MAKEFILE# foo\$bar\n#MAKEFILE# foo\$bar\n#MAKEFILE# foo\$bar\n");
+
+unlink('foo$bar');
1;
diff --git a/tests/scripts/variables/SHELL b/tests/scripts/variables/SHELL
index edba7b6..4ff1ac2 100644
--- a/tests/scripts/variables/SHELL
+++ b/tests/scripts/variables/SHELL
@@ -2,12 +2,15 @@
$description = "Test proper handling of SHELL.";
-# Find the default value when SHELL is not set. On UNIX it will be /bin/sh,
-# but on other platforms who knows?
-resetENV();
-delete $ENV{SHELL};
-$mshell = `echo 'all:;\@echo \$(SHELL)' | $make_path -f-`;
-chop $mshell;
+# If we don't have a POSIX shell available, never mind
+$is_posix_sh or return -1;
+
+# On Windows, shell names might not match
+if ($port_type eq 'W32') {
+ return -1;
+}
+
+$mshell = $sh_name;
# According to POSIX, the value of SHELL in the environment has no impact on
# the value in the makefile.
@@ -24,18 +27,25 @@ run_make_test('all:;@echo "$(SHELL)"', '', $mshell);
$extraENV{SHELL} = $mshell;
-run_make_test("SHELL := /./$mshell\n".'
+my $altshell = "/./$mshell";
+my $altshell2 = "/././$mshell";
+if ($mshell =~ m,^([a-zA-Z]:)([\\/])(.*),) {
+ $altshell = "$1$2.$2$3";
+ $altshell2 = "$1$2.$2.$2$3";
+}
+
+run_make_test("SHELL := $altshell\n".'
all:;@echo "$(SHELL) $$SHELL"
-', '', "/./$mshell $mshell");
+', '', "$altshell $mshell");
# As a GNU make extension, if make's SHELL variable is explicitly exported,
# then we really _DO_ export it.
$extraENV{SHELL} = $mshell;
-run_make_test("export SHELL := /./$mshell\n".'
+run_make_test("export SHELL := $altshell\n".'
all:;@echo "$(SHELL) $$SHELL"
-', '', "/./$mshell /./$mshell");
+', '', "$altshell $altshell");
# Test out setting of SHELL, both exported and not, as a target-specific
@@ -43,18 +53,18 @@ all:;@echo "$(SHELL) $$SHELL"
$extraENV{SHELL} = $mshell;
-run_make_test("all: SHELL := /./$mshell\n".'
+run_make_test("all: SHELL := $altshell\n".'
all:;@echo "$(SHELL) $$SHELL"
-', '', "/./$mshell $mshell");
+', '', "$altshell $mshell");
$extraENV{SHELL} = $mshell;
run_make_test("
-SHELL := /././$mshell
+SHELL := $altshell2
one: two
-two: export SHELL := /./$mshell\n".'
+two: export SHELL := $altshell\n".'
one two:;@echo "$@: $(SHELL) $$SHELL"
-', '', "two: /./$mshell /./$mshell\none: /././$mshell $mshell\n");
+', '', "two: $altshell $altshell\none: $altshell2 $mshell\n");
# Test .SHELLFLAGS
@@ -62,7 +72,7 @@ one two:;@echo "$@: $(SHELL) $$SHELL"
# by the shell in -x mode has a trailing space (!!)
my $script = 'true; true';
my $flags = '-xc';
-my $out = `/bin/sh $flags '$script' 2>&1`;
+my $out = `$sh_name $flags '$script' 2>&1`;
run_make_test(qq!
.SHELLFLAGS = $flags
@@ -74,7 +84,7 @@ all: ; \@$script
# Some shells (*shakes fist at Solaris*) cannot handle multiple flags in
# separate arguments.
-my $t = `/bin/sh -e -c true 2>/dev/null`;
+my $t = `$sh_name -e -c true 2>/dev/null`;
my $multi_ok = $? == 0;
if ($multi_ok) {
@@ -90,7 +100,7 @@ all: ; \@$script
# different exit code--once again Solaris: false exits with 255 not 1
$script = 'true; false; true';
$flags = '-xec';
-$out = `/bin/sh $flags '$script' 2>&1`;
+$out = `$sh_name $flags '$script' 2>&1`;
my $err = $? >> 8;
run_make_test(qq!
diff --git a/tests/scripts/variables/automatic b/tests/scripts/variables/automatic
index 33c482d..0b2e451 100644
--- a/tests/scripts/variables/automatic
+++ b/tests/scripts/variables/automatic
@@ -72,7 +72,7 @@ $answer = ".x\n$dir/foo.x\nx\n\$@.x\n$dir.x\nfoo.x\n$dir/bar.x\nbar.x\n";
&compare_output($answer, &get_logfile(1));
&run_make_with_options($makefile2, "$dir/x.z $dir/y.z", &get_logfile);
-$answer = ".x\n$dir/x.z.x\nx\n\$@.x\n$dir.x\nx.z.x\n.y\n$dir/y.z.y\n\y\n\$@.y\n$dir.y\ny.z.y\n";
+$answer = ".x\n$dir/x.z.x\nx\n\$@.x\n$dir.x\nx.z.x\n.y\n$dir/y.z.y\ny\n\$@.y\n$dir.y\ny.z.y\n";
&compare_output($answer, &get_logfile(1));
&run_make_with_options($makefile2, "$dir/biz", &get_logfile);
diff --git a/tests/scripts/variables/flavors b/tests/scripts/variables/flavors
index ba133ea..831e5d8 100644
--- a/tests/scripts/variables/flavors
+++ b/tests/scripts/variables/flavors
@@ -93,4 +93,64 @@ all: ; @echo $(foo)
',
'', "Goodbye\n");
+# TEST 8: Append to empty
+run_make_test(q!
+recur =
+recur += foo
+simple :=
+simple += bar
+recur_empty = foo
+recur_empty +=
+simple_empty := bar
+simple_empty +=
+empty_recur =
+empty_recur +=
+empty_simple :=
+empty_simple +=
+
+all: ; @: $(info recur=/$(recur)/ simple=/$(simple)/ recure=/$(recur_empty)/ simplee=/$(simple_empty)/ erecur=/$(empty_recur)/ esimple=/$(empty_simple)/)
+!,
+ '', "recur=/foo/ simple=/bar/ recure=/foo/ simplee=/bar/ erecur=// esimple=//\n");
+
+# TEST 9: Line continuation
+run_make_test(q!
+recur = $\
+ one$\
+ two$\
+ three
+simple := $\
+ four$\
+ five$\
+ six
+
+all: d$\
+ e$\
+ p; @:
+
+.PHONY: dep
+dep: ; @: $(info recur=/$(recur)/ simple=/$(simple)/)
+!,
+ '', "recur=/onetwothree/ simple=/fourfivesix/\n");
+
+# TEST 9: Line continuation
+run_make_test(q!
+.POSIX:
+recur = $\
+ one$\
+ two$\
+ three
+simple := $\
+ four$\
+ five$\
+ six
+
+all: d$\
+ e$\
+ p; @:
+
+.PHONY: dep
+dep: ; @: $(info recur=/$(recur)/ simple=/$(simple)/)
+!,
+ '', "recur=/onetwothree/ simple=/fourfivesix/\n");
+
1;
diff --git a/tests/scripts/variables/negative b/tests/scripts/variables/negative
index 16a72b8..0f9abc8 100644
--- a/tests/scripts/variables/negative
+++ b/tests/scripts/variables/negative
@@ -18,7 +18,7 @@ all: ; @echo $y
# TEST #1
# Bogus variable value passed on the command line.
run_make_test(undef,
- 'x=\$\(other',
+ ['x=$(other'],
'#MAKEFILE#:4: *** unterminated variable reference. Stop.',
512);
@@ -39,7 +39,7 @@ all: ; @echo $y
# TEST #3
# Bogus variable value passed on the command line.
run_make_test(undef,
- 'x=\$\(other',
+ ['x=$(other'],
'#MAKEFILE#:4: *** unterminated variable reference. Stop.',
512);
diff --git a/tests/scripts/vms/library b/tests/scripts/vms/library
index 9a64951..8375dfa 100644
--- a/tests/scripts/vms/library
+++ b/tests/scripts/vms/library
@@ -25,7 +25,7 @@ $mk_string = "text : text.tlb(file1.txt)\n\n" .
"file1.txt :\n" .
"\t\@pipe open/write xxx file1.txt ; write xxx \"text file\" ; close xxx\n";
-my $answer = "library /replace text.tlb file1.txt";
+$answer = "library /replace text.tlb file1.txt";
run_make_test($mk_string,
'', $answer);
@@ -37,10 +37,10 @@ unlink('file1.txt');
#Macro library
$mk_string = "macro : macro.mlb(file1.mar)\n\n" .
"file1.mar :\n" .
-"\t\pipe open/write xxx file1.mar ; " .
+"\tpipe open/write xxx file1.mar ; " .
"write xxx \".macro a b\" ; write xxx \".endm\" ; close xxx\n";
-my $answer = "library /replace macro.mlb file1.mar";
+$answer = "library /replace macro.mlb file1.mar";
run_make_test($mk_string,
'', $answer);
@@ -58,7 +58,7 @@ $mk_string =
"file2.c :\n" .
"\t\@pipe open/write xxx file2.c ; write xxx \"file2(){}\" ; close xxx\n";
-my $answer = "library /replace imagelib.olb file2.exe";
+$answer = "library /replace imagelib.olb file2.exe";
run_make_test($mk_string,
'', $answer);
diff --git a/tests/test_driver.pl b/tests/test_driver.pl
index e6cd9f9..f18e785 100644
--- a/tests/test_driver.pl
+++ b/tests/test_driver.pl
@@ -5,7 +5,7 @@
# Written 91-12-02 through 92-01-01 by Stephen McGee.
# Modified 92-02-11 through 92-02-22 by Chris Arthur to further generalize.
#
-# Copyright (C) 1991-2016 Free Software Foundation, Inc.
+# Copyright (C) 1991-2020 Free Software Foundation, Inc.
# This file is part of GNU Make.
#
# GNU Make is free software; you can redistribute it and/or modify it under
@@ -30,6 +30,9 @@
# $Id$
+use Config;
+use Cwd;
+use File::Spec;
# The number of test categories we've run
$categories_run = 0;
@@ -54,6 +57,31 @@ $test_timeout = 10 if $^O eq 'VMS';
# Path to Perl
$perl_name = $^X;
+if ($^O ne 'VMS') {
+ $perl_name .= $Config{_exe} unless $perl_name =~ m/$Config{_exe}$/i;
+}
+# If it's a simple name, look it up on PATH
+{
+ my ($v,$d,$f) = File::Spec->splitpath($perl_name);
+ if (!$d) {
+ my $perl = undef;
+ foreach my $p (File::Spec->path()) {
+ my $f = File::Spec->catfile($p, $f);
+ if (-e $f) {
+ $perl = $f;
+ last;
+ }
+ }
+ if ($perl) {
+ $perl_name = $perl;
+ } else {
+ print "Cannot locate Perl interpreter $perl_name\n";
+ }
+ }
+}
+# Make sure it uses forward-slashes even on Windows, else it won't work
+# in recipes
+$perl_name =~ tr,\\,/,;
# %makeENV is the cleaned-out environment.
%makeENV = ();
@@ -136,6 +164,8 @@ sub toplevel
foreach (# UNIX-specific things
'TZ', 'TMPDIR', 'HOME', 'USER', 'LOGNAME', 'PATH',
'LD_LIBRARY_PATH',
+ # SAN things
+ 'ASAN_OPTIONS', 'UBSAN_OPTIONS',
# Purify things
'PURIFYOPTIONS',
# Windows NT-specific stuff
@@ -187,85 +217,71 @@ sub toplevel
&print_banner;
- if ($osname eq 'VMS' && $cwdslash eq "")
- {
+ if ($osname eq 'VMS' && $cwdslash eq "") {
# Porting this script to VMS revealed a small bug in opendir() not
# handling search lists correctly when the directory only exists in
# one of the logical_devices. Need to find the first directory in
# the search list, as that is where things will be written to.
- my @dirs = split("/", $pwd);
+ my @dirs = split('/', $cwdpath);
my $logical_device = $ENV{$dirs[1]};
- if ($logical_device =~ /([A-Za-z0-9_]+):(:?.+:)+/)
- {
- # A search list was found. Grab the first logical device
- # and use it instead of the search list.
- $dirs[1]=$1;
- my $lcl_pwd = join('/', @dirs);
- $workpath = $lcl_pwd . '/' . $workdir
+ if ($logical_device =~ /([A-Za-z0-9_]+):(:?.+:)+/) {
+ # A search list was found. Grab the first logical device
+ # and use it instead of the search list.
+ $dirs[1]=$1;
+ my $lcl_pwd = join('/', @dirs);
+ $workpath = $lcl_pwd . '/' . $workdir
}
}
- if (-d $workpath)
- {
+ if (-d $workpath) {
print "Clearing $workpath...\n";
&remove_directory_tree("$workpath/")
- || &error ("Couldn't wipe out $workpath\n");
- }
- else
- {
- mkdir ($workpath, 0777) || &error ("Couldn't mkdir $workpath: $!\n");
+ or &error ("Couldn't wipe out $workpath: $!\n");
+ } else {
+ mkdir ($workpath, 0777) or &error ("Couldn't mkdir $workpath: $!\n");
}
- if (!-d $scriptpath)
- {
+ if (!-d $scriptpath) {
&error ("Failed to find $scriptpath containing perl test scripts.\n");
}
- if (@TESTS)
- {
+ if (@TESTS) {
print "Making work dirs...\n";
- foreach $test (@TESTS)
- {
- if ($test =~ /^([^\/]+)\//)
- {
+ foreach $test (@TESTS) {
+ if ($test =~ /^([^\/]+)\//) {
$dir = $1;
push (@rmdirs, $dir);
-d "$workpath/$dir"
- || mkdir ("$workpath/$dir", 0777)
- || &error ("Couldn't mkdir $workpath/$dir: $!\n");
+ or mkdir ("$workpath/$dir", 0777)
+ or &error ("Couldn't mkdir $workpath/$dir: $!\n");
}
}
- }
- else
- {
+ } else {
print "Finding tests...\n";
opendir (SCRIPTDIR, $scriptpath)
- || &error ("Couldn't opendir $scriptpath: $!\n");
+ or &error ("Couldn't opendir $scriptpath: $!\n");
@dirs = grep (!/^(\..*|CVS|RCS)$/, readdir (SCRIPTDIR) );
closedir (SCRIPTDIR);
- foreach $dir (@dirs)
- {
+ foreach my $dir (@dirs) {
next if ($dir =~ /^(\..*|CVS|RCS)$/ || ! -d "$scriptpath/$dir");
push (@rmdirs, $dir);
# VMS can have overlayed file systems, so directories may repeat.
next if -d "$workpath/$dir";
mkdir ("$workpath/$dir", 0777)
- || &error ("Couldn't mkdir $workpath/$dir: $!\n");
+ or &error ("Couldn't mkdir $workpath/$dir: $!\n");
opendir (SCRIPTDIR, "$scriptpath/$dir")
- || &error ("Couldn't opendir $scriptpath/$dir: $!\n");
+ or &error ("Couldn't opendir $scriptpath/$dir: $!\n");
@files = grep (!/^(\..*|CVS|RCS|.*~)$/, readdir (SCRIPTDIR) );
closedir (SCRIPTDIR);
- foreach $test (@files)
- {
+ foreach my $test (@files) {
-d $test and next;
push (@TESTS, "$dir/$test");
}
}
}
- if (@TESTS == 0)
- {
+ if (@TESTS == 0) {
&error ("\nNo tests in $scriptpath, and none were specified.\n");
}
@@ -273,8 +289,7 @@ sub toplevel
run_all_tests();
- foreach $dir (@rmdirs)
- {
+ foreach my $dir (@rmdirs) {
rmdir ("$workpath/$dir");
}
@@ -283,8 +298,7 @@ sub toplevel
$categories_failed = $categories_run - $categories_passed;
$total_tests_failed = $total_tests_run - $total_tests_passed;
- if ($total_tests_failed)
- {
+ if ($total_tests_failed) {
print "\n$total_tests_failed Test";
print "s" unless $total_tests_failed == 1;
print " in $categories_failed Categor";
@@ -292,15 +306,13 @@ sub toplevel
print " Failed (See .$diffext* files in $workdir dir for details) :-(\n\n";
return 0;
}
- else
- {
- print "\n$total_tests_passed Test";
- print "s" unless $total_tests_passed == 1;
- print " in $categories_passed Categor";
- print ($categories_passed == 1 ? "y" : "ies");
- print " Complete ... No Failures :-)\n\n";
- return 1;
- }
+
+ print "\n$total_tests_passed Test";
+ print "s" unless $total_tests_passed == 1;
+ print " in $categories_passed Categor";
+ print ($categories_passed == 1 ? "y" : "ies");
+ print " Complete ... No Failures :-)\n\n";
+ return 1;
}
sub get_osname
@@ -308,6 +320,40 @@ sub get_osname
# Set up an initial value. In perl5 we can do it the easy way.
$osname = defined($^O) ? $^O : '';
+ # find the type of the port. We do this up front to have a single
+ # point of change if it needs to be tweaked.
+ #
+ # This is probably not specific enough.
+ #
+ if ($osname =~ /MSWin32/i || $osname =~ /Windows/i
+ || $osname =~ /MINGW32/i || $osname =~ /CYGWIN_NT/i) {
+ $port_type = 'W32';
+ }
+ # Bleah, the osname is so variable on DOS. This kind of bites.
+ # Well, as far as I can tell if we check for some text at the
+ # beginning of the line with either no spaces or a single space, then
+ # a D, then either "OS", "os", or "ev" and a space. That should
+ # match and be pretty specific.
+ elsif ($osname =~ /^([^ ]*|[^ ]* [^ ]*)D(OS|os|ev) /) {
+ $port_type = 'DOS';
+ }
+ # Check for OS/2
+ elsif ($osname =~ m%OS/2%) {
+ $port_type = 'OS/2';
+ }
+
+ # VMS has a GNV Unix mode or a DCL mode.
+ # The SHELL environment variable should not be defined in VMS-DCL mode.
+ elsif ($osname eq 'VMS' && !defined $ENV{"SHELL"}) {
+ $port_type = 'VMS-DCL';
+ }
+ # Everything else, right now, is UNIX. Note that we should integrate
+ # the VOS support into this as well and get rid of $vos; we'll do
+ # that next time.
+ else {
+ $port_type = 'UNIX';
+ }
+
if ($osname eq 'VMS')
{
$vos = 0;
@@ -320,9 +366,9 @@ sub get_osname
# See if the filesystem supports long file names with multiple
# dots. DOS doesn't.
$short_filenames = 0;
- (open (TOUCHFD, "> fancy.file.name") && close (TOUCHFD))
- || ($short_filenames = 1);
- unlink ("fancy.file.name") || ($short_filenames = 1);
+ (open (TOUCHFD, "> fancy.file.name") and close (TOUCHFD))
+ or $short_filenames = 1;
+ unlink ("fancy.file.name") or $short_filenames = 1;
if (! $short_filenames) {
# Thanks go to meyering@cs.utexas.edu (Jim Meyering) for suggesting a
@@ -331,44 +377,39 @@ sub get_osname
# Because perl on VOS translates /'s to >'s, we need to test for
# VOSness rather than testing for Unixness (ie, try > instead of /).
- mkdir (".ostest", 0777) || &error ("Couldn't create .ostest: $!\n", 1);
- open (TOUCHFD, "> .ostest>ick") && close (TOUCHFD);
- chdir (".ostest") || &error ("Couldn't chdir to .ostest: $!\n", 1);
+ mkdir (".ostest", 0777) or &error ("Couldn't create .ostest: $!\n", 1);
+ open (TOUCHFD, "> .ostest>ick") and close (TOUCHFD);
+ chdir (".ostest") or &error ("Couldn't chdir to .ostest: $!\n", 1);
}
- if (! $short_filenames && -f "ick")
- {
+ if (! $short_filenames && -f "ick") {
$osname = "vos";
$vos = 1;
$pathsep = ">";
- }
- else
- {
- # the following is regrettably knarly, but it seems to be the only way
+
+ } else {
+ # the following is regrettably gnarly, but it seems to be the only way
# to not get ugly error messages if uname can't be found.
# Hmmm, BSD/OS 2.0's uname -a is excessively verbose. Let's try it
# with switches first.
eval "chop (\$osname = `sh -c 'uname -nmsr 2>&1'`)";
- if ($osname =~ /not found/i)
- {
- $osname = "(something posixy with no uname)";
- }
- elsif ($@ ne "" || $?)
- {
- eval "chop (\$osname = `sh -c 'uname -a 2>&1'`)";
- if ($@ ne "" || $?)
- {
- $osname = "(something posixy)";
- }
+ if ($osname =~ /not found/i) {
+ $osname = "(something posixy with no uname)";
+
+ } elsif ($@ ne "" || $?) {
+ eval "chop (\$osname = `sh -c 'uname -a 2>&1'`)";
+ if ($@ ne "" || $?) {
+ $osname = "(something posixy)";
+ }
}
$vos = 0;
$pathsep = "/";
}
if (! $short_filenames) {
- chdir ("..") || &error ("Couldn't chdir to ..: $!\n", 1);
+ chdir ("..") or &error ("Couldn't chdir to ..: $!\n", 1);
unlink (".ostest>ick");
- rmdir (".ostest") || &error ("Couldn't rmdir .ostest: $!\n", 1);
+ rmdir (".ostest") or &error ("Couldn't rmdir .ostest: $!\n", 1);
}
}
@@ -378,61 +419,50 @@ sub parse_command_line
# use @ARGV if no args were passed in
- if (@argv == 0)
- {
+ if (@argv == 0) {
@argv = @ARGV;
}
# look at each option; if we don't recognize it, maybe the suite-specific
# command line parsing code will...
- while (@argv)
- {
+ while (@argv) {
$option = shift @argv;
- if ($option =~ /^-debug$/i)
- {
- print "\nDEBUG ON\n";
- $debug = 1;
- }
- elsif ($option =~ /^-usage$/i)
- {
+ if ($option =~ /^-usage$/i) {
&print_usage;
exit 0;
}
- elsif ($option =~ /^-(h|help)$/i)
- {
+ if ($option =~ /^-(h|help)$/i) {
&print_help;
exit 0;
}
- elsif ($option =~ /^-profile$/i)
- {
+
+ if ($option =~ /^-debug$/i) {
+ print "\nDEBUG ON\n";
+ $debug = 1;
+
+ } elsif ($option =~ /^-profile$/i) {
$profile = 1;
- }
- elsif ($option =~ /^-verbose$/i)
- {
+
+ } elsif ($option =~ /^-verbose$/i) {
$verbose = 1;
- }
- elsif ($option =~ /^-detail$/i)
- {
+
+ } elsif ($option =~ /^-detail$/i) {
$detail = 1;
$verbose = 1;
- }
- elsif ($option =~ /^-keep$/i)
- {
+
+ } elsif ($option =~ /^-keep$/i) {
$keep = 1;
- }
- elsif (&valid_option($option))
- {
+
+ } elsif (&valid_option($option)) {
# The suite-defined subroutine takes care of the option
- }
- elsif ($option =~ /^-/)
- {
+
+ } elsif ($option =~ /^-/) {
print "Invalid option: $option\n";
&print_usage;
exit 0;
- }
- else # must be the name of a test
- {
+
+ } else { # must be the name of a test
$option =~ s/\.pl$//;
push(@TESTS,$option);
}
@@ -441,14 +471,12 @@ sub parse_command_line
sub max
{
- local($num) = shift @_;
- local($newnum);
+ my $num = shift @_;
+ my $newnum;
- while (@_)
- {
+ while (@_) {
$newnum = shift @_;
- if ($newnum > $num)
- {
+ if ($newnum > $num) {
$num = $newnum;
}
}
@@ -458,171 +486,161 @@ sub max
sub print_centered
{
- local($width, $string) = @_;
- local($pad);
+ my ($width, $string) = @_;
- if (length ($string))
- {
- $pad = " " x ( ($width - length ($string) + 1) / 2);
+ if (length ($string)) {
+ my $pad = " " x ( ($width - length ($string) + 1) / 2);
print "$pad$string";
}
}
sub print_banner
{
- local($info);
- local($line);
- local($len);
-
- $info = "Running tests for $testee on $osname\n"; # $testee is suite-defined
- $len = &max (length ($line), length ($testee_version),
- length ($banner_info), 73) + 5;
- $line = ("-" x $len) . "\n";
- if ($len < 78)
- {
- $len = 78;
- }
+ # $testee is suite-defined
+ my $info = "Running tests for $testee on $osname\n";
+ my $len = &max (length($info), length($testee_version), 73) + 5;
+ my $line = ("-" x $len) . "\n";
&print_centered ($len, $line);
&print_centered ($len, $info);
- &print_centered ($len, $testee_version); # suite-defined
- &print_centered ($len, $banner_info); # suite-defined
+ &print_centered ($len, $testee_version);
&print_centered ($len, $line);
print "\n";
}
sub run_all_tests
{
- $categories_run = 0;
-
- $lasttest = '';
- foreach $testname (sort @TESTS) {
- # Skip duplicates on VMS caused by logical name search lists.
- next if $testname eq $lasttest;
- $lasttest = $testname;
- $suite_passed = 1; # reset by test on failure
- $num_of_logfiles = 0;
- $num_of_tmpfiles = 0;
- $description = "";
- $details = "";
- $old_makefile = undef;
- $testname =~ s/^$scriptpath$pathsep//;
- $perl_testname = "$scriptpath$pathsep$testname";
- $testname =~ s/(\.pl|\.perl)$//;
- $testpath = "$workpath$pathsep$testname";
- # Leave enough space in the extensions to append a number, even
- # though it needs to fit into 8+3 limits.
- if ($short_filenames) {
- $logext = 'l';
- $diffext = 'd';
- $baseext = 'b';
- $runext = 'r';
- $extext = '';
- } else {
- $logext = 'log';
- $diffext = 'diff';
- $baseext = 'base';
- $runext = 'run';
- $extext = '.';
- }
- $extext = '_' if $^O eq 'VMS';
- $log_filename = "$testpath.$logext";
- $diff_filename = "$testpath.$diffext";
- $base_filename = "$testpath.$baseext";
- $run_filename = "$testpath.$runext";
- $tmp_filename = "$testpath.$tmpfilesuffix";
-
- setup_for_test();
-
- $output = "........................................................ ";
-
- substr($output,0,length($testname)) = "$testname ";
-
- print $output;
-
- $tests_run = 0;
- $tests_passed = 0;
+ # Make sure we always run the tests from the current directory
+ unshift(@INC, cwd());
+
+ $categories_run = 0;
+
+ $lasttest = '';
+ # $testname is published
+ foreach $testname (sort @TESTS) {
+ # Skip duplicates on VMS caused by logical name search lists.
+ next if $testname eq $lasttest;
+ $lasttest = $testname;
+ $suite_passed = 1; # reset by test on failure
+ $num_of_logfiles = 0;
+ $num_of_tmpfiles = 0;
+ $description = "";
+ $details = "";
+ $old_makefile = undef;
+ $testname =~ s/^$scriptpath$pathsep//;
+ $perl_testname = "$scriptpath$pathsep$testname";
+ $testname =~ s/(\.pl|\.perl)$//;
+ $testpath = "$workpath$pathsep$testname";
+ # Leave enough space in the extensions to append a number, even
+ # though it needs to fit into 8+3 limits.
+ if ($short_filenames) {
+ $logext = 'l';
+ $diffext = 'd';
+ $baseext = 'b';
+ $runext = 'r';
+ $extext = '';
+ } else {
+ $logext = 'log';
+ $diffext = 'diff';
+ $baseext = 'base';
+ $runext = 'run';
+ $extext = '.';
+ }
+ $extext = '_' if $^O eq 'VMS';
+ $log_filename = "$testpath.$logext";
+ $diff_filename = "$testpath.$diffext";
+ $base_filename = "$testpath.$baseext";
+ $run_filename = "$testpath.$runext";
+ $tmp_filename = "$testpath.$tmpfilesuffix";
- # Run the test!
- $code = do $perl_testname;
+ -f $perl_testname or die "Invalid test: $testname\n\n";
- ++$categories_run;
- $total_tests_run += $tests_run;
- $total_tests_passed += $tests_passed;
+ setup_for_test();
- # How did it go?
- if (!defined($code)) {
- # Failed to parse or called die
- if (length ($@)) {
- warn "\n*** Test died ($testname): $@\n";
- } else {
- warn "\n*** Couldn't parse $perl_testname\n";
- }
- $status = "FAILED ($tests_passed/$tests_run passed)";
- }
+ $output = "........................................................ ";
- elsif ($code == -1) {
- # Skipped... not supported
- $status = "N/A";
- --$categories_run;
- }
+ substr($output,0,length($testname)) = "$testname ";
- elsif ($code != 1) {
- # Bad result... this shouldn't really happen. Usually means that
- # the suite forgot to end with "1;".
- warn "\n*** Test returned $code\n";
- $status = "FAILED ($tests_passed/$tests_run passed)";
- }
+ print $output;
- elsif ($tests_run == 0) {
- # Nothing was done!!
- $status = "FAILED (no tests found!)";
- }
+ $tests_run = 0;
+ $tests_passed = 0;
- elsif ($tests_run > $tests_passed) {
- # Lose!
- $status = "FAILED ($tests_passed/$tests_run passed)";
- }
+ # Run the test!
+ $code = do $perl_testname;
- else {
- # Win!
- ++$categories_passed;
- $status = "ok ($tests_passed passed)";
+ ++$categories_run;
+ $total_tests_run += $tests_run;
+ $total_tests_passed += $tests_passed;
- # Clean up
- for ($i = $num_of_tmpfiles; $i; $i--) {
- rmfiles($tmp_filename . num_suffix($i));
- }
- for ($i = $num_of_logfiles ? $num_of_logfiles : 1; $i; $i--) {
- rmfiles($log_filename . num_suffix($i));
- rmfiles($base_filename . num_suffix($i));
- }
- }
-
- # If the verbose option has been specified, then a short description
- # of each test is printed before displaying the results of each test
- # describing WHAT is being tested.
+ # How did it go?
+ if (!defined($code)) {
+ # Failed to parse or called die
+ if (length ($@)) {
+ warn "\n*** Test died ($testname): $@\n";
+ } else {
+ warn "\n*** Couldn't parse $perl_testname\n";
+ }
+ $status = "FAILED ($tests_passed/$tests_run passed)";
+
+ } elsif ($code == -1) {
+ # Skipped... not supported
+ $status = "N/A";
+ --$categories_run;
+
+ } elsif ($code != 1) {
+ # Bad result... this shouldn't really happen. Usually means that
+ # the suite forgot to end with "1;".
+ warn "\n*** Test returned $code\n";
+ $status = "FAILED ($tests_passed/$tests_run passed)";
+
+ } elsif ($tests_run == 0) {
+ # Nothing was done!!
+ $status = "FAILED (no tests found!)";
+
+ } elsif ($tests_run > $tests_passed) {
+ # Lose!
+ $status = "FAILED ($tests_passed/$tests_run passed)";
+
+ } else {
+ # Win!
+ ++$categories_passed;
+ $status = "ok ($tests_passed passed)";
+
+ # Clean up
+ for ($i = $num_of_tmpfiles; $i; $i--) {
+ rmfiles($tmp_filename . num_suffix($i));
+ }
+ for ($i = $num_of_logfiles ? $num_of_logfiles : 1; $i; $i--) {
+ rmfiles($log_filename . num_suffix($i));
+ rmfiles($base_filename . num_suffix($i));
+ }
+ }
- if ($verbose) {
- if ($detail) {
- print "\nWHAT IS BEING TESTED\n";
- print "--------------------";
- }
- print "\n\n$description\n\n";
- }
+ # If the verbose option has been specified, then a short description
+ # of each test is printed before displaying the results of each test
+ # describing WHAT is being tested.
- # If the detail option has been specified, then the details of HOW
- # the test is testing what it says it is testing in the verbose output
- # will be displayed here before the results of the test are displayed.
+ if ($verbose) {
+ if ($detail) {
+ print "\nWHAT IS BEING TESTED\n";
+ print "--------------------";
+ }
+ print "\n\n$description\n\n";
+ }
- if ($detail) {
- print "\nHOW IT IS TESTED\n";
- print "----------------";
- print "\n\n$details\n\n";
- }
+ # If the detail option has been specified, then the details of HOW
+ # the test is testing what it says it is testing in the verbose output
+ # will be displayed here before the results of the test are displayed.
- print "$status\n";
+ if ($detail) {
+ print "\nHOW IT IS TESTED\n";
+ print "----------------";
+ print "\n\n$details\n\n";
}
+
+ print "$status\n";
+ }
}
# If the keep flag is not set, this subroutine deletes all filenames that
@@ -630,10 +648,9 @@ sub run_all_tests
sub rmfiles
{
- local(@files) = @_;
+ my (@files) = @_;
- if (!$keep)
- {
+ if (!$keep) {
return (unlink @files);
}
@@ -642,8 +659,7 @@ sub rmfiles
sub print_standard_usage
{
- local($plname,@moreusage) = @_;
- local($line);
+ my ($plname, @moreusage) = @_;
print "usage:\t$plname [testname] [-verbose] [-detail] [-keep]\n";
print "\t\t\t[-profile] [-usage] [-help] [-debug]\n";
@@ -654,17 +670,15 @@ sub print_standard_usage
sub print_standard_help
{
- local(@morehelp) = @_;
- local($line);
- local($tline);
- local($t) = " ";
+ my (@morehelp) = @_;
+ my $t = " ";
- $line = "Test Driver For $testee";
+ my $line = "Test Driver For $testee";
print "$line\n";
$line = "=" x length ($line);
print "$line\n";
- &print_usage;
+ print_usage();
print "\ntestname\n"
. "${t}You may, if you wish, run only ONE test if you know the name\n"
@@ -694,11 +708,9 @@ sub print_standard_help
. "${t}This can be helpful if you're having a problem adding a test\n"
. "${t}to the suite, or if the test fails!\n";
- foreach $line (@morehelp)
- {
- $tline = $line;
- if (substr ($tline, 0, 1) eq "\t")
- {
+ foreach $line (@morehelp) {
+ my $tline = $line;
+ if (substr ($tline, 0, 1) eq "\t") {
substr ($tline, 0, 1) = $t;
}
print "$tline\n";
@@ -711,23 +723,17 @@ sub print_standard_help
sub get_caller
{
- local($depth);
- local($package);
- local($filename);
- local($linenum);
-
- $depth = defined ($_[0]) ? $_[0] : 1;
- ($package, $filename, $linenum) = caller ($depth + 1);
+ my $depth = defined ($_[0]) ? $_[0] : 1;
+ my ($pkg, $filename, $linenum) = caller ($depth + 1);
return "$filename: $linenum";
}
sub error
{
- local($message) = $_[0];
- local($caller) = &get_caller (1);
+ my $message = $_[0];
+ my $caller = &get_caller (1);
- if (defined ($_[1]))
- {
+ if (defined ($_[1])) {
$caller = &get_caller ($_[1] + 1) . " -> $caller";
}
@@ -736,165 +742,164 @@ sub error
sub compare_output
{
- local($answer,$logfile) = @_;
- local($slurp, $answer_matched) = ('', 0);
+ my ($answer,$logfile) = @_;
+ my ($slurp, $answer_matched) = ('', 0);
++$tests_run;
if (! defined $answer) {
- print "Ignoring output ........ " if $debug;
- $answer_matched = 1;
+ print "Ignoring output ........ " if $debug;
+ $answer_matched = 1;
} else {
- print "Comparing Output ........ " if $debug;
+ print "Comparing output ........ " if $debug;
- $slurp = &read_file_into_string ($logfile);
+ $slurp = &read_file_into_string ($logfile);
- # For make, get rid of any time skew error before comparing--too bad this
- # has to go into the "generic" driver code :-/
- $slurp =~ s/^.*modification time .*in the future.*\n//gm;
- $slurp =~ s/^.*Clock skew detected.*\n//gm;
+ # For make, get rid of any time skew error before comparing--too bad this
+ # has to go into the "generic" driver code :-/
+ $slurp =~ s/^.*modification time .*in the future.*\n//gm;
+ $slurp =~ s/^.*Clock skew detected.*\n//gm;
- if ($slurp eq $answer) {
- $answer_matched = 1;
- } else {
- # See if it is a slash or CRLF problem
- local ($answer_mod, $slurp_mod) = ($answer, $slurp);
+ if ($slurp eq $answer) {
+ $answer_matched = 1;
+ } else {
+ # See if it is a slash or CRLF problem
+ my ($answer_mod, $slurp_mod) = ($answer, $slurp);
+
+ $answer_mod =~ tr,\\,/,;
+ $answer_mod =~ s,\r\n,\n,gs;
- $answer_mod =~ tr,\\,/,;
- $answer_mod =~ s,\r\n,\n,gs;
+ $slurp_mod =~ tr,\\,/,;
+ $slurp_mod =~ s,\r\n,\n,gs;
- $slurp_mod =~ tr,\\,/,;
- $slurp_mod =~ s,\r\n,\n,gs;
+ $answer_matched = ($slurp_mod eq $answer_mod);
+ if ($^O eq 'VMS') {
+ # VMS has extra blank lines in output sometimes.
+ # Ticket #41760
+ if (!$answer_matched) {
+ $slurp_mod =~ s/\n\n+/\n/gm;
+ $slurp_mod =~ s/\A\n+//g;
$answer_matched = ($slurp_mod eq $answer_mod);
- if ($^O eq 'VMS') {
-
- # VMS has extra blank lines in output sometimes.
- # Ticket #41760
- if (!$answer_matched) {
- $slurp_mod =~ s/\n\n+/\n/gm;
- $slurp_mod =~ s/\A\n+//g;
- $answer_matched = ($slurp_mod eq $answer_mod);
- }
+ }
- # VMS adding a "Waiting for unfinished jobs..."
- # Remove it for now to see what else is going on.
- if (!$answer_matched) {
- $slurp_mod =~ s/^.+\*\*\* Waiting for unfinished jobs.+$//m;
- $slurp_mod =~ s/\n\n/\n/gm;
- $slurp_mod =~ s/^\n+//gm;
- $answer_matched = ($slurp_mod eq $answer_mod);
- }
+ # VMS adding a "Waiting for unfinished jobs..."
+ # Remove it for now to see what else is going on.
+ if (!$answer_matched) {
+ $slurp_mod =~ s/^.+\*\*\* Waiting for unfinished jobs.+$//m;
+ $slurp_mod =~ s/\n\n/\n/gm;
+ $slurp_mod =~ s/^\n+//gm;
+ $answer_matched = ($slurp_mod eq $answer_mod);
+ }
- # VMS wants target device to exist or generates an error,
- # Some test tagets look like VMS devices and trip this.
- if (!$answer_matched) {
- $slurp_mod =~ s/^.+\: no such device or address.*$//gim;
- $slurp_mod =~ s/\n\n/\n/gm;
- $slurp_mod =~ s/^\n+//gm;
- $answer_matched = ($slurp_mod eq $answer_mod);
- }
+ # VMS wants target device to exist or generates an error,
+ # Some test tagets look like VMS devices and trip this.
+ if (!$answer_matched) {
+ $slurp_mod =~ s/^.+\: no such device or address.*$//gim;
+ $slurp_mod =~ s/\n\n/\n/gm;
+ $slurp_mod =~ s/^\n+//gm;
+ $answer_matched = ($slurp_mod eq $answer_mod);
+ }
- # VMS error message has a different case
- if (!$answer_matched) {
- $slurp_mod =~ s/no such file /No such file /gm;
- $answer_matched = ($slurp_mod eq $answer_mod);
- }
+ # VMS error message has a different case
+ if (!$answer_matched) {
+ $slurp_mod =~ s/no such file /No such file /gm;
+ $answer_matched = ($slurp_mod eq $answer_mod);
+ }
- # VMS is putting comas instead of spaces in output
- if (!$answer_matched) {
- $slurp_mod =~ s/,/ /gm;
- $answer_matched = ($slurp_mod eq $answer_mod);
- }
+ # VMS is putting comas instead of spaces in output
+ if (!$answer_matched) {
+ $slurp_mod =~ s/,/ /gm;
+ $answer_matched = ($slurp_mod eq $answer_mod);
+ }
- # VMS Is sometimes adding extra leading spaces to output?
- if (!$answer_matched) {
- my $slurp_mod = $slurp_mod;
- $slurp_mod =~ s/^ +//gm;
- $answer_matched = ($slurp_mod eq $answer_mod);
- }
+ # VMS Is sometimes adding extra leading spaces to output?
+ if (!$answer_matched) {
+ my $slurp_mod = $slurp_mod;
+ $slurp_mod =~ s/^ +//gm;
+ $answer_matched = ($slurp_mod eq $answer_mod);
+ }
- # VMS port not handling POSIX encoded child status
- # Translate error case it for now.
- if (!$answer_matched) {
- $slurp_mod =~ s/0x1035a00a/1/gim;
- $answer_matched = 1 if $slurp_mod =~ /\Q$answer_mod\E/i;
+ # VMS port not handling POSIX encoded child status
+ # Translate error case it for now.
+ if (!$answer_matched) {
+ $slurp_mod =~ s/0x1035a00a/1/gim;
+ $answer_matched = 1 if $slurp_mod =~ /\Q$answer_mod\E/i;
- }
- if (!$answer_matched) {
- $slurp_mod =~ s/0x1035a012/2/gim;
- $answer_matched = ($slurp_mod eq $answer_mod);
- }
+ }
+ if (!$answer_matched) {
+ $slurp_mod =~ s/0x1035a012/2/gim;
+ $answer_matched = ($slurp_mod eq $answer_mod);
+ }
- # Tests are using a UNIX null command, temp hack
- # until this can be handled by the VMS port.
- # ticket # 41761
- if (!$answer_matched) {
- $slurp_mod =~ s/^.+DCL-W-NOCOMD.*$//gim;
- $slurp_mod =~ s/\n\n+/\n/gm;
- $slurp_mod =~ s/^\n+//gm;
- $answer_matched = ($slurp_mod eq $answer_mod);
- }
- # Tests are using exit 0;
- # this generates a warning that should stop the make, but does not
- if (!$answer_matched) {
- $slurp_mod =~ s/^.+NONAME-W-NOMSG.*$//gim;
- $slurp_mod =~ s/\n\n+/\n/gm;
- $slurp_mod =~ s/^\n+//gm;
- $answer_matched = ($slurp_mod eq $answer_mod);
- }
+ # Tests are using a UNIX null command, temp hack
+ # until this can be handled by the VMS port.
+ # ticket # 41761
+ if (!$answer_matched) {
+ $slurp_mod =~ s/^.+DCL-W-NOCOMD.*$//gim;
+ $slurp_mod =~ s/\n\n+/\n/gm;
+ $slurp_mod =~ s/^\n+//gm;
+ $answer_matched = ($slurp_mod eq $answer_mod);
+ }
+ # Tests are using exit 0;
+ # this generates a warning that should stop the make, but does not
+ if (!$answer_matched) {
+ $slurp_mod =~ s/^.+NONAME-W-NOMSG.*$//gim;
+ $slurp_mod =~ s/\n\n+/\n/gm;
+ $slurp_mod =~ s/^\n+//gm;
+ $answer_matched = ($slurp_mod eq $answer_mod);
+ }
- # VMS is sometimes adding single quotes to output?
- if (!$answer_matched) {
- my $noq_slurp_mod = $slurp_mod;
- $noq_slurp_mod =~ s/\'//gm;
- $answer_matched = ($noq_slurp_mod eq $answer_mod);
-
- # And missing an extra space in output
- if (!$answer_matched) {
- $noq_answer_mod = $answer_mod;
- $noq_answer_mod =~ s/\h\h+/ /gm;
- $answer_matched = ($noq_slurp_mod eq $noq_answer_mod);
- }
-
- # VMS adding ; to end of some lines.
- if (!$answer_matched) {
- $noq_slurp_mod =~ s/;\n/\n/gm;
- $answer_matched = ($noq_slurp_mod eq $noq_answer_mod);
- }
-
- # VMS adding trailing space to end of some quoted lines.
- if (!$answer_matched) {
- $noq_slurp_mod =~ s/\h+\n/\n/gm;
- $answer_matched = ($noq_slurp_mod eq $noq_answer_mod);
- }
-
- # And VMS missing leading blank line
- if (!$answer_matched) {
- $noq_answer_mod =~ s/\A\n//g;
- $answer_matched = ($noq_slurp_mod eq $noq_answer_mod);
- }
-
- # Unix double quotes showing up as single quotes on VMS.
- if (!$answer_matched) {
- $noq_answer_mod =~ s/\"//g;
- $answer_matched = ($noq_slurp_mod eq $noq_answer_mod);
- }
- }
+ # VMS is sometimes adding single quotes to output?
+ if (!$answer_matched) {
+ my $noq_slurp_mod = $slurp_mod;
+ $noq_slurp_mod =~ s/\'//gm;
+ $answer_matched = ($noq_slurp_mod eq $answer_mod);
+
+ # And missing an extra space in output
+ if (!$answer_matched) {
+ $noq_answer_mod = $answer_mod;
+ $noq_answer_mod =~ s/\h\h+/ /gm;
+ $answer_matched = ($noq_slurp_mod eq $noq_answer_mod);
}
- # If it still doesn't match, see if the answer might be a regex.
- if (!$answer_matched && $answer =~ m,^/(.+)/$,) {
- $answer_matched = ($slurp =~ /$1/);
- if (!$answer_matched && $answer_mod =~ m,^/(.+)/$,) {
- $answer_matched = ($slurp_mod =~ /$1/);
- }
+ # VMS adding ; to end of some lines.
+ if (!$answer_matched) {
+ $noq_slurp_mod =~ s/;\n/\n/gm;
+ $answer_matched = ($noq_slurp_mod eq $noq_answer_mod);
}
+
+ # VMS adding trailing space to end of some quoted lines.
+ if (!$answer_matched) {
+ $noq_slurp_mod =~ s/\h+\n/\n/gm;
+ $answer_matched = ($noq_slurp_mod eq $noq_answer_mod);
+ }
+
+ # And VMS missing leading blank line
+ if (!$answer_matched) {
+ $noq_answer_mod =~ s/\A\n//g;
+ $answer_matched = ($noq_slurp_mod eq $noq_answer_mod);
+ }
+
+ # Unix double quotes showing up as single quotes on VMS.
+ if (!$answer_matched) {
+ $noq_answer_mod =~ s/\"//g;
+ $answer_matched = ($noq_slurp_mod eq $noq_answer_mod);
+ }
+ }
}
+
+ # If it still doesn't match, see if the answer might be a regex.
+ if (!$answer_matched && $answer =~ m,^/(.+)/$,) {
+ $answer_matched = ($slurp =~ /$1/);
+ if (!$answer_matched && $answer_mod =~ m,^/(.+)/$,) {
+ $answer_matched = ($slurp_mod =~ /$1/);
+ }
+ }
+ }
}
- if ($answer_matched && $test_passed)
- {
+ if ($answer_matched && $test_passed) {
print "ok\n" if $debug;
++$tests_passed;
return 1;
@@ -910,7 +915,7 @@ sub compare_output
# Create the difference file
- local($command) = "diff -c " . &get_basefile . " " . $logfile;
+ my $command = "diff -c " . &get_basefile . " " . $logfile;
&run_command_with_output(&get_difffile,$command);
}
@@ -919,13 +924,12 @@ sub compare_output
sub read_file_into_string
{
- local($filename) = @_;
- local($oldslash) = $/;
-
+ my ($filename) = @_;
+ my $oldslash = $/;
undef $/;
- open (RFISFILE, $filename) || return "";
- local ($slurp) = <RFISFILE>;
+ open (RFISFILE, '<', $filename) or return "";
+ my $slurp = <RFISFILE>;
close (RFISFILE);
$/ = $oldslash;
@@ -938,13 +942,12 @@ my @ERRSTACK = ();
sub attach_default_output
{
- local ($filename) = @_;
- local ($code);
+ my ($filename) = @_;
if ($vos)
{
- $code = system "++attach_default_output_hack $filename";
- $code == -2 || &error ("adoh death\n", 1);
+ my $code = system "++attach_default_output_hack $filename";
+ $code == -2 or &error ("adoh death\n", 1);
return 1;
}
@@ -965,12 +968,10 @@ sub attach_default_output
sub detach_default_output
{
- local ($code);
-
if ($vos)
{
- $code = system "++detach_default_output_hack";
- $code == -2 || &error ("ddoh death\n", 1);
+ my $code = system "++detach_default_output_hack";
+ $code == -2 or &error ("ddoh death\n", 1);
return 1;
}
@@ -984,60 +985,93 @@ sub detach_default_output
open (STDERR, '>&', pop @ERRSTACK) or error("ddo: $! duping STDERR\n", 1);
}
-# This runs a command without any debugging info.
-sub _run_command
+sub _run_with_timeout
{
my $code;
+ if ($^O eq 'VMS') {
+ #local $SIG{ALRM} = sub {
+ # my $e = $ERRSTACK[0];
+ # print $e "\nTest timed out after $test_timeout seconds\n";
+ # die "timeout\n";
+ #};
+ #alarm $test_timeout;
+ system(@_);
+ #alarm 0;
+ my $severity = ${^CHILD_ERROR_NATIVE} & 7;
+ $code = 0;
+ if (($severity & 1) == 0) {
+ $code = 512;
+ }
+
+ # Get the vms status.
+ my $vms_code = ${^CHILD_ERROR_NATIVE};
+
+ # Remove the print status bit
+ $vms_code &= ~0x10000000;
+
+ # Posix code translation.
+ if (($vms_code & 0xFFFFF000) == 0x35a000) {
+ $code = (($vms_code & 0xFFF) >> 3) * 256;
+ }
+ } elsif ($port_type eq 'W32') {
+ my $pid = system(1, @_);
+ $pid > 0 or die "Cannot execute $_[0]\n";
+ local $SIG{ALRM} = sub {
+ my $e = $ERRSTACK[0];
+ print $e "\nTest timed out after $test_timeout seconds\n";
+ kill -9, $pid;
+ die "timeout\n";
+ };
+ alarm $test_timeout;
+ my $r = waitpid($pid, 0);
+ alarm 0;
+ $r == -1 and die "No such pid: $pid\n";
+ # This shouldn't happen since we wait forever or timeout via SIGALRM
+ $r == 0 and die "No process exited.\n";
+ $code = $?;
+
+ } else {
+ my $pid = fork();
+ if (! $pid) {
+ exec(@_) or die "exec: Cannot execute $_[0]: $!\n";
+ }
+ local $SIG{ALRM} = sub {
+ my $e = $ERRSTACK[0];
+ print $e "\nTest timed out after $test_timeout seconds\n";
+ # Resend the alarm to our process group to kill the children.
+ $SIG{ALRM} = 'IGNORE';
+ kill -14, $$;
+ die "timeout\n";
+ };
+ alarm $test_timeout;
+ my $r = waitpid($pid, 0);
+ alarm 0;
+ $r == -1 and die "No such pid: $pid\n";
+ # This shouldn't happen since we wait forever or timeout via SIGALRM
+ $r == 0 and die "No process exited.\n";
+ $code = $?;
+ }
+
+ return $code;
+}
+
+# This runs a command without any debugging info.
+sub _run_command
+{
# We reset this before every invocation. On Windows I think there is only
# one environment, not one per process, so I think that variables set in
# test scripts might leak into subsequent tests if this isn't reset--???
resetENV();
- eval {
- if ($^O eq 'VMS') {
- local $SIG{ALRM} = sub {
- my $e = $ERRSTACK[0];
- print $e "\nTest timed out after $test_timeout seconds\n";
- die "timeout\n"; };
-# alarm $test_timeout;
- system(@_);
- my $severity = ${^CHILD_ERROR_NATIVE} & 7;
- $code = 0;
- if (($severity & 1) == 0) {
- $code = 512;
- }
-
- # Get the vms status.
- my $vms_code = ${^CHILD_ERROR_NATIVE};
+ my $orig = $SIG{ALRM};
+ my $code = eval { _run_with_timeout(@_); };
+ $SIG{ALRM} = $orig;
- # Remove the print status bit
- $vms_code &= ~0x10000000;
-
- # Posix code translation.
- if (($vms_code & 0xFFFFF000) == 0x35a000) {
- $code = (($vms_code & 0xFFF) >> 3) * 256;
- }
- } else {
- my $pid = fork();
- if (! $pid) {
- exec(@_) or die "Cannot execute $_[0]\n";
- }
- local $SIG{ALRM} = sub { my $e = $ERRSTACK[0]; print $e "\nTest timed out after $test_timeout seconds\n"; die "timeout\n"; };
- alarm $test_timeout;
- waitpid($pid, 0) > 0 or die "No such pid: $pid\n";
- $code = $?;
- }
- alarm 0;
- };
if ($@) {
- # The eval failed. If it wasn't SIGALRM then die.
- $@ eq "timeout\n" or die "Command failed: $@";
-
- # Timed out. Resend the alarm to our process group to kill the children.
- $SIG{ALRM} = 'IGNORE';
- kill -14, $$;
- $code = 14;
+ # The eval failed. If it wasn't SIGALRM then die.
+ $@ eq "timeout\n" or die "Command failed: $@";
+ $code = 14;
}
return $code;
@@ -1083,26 +1117,21 @@ sub run_command_with_output
sub remove_directory_tree
{
- local ($targetdir) = @_;
- local ($nuketop) = 1;
- local ($ch);
+ my ($targetdir) = @_;
+ my ($nuketop) = 1;
- $ch = substr ($targetdir, length ($targetdir) - 1);
- if ($ch eq "/" || $ch eq $pathsep)
- {
+ my $ch = substr ($targetdir, length ($targetdir) - 1);
+ if ($ch eq "/" || $ch eq $pathsep) {
$targetdir = substr ($targetdir, 0, length ($targetdir) - 1);
$nuketop = 0;
}
- if (! -e $targetdir)
- {
- return 1;
- }
+ -e $targetdir or return 1;
- &remove_directory_tree_inner ("RDT00", $targetdir) || return 0;
- if ($nuketop)
- {
- rmdir $targetdir || return 0;
+ &remove_directory_tree_inner ("RDT00", $targetdir) or return 0;
+ if ($nuketop && !rmdir ($targetdir)) {
+ print "Cannot remove $targetdir: $!\n";
+ return 0;
}
return 1;
@@ -1110,35 +1139,28 @@ sub remove_directory_tree
sub remove_directory_tree_inner
{
- local ($dirhandle, $targetdir) = @_;
- local ($object);
- local ($subdirhandle);
+ my ($dirhandle, $targetdir) = @_;
- opendir ($dirhandle, $targetdir) || return 0;
- $subdirhandle = $dirhandle;
+ opendir ($dirhandle, $targetdir) or return 0;
+ my $subdirhandle = $dirhandle;
$subdirhandle++;
- while ($object = readdir ($dirhandle))
- {
- if ($object =~ /^(\.\.?|CVS|RCS)$/)
- {
- next;
- }
-
+ while (my $object = readdir ($dirhandle)) {
+ $object =~ /^(\.\.?|CVS|RCS)$/ and next;
$object = "$targetdir$pathsep$object";
- lstat ($object);
- if (-d _ && &remove_directory_tree_inner ($subdirhandle, $object))
- {
- rmdir $object || return 0;
- }
- else
- {
- if ($^O ne 'VMS')
- {
- unlink $object || return 0;
+ lstat ($object);
+ if (-d _ && &remove_directory_tree_inner ($subdirhandle, $object)) {
+ if (!rmdir($object)) {
+ print "Cannot remove $object: $!\n";
+ return 0;
}
- else
- {
+ } else {
+ if ($^O ne 'VMS') {
+ if (!unlink $object) {
+ print "Cannot unlink $object: $!\n";
+ return 0;
+ }
+ } else {
# VMS can have multiple versions of a file.
1 while unlink $object;
}
@@ -1152,15 +1174,13 @@ sub remove_directory_tree_inner
#
#sub touch
#{
-# local (@filenames) = @_;
-# local ($now) = time;
-# local ($file);
+# my (@filenames) = @_;
+# my $now = time;
#
-# foreach $file (@filenames)
-# {
+# foreach my $file (@filenames) {
# utime ($now, $now, $file)
-# || (open (TOUCHFD, ">> $file") && close (TOUCHFD))
-# || &error ("Couldn't touch $file: $!\n", 1);
+# or (open (TOUCHFD, ">> $file") and close (TOUCHFD))
+# or &error ("Couldn't touch $file: $!\n", 1);
# }
# return 1;
#}
@@ -1175,12 +1195,12 @@ sub remove_directory_tree_inner
sub touch
{
- local ($file);
-
- foreach $file (@_) {
- (open(T, ">> $file") && print(T "\n") && close(T))
- || &error("Couldn't touch $file: $!\n", 1);
+ foreach my $file (@_) {
+ (open(T, '>>', $file) and print(T "\n") and close(T))
+ or &error("Couldn't touch $file: $!\n", 1);
}
+
+ return @_;
}
# Touch with a time offset. To DTRT, call touch() then use stat() to get the
@@ -1188,25 +1208,26 @@ sub touch
sub utouch
{
- local ($off) = shift;
- local ($file);
+ my $off = shift;
&touch(@_);
- local (@s) = stat($_[0]);
+ foreach my $f (@_) {
+ my @s = stat($f);
+ utime($s[8]+$off, $s[9]+$off, $f);
+ }
- utime($s[8]+$off, $s[9]+$off, @_);
+ return @_;
}
# open a file, write some stuff to it, and close it.
sub create_file
{
- local ($filename, @lines) = @_;
+ my ($filename, @lines) = @_;
- open (CF, "> $filename") || &error ("Couldn't open $filename: $!\n", 1);
- foreach $line (@lines)
- {
+ open (CF, "> $filename") or &error ("Couldn't open $filename: $!\n", 1);
+ foreach $line (@lines) {
print CF $line;
}
close (CF);
@@ -1224,35 +1245,28 @@ sub create_file
sub create_dir_tree
{
- local ($basedir, %dirtree) = @_;
- local ($path);
+ my ($basedir, %dirtree) = @_;
&remove_directory_tree ("$basedir");
- mkdir ($basedir, 0777) || &error ("Couldn't mkdir $basedir: $!\n", 1);
+ mkdir ($basedir, 0777) or &error ("Couldn't mkdir $basedir: $!\n", 1);
- foreach $path (sort keys (%dirtree))
- {
- if ($dirtree {$path} =~ /^DIR$/)
- {
+ foreach my $path (sort keys (%dirtree)) {
+ if ($dirtree {$path} =~ /^DIR$/) {
mkdir ("$basedir/$path", 0777)
- || &error ("Couldn't mkdir $basedir/$path: $!\n", 1);
- }
- elsif ($dirtree {$path} =~ /^FILE:(.*)$/)
- {
+ or &error ("Couldn't mkdir $basedir/$path: $!\n", 1);
+
+ } elsif ($dirtree {$path} =~ /^FILE:(.*)$/) {
&create_file ("$basedir/$path", $1 . "\n");
- }
- elsif ($dirtree {$path} =~ /^LINK:(.*)$/)
- {
+
+ } elsif ($dirtree {$path} =~ /^LINK:(.*)$/) {
symlink ("$basedir/$1", "$basedir/$path")
- || &error ("Couldn't symlink $basedir/$path -> $basedir/$1: $!\n", 1);
- }
- else
- {
+ or &error ("Couldn't symlink $basedir/$path -> $basedir/$1: $!\n", 1);
+
+ } else {
&error ("Bogus dirtree type: \"$dirtree{$path}\"\n", 1);
}
}
- if ($just_setup_tree)
- {
+ if ($just_setup_tree) {
die "Tree is setup...\n";
}
}
@@ -1264,40 +1278,27 @@ sub create_dir_tree
sub compare_dir_tree
{
- local ($basedir, %dirtree) = @_;
- local ($path);
- local ($i);
- local ($bogus) = 0;
- local ($contents);
- local ($target);
- local ($fulltarget);
- local ($found);
- local (@files);
- local (@allfiles);
-
- opendir (DIR, $basedir) || &error ("Couldn't open $basedir: $!\n", 1);
- @allfiles = grep (!/^(\.\.?|CVS|RCS)$/, readdir (DIR) );
+ my ($basedir, %dirtree) = @_;
+ my $bogus = 0;
+
+ opendir (DIR, $basedir) or &error ("Couldn't open $basedir: $!\n", 1);
+ my @allfiles = grep (!/^(\.\.?|CVS|RCS)$/, readdir (DIR) );
closedir (DIR);
- if ($debug)
- {
+ if ($debug) {
print "dirtree: (%dirtree)\n$basedir: (@allfiles)\n";
}
- foreach $path (sort keys (%dirtree))
+ foreach my $path (sort keys (%dirtree))
{
- if ($debug)
- {
+ if ($debug) {
print "Checking $path ($dirtree{$path}).\n";
}
- $found = 0;
- foreach $i (0 .. $#allfiles)
- {
- if ($allfiles[$i] eq $path)
- {
+ my $found = 0;
+ foreach my $i (0 .. $#allfiles) {
+ if ($allfiles[$i] eq $path) {
splice (@allfiles, $i, 1); # delete it
- if ($debug)
- {
+ if ($debug) {
print " Zapped $path; files now (@allfiles).\n";
}
lstat ("$basedir/$path");
@@ -1306,18 +1307,15 @@ sub compare_dir_tree
}
}
- if (!$found)
- {
+ if (!$found) {
print "compare_dir_tree: $path does not exist.\n";
$bogus = 1;
next;
}
- if ($dirtree {$path} =~ /^DIR$/)
- {
- if (-d _ && opendir (DIR, "$basedir/$path") )
- {
- @files = readdir (DIR);
+ if ($dirtree {$path} =~ /^DIR$/) {
+ if (-d _ && opendir (DIR, "$basedir/$path") ) {
+ my @files = readdir (DIR);
closedir (DIR);
@files = grep (!/^(\.\.?|CVS|RCS)$/ && ($_ = "$path/$_"), @files);
push (@allfiles, @files);
@@ -1325,71 +1323,59 @@ sub compare_dir_tree
{
print " Read in $path; new files (@files).\n";
}
- }
- else
- {
+
+ } else {
print "compare_dir_tree: $path is not a dir.\n";
$bogus = 1;
}
- }
- elsif ($dirtree {$path} =~ /^FILE:(.*)$/)
- {
- if (-l _ || !-f _)
- {
+
+ } elsif ($dirtree {$path} =~ /^FILE:(.*)$/) {
+ if (-l _ || !-f _) {
print "compare_dir_tree: $path is not a file.\n";
$bogus = 1;
next;
}
- if ($1 ne "*")
- {
- $contents = &read_file_into_string ("$basedir/$path");
- if ($contents ne "$1\n")
- {
+ if ($1 ne "*") {
+ my $contents = &read_file_into_string ("$basedir/$path");
+ if ($contents ne "$1\n") {
print "compare_dir_tree: $path contains wrong stuff."
. " Is:\n$contentsShould be:\n$1\n";
$bogus = 1;
}
}
- }
- elsif ($dirtree {$path} =~ /^LINK:(.*)$/)
- {
- $target = $1;
- if (!-l _)
- {
+
+ } elsif ($dirtree {$path} =~ /^LINK:(.*)$/) {
+ my $target = $1;
+ if (!-l _) {
print "compare_dir_tree: $path is not a link.\n";
$bogus = 1;
next;
}
- $contents = readlink ("$basedir/$path");
+ my $contents = readlink ("$basedir/$path");
$contents =~ tr/>/\//;
- $fulltarget = "$basedir/$target";
+ my $fulltarget = "$basedir/$target";
$fulltarget =~ tr/>/\//;
- if (!($contents =~ /$fulltarget$/))
- {
- if ($debug)
- {
+ if (!($contents =~ /$fulltarget$/)) {
+ if ($debug) {
$target = $fulltarget;
}
print "compare_dir_tree: $path should be link to $target, "
. "not $contents.\n";
$bogus = 1;
}
- }
- else
- {
+
+ } else {
&error ("Bogus dirtree type: \"$dirtree{$path}\"\n", 1);
}
}
- if ($debug)
- {
+ if ($debug) {
print "leftovers: (@allfiles).\n";
}
- foreach $file (@allfiles)
- {
+ foreach my $file (@allfiles) {
print "compare_dir_tree: $file should not exist.\n";
$bogus = 1;
}
@@ -1404,8 +1390,7 @@ sub compare_dir_tree
sub num_suffix
{
- local($num) = @_;
-
+ my ($num) = @_;
if (--$num > 0) {
return "$extext$num";
}
@@ -1423,7 +1408,7 @@ sub num_suffix
sub get_logfile
{
- local($no_increment) = @_;
+ my ($no_increment) = @_;
$num_of_logfiles += !$no_increment;
@@ -1464,7 +1449,7 @@ sub get_runfile
sub get_tmpfile
{
- local($no_increment) = @_;
+ my ($no_increment) = @_;
$num_of_tmpfiles += !$no_increment;
diff --git a/tests/thelp.pl b/tests/thelp.pl
new file mode 100755
index 0000000..d8aaa66
--- /dev/null
+++ b/tests/thelp.pl
@@ -0,0 +1,113 @@
+#!/usr/bin/env perl
+# -*-perl-*-
+#
+# This script helps us write tests in a portable way, without relying on a lot
+# of shell features. Since we already have Perl to run the tests, use that.
+#
+# The arguments represent a set of steps that will be run one at a time.
+# Each step consists of an operator and argument.
+#
+# It supports the following operators:
+# out <word> : echo <word> to stdout
+# file <word> : echo <word> to stdout AND create the file <word>
+# dir <word> : echo <word> to stdout AND create the directory <word>
+# rm <word> : echo <word> to stdout AND delete the file/directory <word>
+# wait <word> : wait for a file named <word> to exist
+# tmout <secs> : Change the timeout for waiting. Default is 4 seconds.
+# sleep <secs> : Sleep for <secs> seconds then echo <secs>
+# fail <err> : echo <err> to stdout then exit with error code err
+#
+# If given -q only the "out" command generates output.
+
+# Force flush
+$| = 1;
+
+my $quiet = 0;
+my $timeout = 4;
+
+sub op {
+ my ($op, $nm) = @_;
+
+ defined $nm or die "Missing value for $op\n";
+
+ if ($op eq 'out') {
+ print "$nm\n";
+ return 1;
+ }
+
+ # Show the output before creating the file
+ if ($op eq 'file') {
+ print "file $nm\n" unless $quiet;
+ open(my $fh, '>', $nm) or die "$nm: open: $!\n";
+ close(my $fh);
+ return 1;
+ }
+
+ # Show the output before creating the directory
+ if ($op eq 'dir') {
+ print "dir $nm\n" unless $quiet;
+ mkdir($nm) or die "$nm: mkdir: $!\n";
+ return 1;
+ }
+
+ # Show the output after removing the file
+ if ($op eq 'rm') {
+ if (-f $nm) {
+ unlink($nm) or die "$nm: unlink: $!\n";
+ } elsif (-d $nm) {
+ rmdir($nm) or die "$nm: rmdir: $!\n";
+ } else {
+ die "$nm: not file or directory: $!\n";
+ }
+ print "rm $nm\n" unless $quiet;
+ return 1;
+ }
+
+ if ($op eq 'tmout') {
+ $timeout = $nm;
+ print "tmout $nm\n" unless $quiet;
+ return 1;
+ }
+
+ # Show the output after the file exists
+ if ($op eq 'wait') {
+ my $start = time();
+ my $end = $start + $timeout;
+ while (time() <= $end) {
+ if (-f $nm) {
+ print "wait $nm\n" unless $quiet;
+ return 1;
+ }
+ select(undef, undef, undef, 0.1);
+ }
+ die "wait $nm: timeout after ".(time()-$start-1)." seconds\n";
+ }
+
+ # Show the output after sleeping
+ if ($op eq 'sleep') {
+ sleep($nm);
+ print "sleep $nm\n" unless $quiet;
+ return 1;
+ }
+
+ if ($op eq 'fail') {
+ print "fail $nm\n";
+ exit($nm);
+ }
+
+ die("Invalid command: $op $nm\n");
+}
+
+if (@ARGV && $ARGV[0] eq '-q') {
+ $quiet = 1;
+ shift;
+}
+
+while (@ARGV) {
+ if (op($ARGV[0], $ARGV[1])) {
+ shift;
+ shift;
+ }
+}
+
+exit(0);
diff --git a/w32/Makefile.am b/w32/Makefile.am
deleted file mode 100644
index 5527f77..0000000
--- a/w32/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-# Makefile.am to create libw32.a for mingw32 host.
-# Copyright (C) 1997-2016 Free Software Foundation, Inc.
-# This file is part of GNU Make.
-#
-# GNU Make is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 3 of the License, or (at your option) any later
-# version.
-#
-# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program. If not, see <http://www.gnu.org/licenses/>.
-
-AUTOMAKE_OPTIONS = subdir-objects
-
-noinst_LIBRARIES = libw32.a
-
-libw32_a_SOURCES = subproc/misc.c subproc/sub_proc.c subproc/w32err.c \
- compat/posixfcn.c pathstuff.c w32os.c
-
-libw32_a_CPPFLAGS = -I$(srcdir)/include -I$(srcdir)/subproc -I$(top_srcdir) \
- -I$(top_srcdir)/glob
diff --git a/w32/Makefile.in b/w32/Makefile.in
deleted file mode 100644
index 0c81384..0000000
--- a/w32/Makefile.in
+++ /dev/null
@@ -1,727 +0,0 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-# Makefile.am to create libw32.a for mingw32 host.
-# Copyright (C) 1997-2016 Free Software Foundation, Inc.
-# This file is part of GNU Make.
-#
-# GNU Make is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 3 of the License, or (at your option) any later
-# version.
-#
-# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program. If not, see <http://www.gnu.org/licenses/>.
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
- if test -z '$(MAKELEVEL)'; then \
- false; \
- elif test -n '$(MAKE_HOST)'; then \
- true; \
- elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
- true; \
- else \
- false; \
- fi; \
-}
-am__make_running_with_option = \
- case $${target_option-} in \
- ?) ;; \
- *) echo "am__make_running_with_option: internal error: invalid" \
- "target option '$${target_option-}' specified" >&2; \
- exit 1;; \
- esac; \
- has_opt=no; \
- sane_makeflags=$$MAKEFLAGS; \
- if $(am__is_gnu_make); then \
- sane_makeflags=$$MFLAGS; \
- else \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- bs=\\; \
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
- esac; \
- fi; \
- skip_next=no; \
- strip_trailopt () \
- { \
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
- }; \
- for flg in $$sane_makeflags; do \
- test $$skip_next = yes && { skip_next=no; continue; }; \
- case $$flg in \
- *=*|--*) continue;; \
- -*I) strip_trailopt 'I'; skip_next=yes;; \
- -*I?*) strip_trailopt 'I';; \
- -*O) strip_trailopt 'O'; skip_next=yes;; \
- -*O?*) strip_trailopt 'O';; \
- -*l) strip_trailopt 'l'; skip_next=yes;; \
- -*l?*) strip_trailopt 'l';; \
- -[dEDm]) skip_next=yes;; \
- -[JT]) skip_next=yes;; \
- esac; \
- case $$flg in \
- *$$target_option*) has_opt=yes; break;; \
- esac; \
- done; \
- test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = w32
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/config/dospaths.m4 \
- $(top_srcdir)/config/gettext.m4 $(top_srcdir)/config/iconv.m4 \
- $(top_srcdir)/config/intlmacosx.m4 \
- $(top_srcdir)/config/lib-ld.m4 \
- $(top_srcdir)/config/lib-link.m4 \
- $(top_srcdir)/config/lib-prefix.m4 \
- $(top_srcdir)/config/longlong.m4 $(top_srcdir)/config/nls.m4 \
- $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-LIBRARIES = $(noinst_LIBRARIES)
-ARFLAGS = cru
-AM_V_AR = $(am__v_AR_@AM_V@)
-am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
-am__v_AR_0 = @echo " AR " $@;
-am__v_AR_1 =
-libw32_a_AR = $(AR) $(ARFLAGS)
-libw32_a_LIBADD =
-am__dirstamp = $(am__leading_dot)dirstamp
-am_libw32_a_OBJECTS = subproc/libw32_a-misc.$(OBJEXT) \
- subproc/libw32_a-sub_proc.$(OBJEXT) \
- subproc/libw32_a-w32err.$(OBJEXT) \
- compat/libw32_a-posixfcn.$(OBJEXT) \
- libw32_a-pathstuff.$(OBJEXT) libw32_a-w32os.$(OBJEXT)
-libw32_a_OBJECTS = $(am_libw32_a_OBJECTS)
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-am__v_GEN_1 =
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 =
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 =
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-am__v_CC_1 =
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-am__v_CCLD_1 =
-SOURCES = $(libw32_a_SOURCES)
-DIST_SOURCES = $(libw32_a_SOURCES)
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates. Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
- BEGIN { nonempty = 0; } \
- { items[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique. This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
- list='$(am__tagged_files)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ALLOCA = @ALLOCA@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AM_LDFLAGS = @AM_LDFLAGS@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GLOBINC = @GLOBINC@
-GLOBLIB = @GLOBLIB@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GREP = @GREP@
-GUILE_CFLAGS = @GUILE_CFLAGS@
-GUILE_LIBS = @GUILE_LIBS@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-KMEM_GROUP = @KMEM_GROUP@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MAKE_HOST = @MAKE_HOST@
-MKDIR_P = @MKDIR_P@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-NEED_SETGID = @NEED_SETGID@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PERL = @PERL@
-PKG_CONFIG = @PKG_CONFIG@
-PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
-PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
-POSUB = @POSUB@
-RANLIB = @RANLIB@
-REMOTE = @REMOTE@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-AUTOMAKE_OPTIONS = subdir-objects
-noinst_LIBRARIES = libw32.a
-libw32_a_SOURCES = subproc/misc.c subproc/sub_proc.c subproc/w32err.c \
- compat/posixfcn.c pathstuff.c w32os.c
-
-libw32_a_CPPFLAGS = -I$(srcdir)/include -I$(srcdir)/subproc -I$(top_srcdir) \
- -I$(top_srcdir)/glob
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
- && { if test -f $@; then exit 0; else break; fi; }; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign w32/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --foreign w32/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-clean-noinstLIBRARIES:
- -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-subproc/$(am__dirstamp):
- @$(MKDIR_P) subproc
- @: > subproc/$(am__dirstamp)
-subproc/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) subproc/$(DEPDIR)
- @: > subproc/$(DEPDIR)/$(am__dirstamp)
-subproc/libw32_a-misc.$(OBJEXT): subproc/$(am__dirstamp) \
- subproc/$(DEPDIR)/$(am__dirstamp)
-subproc/libw32_a-sub_proc.$(OBJEXT): subproc/$(am__dirstamp) \
- subproc/$(DEPDIR)/$(am__dirstamp)
-subproc/libw32_a-w32err.$(OBJEXT): subproc/$(am__dirstamp) \
- subproc/$(DEPDIR)/$(am__dirstamp)
-compat/$(am__dirstamp):
- @$(MKDIR_P) compat
- @: > compat/$(am__dirstamp)
-compat/$(DEPDIR)/$(am__dirstamp):
- @$(MKDIR_P) compat/$(DEPDIR)
- @: > compat/$(DEPDIR)/$(am__dirstamp)
-compat/libw32_a-posixfcn.$(OBJEXT): compat/$(am__dirstamp) \
- compat/$(DEPDIR)/$(am__dirstamp)
-
-libw32.a: $(libw32_a_OBJECTS) $(libw32_a_DEPENDENCIES) $(EXTRA_libw32_a_DEPENDENCIES)
- $(AM_V_at)-rm -f libw32.a
- $(AM_V_AR)$(libw32_a_AR) libw32.a $(libw32_a_OBJECTS) $(libw32_a_LIBADD)
- $(AM_V_at)$(RANLIB) libw32.a
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
- -rm -f compat/*.$(OBJEXT)
- -rm -f subproc/*.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libw32_a-pathstuff.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libw32_a-w32os.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@compat/$(DEPDIR)/libw32_a-posixfcn.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@subproc/$(DEPDIR)/libw32_a-misc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@subproc/$(DEPDIR)/libw32_a-sub_proc.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@subproc/$(DEPDIR)/libw32_a-w32err.Po@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-subproc/libw32_a-misc.o: subproc/misc.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT subproc/libw32_a-misc.o -MD -MP -MF subproc/$(DEPDIR)/libw32_a-misc.Tpo -c -o subproc/libw32_a-misc.o `test -f 'subproc/misc.c' || echo '$(srcdir)/'`subproc/misc.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) subproc/$(DEPDIR)/libw32_a-misc.Tpo subproc/$(DEPDIR)/libw32_a-misc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subproc/misc.c' object='subproc/libw32_a-misc.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o subproc/libw32_a-misc.o `test -f 'subproc/misc.c' || echo '$(srcdir)/'`subproc/misc.c
-
-subproc/libw32_a-misc.obj: subproc/misc.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT subproc/libw32_a-misc.obj -MD -MP -MF subproc/$(DEPDIR)/libw32_a-misc.Tpo -c -o subproc/libw32_a-misc.obj `if test -f 'subproc/misc.c'; then $(CYGPATH_W) 'subproc/misc.c'; else $(CYGPATH_W) '$(srcdir)/subproc/misc.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) subproc/$(DEPDIR)/libw32_a-misc.Tpo subproc/$(DEPDIR)/libw32_a-misc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subproc/misc.c' object='subproc/libw32_a-misc.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o subproc/libw32_a-misc.obj `if test -f 'subproc/misc.c'; then $(CYGPATH_W) 'subproc/misc.c'; else $(CYGPATH_W) '$(srcdir)/subproc/misc.c'; fi`
-
-subproc/libw32_a-sub_proc.o: subproc/sub_proc.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT subproc/libw32_a-sub_proc.o -MD -MP -MF subproc/$(DEPDIR)/libw32_a-sub_proc.Tpo -c -o subproc/libw32_a-sub_proc.o `test -f 'subproc/sub_proc.c' || echo '$(srcdir)/'`subproc/sub_proc.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) subproc/$(DEPDIR)/libw32_a-sub_proc.Tpo subproc/$(DEPDIR)/libw32_a-sub_proc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subproc/sub_proc.c' object='subproc/libw32_a-sub_proc.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o subproc/libw32_a-sub_proc.o `test -f 'subproc/sub_proc.c' || echo '$(srcdir)/'`subproc/sub_proc.c
-
-subproc/libw32_a-sub_proc.obj: subproc/sub_proc.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT subproc/libw32_a-sub_proc.obj -MD -MP -MF subproc/$(DEPDIR)/libw32_a-sub_proc.Tpo -c -o subproc/libw32_a-sub_proc.obj `if test -f 'subproc/sub_proc.c'; then $(CYGPATH_W) 'subproc/sub_proc.c'; else $(CYGPATH_W) '$(srcdir)/subproc/sub_proc.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) subproc/$(DEPDIR)/libw32_a-sub_proc.Tpo subproc/$(DEPDIR)/libw32_a-sub_proc.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subproc/sub_proc.c' object='subproc/libw32_a-sub_proc.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o subproc/libw32_a-sub_proc.obj `if test -f 'subproc/sub_proc.c'; then $(CYGPATH_W) 'subproc/sub_proc.c'; else $(CYGPATH_W) '$(srcdir)/subproc/sub_proc.c'; fi`
-
-subproc/libw32_a-w32err.o: subproc/w32err.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT subproc/libw32_a-w32err.o -MD -MP -MF subproc/$(DEPDIR)/libw32_a-w32err.Tpo -c -o subproc/libw32_a-w32err.o `test -f 'subproc/w32err.c' || echo '$(srcdir)/'`subproc/w32err.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) subproc/$(DEPDIR)/libw32_a-w32err.Tpo subproc/$(DEPDIR)/libw32_a-w32err.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subproc/w32err.c' object='subproc/libw32_a-w32err.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o subproc/libw32_a-w32err.o `test -f 'subproc/w32err.c' || echo '$(srcdir)/'`subproc/w32err.c
-
-subproc/libw32_a-w32err.obj: subproc/w32err.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT subproc/libw32_a-w32err.obj -MD -MP -MF subproc/$(DEPDIR)/libw32_a-w32err.Tpo -c -o subproc/libw32_a-w32err.obj `if test -f 'subproc/w32err.c'; then $(CYGPATH_W) 'subproc/w32err.c'; else $(CYGPATH_W) '$(srcdir)/subproc/w32err.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) subproc/$(DEPDIR)/libw32_a-w32err.Tpo subproc/$(DEPDIR)/libw32_a-w32err.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subproc/w32err.c' object='subproc/libw32_a-w32err.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o subproc/libw32_a-w32err.obj `if test -f 'subproc/w32err.c'; then $(CYGPATH_W) 'subproc/w32err.c'; else $(CYGPATH_W) '$(srcdir)/subproc/w32err.c'; fi`
-
-compat/libw32_a-posixfcn.o: compat/posixfcn.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT compat/libw32_a-posixfcn.o -MD -MP -MF compat/$(DEPDIR)/libw32_a-posixfcn.Tpo -c -o compat/libw32_a-posixfcn.o `test -f 'compat/posixfcn.c' || echo '$(srcdir)/'`compat/posixfcn.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) compat/$(DEPDIR)/libw32_a-posixfcn.Tpo compat/$(DEPDIR)/libw32_a-posixfcn.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='compat/posixfcn.c' object='compat/libw32_a-posixfcn.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o compat/libw32_a-posixfcn.o `test -f 'compat/posixfcn.c' || echo '$(srcdir)/'`compat/posixfcn.c
-
-compat/libw32_a-posixfcn.obj: compat/posixfcn.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT compat/libw32_a-posixfcn.obj -MD -MP -MF compat/$(DEPDIR)/libw32_a-posixfcn.Tpo -c -o compat/libw32_a-posixfcn.obj `if test -f 'compat/posixfcn.c'; then $(CYGPATH_W) 'compat/posixfcn.c'; else $(CYGPATH_W) '$(srcdir)/compat/posixfcn.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) compat/$(DEPDIR)/libw32_a-posixfcn.Tpo compat/$(DEPDIR)/libw32_a-posixfcn.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='compat/posixfcn.c' object='compat/libw32_a-posixfcn.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o compat/libw32_a-posixfcn.obj `if test -f 'compat/posixfcn.c'; then $(CYGPATH_W) 'compat/posixfcn.c'; else $(CYGPATH_W) '$(srcdir)/compat/posixfcn.c'; fi`
-
-libw32_a-pathstuff.o: pathstuff.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-pathstuff.o -MD -MP -MF $(DEPDIR)/libw32_a-pathstuff.Tpo -c -o libw32_a-pathstuff.o `test -f 'pathstuff.c' || echo '$(srcdir)/'`pathstuff.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libw32_a-pathstuff.Tpo $(DEPDIR)/libw32_a-pathstuff.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pathstuff.c' object='libw32_a-pathstuff.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-pathstuff.o `test -f 'pathstuff.c' || echo '$(srcdir)/'`pathstuff.c
-
-libw32_a-pathstuff.obj: pathstuff.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-pathstuff.obj -MD -MP -MF $(DEPDIR)/libw32_a-pathstuff.Tpo -c -o libw32_a-pathstuff.obj `if test -f 'pathstuff.c'; then $(CYGPATH_W) 'pathstuff.c'; else $(CYGPATH_W) '$(srcdir)/pathstuff.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libw32_a-pathstuff.Tpo $(DEPDIR)/libw32_a-pathstuff.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pathstuff.c' object='libw32_a-pathstuff.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-pathstuff.obj `if test -f 'pathstuff.c'; then $(CYGPATH_W) 'pathstuff.c'; else $(CYGPATH_W) '$(srcdir)/pathstuff.c'; fi`
-
-libw32_a-w32os.o: w32os.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-w32os.o -MD -MP -MF $(DEPDIR)/libw32_a-w32os.Tpo -c -o libw32_a-w32os.o `test -f 'w32os.c' || echo '$(srcdir)/'`w32os.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libw32_a-w32os.Tpo $(DEPDIR)/libw32_a-w32os.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='w32os.c' object='libw32_a-w32os.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-w32os.o `test -f 'w32os.c' || echo '$(srcdir)/'`w32os.c
-
-libw32_a-w32os.obj: w32os.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libw32_a-w32os.obj -MD -MP -MF $(DEPDIR)/libw32_a-w32os.Tpo -c -o libw32_a-w32os.obj `if test -f 'w32os.c'; then $(CYGPATH_W) 'w32os.c'; else $(CYGPATH_W) '$(srcdir)/w32os.c'; fi`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libw32_a-w32os.Tpo $(DEPDIR)/libw32_a-w32os.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='w32os.c' object='libw32_a-w32os.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libw32_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libw32_a-w32os.obj `if test -f 'w32os.c'; then $(CYGPATH_W) 'w32os.c'; else $(CYGPATH_W) '$(srcdir)/w32os.c'; fi`
-
-ID: $(am__tagged_files)
- $(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- set x; \
- here=`pwd`; \
- $(am__define_uniq_tagged_files); \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
- $(am__define_uniq_tagged_files); \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
- list='$(am__tagged_files)'; \
- case "$(srcdir)" in \
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
- *) sdir=$(subdir)/$(srcdir) ;; \
- esac; \
- for i in $$list; do \
- if test -f "$$i"; then \
- echo "$(subdir)/$$i"; \
- else \
- echo "$$sdir/$$i"; \
- fi; \
- done >> $(top_builddir)/cscope.files
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LIBRARIES)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- if test -z '$(STRIP)'; then \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- install; \
- else \
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
- fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
- -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
- -rm -f compat/$(DEPDIR)/$(am__dirstamp)
- -rm -f compat/$(am__dirstamp)
- -rm -f subproc/$(DEPDIR)/$(am__dirstamp)
- -rm -f subproc/$(am__dirstamp)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR) compat/$(DEPDIR) subproc/$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR) compat/$(DEPDIR) subproc/$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \
- distclean-compile distclean-generic distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-man install-pdf \
- install-pdf-am install-ps install-ps-am install-strip \
- installcheck installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
- uninstall-am
-
-.PRECIOUS: Makefile
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/w32/subproc/NMakefile b/w32/subproc/NMakefile
deleted file mode 100644
index 325e55c..0000000
--- a/w32/subproc/NMakefile
+++ /dev/null
@@ -1,60 +0,0 @@
-# NOTE: If you have no 'make' program at all to process this makefile, run
-# 'build.bat' instead.
-#
-# Copyright (C) 1996-2016 Free Software Foundation, Inc.
-# This file is part of GNU Make.
-#
-# GNU Make is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 3 of the License, or (at your option) any later
-# version.
-#
-# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program. If not, see <http://www.gnu.org/licenses/>.
-
-#
-# NMakefile for GNU Make (subproc library)
-#
-LIB = lib
-CC = cl
-MAKE = nmake
-
-OUTDIR=.
-MAKEFILE=NMakefile
-
-CFLAGS_any = /nologo /MT /W4 /GX /Z7 /YX /D WIN32 /D WINDOWS32 /D _WINDOWS -I. -I../include -I../../
-CFLAGS_debug = $(CFLAGS_any) /Od /D _DEBUG /FR.\WinDebug\ /Fp.\WinDebug\subproc.pch /Fo.\WinDebug/
-CFLAGS_release = $(CFLAGS_any) /O2 /FR.\WinRel\ /Fp.\WinRel\subproc.pch /Fo.\WinRel/
-
-all: Release Debug
-
-Release:
- $(MAKE) /f $(MAKEFILE) OUTDIR=WinRel CFLAGS="$(CFLAGS_release)" WinRel/subproc.lib
-Debug:
- $(MAKE) /f $(MAKEFILE) OUTDIR=WinDebug CFLAGS="$(CFLAGS_debug)" WinDebug/subproc.lib
-
-clean:
- rmdir /s /q WinRel WinDebug
- erase *.pdb
-
-$(OUTDIR):
- if not exist .\$@\nul mkdir .\$@
-
-OBJS = $(OUTDIR)/misc.obj $(OUTDIR)/w32err.obj $(OUTDIR)/sub_proc.obj
-
-$(OUTDIR)/subproc.lib: $(OUTDIR) $(OBJS)
- $(LIB) -out:$@ @<<
- $(OBJS)
-<<
-
-.c{$(OUTDIR)}.obj:
- $(CC) $(CFLAGS) /c $<
-
-$(OUTDIR)/misc.obj: misc.c proc.h
-$(OUTDIR)/sub_proc.obj: sub_proc.c ../include/sub_proc.h ../include/w32err.h proc.h
-$(OUTDIR)/w32err.obj: w32err.c ../include/w32err.h